ensured map info box action buttons only show at proper times. enabled deletion of maps
This commit is contained in:
parent
bfc8c796c7
commit
c37c846fbd
7 changed files with 53 additions and 1 deletions
|
@ -126,6 +126,9 @@ Metamaps.Backbone.MapsCollection = Backbone.Collection.extend({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
self.trigger('successOnFetch');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -250,6 +250,9 @@ Metamaps.GlobalUI.CreateMap = {
|
||||||
success: function (model) {
|
success: function (model) {
|
||||||
var self = Metamaps.GlobalUI.CreateMap;
|
var self = Metamaps.GlobalUI.CreateMap;
|
||||||
|
|
||||||
|
//push the new map onto the collection of 'my maps'
|
||||||
|
Metamaps.Maps.Mine.add(model);
|
||||||
|
|
||||||
var formId = Metamaps.GlobalUI.lightbox === 'forkmap' ? '#fork_map' : '#new_map';
|
var formId = Metamaps.GlobalUI.lightbox === 'forkmap' ? '#fork_map' : '#new_map';
|
||||||
var form = $(formId);
|
var form = $(formId);
|
||||||
|
|
||||||
|
|
|
@ -66,6 +66,8 @@
|
||||||
},
|
},
|
||||||
explore: function (section) {
|
explore: function (section) {
|
||||||
|
|
||||||
|
// just capitalize the variable section
|
||||||
|
// either 'mine', 'featured', or 'active'
|
||||||
var capitalize = section.charAt(0).toUpperCase() + section.slice(1);
|
var capitalize = section.charAt(0).toUpperCase() + section.slice(1);
|
||||||
|
|
||||||
document.title = 'Explore ' + capitalize + ' Maps | Metamaps';
|
document.title = 'Explore ' + capitalize + ' Maps | Metamaps';
|
||||||
|
|
|
@ -36,6 +36,7 @@ Metamaps.Views.init = function () {
|
||||||
setCollection: function (collection) {
|
setCollection: function (collection) {
|
||||||
if (this.collection) this.stopListening(this.collection);
|
if (this.collection) this.stopListening(this.collection);
|
||||||
this.collection = collection;
|
this.collection = collection;
|
||||||
|
this.listenTo(this.collection, 'add', this.render);
|
||||||
this.listenTo(this.collection, 'successOnFetch', this.handleSuccess);
|
this.listenTo(this.collection, 'successOnFetch', this.handleSuccess);
|
||||||
this.listenTo(this.collection, 'errorOnFetch', this.handleError);
|
this.listenTo(this.collection, 'errorOnFetch', this.handleError);
|
||||||
},
|
},
|
||||||
|
|
|
@ -3654,6 +3654,7 @@ Metamaps.Map.InfoBox = {
|
||||||
$('.mapInfoBox').fadeOut(200, function () {
|
$('.mapInfoBox').fadeOut(200, function () {
|
||||||
self.changing = false;
|
self.changing = false;
|
||||||
self.isOpen = false;
|
self.isOpen = false;
|
||||||
|
self.hidePermissionSelect();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -3666,6 +3667,7 @@ Metamaps.Map.InfoBox = {
|
||||||
|
|
||||||
var isCreator = map.authorizePermissionChange(Metamaps.Active.Mapper);
|
var isCreator = map.authorizePermissionChange(Metamaps.Active.Mapper);
|
||||||
var canEdit = map.authorizeToEdit(Metamaps.Active.Mapper);
|
var canEdit = map.authorizeToEdit(Metamaps.Active.Mapper);
|
||||||
|
var shareable = map.get('permission') !== 'private';
|
||||||
|
|
||||||
obj["name"] = canEdit ? Hogan.compile(self.nameHTML).render({id: map.id, name: map.get("name")}) : map.get("name");
|
obj["name"] = canEdit ? Hogan.compile(self.nameHTML).render({id: map.id, name: map.get("name")}) : map.get("name");
|
||||||
obj["desc"] = canEdit ? Hogan.compile(self.descHTML).render({id: map.id, desc: map.get("desc")}) : map.get("desc");
|
obj["desc"] = canEdit ? Hogan.compile(self.descHTML).render({id: map.id, desc: map.get("desc")}) : map.get("desc");
|
||||||
|
@ -3678,6 +3680,7 @@ Metamaps.Map.InfoBox = {
|
||||||
|
|
||||||
var classes = isCreator ? "yourMap" : "";
|
var classes = isCreator ? "yourMap" : "";
|
||||||
classes += canEdit ? " canEdit" : "";
|
classes += canEdit ? " canEdit" : "";
|
||||||
|
classes += shareable ? " shareable" : "";
|
||||||
$(".mapInfoBox").removeClass("yourMap canEdit")
|
$(".mapInfoBox").removeClass("yourMap canEdit")
|
||||||
.addClass(classes)
|
.addClass(classes)
|
||||||
.html(self.generateBoxHTML.render(obj));
|
.html(self.generateBoxHTML.render(obj));
|
||||||
|
@ -3715,7 +3718,11 @@ Metamaps.Map.InfoBox = {
|
||||||
});
|
});
|
||||||
|
|
||||||
$('.yourMap .mapPermission').unbind().click(self.onPermissionClick);
|
$('.yourMap .mapPermission').unbind().click(self.onPermissionClick);
|
||||||
|
// .yourMap in the unbind/bind is just a namespace for the events
|
||||||
|
// not a reference to the class .yourMap on the .mapInfoBox
|
||||||
$('.mapInfoBox.yourMap').unbind('.yourMap').bind('click.yourMap', self.hidePermissionSelect);
|
$('.mapInfoBox.yourMap').unbind('.yourMap').bind('click.yourMap', self.hidePermissionSelect);
|
||||||
|
|
||||||
|
$('.yourMap .mapInfoDelete').unbind().click(self.deleteActiveMap);
|
||||||
},
|
},
|
||||||
createContributorList: function () {
|
createContributorList: function () {
|
||||||
var self = Metamaps.Map.InfoBox;
|
var self = Metamaps.Map.InfoBox;
|
||||||
|
@ -3777,9 +3784,33 @@ Metamaps.Map.InfoBox = {
|
||||||
Metamaps.Active.Map.save({
|
Metamaps.Active.Map.save({
|
||||||
permission: permission
|
permission: permission
|
||||||
});
|
});
|
||||||
|
shareable = permission === 'private' ? '' : 'shareable';
|
||||||
$('.mapPermission').removeClass('commons public private minimize').addClass(permission);
|
$('.mapPermission').removeClass('commons public private minimize').addClass(permission);
|
||||||
$('.mapPermission .permissionSelect').remove();
|
$('.mapPermission .permissionSelect').remove();
|
||||||
|
$('.mapInfoBox').removeClass('shareable').addClass(shareable);
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
},
|
||||||
|
deleteActiveMap: function () {
|
||||||
|
var confirmString = 'Are you sure you want to delete this map? ';
|
||||||
|
confirmString += 'This action is irreversible. It will not delete the topics and synapses on the map.';
|
||||||
|
|
||||||
|
var doIt = confirm(confirmString);
|
||||||
|
var map = Metamaps.Active.Map;
|
||||||
|
var mapper = Metamaps.Active.Mapper;
|
||||||
|
var authorized = map.authorizePermissionChange(mapper);
|
||||||
|
|
||||||
|
if (doIt && authorized) {
|
||||||
|
Metamaps.Map.InfoBox.close();
|
||||||
|
Metamaps.Maps.Active.remove(map);
|
||||||
|
Metamaps.Maps.Featured.remove(map);
|
||||||
|
Metamaps.Maps.Mine.remove(map);
|
||||||
|
map.destroy();
|
||||||
|
Metamaps.Router.home();
|
||||||
|
Metamaps.GlobalUI.notifyUser('Map eliminated!');
|
||||||
|
}
|
||||||
|
else if (!authorized) {
|
||||||
|
alert('Hey now. We can\'t just go around willy nilly deleting other people\'s maps now can we? Run off and find something constructive to do, eh?');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}; // end Metamaps.Map.InfoBox
|
}; // end Metamaps.Map.InfoBox
|
||||||
|
|
||||||
|
|
|
@ -1646,6 +1646,7 @@ float: left;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
.mapInfoShareIcon {
|
.mapInfoShareIcon {
|
||||||
width: 24px;
|
width: 24px;
|
||||||
|
@ -1658,11 +1659,19 @@ float: left;
|
||||||
.mapInfoShare:hover .mapInfoShareIcon {
|
.mapInfoShare:hover .mapInfoShareIcon {
|
||||||
background-position: 0 0;
|
background-position: 0 0;
|
||||||
}
|
}
|
||||||
|
/* only display share button if 'public' or 'commons' */
|
||||||
|
.shareable .mapInfoShare {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
.mapInfoDelete {
|
.mapInfoDelete {
|
||||||
background-image: url(delete_mapinfo.png);
|
background-image: url(delete_mapinfo.png);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: center 8px;
|
background-position: center 8px;
|
||||||
}
|
}
|
||||||
|
/* only display delete button if it's a map you created */
|
||||||
|
.yourMap .mapInfoDelete {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
.mapInfoButtonsWrapper span {
|
.mapInfoButtonsWrapper span {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
|
@ -2,7 +2,10 @@
|
||||||
# Partial rendering form for a new topic on a map
|
# Partial rendering form for a new topic on a map
|
||||||
# This code is called when viewing a metamap in show.html.erb in the views/maps folder
|
# This code is called when viewing a metamap in show.html.erb in the views/maps folder
|
||||||
#%>
|
#%>
|
||||||
<div class="mapInfoBox mapElement mapElementHidden permission <%= @map && @map.user == user ? " yourMap" : "" %><%= @map && @map.authorize_to_edit(user) ? " canEdit" : "" %>">
|
<div class="mapInfoBox mapElement mapElementHidden permission
|
||||||
|
<%= @map && @map.user == user ? " yourMap" : "" %>
|
||||||
|
<%= @map && @map.authorize_to_edit(user) ? " canEdit" : "" %>
|
||||||
|
<%= @map && @map.permission != 'private' ? " shareable" : "" %>">
|
||||||
|
|
||||||
<% if @map %>
|
<% if @map %>
|
||||||
<div class="mapInfoName" id="mapInfoName"><%= best_in_place @map, :name, :type => :textarea, :activator => "#mapInfoName", :classes => 'best_in_place_name' %></div>
|
<div class="mapInfoName" id="mapInfoName"><%= best_in_place @map, :name, :type => :textarea, :activator => "#mapInfoName", :classes => 'best_in_place_name' %></div>
|
||||||
|
|
Loading…
Reference in a new issue