First integration of the mindmap list.

This commit is contained in:
Paulo Gustavo Veiga 2012-04-06 17:05:42 -03:00
parent a141414b4b
commit bca68f407d
43 changed files with 414 additions and 1119 deletions

View File

@ -1,6 +1,7 @@
package com.wisemapping.rest; package com.wisemapping.rest;
import com.sun.jdi.IntegerType;
import com.wisemapping.exceptions.WiseMappingException; import com.wisemapping.exceptions.WiseMappingException;
import com.wisemapping.model.MindMap; import com.wisemapping.model.MindMap;
import com.wisemapping.model.MindmapUser; import com.wisemapping.model.MindmapUser;
@ -24,15 +25,6 @@ import java.util.Calendar;
import java.util.List; import java.util.List;
/**
* Pendings:
* List with filter
* Clone
* Discard Changed
* Public ?
* Admin operations for get/update
* Check visibility
*/
@Controller @Controller
public class MindmapController extends BaseController { public class MindmapController extends BaseController {
@Autowired @Autowired
@ -125,6 +117,17 @@ public class MindmapController extends BaseController {
mindmapService.removeMindmap(mindmap, user); mindmapService.removeMindmap(mindmap, user);
} }
@RequestMapping(method = RequestMethod.DELETE, value = "/maps/batch")
@ResponseStatus(value = HttpStatus.NO_CONTENT)
public void batchDelete(@RequestParam(required = false) String ids) throws IOException, WiseMappingException {
final User user = Utils.getUser();
final String[] mapsIds = ids.split(",");
for (final String mapId : mapsIds) {
final MindMap mindmap = mindmapService.getMindmapById(Integer.parseInt(mapId));
mindmapService.removeMindmap(mindmap, user);
}
}
@RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/xml", consumes = {"application/xml"}, produces = {"application/json", "text/html", "application/xml"}) @RequestMapping(method = RequestMethod.PUT, value = "/maps/{id}/xml", consumes = {"application/xml"}, produces = {"application/json", "text/html", "application/xml"})
@ResponseStatus(value = HttpStatus.NO_CONTENT) @ResponseStatus(value = HttpStatus.NO_CONTENT)
public void updateMapXml(@RequestBody String xml, @PathVariable int id, @RequestParam(required = false) boolean minor) throws IOException, WiseMappingException { public void updateMapXml(@RequestBody String xml, @PathVariable int id, @RequestParam(required = false) boolean minor) throws IOException, WiseMappingException {

View File

@ -74,6 +74,11 @@ public class RestMindmap {
return mindmap.isPublic(); return mindmap.isPublic();
} }
public void setPublic(boolean value) {
// return mindmap.isPublic();
}
public String getXml() throws IOException { public String getXml() throws IOException {
return mindmap.getXmlStr(); return mindmap.getXmlStr();
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 B

View File

@ -1,252 +0,0 @@
@import "common.css";
#recentText {
width: 100px;
font-size: 12px;
font-weight: bold;
padding: 10px 5px 5px 0;
color: #808080;
}
#mapListContainer {
padding: 15px;
height: 400px;
}
#recentFiles {
margin: 10px auto 5px;
width: 900px;
height: 100%;
padding: 8px;
}
#recentFiles a {
text-decoration: none;
color: #464545;
}
#recentFiles a:hover {
color: #093A9D;
}
#recentFiles .recentItemContainer {
height: 20px;
background-color: white;
padding: 0 0 0 7px;
margin-top: 4px;
}
#recentFiles .recentItemIcon {
float: left;
width: 20px;
height: 15px;
background: url(../images/icon_list.png) no-repeat left;
}
#recentFiles .recentItemTitle {
float: left;
padding-left: 0;
padding-right: 10px;
font-size: 12px;
}
#mydocs {
margin: 20px auto;
width: 900px;
height: 300px;
padding: 10px;
background-color: #C3DEF5;
border: 1px solid #A7C6DF;
}
#toolbar .button {
cursor: pointer;
border: 1px solid #E5E5E5;
float: left;
padding: 5px;
margin-right: 10px;
margin-left: 5px;
background-color: #838383;
color: white;
font-weight: bold;
}
#mydocs .button a {
color: white;
text-decoration: none;
}
#toolbar {
clear: both;
width: 900px;
height: 35px;
vertical-align: middle;
z-index: 3;
position: relative;
}
#toolbar .buttonContainer {
float: left;
position: relative;
top: 50%;
margin: -12px 5px 0;
height: 24px;
}
#toolbar .dropDownContainer {
margin-top: 5px;
height: 24px;
}
#toolbar .buttonStart {
float: left;
width: 3px;
height: 24px;
background: url(../images/start_btn.gif) no-repeat left;
}
#toolbar .buttonBody {
float: left;
height: 19px;
padding: 5px 5px 0;
background: url(../images/body_btn.gif);
}
#toolbar .buttonEnd {
float: left;
width: 3px;
height: 24px;
background: url(../images/end_btn.gif) no-repeat left;
}
#actionsBtn {
float: left;
position: relative;
top: 50%;
margin: -15px 5px 0;
width: 78px;
height: 30px;
}
#newMapButton {
float: left;
position: relative;
top: 50%;
margin: -15px 5px 0;
width: 78px;
height: 30px;
}
.menuItem {
color: black;
padding: 2px;
cursor: pointer;
text-align: center;
}
#docTable .button {
cursor: pointer;
}
#docTable {
clear: both;
width: 100%;
height: 250px;
overflow: auto;
border: 0 solid gray;
background-color: white;
z-index: 2;
position: relative;
}
#docTable table {
width: 100%;
border: 0 solid gray;
}
#docTable thead {
background-color: #093A9D;
font-size: 12px;
font-weight: normal;
padding: 5px;
}
#docTable td {
border-bottom: 1px solid #EEEEEE;
color: #999999;
font-size: 12px;
padding: 3px;
}
#docTable th {
color: white;
border-right: 1px dotted #ffffff;
font-weight: bold;
text-align: center;
font-size: 12px;
padding: 5px;
}
#docTable tbody tr:hover {
background-color: #E2f0f6;
}
#docTable tr {
padding: 5px;
}
#docTable .mapTitle {
font-size: 13px;
color: #666666;
font-weight: bold;
}
#docTable .mapTags {
font-size: 11px;
color: black;
}
.content {
background-color: white;
height: 550px;
}
#myDocsContainer {
width: 100%;
text-align: center;
float: left;
}
#recentItems {
height: 100%;
padding: 10px;
}
#recentFiles.sb {
background: #EEEEEE;
border: 1px solid #E5E5E5;
-moz-border-radius: 16px;
-khtml-border-radius: 16px;
-webkit-border-radius: 16px;
border-radius: 16px;
}
#recentItems.sb {
background: white;
border: 1px solid #E5E5E5;
-moz-border-radius: 16px;
-khtml-border-radius: 16px;
-webkit-border-radius: 16px;
border-radius: 16px;
}
#mydocs {
-moz-border-radius: 16px;
-khtml-border-radius: 16px;
-webkit-border-radius: 16px;
border-radius: 16px;
}
.subMenu2 {
display: none;
}

