diff --git a/images/marker-star.png b/images/marker-star.png
new file mode 100644
index 00000000..44048246
Binary files /dev/null and b/images/marker-star.png differ
diff --git a/plugins/bookmarks-by-zaso.user.js b/plugins/bookmarks-by-zaso.user.js
index 918db2fd..5bcda534 100644
--- a/plugins/bookmarks-by-zaso.user.js
+++ b/plugins/bookmarks-by-zaso.user.js
@@ -2,7 +2,7 @@
// @id iitc-plugin-bookmarks@ZasoGD
// @name IITC plugin: Bookmarks for maps and portals
// @category Controls
-// @version 0.2.4.@@DATETIMEVERSION@@
+// @version 0.2.5.@@DATETIMEVERSION@@
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion
// @updateURL @@UPDATEURL@@
// @downloadURL @@DOWNLOADURL@@
@@ -18,35 +18,14 @@
// PLUGIN START ////////////////////////////////////////////////////////
/***********************************************************************
- USEFUL FUNCTIONS:
- + window.plugin.bookmarks.refreshBkmrks(): reloads the bookmarks into box;
HOOKS:
- + pluginBkmrksEdit: fired when a bookmarks/folder is removed, added or sorted, also when a folder is opened/closed;
- + pluginBkmrksOpenOpt: fired when the "Bookmarks Options" panel is opened (you can add new options);
-
- CHANGELOG:
- v 0.2.1-0.2.2:
- + auto-drawer minor bug fix;
- + auto-drawer improved UI;
- + auto-drawer improved UI on mobile;
- + fixed hidden box problem (I hope): sometimes the box and the ribbon hidden;
-
- v 0.2.0:
- + code rewritten from scratch:
- ++ more optimization;
- ++ less animated effects;
- + Sync;
- + Hooks (for developer);
- + Option panel:
- ++ manual import/export/reset of the data;
- ++ sharing of the data (only IITCm);
- ++ storage/reset the box position (only desktop);
- + Auto-drawer feature: select two o three portals boomark to auto-draw a link or field (draw-tools required);
- + IITCm: you can open/close the folders;
- + IITCm: bookmarks/folders not sortable (the 'sortable' jquery function not work);
+ - pluginBkmrksEdit: fired when a bookmarks/folder is removed, added or sorted, also when a folder is opened/closed;
+ - pluginBkmrksOpenOpt: fired when the "Bookmarks Options" panel is opened (you can add new options);
+ - pluginBkmrksSyncEnd: fired when the sync is finished;
***********************************************************************/
+////////////////////////////////////////////////////////////////////////
// use own namespace for plugin
window.plugin.bookmarks = function() {};
@@ -68,8 +47,16 @@
window.plugin.bookmarks.enableSync = false;
+ window.plugin.bookmarks.starLayers = {};
+ window.plugin.bookmarks.starLayerGroup = null;
+
window.plugin.bookmarks.isSmart = undefined;
- window.plugin.bookmarks.isAndroid = function() { if(typeof android !== 'undefined' && android) { return true; } return false; }
+ window.plugin.bookmarks.isAndroid = function() {
+ if(typeof android !== 'undefined' && android) {
+ return true;
+ }
+ return false;
+ }
/*********************************************************************************************************************/
@@ -262,11 +249,12 @@
var guid = bkmrk['guid'];
var btn_link = ''+label+'';
}
+ // Create the bookmark
elementTemp += '
'+btn_remove+btn_link+'';
}
elementTemp += '';
- //Add folder 'Others' in last position
+ // Add folder 'Others' in last position
if(idFolders != window.plugin.bookmarks.KEY_OTHER_BKMRK) { element += elementTemp; }
else{ elementExc = elementTemp; }
}
@@ -286,9 +274,9 @@
for(var idBkmrk in list[idFolders]['bkmrk']) {
var portalGuid = list[idFolders]['bkmrk'][idBkmrk]['guid'];
if(guid === portalGuid) {
- return {"folder":idFolders,"id":idBkmrk};
+ return {"id_folder":idFolders,"id_bookmark":idBkmrk};
}
- }
+ }
}
return;
}
@@ -321,7 +309,7 @@
if(localStorage[window.plugin.bookmarks.KEY_STORAGE].search(guid) != -1) {
var bkmrkData = window.plugin.bookmarks.findByGuid(guid);
if(bkmrkData) {
- $('.bkmrk#'+bkmrkData['id']+' a.bookmarksLink').addClass('selected');
+ $('.bkmrk#'+bkmrkData['id_bookmark']+' a.bookmarksLink').addClass('selected');
$('.bkmrksStar').addClass('favorite');
}
}
@@ -335,12 +323,14 @@
if($('.bkmrksStar').hasClass('favorite')) {
var bkmrkData = window.plugin.bookmarks.findByGuid(guid);
var list = window.plugin.bookmarks.bkmrksObj['portals'];
- delete list[bkmrkData['folder']]['bkmrk'][bkmrkData['id']];
- $('.bkmrk#'+bkmrkData['id']+'').remove();
+ delete list[bkmrkData['id_folder']]['bkmrk'][bkmrkData['id_bookmark']];
+ $('.bkmrk#'+bkmrkData['id_bookmark']+'').remove();
window.plugin.bookmarks.saveStorage();
window.plugin.bookmarks.updateStarPortal();
- window.runHooks('pluginBkmrksEdit');
+
+ window.runHooks('pluginBkmrksEdit', {"target": "portal", "action": "remove", "folder": bkmrkData['id_folder'], "id": bkmrkData['id_bookmark'], "guid":guid});
+ console.log('BOOKMARKS: removed portal ('+bkmrkData['id_bookmark']+' situated in '+bkmrkData['id_folder']+' folder)');
}
// If portal isn't saved in bookmarks: Add this bookmark
else{
@@ -357,8 +347,9 @@
window.plugin.bookmarks.bkmrksObj['portals'][window.plugin.bookmarks.KEY_OTHER_BKMRK]['bkmrk'][ID] = {"guid":guid,"latlng":latlng,"label":label};
window.plugin.bookmarks.saveStorage();
- window.runHooks('pluginBkmrksEdit');
window.plugin.bookmarks.refreshBkmrks();
+ window.runHooks('pluginBkmrksEdit', {"target": "portal", "action": "add", "id": ID});
+ console.log('BOOKMARKS: added portal '+ID);
}
}
@@ -391,8 +382,9 @@
window.plugin.bookmarks.bkmrksObj[short_type][ID] = {"label":label,"state":1,"bkmrk":{}};
}
window.plugin.bookmarks.saveStorage();
- window.runHooks('pluginBkmrksEdit');
window.plugin.bookmarks.refreshBkmrks();
+ window.runHooks('pluginBkmrksEdit', {"target": type, "action": "add", "id": ID});
+ console.log('BOOKMARKS: added '+type+' '+ID);
}
// Remove BOOKMARK/FOLDER
@@ -401,12 +393,23 @@
var typeList = $(elem).parent().parent().parent().parent().parent('div').attr('id');
var ID = $(elem).parent('li').attr('id');
var IDfold = $(elem).parent().parent().parent('li').attr('id');
+ var guid = window.plugin.bookmarks.bkmrksObj[typeList.replace('bkmrk_', '')][IDfold]['bkmrk'][ID].guid;
delete window.plugin.bookmarks.bkmrksObj[typeList.replace('bkmrk_', '')][IDfold]['bkmrk'][ID];
$(elem).parent('li').remove();
if(type === 'portals') {
+ var list = window.plugin.bookmarks.bkmrksObj['portals'];
+
window.plugin.bookmarks.updateStarPortal();
+ window.plugin.bookmarks.saveStorage();
+
+ window.runHooks('pluginBkmrksEdit', {"target": "portal", "action": "remove", "folder": IDfold, "id": ID, "guid": guid});
+ console.log('BOOKMARKS: removed portal ('+ID+' situated in '+IDfold+' folder)');
+ } else {
+ window.plugin.bookmarks.saveStorage();
+ window.runHooks('pluginBkmrksEdit', {"target": "map", "action": "remove", "id": ID});
+ console.log('BOOKMARKS: removed map '+ID);
}
}
else if(type === 'folder') {
@@ -415,9 +418,11 @@
delete plugin.bookmarks.bkmrksObj[typeList.replace('bkmrk_', '')][ID];
$(elem).parent().parent('li').remove();
+ window.plugin.bookmarks.saveStorage();
+ window.plugin.bookmarks.updateStarPortal();
+ window.runHooks('pluginBkmrksEdit', {"target": "folder", "action": "remove", "id": ID});
+ console.log('BOOKMARKS: removed folder '+ID);
}
- window.plugin.bookmarks.saveStorage();
- window.runHooks('pluginBkmrksEdit');
}
/***************************************************************************************************************************************************************/
@@ -433,7 +438,9 @@
});
window.plugin.bookmarks.bkmrksObj[keyType] = newArr;
window.plugin.bookmarks.saveStorage();
- window.runHooks('pluginBkmrksEdit');
+
+ window.runHooks('pluginBkmrksEdit', {"target": "folder", "action": "sort"});
+ console.log('BOOKMARKS: sorted folder');
}
// Saved the new sort of the bookmarks (in the localStorage)
@@ -465,7 +472,8 @@
});
window.plugin.bookmarks.bkmrksObj[keyType] = newArr;
window.plugin.bookmarks.saveStorage();
- window.runHooks('pluginBkmrksEdit');
+ window.runHooks('pluginBkmrksEdit', {"target": "bookmarks", "action": "sort"});
+ console.log('BOOKMARKS: sorted bookmark (portal/map)');
}
window.plugin.bookmarks.jquerySortableScript = function() {
@@ -534,8 +542,9 @@
if(promptAction !== null && promptAction !== '') {
localStorage[window.plugin.bookmarks.KEY_STORAGE] = promptAction;
window.plugin.bookmarks.refreshBkmrks();
+ window.runHooks('pluginBkmrksEdit', {"target": "all", "action": "import"});
+ console.log('BOOKMARKS: resetted and imported bookmarks');
window.plugin.bookmarks.optAlert('Succesful. ');
- window.runHooks('pluginBkmrksEdit');
}
}
@@ -545,9 +554,9 @@
delete localStorage[window.plugin.bookmarks.KEY_STORAGE];
window.plugin.bookmarks.createStorage();
window.plugin.bookmarks.loadStorage();
-
window.plugin.bookmarks.refreshBkmrks();
- window.runHooks('pluginBkmrksEdit');
+ window.runHooks('pluginBkmrksEdit', {"target": "all", "action": "reset"});
+ console.log('BOOKMARKS: resetted all bookmarks');
window.plugin.bookmarks.optAlert('Succesful. ');
}
}
@@ -581,7 +590,7 @@
}
/***************************************************************************************************************************************************************/
-/** AUTO DRAWER ************************************************************************************************************************************************/
+/** AUTO DRAW **************************************************************************************************************************************************/
/***************************************************************************************************************************************************************/
window.plugin.bookmarks.dialogDrawer = function() {
dialog({
@@ -590,17 +599,16 @@
title:'Bookmarks - Auto Draw',
buttons:{
'DRAW': function() {
- window.plugin.bookmarks.draw();
+ window.plugin.bookmarks.draw(0);
},
- 'REFRESH LIST': function() {
- $(this).dialog('close');
- window.plugin.bookmarks.dialogDrawer();
+ 'DRAW&VIEW': function() {
+ window.plugin.bookmarks.draw(1);
}
}
});
}
- window.plugin.bookmarks.draw = function() {
+ window.plugin.bookmarks.draw = function(view) {
var latlngs = [];
var uuu = $('#bkmrksAutoDrawer a.bkmrk.selected').each(function(i) {
var tt = $(this).data('latlng');
@@ -609,7 +617,8 @@
if(latlngs.length >= 2 && latlngs.length <= 3) {
var newItem;
- var options = {color:"#f06eaa",weight:4,opacity:.5}
+ // var options = {color:"#a24ac3",weight:4,opacity:.5}
+ var options = window.plugin.drawTools.polygonOptions;
if(latlngs.length == 3) { newItem = L.geodesicPolygon(latlngs, options); }
else if(latlngs.length == 2) { newItem = L.geodesicPolyline(latlngs, options); }
@@ -622,7 +631,15 @@
if(window.plugin.bookmarks.isSmart) {
window.show('map');
}
- map.fitBounds(newItem.getBounds());
+
+ // Shown the layer if it is hidden
+ if(!map.hasLayer(window.plugin.drawTools.drawnItems)) {
+ map.addLayer(window.plugin.drawTools.drawnItems);
+ }
+
+ if(view) {
+ map.fitBounds(newItem.getBounds());
+ }
}
else{
$('#bkmrksAutoDrawer p').toggle().delay('2500').fadeOut('500');
@@ -630,7 +647,7 @@
}
window.plugin.bookmarks.dialogLoadList = function() {
- var r = 'The"Draw Tools" plugin is required.';
+ var r = 'The "Draw Tools" plugin is required.';
if(!window.plugin.bookmarks || !window.plugin.drawTools) {
$('.ui-dialog-autodrawer .ui-dialog-buttonset .ui-button:not(:first)').hide();
@@ -727,6 +744,8 @@
delete window.plugin.bookmarks.updateQueue[e.property];
window.plugin.bookmarks.storeLocal(window.plugin.bookmarks.UPDATE_QUEUE);
window.plugin.bookmarks.refreshBkmrks();
+ window.runHooks('pluginBkmrksSyncEnd', {"target": "all", "action": "sync"});
+ console.log('BOOKMARKS: synchronized all');
}
}
}
@@ -752,7 +771,9 @@
window.plugin.bookmarks.loadLocal = function(mapping) {
var objectJSON = localStorage[mapping.key];
if(!objectJSON) return;
- window.plugin.bookmarks[mapping.field] = mapping.convertFunc ? mapping.convertFunc(JSON.parse(objectJSON)) : JSON.parse(objectJSON);
+ window.plugin.bookmarks[mapping.field] = mapping.convertFunc
+ ? mapping.convertFunc(JSON.parse(objectJSON))
+ : JSON.parse(objectJSON);
}
window.plugin.bookmarks.syncBkmrks = function() {
@@ -764,6 +785,79 @@
window.plugin.bookmarks.delaySync();
}
+/***************************************************************************************************************************************************************/
+/** HIGHLIGHTER ************************************************************************************************************************************************/
+/***************************************************************************************************************************************************************/
+ window.plugin.bookmarks.highlight = function(data) {
+ var guid = data.portal.options.ent[0];
+ if(window.plugin.bookmarks.findByGuid(guid)) {
+ data.portal.setStyle({fillColor:'red'});
+ }
+ }
+
+ window.plugin.bookmarks.highlightRefresh = function(data) {
+ if(_current_highlighter === 'Bookmarked Portals') {
+ if(data.action === 'sync' || data.target === 'portal' || (data.target === 'folder' && data.action === 'remove') || (data.target === 'all' && data.action === 'import') || (data.target === 'all' && data.action === 'reset')) {
+ window.resetHighlightedPortals();
+ }
+ }
+ }
+
+/***************************************************************************************************************************************************************/
+/** BOOKMARKED PORTALS LAYER ***********************************************************************************************************************************/
+/***************************************************************************************************************************************************************/
+ window.plugin.bookmarks.addAllStars = function() {
+ var list = window.plugin.bookmarks.bkmrksObj.portals;
+
+ for(var idFolders in list) {
+ for(var idBkmrks in list[idFolders]['bkmrk']) {
+ var latlng = list[idFolders]['bkmrk'][idBkmrks].latlng.split(",");
+ var guid = list[idFolders]['bkmrk'][idBkmrks].guid;
+ window.plugin.bookmarks.addStar(guid, latlng);
+ }
+ }
+ }
+
+ window.plugin.bookmarks.resetAllStars = function() {
+ for(guid in window.plugin.bookmarks.starLayers) {
+ var starInLayer = window.plugin.bookmarks.starLayers[guid];
+ window.plugin.bookmarks.starLayerGroup.removeLayer(starInLayer);
+ delete window.plugin.bookmarks.starLayers[guid];
+ }
+ window.plugin.bookmarks.addAllStars();
+ }
+
+ window.plugin.bookmarks.addStar = function(guid, latlng) {
+ var star = L.marker(latlng, {
+ icon: L.icon({
+ iconUrl: '@@INCLUDEIMAGE:images/marker-star.png@@',
+ iconAnchor: [15,40],
+ iconSize: [30,40]
+ })
+ });
+ window.plugin.bookmarks.starLayers[guid] = star;
+ star.addTo(window.plugin.bookmarks.starLayerGroup);
+ }
+
+ window.plugin.bookmarks.editStar = function(data) {
+ if(data.target === 'portal') {
+ if(data.action === 'add') {
+ var guid = window.selectedPortal;
+ var latlng = window.portals[guid]._latlng;
+ var starInLayer = window.plugin.bookmarks.starLayers[data.guid];
+ window.plugin.bookmarks.addStar(guid, latlng);
+ }
+ else if(data.action === 'remove') {
+ var starInLayer = window.plugin.bookmarks.starLayers[data.guid];
+ window.plugin.bookmarks.starLayerGroup.removeLayer(starInLayer);
+ delete window.plugin.bookmarks.starLayers[data.guid];
+ }
+ }
+ else if((data.target === 'all' && (data.action === 'import' || data.action === 'reset')) || (data.target === 'folder' && data.action === 'remove')) {
+ window.plugin.bookmarks.resetAllStars();
+ }
+ }
+
/***************************************************************************************************************************************************************/
window.plugin.bookmarks.setupCSS = function() {
@@ -776,54 +870,55 @@
plugin.bookmarks.htmlBoxTrigger = '[-] Bookmarks';
plugin.bookmarks.htmlBkmrksBox = ''
- +'
'
- +'
'
- +'
Maps
'
- +'
Portals
'
- +'
'
- +'
'
- +'
'
- +'
'
- +'
';
+ +''
+ +''
+ +'
Maps
'
+ +'
Portals
'
+ +'
'
+ +'
'
+ +''
+ +''
+ +'';
plugin.bookmarks.htmlDisabledMessage = 'Plugin Bookmarks disabled*.
';
plugin.bookmarks.htmlStar = '';
plugin.bookmarks.htmlCalldrawBox = 'Auto draw';
plugin.bookmarks.htmlCallSetBox = 'Bookmarks Opt';
plugin.bookmarks.htmlSetbox = '';
+ +'Copy/Export Bookmarks'
+ +'Paste/Import Bookmarks'
+ +'Reset Bookmarks'
+ +'Share all Bookmarks (IITCm)'
+ +'Save box position (No IITCm)'
+ +'Reset box position (No IITCm)'
+ +'';
}
/***************************************************************************************************************************************************************/
var setup = function() {
-
window.plugin.bookmarks.isSmart = window.isSmartphone();
// Fired when a bookmarks/folder is removed, added or sorted, also when a folder is opened/closed.
if($.inArray('pluginBkmrksEdit', window.VALID_HOOKS) < 0) { window.VALID_HOOKS.push('pluginBkmrksEdit'); }
// Fired when the "Bookmarks Options" panell is opened (you can add new options);
if($.inArray('pluginBkmrksOpenOpt', window.VALID_HOOKS) < 0) { window.VALID_HOOKS.push('pluginBkmrksOpenOpt'); }
+ // Fired when the sync is finished;
+ if($.inArray('pluginBkmrksSyncEnd', window.VALID_HOOKS) < 0) { window.VALID_HOOKS.push('pluginBkmrksSyncEnd'); }
// If the storage not exists or is a old version
window.plugin.bookmarks.createStorage();
@@ -849,23 +944,6 @@
$('.bkmrksStar').remove();
}
});
-
- // in the future i hope in a 'portalClosed' hook
- /* hook done
- window.unselectOldPortal = function() {
- var oldPortal = portals[selectedPortal];
- if(oldPortal) portalResetColor(oldPortal);
- selectedPortal = null;
- $('#portaldetails').html('');
- if(isSmartphone()) {
- $('.fullimg').remove();
- $('#mobileinfo').html('');
- }
- clearPortalIndicators();
- $('.bkmrksStar').remove();
- }
- */
-
}
$('#toolbox').append(window.plugin.bookmarks.htmlCallSetBox+window.plugin.bookmarks.htmlCalldrawBox);
@@ -877,10 +955,24 @@
if(window.plugin.bookmarks.statusBox['page'] === 1) { $('#bookmarksBox h5.bkmrk_portals').trigger('click'); }
window.addHook('portalDetailsUpdated', window.plugin.bookmarks.addStarToSidebar);
+
+ // Sync
window.addHook('pluginBkmrksEdit', window.plugin.bookmarks.syncBkmrks);
window.addHook('iitcLoaded', window.plugin.bookmarks.registerFieldForSyncing);
+
+ // Highlighter - bookmarked portals
+ window.addHook('pluginBkmrksEdit', window.plugin.bookmarks.highlightRefresh);
+ window.addHook('pluginBkmrksSyncEnd', window.plugin.bookmarks.highlightRefresh);
+ window.addPortalHighlighter('Bookmarked Portals', window.plugin.bookmarks.highlight);
+
+ // Layer - Bookmarked portals
+ window.plugin.bookmarks.starLayerGroup = new L.LayerGroup();
+ window.addLayerGroup('Bookmarked Portals', window.plugin.bookmarks.starLayerGroup, false);
+ window.plugin.bookmarks.addAllStars();
+ window.addHook('pluginBkmrksEdit', window.plugin.bookmarks.editStar);
+ window.addHook('pluginBkmrksSyncEnd', window.plugin.bookmarks.resetAllStars);
}
// PLUGIN END //////////////////////////////////////////////////////////
-@@PLUGINEND@@
+@@PLUGINEND@@
\ No newline at end of file
diff --git a/plugins/bookmarks-css.css b/plugins/bookmarks-css.css
index fa4667ac..2fca0d09 100644
--- a/plugins/bookmarks-css.css
+++ b/plugins/bookmarks-css.css
@@ -223,7 +223,7 @@
display:none;
position:absolute;
top:0;
- left:250px;
+ left:277px;
width:47px;
margin-top:-36px;
height:64px;
@@ -243,7 +243,8 @@
width:auto;
}
#bkmrksTrigger, .bkmrksStar span{
- background-image:url(@@INCLUDEIMAGE:plugins/bookmarks-img.png@@);}
+ background-image:url(@@INCLUDEIMAGE:plugins/bookmarks-img.png@@);
+}
.bkmrksStar span{
display:inline-block;
float:left;