** TODO / Roadmap **

1.10.8
	move settings into tabs - basic, cluster, api keys

1.10.2
	http://make.wordpress.org/plugins/2013/04/11/google-maps-javascript-v2-api-to-be-removed/
		pretty sure it's already using v3, but double check
		probably specify api version # in the url, to make it obvious and future-proof
		check setup instructions for v3, seems like doing it a bit different than what they recommend
			maybe need to specify api key. that might help solve (or make worse) the various geocoding problems

	add 'infoWindowLinks' array to mapoptions, default to empty, put filter around it
		then if there are links, add them to info window
		example: 'http://google.com/maps?saddr=X' => 'Directions'
		email grant when committed to trunk so he can take a look, give feedback

	language packs support
		change text domain to match plugin slug so language packs will work
		load_plugin_textdomain should run during plugins_loaoded hook
		http://ottopress.com/2013/language-packs-101-prepwork/


1.minor.x
	the `width: auto !important` rule from #bgmp_map-canvas image is applying to .bgmp_placemark img, but it shouldn't
		makes it ignore the inline width/height wp sets so users can't specific sizes
		also, cause resize issues - http://wordpress.org/support/topic/set-up-of-the-size-of-the-info-windowsboubble?replies=6#post-3964238
		still has to apply to rest of map, though, to override theme styles that bleed over
		need to get it to apply to map, but then not to .bgmp_placemark img

	Add all the readme filter callbacks to unit tests if possible, or at least twentytwelve child theme for manual testing

	Maybe refactor markercluster stuff into a subplugin architecture
		because markerclustere isn't really a core feature
		add a way to add "core" plugins to bgmp that aren't ran unless activated
		separate js,php,css etc
		probably too much work

	column sorting broken
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-sortable-columns-broken?replies=1#post-2851834

	need to escape translated strings more
		also remove markup from strings

	show map on single placemark page that only shows that individual marker
		add "placemarks" param to bgmp-map shortcode. e.g., [bgmp-map placemarks="13,93,234"]. pass in post ids
		add to list shortcode also?
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-placemark-page-with-just-one-placemarks
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-possibility-to-show-a-single-placemark?replies=1#post-2554004
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-how-to-have-the-info-window-popup-when-the-map-is-shown?replies=1#post-3020406

	documentation hard for non-technical people to follow
		try to clarify some things
		add a faq entry w/ links to resources for begining PHP stuff, and a note saying that not everyone will be able to make mods so hire a developer if needed
			begining php tutorials
			beginginer wp plugin dev tutorials
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-using-bgmp-map-in-a-template-file-with-do_shortcode?replies=3

	use id-admin-notices class instead of having it internal

	add filter to each placemarks in the foreach loop in getMapPlacemarks(), so that people can modify the individual fields as they're created, instead of having to loop through the entire thing after it's been generated
		also add ID field to the placemarks
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-how-to-open-the-placemark-url-in-the-info-window?replies=1#post-2816596

	add javascript hooks
		maybe wp 3.5 will have formal system -- http://core.trac.wordpress.org/ticket/21170
		http://wordpress.tv/2012/08/14/luke-gedeon-javascript-actions-and-filters-in-core-hooked-on-javascript-works-for-me/
		https://github.com/carldanley/WordPress-Action-Filter-Library

	add categories to bgmpData.markers
		did it in 1.9.3?

	improve documentation by adding list of shortcode params w/ details, and also list of filters/actions

1.minor.x
	add credits section to other notes
		list people who've contributed code, helped out in forums, translators in future
		Ridgididgi - help on forums, link to profile?
		guy who contributed code - check changelog

	change all instance of "bgmp_" in FAQ to BasicGoogleMapsPlacemarks::PREFIX ?
		also post type, category, etc
		test out first
			both in theme and functionality plugin that loads before bgmp

	change to mpango contact form instead of iandunn for customizations?

	use $this->deprecated() instead of "deprecated" or @todo comments

	uninstall script
		take wpms into account
		uninstall settings but not data. note that on the installation page under an 'uninstall' section
		removed the infowindow height and renamed the infowindow width (to maxwidth) option in v1.2.1 or 1.3. remember that you still need to remove from db here

	shouuld be using $this::PREFIX instead of self::PREFIX ?

	bgmp add filter for gmaps url so guy can do language=no w/out moding core
		what was forum url? add to list below

	add note to upgrade hook to explian why it's priroty 11 instead of 10

	add archive
		has_archive in cpt reg
		upgrade() has to flush rewrite rules
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-how-to-access-placemarks-list-archive-directly?replies=1

	refactor markupmetabox methods into single one, like nrp merchant team directory plugin does
		callback's 2nd param is an array w/ the box id, so switch on it and include the view files

