Changeset discussions
Add support for commenting on changesets with RSS feeds and email notification of comments to other commenters and people that have chosen to subscribe to a changeset.
This commit is contained in:
parent
653b4c93bc
commit
14ac1babc2
27 changed files with 1108 additions and 27 deletions
80
app/assets/javascripts/index/changeset.js
Normal file
80
app/assets/javascripts/index/changeset.js
Normal file
|
@ -0,0 +1,80 @@
|
|||
OSM.Changeset = function (map) {
|
||||
var page = {},
|
||||
content = $('#sidebar_content'),
|
||||
currentChangesetId;
|
||||
|
||||
page.pushstate = page.popstate = function(path, id) {
|
||||
OSM.loadSidebarContent(path, function() {
|
||||
page.load(path, id);
|
||||
});
|
||||
};
|
||||
|
||||
page.load = function(path, id) {
|
||||
if(id)
|
||||
currentChangesetId = id;
|
||||
initialize();
|
||||
addChangeset(currentChangesetId, true);
|
||||
};
|
||||
|
||||
function addChangeset(id, center) {
|
||||
var bounds = map.addObject({type: 'changeset', id: parseInt(id)}, function(bounds) {
|
||||
if (!window.location.hash && bounds.isValid() &&
|
||||
(center || !map.getBounds().contains(bounds))) {
|
||||
OSM.router.withoutMoveListener(function () {
|
||||
map.fitBounds(bounds);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function updateChangeset(form, method, url, include_data) {
|
||||
$(form).find("input[type=submit]").prop("disabled", true);
|
||||
if(include_data) {
|
||||
data = {text: $(form.text).val()};
|
||||
} else {
|
||||
data = {};
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: url,
|
||||
type: method,
|
||||
oauth: true,
|
||||
data: data,
|
||||
success: function () {
|
||||
OSM.loadSidebarContent(window.location.pathname, page.load);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function initialize() {
|
||||
content.find("input[name=comment]").on("click", function (e) {
|
||||
e.preventDefault();
|
||||
var data = $(e.target).data();
|
||||
updateChangeset(e.target.form, data.method, data.url, true);
|
||||
});
|
||||
|
||||
content.find(".action-button").on("click", function (e) {
|
||||
e.preventDefault();
|
||||
var data = $(e.target).data();
|
||||
updateChangeset(e.target.form, data.method, data.url);
|
||||
});
|
||||
|
||||
content.find("textarea").on("input", function (e) {
|
||||
var form = e.target.form;
|
||||
|
||||
if ($(e.target).val() == "") {
|
||||
$(form.comment).prop("disabled", true);
|
||||
} else {
|
||||
$(form.comment).prop("disabled", false);
|
||||
}
|
||||
});
|
||||
|
||||
content.find("textarea").val('').trigger("input");
|
||||
};
|
||||
|
||||
page.unload = function() {
|
||||
map.removeObject();
|
||||
};
|
||||
|
||||
return page;
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue