/* Leaflet2 - EBERL ONLINE Merkzettelscript * Merkzettel zum Sammeln von Daten auf einer Webseite * * Author: Alexander Ließmann * Copyright: EBERL ONLINE 2011 */ (function($){ var settings; $.fn.leaflet = function(options) { // Default Config settings = { leafletCookieName: 'leaflet2', leafletCookieExpires: 7, defaultHTML: '

Momentan befinden sich keine Einträge auf dem Merkzettel.

', leafletCookiePath: '/' } $.extend(true, settings, options); this.data('leaflet2', settings); this.displayLeaflet(); return options; } $.fn.addToLeaflet = function(item) { var settings = this.data('leaflet2'); var obj = $(item).data('leaflet2'); if ( typeof obj != 'object' ) { if ( typeof console != 'undefined' ) console.log('Leaflet Data is not an Object. I try to fix.'); obj = obj.replace(/[\n\r\t]/g, ''); obj = obj.replace(/<[^>]*>?/g, ''); obj = $.parseJSON(obj); if ( typeof obj != 'object' && typeof console != 'undefined') { console.log('Hm. Not good. Couldn´t convert string to Object. Exiting...'); return; } } var leafletObj = []; var leafletStr = $.cookie(settings.leafletCookieName); if ( leafletStr && leafletStr != '' ) { leafletObj = $.parseJSON(leafletStr); if ( this.inLeaflet(leafletObj, obj) != -1 ) return; } leafletObj.push(obj); var newLeafletStr = JSON.stringify(leafletObj); $.cookie(settings.leafletCookieName, newLeafletStr, {expires: settings.leafletCookieExpires, path: settings.leafletCookiePath}); this.displayLeaflet(); if ( typeof settings.onAddToLeaflet == 'function' ) settings.onAddToLeaflet(item, obj, leafletObj); } /* * Funktion prüft (anhand der URL), ob ein Element bereits im Merkzettel vorhanden ist * @param {object} leafletObj JSON * @param {object} obj JSON Object */ $.fn.inLeaflet = function(leafletObj, obj) { var ll = leafletObj.length; var indicator = obj.url; while ( ll-- ) if ( leafletObj[ll].url == indicator ) return ll; return -1; } /* * Daten aus Leaflet holen */ $.fn.getLeafletData = function() { var target = this; var settings = target.data('leaflet2'); var leafletStr = $.cookie(settings.leafletCookieName); if ( leafletStr && leafletStr != '' ) { return $.parseJSON(leafletStr); } else { return []; } } /* * Darstellung des Merkzettels */ $.fn.displayLeaflet = function() { var target = this; var settings = target.data('leaflet2'); target.empty(); var leafletStr = $.cookie(settings.leafletCookieName); var list = $(''); if ( leafletStr && leafletStr != '' ) { var leafletObj = $.parseJSON(leafletStr); var ll = leafletObj.length; while ( ll-- ) { var entry; if ( typeof settings.renderEntry == 'function' ) { entry = settings.renderEntry(leafletObj[ll]); } else { entry = $('
  • X
    ' + leafletObj[ll].title + '

    ' + leafletObj[ll].text + '

  • '); } entry.appendTo(list); } var innerFilter = $('
    '); list.appendTo(innerFilter); var box = $('

    Ihr Merkzettel

    '); innerFilter.appendTo(box); $('.delete', list).click(function(e) { target.deleteFromLeaflet($(e.target)); }); $(box).appendTo(target); } if ( leafletStr == '' || leafletStr == '[]' ) { $(settings.defaultHTML).appendTo($('.filter', target)); } } /* * Merkzettel Funktion * Löscht einen Eintrag aus dem Merkzettel * @param {object} HTML Object */ $.fn.deleteFromLeaflet = function(toDelete) { var settings = $(this).data('leaflet2'); var indicator = $(toDelete).data('leaflet2'); var leafletStr = $.cookie(settings.leafletCookieName); if ( leafletStr && leafletStr != '' ) { var leafletObj = $.parseJSON(leafletStr); var pos = this.inLeaflet(leafletObj, {url: indicator}); if ( pos != -1 ) { var deleted = leafletObj.splice(pos, 1); var newLeafletStr = JSON.stringify(leafletObj); $.cookie(settings.leafletCookieName, newLeafletStr, {expires: settings.leafletCookieExpires, path: settings.leafletCookiePath}); this.displayLeaflet(); if ( typeof settings.onDeletedFromLeaflet == 'function' ) settings.onDeletedFromLeaflet(this, deleted, leafletObj); } } } })(jQuery);