1.minor.x
	internationalize functions.js

	add more machine language translations

	automate it - http://www.technomancy.org/language/apertium-auto-translate-gettext/ ?
			also http://djangosnippets.org/snippets/2679/
			http://potranslate.prabhatgupta.com/ - see email

			blog about it if it works
			german
			japanese
			russian

			later
				arabic
				czech
				danish
				dutch
				hebrew
				hindi
				irish
				italian
				korean
				malay
				polish
				portegues
				serbian
				swahili
				thai
				turkish
				ukranian
				vietnamiese

1.minor.x
	output buffering for shortcode views instead of inline html

	inline documentation
		add 3.3 pointers for intro to main things the first time they install
		add inline docu for reference - http://wpdevel.wordpress.com/2011/12/06/help-and-screen-api-changes-in-3-3/
			see drafts for friends plugin as example
			add pointer to the help tab, since people don't normally think about it. (the way that 'simple facebook connect' does it)

	parse shortcodes inside the info window. (would have to parse it before passed to js)
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-including-shortcodes-in-info-box?replies=1#post-2522736
		in getPlacemarks(), just pass $pp->post_content through do_shortcode() ?

	cleanup, refactor stuff?
		lots of TODOs in code

	if( !get_option( self::PREFIX . 'map-width' ) ), etc should be necessary in singleActivate(). add_option() already checks if it exists
		remove and test


	add other notes section to readme?
		filters
		TODO list and/or feature requests
		locatlizations?
		some faqs that don't belong there?
			leave faqs for troubleshooting-ish things, "other notes" for the rest?
			make note in faqs to see "other notes" and visa-versa
		basic/advanced usage moved from installation to other notes?

	check js file for unnecessary $( this ) calls -- http://whattheheadsaid.com/2010/10/utilizing-the-awesome-power-of-jquery-to-access-properties-of-an-element

1.minor.x
	savecustomfields() should use $postid that was passed in instead of global $post->id ?

	ensure filtered varaable data types don't change, like you did for ODCG
		return is_array( $postMeta ) ? $postMeta : array();

	add notes on automatic upgrading to installation page

	ditch the conditional javascript loading so map arguments and do_shortcode can function like normal?
		give user option to turn off scripts except for a whitelisted list of pages or something?

	refactor bgmp/settings classes?
		http://stackoverflow.com/questions/8688738/wordpress-plugin-how-do-i-avoid-tight-coupling
		but bgmp needs to be defined before settings? maybe pass bgmp to settings rather than other way around, like it's doing now
		or just make static accessor/gettor functions in bgmp class?

	use wp trac for feature requests and bugs, and forums only for support?

	add note to insatll page for multisite. tell them it can be network-activated, or activated only on dividual sites. both will work

	refactor geocode() error checking into multiple functions, like nordlocal remoteGetSuccessful()

	add Settings to Placemarks menu?
		http://wp.smashingmagazine.com/2012/08/08/help-us-help-wordpress/
		yeah, it doesn't hurt to add it there.
		but maybe leave it in WP settings menu too for backwards compatability?
			then maybe remove it after a year?
		maybe only keep it in the WP settings menu for existing installs? new installs would only have it in the Placemarks menu
		update documentation

1.minor.x
	mapShortcode()
		shouldn't check for stylesheet here? only really need the two scripts, so removing stylesheet check would let users dequeue stylesheet and use their own w/out having to keep same name. update readme

	move settings markup into a single view file?
		settings markup callback has param passed to it to identify? if so, could  have a single view file that outputs based on swithc() cases
		or maybe there's a global var that's set soemwhere
		look through core

	setup read-only mirror on github using svn2git?
		that'd let people add it as a submodule in their git repos and easily upgrade
		add to faq

	clean up options page, make it less cluttered and busy
		maybe divide into several pages: 'basic settings', 'marker clustering', 're-abolish slavery'

1.major
	upgrade markerclusterer b/c ie10 support ?
		http://wordpress.org/support/topic/the-marker-clustering-images-were-disappeared-under-ie?replies=9#post-4224031

	move files to subdirectories
		core.php, settings.php => classes/
		functions.js => javascript/
		style.css => css/
		unit-tests.php => tests/unit/
		problems with backwards compat for people who mod'd plugin?. sol b/c should have used functionality plugin?