View File

@ -1,3 +1,97 @@
@import "css/common.css";
@html-background: #dedede repeat-x scroll;
@body-width: 956px;
@font-family: "Lucida Grande", "Arial", "Helvetica", "Verdana", "sans-serif";
@base-font-size: 11px;
@base-margin: 10px;
@base-padding: @base-margin;
@base-border-size: 1px;
@base-color: #111;
/* ----------------------------- General -------------------------------- */
#mindmapListContainer {
background: #FFFFFF;
margin: 0 auto;
width: @body-width;
padding: @base-padding;
}
.rounded-corners (@radius: 5px) {
border-radius: @radius;
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
}
/* ------------------------------ Tags ---------------------------------- */
@tags-width: 20%;
@tags-border-size: @base-border-size;
@tags-padding: @base-padding;
#tags {
width: @tags-width;
opacity: 0;
padding: @tags-padding;
float: left;
border-right: none;
position: absolute;
background: @base-color * 14.5;
border: @base-border-size solid @base-color * 14;
h2 {
font-size: @base-font-size * 1.5;
margin-top: 0px;
}
div.tag {
margin-bottom: @base-margin;
.ui-icon {
float:left;
margin-right: @base-margin / 2;
position: relative;
top: -2px;
}
}
#tags-actions {
margin-top: @base-margin;
}
}
/* ------------------------------ Table --------------------------------- */
@table-gap: 2%;
@table-width: 100% - (@tags-width + (@tags-padding / @body-width * 100) + @table-gap);
#map-table {
width: 100% !important;
display: inline-block;
}
input#selectAll {
position: relative;
left: 4px;
}
/* ----------------------------- Toolbar -------------------------------- */
#toolbar {
border: @tags-border-size solid @base-color * 11;
padding: @base-padding;
margin-bottom: @base-margin;
}
/* ----------------------------- Buttons -------------------------------- */
#buttons {
margin-left: @tags-width;
margin-bottom: @base-margin;
}
@even-color: #FFFFFF; @even-color: #FFFFFF;
@sorting-even-color: #EAEBFF; @sorting-even-color: #EAEBFF;
@ -284,4 +378,12 @@ table.display span.tag {
padding: 5px 10px; padding: 5px 10px;
background: desaturate(@red, 30%); background: desaturate(@red, 30%);
.rounded-corners(3px); .rounded-corners(3px);
}
#mindmapListTable .columName {
cursor: pointer
}
#mindmapListTable tr:hover {
background: #e0ffff;
} }

View File

Before

Width:  |  Height:  |  Size: 178 B

After

Width:  |  Height:  |  Size: 178 B

View File

Before

Width:  |  Height:  |  Size: 104 B

After

Width:  |  Height:  |  Size: 104 B

View File

Before

Width:  |  Height:  |  Size: 125 B

After

Width:  |  Height:  |  Size: 125 B

View File

Before

Width:  |  Height:  |  Size: 105 B

After

Width:  |  Height:  |  Size: 105 B

View File

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -1,109 +0,0 @@
@html-background: #dedede repeat-x scroll;
@body-background: transparent no-repeat center top;
@body-width: 956px;
@font-family: "Lucida Grande", "Arial", "Helvetica", "Verdana", "sans-serif";
@base-font-size: 11px;
@base-margin: 10px;
@base-padding: @base-margin;
@base-border-size: 1px;
@base-color: #111;
/* ----------------------------- General -------------------------------- */
html {
overflow-y: scroll;
background: @html-background;
}
body {
margin: 0;
padding: 0 20px 20px 20px;
background: @body-background;
min-height: 100%;
font-family: @font-family;
font-size: @base-font-size;
}
#wrapper {
background: #FFFFFF;
margin: 0 auto;
width: @body-width;
position: relative;
padding: @base-padding;
}
.rounded-corners (@radius: 5px) {
border-radius: @radius;
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
}
/* ------------------------------ Tags ---------------------------------- */
@tags-width: 20%;
@tags-border-size: @base-border-size;
@tags-padding: @base-padding;
#tags {
width: @tags-width;
opacity: 0;
padding: @tags-padding;
float: left;
border-right: none;
position: absolute;
background: @base-color * 14.5;
border: @base-border-size solid @base-color * 14;
h2 {
font-size: @base-font-size * 1.5;
margin-top: 0px;
}
div.tag {
margin-bottom: @base-margin;
.ui-icon {
float:left;
margin-right: @base-margin / 2;
position: relative;
top: -2px;
}
}
#tags-actions {
margin-top: @base-margin;
}
}
/* ------------------------------ Table --------------------------------- */
@table-gap: 2%;
@table-width: 100% - (@tags-width + (@tags-padding / @body-width * 100) + @table-gap);
#map-table {
width: 100% !important;
display: inline-block;
}
input#selectAll {
position: relative;
left: 4px;
}
/* ----------------------------- Toolbar -------------------------------- */
#toolbar {
border: @tags-border-size solid @base-color * 11;
padding: @base-padding;
margin-bottom: @base-margin;
}
/* ----------------------------- Buttons -------------------------------- */
#buttons {
margin-left: @tags-width;
margin-bottom: @base-margin;
}

