diff --git a/wise-webapp/src/main/java/com/wisemapping/webmvc/LoginController.java b/wise-webapp/src/main/java/com/wisemapping/webmvc/LoginController.java
index eb3e9021..42dd77ee 100644
--- a/wise-webapp/src/main/java/com/wisemapping/webmvc/LoginController.java
+++ b/wise-webapp/src/main/java/com/wisemapping/webmvc/LoginController.java
@@ -45,4 +45,16 @@ public class LoginController {
return result;
}
+ @RequestMapping(value = "loginOpenId", method = RequestMethod.GET)
+ protected ModelAndView showLoginOpenIdPage() {
+ final User user = Utils.getUser(false);
+ ModelAndView result;
+ if (user != null) {
+ result = new ModelAndView("forward:/c/maps/");
+ } else {
+ result = new ModelAndView("loginOpenId");
+ }
+ return result;
+ }
+
}
diff --git a/wise-webapp/src/main/java/com/wisemapping/webmvc/MindmapController.java b/wise-webapp/src/main/java/com/wisemapping/webmvc/MindmapController.java
index f15646fb..dbb81171 100644
--- a/wise-webapp/src/main/java/com/wisemapping/webmvc/MindmapController.java
+++ b/wise-webapp/src/main/java/com/wisemapping/webmvc/MindmapController.java
@@ -21,7 +21,6 @@ package com.wisemapping.webmvc;
import com.wisemapping.exceptions.WiseMappingException;
import com.wisemapping.model.CollaborationRole;
-import com.wisemapping.model.MindMapHistory;
import com.wisemapping.model.Mindmap;
import com.wisemapping.model.User;
import com.wisemapping.security.Utils;
diff --git a/wise-webapp/src/main/resources/messages_en.properties b/wise-webapp/src/main/resources/messages_en.properties
index e747f1b3..86a68777 100644
--- a/wise-webapp/src/main/resources/messages_en.properties
+++ b/wise-webapp/src/main/resources/messages_en.properties
@@ -245,6 +245,8 @@ ACCESS_HAS_BEEN_REVOKED= Upps. your access permissions to this map has been revo
LICENSE=License
WELCOME_TO_WISEMAPPING=Welcome to WiseMapping
WELCOME_DETAILS=WiseMapping will enable you to create and read your mind maps everywhere. With WiseMapping you can:
- Embed mind map it in web pages and blogs
- Link mind map and documents
- Share your maps with friend and colleagues
- Export your maps SVG,PNG,JPG and FreeMind
.
+OPEN_ID_LOGIN=Open Id Login
+LOGING_OPENID_DETAILS=Why OpenID? It's a single username and password that allows you to log in to any OpenID-enabled site. It works on thousands of websites.ItŐs an open standard.Do you already have an account on one of these sites? Click the logo to log in with it here:
DIRECT_LINK_EXPLANATION=Copy and paste the link below to share your map with colleagues
TEMPORAL_PASSWORD_SENT=Your temporal password has been sent
TEMPORAL_PASSWORD_SENT_DETAILS=We've sent you an email that will allow you to reset your password. Please check your email now.
diff --git a/wise-webapp/src/main/webapp/WEB-INF/defs/definitions.xml b/wise-webapp/src/main/webapp/WEB-INF/defs/definitions.xml
index 636b6243..0d373a47 100644
--- a/wise-webapp/src/main/webapp/WEB-INF/defs/definitions.xml
+++ b/wise-webapp/src/main/webapp/WEB-INF/defs/definitions.xml
@@ -75,6 +75,12 @@
+
+
+
+
+
+
diff --git a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-security.xml b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-security.xml
index b40b7f2d..1c6bf9eb 100644
--- a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-security.xml
+++ b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-security.xml
@@ -15,6 +15,7 @@
+
@@ -50,26 +51,26 @@
authentication-failure-url="/c/login?login_error=2"
login-processing-url="/c/j_spring_security_check"/>
-
-
-
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/wise-webapp/src/main/webapp/css/openid.css b/wise-webapp/src/main/webapp/css/openid.css
new file mode 100644
index 00000000..adea5107
--- /dev/null
+++ b/wise-webapp/src/main/webapp/css/openid.css
@@ -0,0 +1,69 @@
+/*
+ Simple OpenID Plugin
+ http://code.google.com/p/openid-selector/
+
+ This code is licensed under the New BSD License.
+*/
+
+#openid_form {
+ width: 580px;
+}
+
+#openid_form legend {
+ font-weight: bold;
+}
+
+#openid_choice {
+ display: none;
+}
+
+#openid_input_area {
+ clear: both;
+ padding: 10px;
+}
+
+#openid_btns, #openid_btns br {
+ clear: both;
+}
+
+#openid_highlight {
+ padding: 3px;
+ background-color: #FFFCC9;
+ float: left;
+}
+
+.openid_large_btn {
+ width: 100px;
+ height: 60px;
+/* fix for IE 6 only: http://en.wikipedia.org/wiki/CSS_filter#Underscore_hack */
+ _width: 102px;
+ _height: 62px;
+
+ border: 1px solid #DDD;
+ margin: 3px;
+ float: left;
+}
+
+.openid_small_btn {
+ width: 24px;
+ height: 24px;
+/* fix for IE 6 only: http://en.wikipedia.org/wiki/CSS_filter#Underscore_hack */
+ _width: 26px;
+ _height: 26px;
+
+ border: 1px solid #DDD;
+ margin: 3px;
+ float: left;
+}
+
+a.openid_large_btn:focus {
+ outline: none;
+}
+
+a.openid_large_btn:focus {
+ -moz-outline-style: none;
+}
+
+.openid_selected {
+ border: 4px solid #DDD;
+}
\ No newline at end of file
diff --git a/wise-webapp/src/main/webapp/images/openid-providers-en.png b/wise-webapp/src/main/webapp/images/openid-providers-en.png
new file mode 100644
index 00000000..f5fd7288
Binary files /dev/null and b/wise-webapp/src/main/webapp/images/openid-providers-en.png differ
diff --git a/wise-webapp/src/main/webapp/js/openid-en.js b/wise-webapp/src/main/webapp/js/openid-en.js
new file mode 100644
index 00000000..2b68c665
--- /dev/null
+++ b/wise-webapp/src/main/webapp/js/openid-en.js
@@ -0,0 +1,96 @@
+/*
+ Simple OpenID Plugin
+ http://code.google.com/p/openid-selector/
+
+ This code is licensed under the New BSD License.
+*/
+
+var providers_large = {
+ google : {
+ name : 'Google',
+ url : 'https://www.google.com/accounts/o8/id'
+ },
+ yahoo : {
+ name : 'Yahoo',
+ url : 'http://me.yahoo.com/'
+ },
+ aol : {
+ name : 'AOL',
+ label : 'Enter your AOL screenname.',
+ url : 'http://openid.aol.com/{username}'
+ },
+ myopenid : {
+ name : 'MyOpenID',
+ label : 'Enter your MyOpenID username.',
+ url : 'http://{username}.myopenid.com/'
+ },
+ openid : {
+ name : 'OpenID',
+ label : 'Enter your OpenID.',
+ url : null
+ }
+};
+
+var providers_small = {
+ livejournal : {
+ name : 'LiveJournal',
+ label : 'Enter your Livejournal username.',
+ url : 'http://{username}.livejournal.com/'
+ },
+ /* flickr: {
+ name: 'Flickr',
+ label: 'Enter your Flickr username.',
+ url: 'http://flickr.com/{username}/'
+ }, */
+ /* technorati: {
+ name: 'Technorati',
+ label: 'Enter your Technorati username.',
+ url: 'http://technorati.com/people/technorati/{username}/'
+ }, */
+ wordpress : {
+ name : 'Wordpress',
+ label : 'Enter your Wordpress.com username.',
+ url : 'http://{username}.wordpress.com/'
+ },
+ blogger : {
+ name : 'Blogger',
+ label : 'Your Blogger account',
+ url : 'http://{username}.blogspot.com/'
+ },
+ verisign : {
+ name : 'Verisign',
+ label : 'Your Verisign username',
+ url : 'http://{username}.pip.verisignlabs.com/'
+ },
+ /* vidoop: {
+ name: 'Vidoop',
+ label: 'Your Vidoop username',
+ url: 'http://{username}.myvidoop.com/'
+ }, */
+ /* launchpad: {
+ name: 'Launchpad',
+ label: 'Your Launchpad username',
+ url: 'https://launchpad.net/~{username}'
+ }, */
+ claimid : {
+ name : 'ClaimID',
+ label : 'Your ClaimID username',
+ url : 'http://claimid.com/{username}'
+ },
+ clickpass : {
+ name : 'ClickPass',
+ label : 'Enter your ClickPass username',
+ url : 'http://clickpass.com/public/{username}'
+ },
+ google_profile : {
+ name : 'Google Profile',
+ label : 'Enter your Google Profile username',
+ url : 'http://www.google.com/profiles/{username}'
+ }
+};
+
+openid.locale = 'en';
+openid.sprite = 'en'; // reused in german& japan localization
+openid.demo_text = 'In client demo mode. Normally would have submitted OpenID:';
+openid.signin_text = 'Sign-In';
+openid.image_title = 'log in with {provider}';
diff --git a/wise-webapp/src/main/webapp/js/openid-jquery.js b/wise-webapp/src/main/webapp/js/openid-jquery.js
new file mode 100644
index 00000000..085ab3a8
--- /dev/null
+++ b/wise-webapp/src/main/webapp/js/openid-jquery.js
@@ -0,0 +1,203 @@
+/*
+ Simple OpenID Plugin
+ http://code.google.com/p/openid-selector/
+
+ This code is licensed under the New BSD License.
+ */
+
+var providers;
+var openid;
+(function ($) {
+ openid = {
+ version: '1.3', // version constant
+ demo: false,
+ demo_text: null,
+ cookie_expires: 6 * 30, // 6 months.
+ cookie_name: 'openid_provider',
+ cookie_path: '/',
+
+ img_path: 'images/',
+ locale: null, // is set in openid-.js
+ sprite: null, // usually equals to locale, is set in
+ // openid-.js
+ signin_text: null, // text on submit button on the form
+ all_small: false, // output large providers w/ small icons
+ no_sprite: false, // don't use sprite image
+ image_title: '{provider}', // for image title
+
+ input_id: null,
+ provider_url: null,
+ provider_id: null,
+
+ /**
+ * Class constructor
+ *
+ * @return {Void}
+ */
+ init: function (input_id) {
+ providers = $.extend({}, providers_large, providers_small);
+ var openid_btns = $('#openid_btns');
+ this.input_id = input_id;
+ $('#openid_choice').show();
+ $('#openid_input_area').empty();
+ var i = 0;
+ // add box for each provider
+ var id, box;
+ for (id in providers_large) {
+ box = this.getBoxHTML(id, providers_large[id], (this.all_small ? 'small' : 'large'), i++);
+ openid_btns.append(box);
+ }
+ if (providers_small) {
+ openid_btns.append('
');
+ for (id in providers_small) {
+ box = this.getBoxHTML(id, providers_small[id], 'small', i++);
+ openid_btns.append(box);
+ }
+ }
+ $('#openid_form').submit(this.submit);
+ var box_id = this.readCookie();
+ if (box_id) {
+ this.signin(box_id, true);
+ }
+ },
+
+ /**
+ * @return {String}
+ */
+ getBoxHTML: function (box_id, provider, box_size, index) {
+ if (this.no_sprite) {
+ var image_ext = box_size == 'small' ? '.ico.gif' : '.gif';
+ return '';
+ }
+ var x = box_size == 'small' ? -index * 24 : -index * 100;
+ var y = box_size == 'small' ? -60 : 0;
+ return '';
+ },
+
+ /**
+ * Provider image click
+ *
+ * @return {Void}
+ */
+ signin: function (box_id, onload) {
+ var provider = providers[box_id];
+ if (!provider) {
+ return;
+ }
+ this.highlight(box_id);
+ this.setCookie(box_id);
+ this.provider_id = box_id;
+ this.provider_url = provider.url;
+ // prompt user for input?
+ if (provider.label) {
+ this.useInputBox(provider);
+ } else {
+ $('#openid_input_area').empty();
+ if (!onload) {
+ $('#openid_form').submit();
+ }
+ }
+ },
+
+ /**
+ * Sign-in button click
+ *
+ * @return {Boolean}
+ */
+ submit: function () {
+ var url = openid.provider_url;
+ if (url) {
+ url = url.replace('{username}', $('#openid_username').val());
+ openid.setOpenIdUrl(url);
+ }
+ if (openid.demo) {
+ alert(openid.demo_text + "\r\n" + document.getElementById(openid.input_id).value);
+ return false;
+ }
+ if (url && url.indexOf("javascript:") == 0) {
+ url = url.substr("javascript:".length);
+ eval(url);
+ return false;
+ }
+ return true;
+ },
+
+ /**
+ * @return {Void}
+ */
+ setOpenIdUrl: function (url) {
+ var hidden = document.getElementById(this.input_id);
+ if (hidden != null) {
+ hidden.value = url;
+ } else {
+ $('#openid_form').append('');
+ }
+ },
+
+ /**
+ * @return {Void}
+ */
+ highlight: function (box_id) {
+ // remove previous highlight.
+ var highlight = $('#openid_highlight');
+ if (highlight) {
+ highlight.replaceWith($('#openid_highlight a')[0]);
+ }
+ // add new highlight.
+ $('.' + box_id).wrap('');
+ },
+
+ setCookie: function (value) {
+ var date = new Date();
+ date.setTime(date.getTime() + (this.cookie_expires * 24 * 60 * 60 * 1000));
+ var expires = "; expires=" + date.toGMTString();
+ document.cookie = this.cookie_name + "=" + value + expires + "; path=" + this.cookie_path;
+ },
+
+ readCookie: function () {
+ var nameEQ = this.cookie_name + "=";
+ var ca = document.cookie.split(';');
+ for (var i = 0; i < ca.length; i++) {
+ var c = ca[i];
+ while (c.charAt(0) == ' ')
+ c = c.substring(1, c.length);
+ if (c.indexOf(nameEQ) == 0)
+ return c.substring(nameEQ.length, c.length);
+ }
+ return null;
+ },
+
+ /**
+ * @return {Void}
+ */
+ useInputBox: function (provider) {
+ var input_area = $('#openid_input_area');
+ var html = '';
+ var id = 'openid_username';
+ var value = '';
+ var label = provider.label;
+ var style = '';
+ if (label) {
+ html = '' + label + '
';
+ }
+ if (provider.name == 'OpenID') {
+ id = this.input_id;
+ value = 'http://';
+ style = 'background: #FFF url(' + this.img_path + 'openid-inputicon.gif) no-repeat scroll 0 50%; padding-left:18px;';
+ }
+ html += ''
+ + '';
+ input_area.empty();
+ input_area.append(html);
+ $('#' + id).focus();
+ },
+
+ setDemoMode: function (demoMode) {
+ this.demo = demoMode;
+ }
+ };
+})(jQuery);
diff --git a/wise-webapp/src/main/webapp/jsp/login.jsp b/wise-webapp/src/main/webapp/jsp/login.jsp
index 1ba2adf1..a6e6d0a5 100644
--- a/wise-webapp/src/main/webapp/jsp/login.jsp
+++ b/wise-webapp/src/main/webapp/jsp/login.jsp
@@ -49,6 +49,7 @@
">
+
diff --git a/wise-webapp/src/main/webapp/jsp/loginOpenId.jsp b/wise-webapp/src/main/webapp/jsp/loginOpenId.jsp
new file mode 100644
index 00000000..9101c335
--- /dev/null
+++ b/wise-webapp/src/main/webapp/jsp/loginOpenId.jsp
@@ -0,0 +1,41 @@
+<%@page pageEncoding="UTF-8" %>
+<%@ include file="/jsp/init.jsp" %>
+
+<%--@elvariable id="isHsql" type="boolean"--%>
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wise-webapp/src/main/webapp/jsp/template.jsp b/wise-webapp/src/main/webapp/jsp/template.jsp
index cc4ddeb7..a6d6e565 100644
--- a/wise-webapp/src/main/webapp/jsp/template.jsp
+++ b/wise-webapp/src/main/webapp/jsp/template.jsp
@@ -14,13 +14,15 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
@@ -38,9 +40,20 @@
-
+
+
+
+
+
+
+
+