1.minor
	infowinder not rounded anymore?
		b/c of image styles? try turning off stylesheet and see what happens
		no, b/c google changed it -- http://stackoverflow.com/questions/6570490/modern-rectangular-infowindow-on-maps-google-com
		can use infobubble, but that's a bunch of overhead for something small?

	close infobox when click anywhere outside infobox
		$(map).click( function()
		{
			if( not inside current placemark box)
				close current placemark;
		} );

	add column on View page for category, address, icon
		check out pastebin linked from http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-sortable-columns-broken?replies=1#post-2851834


	better style options
		turn default stylesheet on/off
		enter URL for custom stylesheet
		have textbox to enter styles directly? (don't like this b/c have to print inline)
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-set-the-default-info-window-font-style-in-the-configuration-page?replies=1#post-2679560

2.0
	rewrite as MVC and better OO?
		look at mir-trips plugin (or whatever latest incarnation) to see how you're doing it now
		break core.php up into smaller files for each class
			core, geocode, etc
		all the models should be unit-testable
		controllers should be?
		http://wordpress.tv/2010/04/24/blair-williams-wordpress-plugins-oc10/
		look at http://wordpress.org/extend/plugins/wp-mvc/, http://wordpress.org/extend/plugins/tina-mvc/, Churro: @ wordpress.org extend /plugins /churro [not to use, just to get ideas]
		http://www.jessehanson.com/2011/01/02/mvc-based-wordpress-plugins/
		do other research

2.0.minor
	finish setting up unit testing
		add to 'before each new release' list
			add new unit tests for any new/modified code
			run unit tests
		php - simpletest plugin?
			maybe need to refactor everything so methods are more testable. break into controller and model. models should take input, do shit, and return. that's testable. the two mixed together isn't testable.
			add unit tests for all functions
			add integration tests for all functions (in separate file)
		js
			fireunit? kinda old, but most of the newer ones seem to require eclipse or something else
			http://www.slideshare.net/aaronjorbin/dont-repeat-your-mistakes-javascript-unit-testing
				look for wordpress.tv video of it from wrdcamp sf 2011

		maybe make this 2.0 if you need to rewrite everything to be more MVC and testable. probably not worth the effort, unless you just want to do it to learn
			could abstract out the hooks, api interaction etc in the constructors, and have the models all accept/return variables so they'd be testable. supposed to test controllers instead of models, though?
			http://www.joelonsoftware.com/articles/fog0000000069.html


1.major.x
	change localize_script() to wp_add_script_data when that's added
		may not need to manually json_encode() once you do this. it might do it for you
		wp 3.3 localize_script supports arrays now, so don't need separate map and marker variables in js? can just output a single bgmpdata array?

	switch to wp_add_script_before if it comes out in wp 3.4. wait until 3.5 is out, though, to give people time to upgrade.

1.major.x
	switch to using add_meta_boxes_{$page} hook
		http://wpdevel.wordpress.com/2011/12/07/do-not-include-wp-adminincludestemplate-php-to-get-add_meta_box/

1.major.x

	add current_user_can() in places -- http://wordpress.tv/2011/09/07/mark-jaquith-jon-cave-brad-williams-plugin-security-showdown/ 11:30

	map covers dropdowns bug
		http://wordpress.org/support/topic/google-map-covering-dropdown-menus?replies=2#post-2300994
		http://stackoverflow.com/questions/506984/how-can-i-place-a-html-div-over-the-google-earth-plugin-involves-wmode-i-imagin
		https://www.google.com/accounts/ServiceLogin?service=groups2&continue=http://groups.google.com/group/google-earth-browser-plugin/browse_thread/thread/dc38137e4b816837%26followup%3Dhttp://groups.google.com/group/google-earth-browser-plugin/browse_thread/thread/dc38137e4b816837&followup=http://groups.google.com/group/google-earth-browser-plugin/browse_thread/thread/dc38137e4b816837%26followup%3Dhttp://groups.google.com/group/google-earth-browser-plugin/browse_thread/thread/dc38137e4b816837
		http://earth-api-samples.googlecode.com/svn/trunk/demos/customcontrols/index.html
		http://code.google.com/p/earth-api-samples/issues/detail?id=9&colspec=ID%20
		http://maps.myosotissp.com/demos/popups.html

	can't call enqueueMessage() in settings.php - http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-that-address-couldnt-be-geocoded-fatal-error?replies=5
		fixed w/ temp workaround, but need better solution
		just make enqueuemssage public?


1.major.x
	run tests on memory consumption, etc. see if you can find any areas of code that would significantly benefit from optimization
		ask for advice on wordpress answers for tips on how to test

	wahc doesn't work as demo anymore since not current version. setup wpms playground blog as new demo, populate w/ sample content. update link in readme. make sure to update w/ new releases (add to list above). don't use to test, only as pristine demo.

	redo enqueuemessage,etc to use WP_Error objects instead of just strings?
		but what about for normal messages?

	look for all @todo comments in code, and move them here. clean them up before moving on to next 1.major version

	update readme filter examples w/ http://wpengineer.com/2319/advent-calendar-predefined-callback-functions-for-filters/


1.major.minor
	add icon next to name in list shortcode
	add option to disable info windows
	lant/long shouldn't be disabled input fields, should just be regular text. some people will think they should be able to edit it.

1.major
	add hooks/filters
		filters done in core, but not documented. need to escape?
		document their usage in readme.
		do this instead of options? in addition to?
		don't forget settings.php, views, etc. probably shouldn't be any in views, only in models/controllers
	try to detect if theme is loading google maps api, and then don't do it?
		e.g., http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-broken-map-with-dk-template?replies=1#post-2522633

1.major.minor
	do shortcode bit only works with 'front page setting', not straight home.php template
		Home.php would have to setup a custom $post variable with query_posts() or WP_Query() in order to access the content, but there's no way to pass that version of $post to the shortcode check function.
		maybe add a second array where you can defined template file names (e.g., home.php, map.php, etc) instead-of/in-addition-to post slugs
			http://wordpress.stackexchange.com/questions/10537/get-name-of-the-current-template-file
		maybe make a static function they can call that will just pass a single array w/ slugs? instead of them having to setup shit in the theme's functions.php?
		is_home() helpful?
		update faq
	maybe look at encoding the content w/ some reversible algorithm so that email addresses aren't exposed in $bgmpData
		would have to add an option to turn on/off?
	wp 3.3 could affect js handling
		http://core.trac.wordpress.org/ticket/11520
	maybe break messages and describe into Toolbelt class
		give it it's own name not related to bgmp, a version number toos


1.major.minor
	http://code.google.com/p/gmaps-api-issues/issues/detail?id=1724 workaround
		didn't work. file a new bug report for the issue. setup a test page
		when fixed, remove the override styles.
	errors shouldn't overwrite the map unless the map can't be loaded anyway
		map may load fine, but then error with placemarks. don't want to kill map just b/c placemark didn't load.
		log to console instead
			only if a ?bgmp_debug parameter is passed in, so you don't clutter the console
		also add error to page. create a new empty <p> under map for messages
		create a bgmp.log() that's a wrapper for if(window.console) console.log
	width px and % -- http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-how-to-tweak-the-code-to-get-width-instead-of-fixed-px?replies=4#post-2242249
		test to make sure it can work as he described across browsers. if so, probalby just leave as is and update docs to let people know
	describe()
		add 'transient' as option
			set_transient( self::PREFIX .'consturct', 'blah', 60 );
		add 'echo' behavior, and return another option
			already copy/pasted, but need to test
		make it a switch instead of if else ifelse

1.major.minor
	loadresources isn't specifiying a version number for the maps api. if they switch to v4 i don't want to plugin to automatically do it
		see if you can specify v3
	enqueuemessage should let it can be converted to string
		if it has a __toString() function
			does that cover types like int, or have to list them manually?
			http://www.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.tostring
		maybe hve it enqueue an error instead of returning false, since not really gonna check if it returns true
	test to make sure wp action actually is working for essages. i don't think it runs on edit-page, so wouldn't get notice of geocode error
		check out wp_enqueue_scripts
		if works, update wpse question. also add it and admin_enqueue_scripts to codex list in the appropriate order

1.major.minor
	double check that everything is sanitized
	give everything a once over, check comments, empty phpdoc lines, etc
	stat bug is back - http://wordpress.stackexchange.com/questions/21132/repository-reporting-incorrect-plugin-active-version-stat
		http://phpdoc.wordpress.org/trunk/WordPress/Administration/_wp-admin---includes---plugin.php.html#functionget_plugin_data
	admin_notices
		target
			http://core.trac.wordpress.org/ticket/14696
			have to go through each message and deterine who it should go to
			this will bump required version up to 3.1
				reember to update readme and environment check
			might want to use is_user_admin() when setting or displaying
		error in addFeaturedImageSupport being added multiple times
			maybe b/c sitting on page and auto-save adds one?
			could not call enqueue if auto-save inside addFeaturedImageSupport, but probably better to check if message already enqueues inside enqueueMessage()
			might be fixed by 'target' task, but probably not
	add option to disable the 'image media button disabled' warning. would have to be site-wide option?
		update error message to let them know they can disable it
	organize FAQ page into sections?


1.major.minor
	add px units to $('#bgmp_map-canvas').css('width', response.width ); etc ?
		probably, just need to test
		check the rest of the file for other places
	add support forum link to plugin page

1.major
	remove the 'upgrade to 1.0 addresses' activation bit - no longer needed for most users
	mobile support
	mobile placemark bug
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-i-cant-see-the-placemark-on-my-mobile-phone?replies=1#post-2201681
		read through code, try to think of what may cause it
		try googling for answer

1.major.minor
	look into http://docs.jquery.com/Plugins/Authoring to see if you should do things that way


1.major.major
	some things may only need to run on the admin side, or only on the front end. check for that and handle appropriatly
		keep in mind http:codex.wordpress.org/AJAX_in_Plugins note 3 about being inside is_admin()
	custom icon for placemarks menu. maybe a pinpoint? (similar to default google maps icon, but not exact same b/c of copyright)



** Feature Requests **
	10 - javascript to toggle categories on map dynamically
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-turn-onoff-category-display?replies=1#post-2760224
		http://wordpress.org/support/topic/filter-placemarks-revisited?replies=13
			this has some code
		http://wordpress.org/support/topic/toggle-placemarks?replies=4#post-3738884
		http://templatic.com/demos/?theme=geoplaces4
		http://www.geocodezip.com/v3_MW_example_categories.html
		a bunch of others
	5 - geolocate ip and use as addr for placemark
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-automatic-location?replies=1#post-2566677
			this one has some code
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-iphone-and-ipad-layout?replies=4
			related to above: http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-iphone-map-broken?replies=1
	4 - exclude from search results
		but what about backwards compat? they can already use the filter to change it
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-excluding-from-search-results?replies=3#post-3185959
	3 - instead of setting icon on placemark, you could set it on taxonomy. looks for in order: placemark icon > category icon > default icon
	3 - text input box for address, then zoom to it
		http://wordpress.org/support/topic/future-request?replies=4#post-3547152
		http://wordpress.org/support/topic/map-search?replies=7 has some code
		http://wordpress.org/support/topic/filter-placemarks-revisited?replies=21#post-3568838 also has some code
	2 - set width as % in addition to px
			check that google api allows that
			this may be working in 1.3 already, check notes for 1.3.2 or 1.3.3 for testing info
	3 - directions (and other options that google includes in their implementaiton? e.g., 'zoom here'?
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-directions?replies=2#post-2494522
		one other?
	2 - option to have placemark info window open when map loads.
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-placemark-show-by-default?replies=3#post-2519181
		at least 1 other?
	1 - separate role for placemarks, so users can add placemarks but not regular posts
	1 - user supplied text for map link on list shortcode
		filter exists already, but not easy to use
	1 - option to disable info windows
	2 - zip code search to display placemarks near a given zip code. could also have a shortcode option to display them
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-look-up-closest-store-and-route?replies=2
	1 - search only placemarks
	1 - configuration option to upload/link to new default marker, instead of having to use filter
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-upload-placemark-logo-in-configuration-page?replies=1#post-2679597
	1 - add a filter taxonomy
		maybe add options to control what the CPT 'supports' pamameter has in it, and have lots off by default
		http://wordpress.org/support/topic/plugin-basic-google-maps-placemarks-filter-placemarks?replies=3#post-2826743



** Future considerations **
	list shortcode sorting
		order by alphabetical - this already posible b/c of filter?
		order posts by latitude, zip code or something meaningful. distance from map center?
			api does return city/county/etc data
		option to choose which method used (most recent, alphabetical, distance/location)
	map won't load if theme doesn't call wp_footer(). add check to make sure theme is doing that. display error if it isn't.
	look into having a capability so users can control what other users can add them?
	add ? icon next to address field and move the 'you can type in blah blah' bit there
