Forum Replies Created

Viewing 15 replies - 31 through 45 (of 50 total)
  • Thread Starter Brian P

    (@bburgay)

    Ok thanks.

    Here’s what I did for now in case anyone wants it…

    constant-contact-forms/assets/js/ctct-plugin-frontend.js (Need to minify and update ctct-plugin-frontend.min.js after changes are made)

    
    that.timeout = setTimeout(function () {
      $('#ctct-submitted').prop('disabled', true); // <--- Added
         $.post(
    	ajaxurl,
    	{
    	  'action': 'ctct_process_form',
    	  'data'  : $(form_id_selector + 'form').serialize(),
    	},
    	function (response) {
    	  $('#ctct-submitted').prop('disabled', false); // <--- Added
    
    	  // Make sure we got the 'status' attribut in our response
    	  if (typeof( response.status ) !== 'undefined') {
              ......
    

    In your css add:

    
    #ctct-submitted:disabled {
      opacity: 0.3;
      cursor: wait;
    }
    
    Thread Starter Brian P

    (@bburgay)

    I logged out of WP and logged back in and the lists are now correct.

    Thread Starter Brian P

    (@bburgay)

    Ok, I see. What I’m getting at though is why not use CurlPost as the default and the other as the fallback since cURL is so much more reliable and file_get_contents() caused the issue with invalid_json errors in the first place?

    Thread Starter Brian P

    (@bburgay)

    Hmmm… it seems odd that cURL would be causing invalid_json errors. It says right in the article https://stackoverflow.com/questions/30106668/nocaptcha-returning-error-invalid-json/30552041#30552041 – “Or you can use $recaptcha = new \ReCaptcha\ReCaptcha($secret, new \ReCaptcha\RequestMethod\CurlPost()); –> That always works.”

    Maybe there should be a check to see if cURL is available and use it if so? No big deal to me I can just comment out that code to get it to work but seems like it should really try to use cURL first.

    Hi Sameer,

    No problem at all, happy to help out. I’ll send it to your gmail. Under the Store Locator Settings you should see the added “After zoom level” field. Try different negative values until you get the zoom you’re after. Let me know if you have any issues.

    -Brian

    No problem. I don’t know when the next release will be but he should be including the feature in it. Until then I can send you a copy of the plugin with the feature added if you’d like. Just give me an email to send it to.

    Hi Sameer,

    The plugin author is active on the forum. He just replied to some threads a few hours ago. I sent him the changes to the plugin and he should be including it soon.

    The share location feature works fine on every device I’ve tried so far.

    -Brian

    Hi Sameer,

    There is no way that I can see to add this functionality without modifying the core plugin files directly. This is why I’m asking Tijmen (the developer) to include it with the next update.

    -Brian

    I had the opposite problem (needed to zoom in further initially) and sent an implementation yesterday (https://www.ads-software.com/support/topic/additionaloverrideafter-zoom-level-for-large-cluster-of-locations/).

    Simply changing the $min from 0 to say -10 in the wpsl_get_after_zoom_levels() function and selecting a negative # will accomplish what you’re after (just tested it out).

    Hopefully he will include it in the next update :).

    Thread Starter Brian P

    (@bburgay)

    Hey Tijmen. I had some time to look into it when I got home and found the issue. Since you moved the apply_filters call in get_marker_props after setting $marker_props[‘url’] the url gets lost when a function is added to the filter hook in the theme.

    So I think the wpsl_marker_props documentation (https://wpstorelocator.co/document/wpsl_marker_props/) just needs to be updated for this as the $marker_props array should be passed in and modified now instead of creating a new one.

    add_filter( 'wpsl_marker_props', 'custom_marker_props' );
    function custom_marker_props() {
                
        $marker_props = array(
            'scaledSize' => '24,35', // Set this to 50% of the original size
            'origin'     => '0,0',
            'anchor'     => '12,35'
        );
    
        return $marker_props;
    }
    

    Should now be:

    add_filter( 'wpsl_marker_props', 'custom_marker_props' );
    function custom_marker_props($marker_props) {
        
        $marker_props['scaledSize'] = '24,35'; // Set this to 50% of the original size
        $marker_props['origin'] = '0,0';
        $marker_props['anchor'] = '12,35';
    
        return $marker_props;
    }
    
    Thread Starter Brian P

    (@bburgay)

    Good deal. Thanks!

    Thread Starter Brian P

    (@bburgay)

    Awesome! Thanks for posting your solution!

    Thread Starter Brian P

    (@bburgay)

    This is getting pretty hacky but figured I’d share this as well.

    If you have permalinks enabled for individual store pages you’ll need to refactor the addMarker function in wpsl-gmap.js to the following to get the correct marker on those pages. Note: you’ll need to change YOUR_SITE_DOMAIN to your site’s domain.

    function addMarker( latLng, storeId, infoWindowData, draggable, infoWindow ) {
    	var url, mapIcon, marker,
    		keepStartMarker = true;
    
    	if ( storeId === 0 ) {
    		infoWindowData = {
    			store: wpslLabels.startPoint
    		};
    
    		url = markerSettings.url + wpslSettings.startMarker;
    	} else {
    		url = markerSettings.url + wpslSettings.storeMarker;
    	}
    
    	mapIcon = {
    		url: url,
    		scaledSize: new google.maps.Size( Number( markerSettings.scaledSize[0] ), Number( markerSettings.scaledSize[1] ) ), //retina format
    		origin: new google.maps.Point( Number( markerSettings.origin[0] ), Number( markerSettings.origin[1] ) ),
    		anchor: new google.maps.Point( Number( markerSettings.anchor[0] ), Number( markerSettings.anchor[1] ) )
    	};
    	
    	// Use permalink as check to see if we have all store data (if not present we know we're on a single store page)... hacky solution to get correct marker for now
    	if (!infoWindowData.permalink && storeId !== 0) {
    		ajaxData = collectAjaxData( latLng, resetMap, autoLoad );
    		ajaxData.max_results = 1;
    		ajaxData.radius = "200";
    		if (!wpslSettings.ajaxurl) {
    			var domain = "YOUR_SITE_DOMAIN";
    			wpslSettings.ajaxurl = domain + "/wp-admin/admin-ajax.php";
    		}
    		$.get( wpslSettings.ajaxurl, ajaxData, function( response ) {
    			if (response.length > 0 && response[0].alternate_marker_url) {
    				infoWindowData.alternate_marker_url = response[0].alternate_marker_url;
    			}
    			makeMarker();
    		});
    	}
    	else {
    		makeMarker();
    	}
    		
    	function makeMarker() {
    		if(infoWindowData.alternate_marker_url) {
    			mapIcon.url = infoWindowData.alternate_marker_url;
    		}
    		marker = new google.maps.Marker({
    			position: latLng,
    			map: map,
    			optimized: false, //fixes markers flashing while bouncing
    			title: decodeHtmlEntity( infoWindowData.store ),
    			draggable: draggable,
    			storeId: storeId,
    			icon: mapIcon
    		});	
    
    		// Store the marker for later use.
    		markersArray.push( marker );
    
    		google.maps.event.addListener( marker, "click",( function( currentMap ) {
    			return function() {
    
    				// The start marker will have a store id of 0, all others won't.
    				if ( storeId != 0 ) {
    
    					// Check if streetview is available at the clicked location.
    					if ( typeof wpslSettings.markerStreetView !== "undefined" && wpslSettings.markerStreetView == 1 ) {
    						checkStreetViewStatus( latLng, function() {	
    							setInfoWindowContent( marker, createInfoWindowHtml( infoWindowData ), infoWindow, currentMap );
    						});
    					} else {
    						setInfoWindowContent( marker, createInfoWindowHtml( infoWindowData ), infoWindow, currentMap );
    					}
    				} else {
    					setInfoWindowContent( marker, wpslLabels.startPoint, infoWindow, currentMap );
    				}
    
    				google.maps.event.clearListeners( infoWindow, "domready" );
    
    				google.maps.event.addListener( infoWindow, "domready", function() {
    					infoWindowClickActions( marker, currentMap );
    					checkMaxZoomLevel();
    				});
    			};
    		}( map ) ) );
    
    		// Only the start marker will be draggable.
    		if ( draggable ) {
    			google.maps.event.addListener( marker, "dragend", function( event ) { 
    				deleteOverlays( keepStartMarker );
    				map.setCenter( event.latLng );
    				reverseGeocode( event.latLng );
    				findStoreLocations( event.latLng, resetMap, autoLoad = false, infoWindow );
    			}); 
    		}
    	}
    }
    

    Check my solution here: https://www.ads-software.com/support/topic/solution-for-custom-pinmarker-per-storecategory

    I contacted support directly and asked if they could put this solution in the plugin as well.

    Thread Starter Brian P

    (@bburgay)

    I’ve outlined a solution for the custom markers per store here: https://www.ads-software.com/support/topic/solution-for-custom-pinmarker-per-storecategory. Hope it helps some folks out.

Viewing 15 replies - 31 through 45 (of 50 total)