]> git.openstreetmap.org Git - rails.git/blob - app/assets/javascripts/leaflet.share.js
1434743d0e719c82d492c2e34b750d7f67a23015
[rails.git] / app / assets / javascripts / leaflet.share.js
1 L.OSM.share = function (options) {
2   var control = L.control(options);
3
4   control.onAdd = function (map) {
5     var $container = $('<div>')
6       .attr('class', 'control-share');
7
8     $('<a>')
9       .attr('class', 'control-button')
10       .attr('href', '#')
11       .attr('title', 'Share')
12       .html('<span class="icon share"></span>')
13       .on('click', toggle)
14       .appendTo($container);
15
16     var $ui = $('<div>')
17       .attr('class', 'share-ui');
18
19     $('<h2>')
20       .text(I18n.t('javascripts.share.title'))
21       .appendTo($ui);
22
23     var $share_link = $('<div></div>')
24       .appendTo($ui);
25
26     var $title = $('<h3></h3>')
27       .text(I18n.t('javascripts.share.link'))
28       .appendTo($share_link);
29
30     var $short_url_input = $('<input />')
31       .attr('id', 'short_url')
32       .attr('type', 'checkbox')
33       .prop('checked', 'checked')
34       .appendTo($share_link)
35       .bind('change', function() {
36           options.short = $(this).prop('checked');
37           update();
38       });
39
40     var $short_url_label = $('<label></label>')
41       .text(I18n.t('javascripts.share.short_url'))
42       .attr('for', 'short_url')
43       .appendTo($share_link);
44
45     var $input = $('<input />')
46       .appendTo($share_link);
47
48     map.on('moveend layeradd layerremove', update);
49
50     options.sidebar.addPane($ui);
51
52     function toggle(e) {
53       e.stopPropagation();
54       e.preventDefault();
55       options.sidebar.togglePane($ui);
56     }
57
58     function update() {
59       var center = map.getCenter().wrap();
60       var layers = getMapLayers(map);
61       $input.val(
62           options.short ? options.getShortUrl(map) : options.getUrl(map)
63       );
64     }
65
66     return $container[0];
67   };
68
69   return control;
70 };