View File

@ -1,19 +0,0 @@
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<div style="text-align: center;width: 100%;font-family: arial">
<h1>Embedding a map in a page</h1>
<iframe style="width:600px;height:400px;border: 1px solid black"
src="http://localhost:8080/wise-webapp/c/embeddedView.htm?mapId=1">
</iframe>
</div>
</body>
</html>

View File

@ -1,43 +0,0 @@
jQuery.fn.dataTableExt.oSort['es_date-asc'] = function(a,b) {
var esDatea = a.split('/');
var esDateb = b.split('/');
var x = (esDatea[2] + esDatea[1] + esDatea[0]) * 1;
var y = (esDateb[2] + esDateb[1] + esDateb[0]) * 1;
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
};
jQuery.fn.dataTableExt.oSort['es_date-desc'] = function(a,b) {
var esDatea = a.split('/');
var esDateb = b.split('/');
var x = (esDatea[2] + esDatea[1] + esDatea[0]) * 1;
var y = (esDateb[2] + esDateb[1] + esDateb[0]) * 1;
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
};
jQuery.fn.dataTableExt.selectAllMaps = function() {
var total = $('.select input:checkbox[id!="selectAll"]').size();
var selected = $('.select input:checked[id!="selectAll"]').size();
if (selected < total) {
$('.select input:!checked[id!="selectAll"]').each(function(index) {
$(this).prop("checked", true);
});
}
else {
$('.select input:!checked[id!="selectAll"]').each(function(index) {
$(this).prop("checked", false);
});
}
}
jQuery.fn.dataTableExt.getSelectedMaps = function() {
var ids = [];
$('.select input:checked[id!="selectAll"]').each(function(index) {
ids.push($(this).attr("id"));
});
return ids;
}

File diff suppressed because one or more lines are too long

View File

@ -1,15 +0,0 @@
{ "aaData": [
["1", "Fonctionnel plateforme", ["ThinkMapping"], "moi", "14/06/2011", "moi"],
["2", "Comportement topic", [""], "moi, Olivier, Nicolas", "14/06/2011", "Olivier"],
["3", "TM Blog", ["ThinkMapping"], "moi", "14/06/2011", "moi"],
["4", "Bloom", ["Clients,Favoris"], "moi", "13/06/2011", "moi"],
["5", "Morning Mr. Magpie", [""], "moi, Martin", "10/06/2011", "Martin"],
["6", "Little By Little", [""], "moi, Sophie", "10/06/2011", "Sophie"],
["7", "Feral", [""], "moi", "14/05/2011", "moi"],
["8", "Lotus Flower", [""], "moi, Sophie, Olivier", "13/05/2011", "Olivier"],
["9", "Codex", [""], "moi", "30/04/2011", "moi"],
["10", "Give Up The Ghost", [""], "moi, Olivier", "30/04/2011", "moi"],
["11", "Separator", [""], "moi, Olivier, Nicolas, Sophie", "02/04/2011", "Olivier"],
["12", "Supercollider", [""], "moi, Olivier", "02/04/2011", "Olivier"],
["13", "The Butcher", [""], "moi", "01/04/2011", "moi"]
]}

View File

@ -1,220 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>WiseMApping Workspace</title>
<!--Table Styles-->
<!--Less CSS Framework-->
<link rel="stylesheet/less" type="text/css" href="css/styles.less">
<link rel="stylesheet/less" type="text/css" href="css/table.less">
<script src="js/less-1.1.3.min.js" type="text/javascript"></script>
<!--jQuery DataTables-->
<script type="text/javascript" language="javascript" src="js/jquery.js"></script>
<script type="text/javascript" language="javascript" src="js/jquery-ui-1.8.16.custom.min.js"></script>
<link href="css/ui-lightness/jquery-ui-1.8.16.custom.css" rel="stylesheet">
<script type="text/javascript" language="javascript" src="js/jquery.dataTables.js"></script>
<script type="text/javascript" language="javascript" src="js/jquery.dataTables.plugins.js"></script>
<script type="text/javascript" charset="utf-8">
$(function() {
$('#map-table').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="maps"></table>' );
var table = $('#maps').dataTable( {
"bProcessing" : true,
"sAjaxSource" : "json_source.txt",
"aoColumns": [
{
"sTitle" : '<input type="checkbox" id="selectAll"/>',
"sClass" : "center select", "sWidth" : "15px",
"bSortable" : false, "bSearchable" : false,
"fnRender" : function(obj) {
var id = obj.aData[0];
return '<input type="checkbox" id="'+id+'"/>';
}
},
{
"sTitle" : "Titre",
"fnRender" : function(obj) {
var tagsList = obj.aData[2].toString().split(",");
var tagsHtml = ""
for (var i in tagsList) {
tagsHtml += " <span class='tag'>"+tagsList[i]+"</span>";
}
return obj.aData[1] + tagsHtml;
}
},
{ "sTitle" : "Tags", "bVisible" : false },
{ "sTitle": "Utillisateurs" },
{
"sTitle" : "date",
"sType" : "es_date",
"bVisible" : false, "bSearchable" : false,
"fnRender" :function(obj) {
return obj.aData[4];
}
},
{
"sTitle": "Derniere modification",
"fnRender" : function(obj) {
return obj.aData[4] + " " + obj.aData[5];
},
"iDataSort" : 4
},
{
"sTitle": "Details",
"sClass": "center",
"sWidth" : "15px",
"bSortable" : false, "bSearchable" : false,
"fnRender" : function(obj) {
return '<span class="ui-icon ui-icon-circle-triangle-e" style="margin: 0 auto;"></span>';
}
}
],
"bAutoWidth" : false,
// "bLengthChange": false,
// "bInfo": false,
// "bPaginate": false,
"oLanguage" : {
"sSearch" : "Rechercher",
"sInfo" : "Affichage de _START_ &#224 _END_ de _TOTAL_ entr&#233;es"
}
});
$('#maps_filter').appendTo("#toolbar");
$("#maps_length").appendTo("#buttons");
$('input:checkbox[id="selectAll"]').click(function() {
$("#maps").dataTableExt.selectAllMaps();
});
});
</script>
<!--Tags-->
<script type="text/javascript" charset="utf-8">
var tags = ['ThinkMapping', 'Akostic', 'Clients', 'Favoris'];
$(function() {
for (i in tags) {
var outerDiv = $('<div class="tag">'+tags[i]+'</div>');
var icon = $('<span class="ui-icon ui-icon-folder-collapsed"></span>');
outerDiv.append(icon);
$("#tags-list").append(outerDiv);
}
$("#tags-actions button" ).button({
icons: { primary: "ui-icon-plusthick" }
});
$("#tags-list .tag").each(function(index) {
$(this).click(function() {
console.log("ddfsfds");
})
})
});
</script>
<!--Buttons-->
<script type="text/javascript" charset="utf-8">
$(function() {
$("#buttons .show-tags").button({
icons: { primary: "ui-icon-folder-open" }
}).click(function() {
if ($("#tags").css("opacity") == 0) {
$("#tags").css("opacity", 1);
$("#maps").animate({
width: "77%"
}, 1000);
} else {
$("#maps").animate({
width: "100%"
}, 1000, function() {
$("#tags").css("opacity", 0);
});
}
});
$("#buttons .share").button({
icons: { primary: "ui-icon-transferthick-e-w" }
}).click(function() {
var selectedMaps = $('#maps').dataTableExt.getSelectedMaps();
var html2 = $('#share-dialog-modal p span').html(selectedMaps.toString());
if (selectedMaps.length > 0) {
$( "#share-dialog-modal" ).dialog({
height: 140,
modal: true,
buttons: {
"Delete": function() {
$( this ).dialog( "close" );
},
Cancel: function() {
$( this ).dialog( "close" );
}
}
});
}
});;
$("#buttons .delete").button({
icons: { primary: "ui-icon-trash" }
}).click(function() {
var selectedMaps = $('#maps').dataTableExt.getSelectedMaps();
var html2 = $('#delete-dialog-modal p span').html(selectedMaps.toString());
if (selectedMaps.length > 0) {
$( "#delete-dialog-modal" ).dialog({
height: 140,
modal: true,
buttons: {
"Delete": function() {
$( this ).dialog( "close" );
},
Cancel: function() {
$( this ).dialog( "close" );
}
}
});
}
});
})
</script>
</head>
<body>
<div id="wrapper">
<div id="toolbar" class="toolbar">
</div>
<div id="buttons">
<div id="delete-dialog-modal" title="Delete maps" style="display: none">
<p>Are you sure you want to delete maps <span></span> ?</p>
</div>
<button class="show-tags">Organiser</button>
<div id="share-dialog-modal" title="Share maps" style="display: none">
<p>Are you sure you want to share maps <span></span> ?</p>
</div>
<button class="share">Partager</button>
<button class="delete">Supprimer</button>
</div>
<div>
<div id="tags">
<h2>Mes dossiers:</h2>
<div id="tags-list"></div>
<div id="tags-actions">
<button>Nouveau Dossier</button>
</div>
</div>
<div id="map-table"></div>
</div>
</div>
</body>
</html>

View File

Before

Width:  |  Height:  |  Size: 612 B

After

Width:  |  Height:  |  Size: 612 B

View File

Before

Width:  |  Height:  |  Size: 807 B

After

Width:  |  Height:  |  Size: 807 B

View File

Before

Width:  |  Height:  |  Size: 635 B

After

Width:  |  Height:  |  Size: 635 B

View File

Before

Width:  |  Height:  |  Size: 852 B

After

Width:  |  Height:  |  Size: 852 B

View File

Before

Width:  |  Height:  |  Size: 263 B

After

Width:  |  Height:  |  Size: 263 B

View File

Before

Width:  |  Height:  |  Size: 252 B

After

Width:  |  Height:  |  Size: 252 B

View File

Before

Width:  |  Height:  |  Size: 282 B

After

Width:  |  Height:  |  Size: 282 B

View File

Before

Width:  |  Height:  |  Size: 260 B

After

Width:  |  Height:  |  Size: 260 B

View File

Before

Width:  |  Height:  |  Size: 251 B

After

Width:  |  Height:  |  Size: 251 B

View File

@ -0,0 +1,65 @@
jQuery.fn.dataTableExt.oSort['es_date-asc'] = function(a, b) {
var esDatea = a.split('/');
var esDateb = b.split('/');
var x = (esDatea[2] + esDatea[1] + esDatea[0]) * 1;
var y = (esDateb[2] + esDateb[1] + esDateb[0]) * 1;
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
};
jQuery.fn.dataTableExt.oSort['es_date-desc'] = function(a, b) {
var esDatea = a.split('/');
var esDateb = b.split('/');
var x = (esDatea[2] + esDatea[1] + esDatea[0]) * 1;
var y = (esDateb[2] + esDateb[1] + esDateb[0]) * 1;
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
};
jQuery.fn.dataTableExt.selectAllMaps = function() {
var total = $('.select input:checkbox[id!="selectAll"]').size();
var selected = $('.select input:checked[id!="selectAll"]').size();
if (selected < total) {
$('.select input:!checked[id!="selectAll"]').each(function() {
$(this).prop("checked", true);
});
}
else {
$('.select input:!checked[id!="selectAll"]').each(function() {
$(this).prop("checked", false);
});
}
};
jQuery.fn.dataTableExt.getSelectedMapsIds = function() {
var ids = [];
$('.select input:checked[id!="selectAll"]').each(function() {
var id = $(this).attr("id");
ids.push(id);
});
return ids;
};
jQuery.fn.dataTableExt.removeSelectedRows = function() {
var mapIds = this.getSelectedMapsIds();
jQuery.ajax({
async:false,
url: "../service/maps/batch?ids=" + mapIds.join(","),
type:"DELETE",
success : function(data, textStatus, jqXHR) {
console.log("delete success");
var trs = $('.select input:checked[id!="selectAll"]').parent().parent();
trs.each(function() {
$('#mindmapListTable').dataTable().fnDeleteRow(this);
});
},
error: function(){
alert("Unexpected error removing maps. Refresh before continue.");
}
});
};

View File

@ -62,6 +62,4 @@
</div> </div>
</div> </div>
</c:if> </c:if>
<div id="headerLoading">
<spring:message code="LOADING_MSG"/>
</div>

View File

@ -1,454 +1,250 @@
<!DOCTYPE HTML> <!DOCTYPE HTML>
<%@ page import="com.wisemapping.view.MindMapBean" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Collections" %>
<%@ page import="java.util.ArrayList" %>
<%@ include file="/jsp/init.jsp" %> <%@ include file="/jsp/init.jsp" %>
<html> <html>
<head> <head>
<title> <base href="../">
<spring:message code="SITE.TITLE"/> <title><spring:message code="SITE.TITLE"/></title>
</title> <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" type="text/css" href="../css/mymaps.css"/> <link rel="icon" href="${pageContext.request.contextPath}/images/favicon.ico" type="image/x-icon"/>
<link rel="icon" href="${pageContext.request.contextPath}/images/favicon.ico" type="image/x-icon"/> <link rel="shortcut icon" href="${pageContext.request.contextPath}/images/favicon.ico" type="image/x-icon"/>
<link rel="shortcut icon" href="${pageContext.request.contextPath}/images/favicon.ico" type="image/x-icon"/> <script type='text/javascript' src='../js/mootools-core.js'></script>
<script type='text/javascript' src='../js/mootools-core.js'></script>
<link rel="stylesheet/less" type="text/css" href="css/mymaps.less"/>
<script src="js/less.js" type="text/javascript"></script>
<!--jQuery DataTables-->
<script type="text/javascript" language="javascript" src="js/jquery.js"></script>
<script type="text/javascript" language="javascript" src="js/jquery-ui-1.8.16.custom.min.js"></script>
<link href="css/ui-lightness/jquery-ui-1.8.16.custom.css" rel="stylesheet">
<script type="text/javascript" language="javascript" src="js/jquery.dataTables.js"></script>
<script type="text/javascript" language="javascript" src="js/jquery.dataTables.plugins.js"></script>
<script type="text/javascript" charset="utf-8">
$(function() {
var jQueryDataTable = $('#mindmapListTable').dataTable({
bProcessing : true,
sAjaxSource : "../service/maps",
sAjaxDataProp: 'mindmapsInfo',
aoColumns: [
{
sTitle : '<input type="checkbox" id="selectAll"/>',
sWidth : "15px",
sClass : "select center",
bSortable : false,
bSearchable : false,
fnRender : function(obj) {
return '<input type="checkbox" id="' + obj.aData.id + '"/>';
}
},
{
sClass : "columName",
sTitle : "Name",
bUseRendered : false,
mDataProp: "title"
},
{
sTitle : "Description",
mDataProp : "description"
},
{
sTitle : "Owner",
mDataProp :"creator"
},
{
bSearchable : false,
sTitle : "Last Modified",
bUseRendered: false,
sType: "numeric",
mDataProp: "lastModificationDate",
fnRender : function(obj) {
return obj.aData.lastModificationDate + ", " + obj.aData.lastModifierUser;
}
},
{
sTitle: "Details",
sClass: "center",
sWidth : "15px",
bSortable : false,
bSearchable : false,
fnRender : function(obj) {
return '<span class="ui-icon ui-icon-circle-triangle-e" style="margin: 0 auto;"></span>';
}
}
],
"bAutoWidth" : false,
"oLanguage" : {
"sSearch" : "Search",
"sInfo" : "Page _END_ of _TOTAL_"
},
bStateSave:true
});
$('#mindmapListTable_filter').appendTo("#toolbar");
$("#mindmapListTable_length").appendTo("#buttons");
$('input:checkbox[id="selectAll"]').click(function() {
$("#mindmapListTable").dataTableExt.selectAllMaps();
});
});
</script>
<!--Tags-->
<script type="text/javascript" charset="utf-8">
var tags = ['ThinkMapping', 'Akostic', 'Clients', 'Favoris'];
$(function() {
for (i in tags) {
var outerDiv = $('<div class="tag">' + tags[i] + '</div>');
var icon = $('<span class="ui-icon ui-icon-folder-collapsed"></span>');
outerDiv.append(icon);
$("#tags-list").append(outerDiv);
}
$("#tags-actions button").button({
icons: { primary: "ui-icon-plusthick" }
});
$("#tags-list .tag").each(function(index) {
$(this).click(function() {
console.log("ddfsfds");
})
})
});
</script>
<!--Buttons-->
<script type="text/javascript" charset="utf-8">
$(function() {
$("#buttons .show-tags").button({
icons: { primary: "ui-icon-folder-open" }
}).click(function() {
if ($("#tags").css("opacity") == 0) {
$("#tags").css("opacity", 1);
$("#mindmapListTable").animate({
width: "77%"
}, 1000);
} else {
$("#mindmapListTable").animate({
width: "100%"
}, 1000, function() {
$("#tags").css("opacity", 0);
});
}
});
$("#buttons .share").button({
icons: { primary: "ui-icon-transferthick-e-w" }
}).click(function() {
var selectedMaps = $('#mindmapListTable').dataTableExt.getSelectedMapsIds();
var html2 = $('#share-dialog-modal p span').html(selectedMaps.toString());
if (selectedMaps.length > 0) {
$("#share-dialog-modal").dialog({
height: 140,
modal: true,
buttons: {
"Delete": function() {
$(this).dialog("close");
},
Cancel: function() {
$(this).dialog("close");
}
}
});
}
});
$("#buttons .newMap").button({
icons: { primary: "ui-icon-circle-plus" }
}).click(function() {
window.location = "c/newMap.htm"
});
$("#buttons .importMap").button({
icons: { primary: "ui-icon-trash" }
});
$("#buttons .moreActions").button({
icons: { primary: "ui-icon-triangle-1-s" }
});
$("#buttons .delete").button({
icons: { primary: "ui-icon-trash" }
}).click(function() {
var mapIds = $('#mindmapListTable').dataTableExt.getSelectedMapsIds();
if (mapIds.length > 0) {
var html2 = $('#delete-dialog-modal p span');
$("#delete-dialog-modal").dialog({
height: 140,
modal: true,
buttons: {
"Delete": function() {
$('#mindmapListTable').dataTableExt.removeSelectedRows();
$(this).dialog("close");
},
Cancel: function() {
$(this).dialog("close");
}
}
});
}
});
});
</script>
</head> </head>
<body> <body>
<div class="content"> <div class="content">
<jsp:include page="header.jsp"> <jsp:include page="header.jsp">
<jsp:param name="removeSignin" value="false"/> <jsp:param name="removeSignin" value="false"/>
<jsp:param name="showLogout" value="true"/> <jsp:param name="showLogout" value="true"/>
</jsp:include> </jsp:include>
<div id="mindmapListContainer">
<div id="toolbar" class="toolbar">
<c:url value="mymaps.htm" var="mapDetail"> </div>
<c:param name="action" value="detail"/>
</c:url>
<c:url value="mymaps.htm" var="deleteSelectedMapUrl">
<c:param name="action" value="deleteAll"/>
<c:param name="userEmail" value="${pageContext.request.userPrincipal.name}"/>
</c:url>
<div id="mapListContainer"> <div id="buttons">
<div id="delete-dialog-modal" title="Delete maps" style="display: none">
<div id="myDocsContainer"> <p>Are you sure you want to delete maps <span></span> ?</p>
<div id="recentFiles" class="sb">
<div id="recentText">
<spring:message code="RECENT_FILES"/>
</div>
<div id="recentItems" class="sb">
<div class="recentItemContainer">
<%
int MAX_RECENT_MAPS = 6;
List<MindMapBean> list = (List<MindMapBean>) request.getAttribute("wisemapsList");
if (list != null && !list.isEmpty()) {
List<MindMapBean> recentMaps = new ArrayList<MindMapBean>();
recentMaps.addAll(list);
Collections.sort(recentMaps, new MindMapBean.MindMapBeanComparator());
for (int i = recentMaps.size() - 1; i >= 0 && i >= recentMaps.size() - MAX_RECENT_MAPS; i--) {
%>
<div class="recentItemIcon"></div>
<div class="recentItemTitle">
<a href="javascript:openMap('<%=recentMaps.get(i).getId()%>')">
<%=recentMaps.get(i).getTitle()%>
</a>
</div> </div>
<div id="share-dialog-modal" title="Share maps" style="display: none">
<% <p>Are you sure you want to share maps <span></span> ?</p>
} </div>
} else { <button class="newMap">New</button>
%> <button class="delete">Delete</button>
<div class="recentItemTitle"> <button class="importMap">Import</button>
<spring:message code="EMPTY_MINDMAP_TABLE"/> <button class="moreActions">More</button>
</div>
<div>
<div id="tags">
<h2>Mes dossiers:</h2>
<div id="tags-list"></div>
<div id="tags-actions">
<button>Nouveau Dossier</button>
</div>
</div>
<div id="map-table">
<table cellpadding="0" cellspacing="0" border="0" class="display" id="mindmapListTable">
</table>
</div> </div>
<%
}
%>
</div> </div>
</div> </div>
</div> </div>
<div id="mydocs">
<div id="toolbar">
<input id="selectedMapIds" type="hidden" value=""/>
<div class="leftMenu">
<div class="button">
<a href="newMap.htm" title="<spring:message code="NEW_MAP_MSG"/>">
<spring:message code="NEW_MINDMAP"/>
</a>
</div>
<div class="button menuLink"
onclick="updateLinks($(this).getParent()); new Windoo.Confirm('<spring:message code="DELETE_SELECTED_CONFIRMATION"/>',
{
'window': {theme:Windoo.Themes.wise,
title:'<spring:message code="DELETE_MAP"/>'
},
'onConfirm':function(){
$(document.toolbarForm.mindmapIds).value=$('selectedMapIds').value;
$(document.toolbarForm).action='<c:out value="${deleteSelectedMapUrl}" escapeXml="true"/>';
$(document.toolbarForm).submit();
}
});">
<spring:message code="DELETE_SELECTED"/>
</div>
</div>
<div class="button">
<a href="importMap.htm" rel="moodalbox 500px 250px" title="<spring:message code="IMPORT_MINDMAP_DETAILS"/>">
<spring:message code="IMPORT_MINDMAP"/>
</a>
</div>
</div>
<c:url value="mymaps.htm" var="shareMap">
<c:param name="action" value="collaborator"/>
<c:param name="userEmail" value="${pageContext.request.userPrincipal.name}"/>
</c:url>
<c:url value="mymaps.htm" var="deleteMapUrl">
<c:param name="action" value="delete"/>
<c:param name="userEmail" value="${pageContext.request.userPrincipal.name}"/>
</c:url>
<c:url value="mymaps.htm" var="changeStatus">
<c:param name="action" value="changeStatus"/>
<c:param name="userEmail" value="${pageContext.request.userPrincipal.name}"/>
</c:url>
<div id="docTable">
<table>
<colgroup>
<col style="width:3%;"/>
<col style="width:3%;"/>
<col style="width:15%;"/>
<col style="width:30%;"/>
<col style="width:14%;"/>
<col style="width:10%;"/>
<col style="width:20%;"/>
<col style="width:5%;"/>
</colgroup>
<thead>
<tr>
<th style="text-align:center">
<label for="checkAll"></label><input id="checkAll" type="checkbox" onchange="selectAllMaps(this);">
</th>
<th>
<spring:message code="FILE"/>
</th>
<th>
<spring:message code="NAME"/>
</th>
<th>
<spring:message code="DESCRIPTION"/>
</th>
<th>
<spring:message code="STATUS"/>
</th>
<th>
<spring:message code="CREATOR"/>
</th>
<th>
<spring:message code="LAST_EDITOR"/>
</th>
<th>&nbsp;
</th>
</tr>
</thead>
<tbody>
<c:forEach items="${wisemapsList}" var="mindmap">
<tr>
<td>
<div style="text-align:center;"><input type="checkbox" name="chk" id="chk${mindmap.id}"
onclick="addToSelectedMapList(this);"></div>
</td>
<td>
<div class="leftMenu">
<img src="../images/icon_list.png" class="button" style="display:block;border:0;">
<div class="subMenu2">
<a href="javascript:openMap('${mindmap.id}')" title="<spring:message code="OPEN_MSG"/>">
<spring:message code="OPEN"/>
</a>
<c:if test="${mindmap.owner==requestScope.user}">
<a href="renameMap.htm?mapId=${mindmap.id}" rel="moodalbox 400px 180px wizard"
title="<spring:message code="RENAME_DETAILS"/>">
<spring:message code="RENAME"/>
</a>
</c:if>
<a href="history.htm?action=list&amp;goToMindmapList&amp;mapId=${mindmap.id}"
rel="moodalbox 600px 400px wizard" title="<spring:message code="HISTORY_INFO"/>">
<spring:message code="HISTORY"/>
</a>
<div class="menuButton menuLink subMenu2Sep"
onclick="new Windoo.Confirm('<spring:message code="DELETE_CONFIRMATION"/>',
{
window: {'theme':Windoo.Themes.wise,
title:'<spring:message code="DELETE_MAP"/>'
},
'onConfirm':function(){
var form = new Element('form').setProperties({action: '<c:out value="${deleteMapUrl}" escapeXml="true"/>&amp;mapId=${mindmap.id}', method:'post'}).injectInside(document.body);
form.submit();
}
});">
<spring:message code="DELETE"/>
</div>
<a href="tags.htm?mapId=${mindmap.id}" rel="moodalbox 400px 200px wizard"
title="<spring:message code="TAGS_DETAILS"/>">
<spring:message code="TAGS"/>
</a>
<c:if test="${mindmap.owner==requestScope.user}">
<a href="<c:out value="${shareMap}" escapeXml="true"/>&amp;mapId=${mindmap.id}"
rel="moodalbox 780px 530px wizard"
title="<spring:message code="SHARE_DETAILS"/>">
<spring:message code="COLLABORATION"/>
</a>
<a class="subMenu2Sep" href="publish.htm?mapId=${mindmap.id}"
rel="moodalbox 600px 400px wizard" title="<spring:message code="PUBLISH_MSG"/>">
<spring:message code="PUBLISH"/>
</a>
</c:if>
<%--<a href="export.htm?mapId=${mindmap.id}"
rel="moodalbox 600px 400px" title="<spring:message code="EXPORT_DETAILS"/>">
<spring:message code="EXPORT"/>
</a>--%>
<%--<a href="javascript:printMap(${mindmap.id});">
<spring:message code="PRINT"/>
</a>--%>
</div>
</div>
</td>
<td>
<div>
<div class="mapTitle">
<a href="javascript:openMap('${mindmap.id}')">
${mindmap.title}
</a>
</div>
<div class="mapTags">
${mindmap.tags}
</div>
</div>
</td>
<td>
${mindmap.description}
</td>
<td>
<c:choose>
<c:when test="${not mindmap.public}">
<img src="../images/key.png"
title="<spring:message code="PRIVATE"/>: <spring:message code="ONLY_VIEW_PRIVATE"/>"
alt="<spring:message code="PRIVATE"/>"/>
</c:when>
<c:otherwise>
<img src="../images/world2.png"
title="<spring:message code="PUBLIC"/>: <spring:message code="ALL_VIEW_PUBLIC"/>"
alt="World"
<spring:message code="PUBLIC"/>
</c:otherwise>
</c:choose>
</td>
<td>${mindmap.creationUser}</td>
<td>${mindmap.lastEditDate} by ${mindmap.lastEditor}</td>
<td><a href="<c:out value="${mapDetail}" escapeXml="true"/>&amp;mapId=${mindmap.id}">
<spring:message code="DETAIL"/>
</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
<div id="ds1" class="submenu" style="display:none;">
<a href="<c:out value="${deleteSelectedMapUrl}" escapeXml="true"/>&amp;mindmapIds=" rel="moodalbox 300px 120px">Delete</a>
<a href="#">Tag</a>
<a href="#">Publish</a>
</div>
<div id="ds2" class="submenu" style="position:absolute; display:none;">
<a href="<c:out value="${shareMap}" escapeXml="true"/>&amp;mapId=" rel="moodalbox 780px 530px"
title="Share WiseMap">Share</a>
<a href="publish.htm?mapId=" rel="moodalbox 600px 400px wizard" title="<spring:message code="PUBLISH_DETAILS"/>">
<spring:message code="PUBLISH"/>
</a>
<a href="<c:out value="${deleteMapUrl}" escapeXml="true"/>&amp;mapId=" rel="moodalbox 300px 120px"
title="Delete Confirmation">
Delete
</a>
<a href="export.htm?mapId=" rel="moodalbox 750px 400px" title="<spring:message code="EXPORT_DETAILS"/>">
<spring:message code="EXPORT"/>
</a>
</div>
</div>
</div>
<c:url value="editor.htm" var="mindmapEditorUrl"/>
<form name="openForm" action="${mindmapEditorUrl}" method="post">
<input type="hidden" name="action" value="open"/>
<input type="hidden" name="mapId" value=""/>
</form>
<form name="toolbarForm" method="post">
<input type="hidden" name="mindmapIds"/>
</form>
<form method="post" id="printForm" name="printForm" action="<c:url value="export.htm"/>" target="new">
<input type="hidden" name="action" value="print"/>
<input type="hidden" name="mapId" value="${mindmap.id}"/>
</form>
</div>
<script type="text/javascript">
function openMap(mapId) {
document.openForm.mapId.value = mapId;
document.openForm.submit();
}
function deleteOkButton(url) {
var form = document.createElement('form');
form.method = 'post';
form.action = url;
document.body.appendChild(form);
form.submit();
}
Window.onDomReady(initDropDowns);
function initDropDowns() {
$ES('li[rel="submenu"]', $(document.body)).each(function(el) {
var items = $E('ul', el);
el.addEvent('click', showMenu.bind(items));
}, this);
}
function showMenu(evt) {
if ($(document).onclick) {
$(document).fireEvent('click', 0);
showMenu.delay(110, this, evt);
}
else {
this.myEffect = $(this).effects({duration:100, transition: Fx.Transitions.linear});
this.myEffect.start({'opacity':[0,1]});
$(document).onclick = hide.bind(this);
var event = new Event(evt);
event.stop();
}
}
function hide() {
this.myEffect.start({'opacity':[1,0]});
$(document).onclick = '';
}
function updateLinks(el) {
$ES('a', el).each(function(link) {
if (!link.ohref) {
link.ohref = link.getProperty('ohref');
}
link.href = link.ohref + $('selectedMapIds').value;
});
}
function openWizard(href, title, rel) {
href = href + $('selectedMapIds').value;
// MOOdalBox.open(href, title, rel);
}
function addToSelectedMapList(el) {
var ids = $('selectedMapIds');
var id = el.id.replace(/[^\d]/g, '');
var value = ids.getProperty("value");
if (value != "") {
var allIds = $A(ids.value.split(','));
var changed = false;
if (allIds.contains(id) && !el.checked) {
allIds.remove(id);
changed = true;
}
else if (!allIds.contains(id) && el.checked) {
allIds.extend([id]);
changed = true;
}
if (changed) {
var finalIds = "";
$each(allIds, function(el) {
if (!finalIds == "") {
el = "," + el;
}
finalIds = finalIds + el;
});
value = finalIds;
}
}
else {
if (el.checked) {
value = id;
}
}
ids.setProperty("value", value);
}
function selectAllMaps(elem) {
var value = elem.checked;
var ids = "";
$ES('input[type="checkbox"]', $('docTable')).each(function(el) {
if (el.name.contains('chk')) {
el.checked = value;
var id = el.id.replace(/[^\d]/g, '');
if (!ids == "") {
id = "," + id;
}
ids = ids + id;
}
});
if (!value) {
$('selectedMapIds').setProperty('value', '');
}
else {
$('selectedMapIds').setProperty('value', ids);
}
/*var allElems = document.getElementsByName("chk");
for (var i = 0; i < allElems.length; i++)
{
allElems[i].checked = value;
}*/
}
function printMap(mapId) {
document.printForm.mapId.value = mapId;
document.printForm.submit();
}
</script>
<script type="text/javascript">
function removeCollaborator(collaboratorEmail) {
document.removeCollaboratorForm.colaboratorId.value = collaboratorEmail;
document.removeCollaboratorForm.submit();
//submitDialog('removeCollaboratorForm');
}
function addFriendsEmails() {
var newUsers = "";
var ob = $('friendList');
while (ob.selectedIndex != -1) {
newUsers = newUsers + ", " + ob.options[ob.selectedIndex].value;
ob.options[ob.selectedIndex].selected = false;
}
var dest = $('emailList');
if (dest.value == "")
newUsers = newUsers.substr(2, newUsers.length);
dest.value = dest.value + newUsers;
}
function changeStatus(collaboratorEmail) {
document.removeCollaboratorForm.userEmail.value = collaboratorEmail;
submitDialog('removeCollaboratorForm');
}
</script>
<jsp:include page="footer.jsp"/> <jsp:include page="footer.jsp"/>
</body> </body>
</html> </html>