|                                                                                                                                                                                                                            |  | <div class="narrow">  <?= partial('partials/header') ?>
    <div style="clear: both;">      <div class="alert alert-success hidden" id="test_success"><strong>Success! We found a Location header in the response!</strong><br>Your post should be on your website now!<br><a href="" id="post_href">View your post</a></div>      <div class="alert alert-danger hidden" id="test_error"><strong>Your endpoint did not return a Location header.</strong><br>See <a href="/creating-a-micropub-endpoint">Creating a Micropub Endpoint</a> for more information.</div>    </div>
    <form role="form" style="margin-top: 20px;" id="note_form">
      <div class="form-group" style="margin-top: 18px;">        <label>Event Name</label>        <input type="text" class="form-control" id="event_name" placeholder="" value="">      </div>
      <div class="form-group" style="margin-top: 18px;">        <label>Location</label>        <input type="text" class="form-control" id="event_location" placeholder="" value="">        <span class="help-block" id="location_preview"></span>      </div>
      <div id="map" class="hidden" style="width: 100%; height: 180px; border-radius: 4px; border: 1px #ccc solid;"></div>
      <div class="form-group" id="start_date" style="margin-top: 18px;">        <label>Start Date/Time</label>        <div class="form-group">          <input type="text" class="form-control date" placeholder="<?= date('Y-m-d') ?>" value="" style="max-width: 40%; margin-right: 4px; float: left;">          <input type="text" class="form-control time" placeholder="14:30" value="" style="max-width: 40%; margin-right: 4px; float: left;">          <input type="text" class="form-control timezone" placeholder="-08:00" style="max-width: 15%;">        </div>      </div>
      <div class="form-group" id="end_date" style="margin-top: 18px;">        <label>End Date/Time (Optional)</label>        <div class="form-group">          <input type="text" class="form-control date" placeholder="<?= date('Y-m-d') ?>" value="" style="max-width: 40%; margin-right: 4px; float: left;">          <input type="text" class="form-control time" placeholder="14:30" value="" style="max-width: 40%; margin-right: 4px; float: left;">          <input type="text" class="form-control timezone" placeholder="-08:00" style="max-width: 15%;">        </div>      </div>
      <div class="form-group" style="margin-top: 18px;">        <label for="note_category">Tags</label>        <input type="text" id="note_category" value="" class="form-control">      </div>
      <div style="float: right; margin-top: 6px;">        <button class="btn btn-success" id="btn_post">Post</button>      </div>
    </form>
</div>
<link rel="stylesheet" href="/libs/bootstrap-typeahead/typeahead.css"><script src="/libs/bootstrap-typeahead/typeahead.min.js"></script><?php if(Config::$googleMapsAPIKey): ?>
<script src="https://maps.googleapis.com/maps/api/js?key=<?= Config::$googleMapsAPIKey ?>&libraries=places"></script><?php endif ?>
<script>  <?php if(Config::$googleMapsAPIKey): ?>
  var map = new google.maps.Map(document.getElementById('map'), {    center: new google.maps.LatLng(-45,122),    zoom: 15  });  <?php else: ?>
  var map = null;  <?php endif ?>
  var d = new Date();  var tzOffset = tz_seconds_to_offset(d.getTimezoneOffset() * 60 * -1);
  var selectedPlace;  if(map) {    var gservice = new google.maps.places.AutocompleteService();    var gplaces = new google.maps.places.PlacesService(map);    var selectedPlacePin;  }
  $(function(){    // Start the event timezone offset in the browser's timezone
    $("#start_date .timezone").attr("placeholder", tzOffset);    $("#end_date .timezone").attr("placeholder", tzOffset);
    // As soon as a time is entered, move the placeholder offset to the value
    $("#start_date .time").on("keydown", function(){      $("#start_date .timezone").val($("#start_date .timezone").attr("placeholder"));    });    $("#end_date .time").on("keydown", function(){      $("#end_date .timezone").val($("#end_date .timezone").attr("placeholder"));    });
    if(map) {      $("#event_location").typeahead({        minLength: 3,        highlight: true      }, {        limit: 5,        async: true,        source: function(query, sync, async) {          gservice.getPlacePredictions({ input: query }, function(predictions, status) {            if (status == google.maps.places.PlacesServiceStatus.OK) {              async(predictions);            }          });        },        display: function(item) {          return item.description;        },        templates: {          suggestion: function(item) {            return '<span>'+item.description+'</span>';          }        }      }).bind('typeahead:select', function(ev, suggestion) {
        gplaces.getDetails({          placeId: suggestion.place_id,          fields: ["geometry", "name", "address_component", "url", "utc_offset"]        }, function(result, status) {          if(status != google.maps.places.PlacesServiceStatus.OK) {            alert('Cannot find address');            return;          }          console.log(result);
          map.setCenter(result.geometry.location);
          if(selectedPlacePin) {            selectedPlacePin.setMap(null);            selectedPlacePin = null;          }          selectedPlacePin = new google.maps.Marker({            position: result.geometry.location,            map: map          });
          selectedPlace = {            type: ["h-card"],            properties: {              name: [result.name],              latitude: [result.geometry.location.lat()],              longitude: [result.geometry.location.lng()],            }          };
          address = '';          locality = '';          region = '';          country = '';          for(var i in result.address_components) {
            if(result.address_components[i].types.includes('street_number')) {              address += ' '+result.address_components[i].short_name;            }            if(result.address_components[i].types.includes('route')) {              address += ' '+result.address_components[i].short_name;            }
            if(result.address_components[i].types.includes('locality')) {              locality = result.address_components[i].long_name;            }            if(result.address_components[i].types.includes('administrative_area_level_1')) {              region = result.address_components[i].long_name;            }            if(result.address_components[i].types.includes('country')) {              country = result.address_components[i].short_name;            }          }          if(address) {            selectedPlace['properties']['street-address'] = [address.trim()];          }          if(locality) {            selectedPlace['properties']['locality'] = [locality];          }          if(region) {            selectedPlace['properties']['region'] = [region];          }          if(country) {            selectedPlace['properties']['country-name'] = [country];          }
          if(result.utc_offset) {            tzOffset = tz_seconds_to_offset(result.utc_offset * 60);            $("#start_date .timezone").attr("placeholder", tzOffset);            $("#end_date .timezone").attr("placeholder", tzOffset);            if($("#start_date .timezone").val()) {              $("#start_date .timezone").val($("#start_date .timezone").attr("placeholder"));            }            if($("#end_date .timezone").val()) {              $("#end_date .timezone").val($("#end_date .timezone").attr("placeholder"));            }          }
          $("#map").removeClass("hidden");          $("#location_preview").text('');        });      });    }  });
  $("#note_category").tokenfield({    createTokensOnBlur: true,    beautify: true  });
  $("#btn_post").click(function(){
    var event_start = $("#start_date .date").val();    if($("#start_date .time").val()) {      event_start += "T"+$("#start_date .time").val()+$("#start_date .timezone").val();    }    var event_end;    if($("#end_date .date").val()) {      event_end = $("#end_date .date").val();      if($("#end_date .time").val()) {        event_end += "T"+$("#end_date .time").val()+$("#end_date .timezone").val();      }    }
    var properties = {      name: [$("#event_name").val()],      start: [event_start],      location: (selectedPlace ? selectedPlace : $("#event_location").val()),      category: tokenfieldToArray("#note_category")    };
    if(event_end) {      properties.end = event_end;    }
    $.post("/micropub/postjson", {      data: JSON.stringify({        "type": ["h-event"],        "properties": properties      })    }, function(response){
      if(response.location != false) {        $("#test_success").removeClass('hidden');        $("#test_error").addClass('hidden');        $("#post_href").attr("href", response.location);        $("#note_form").slideUp(200, function(){          $(window).scrollTop($("#test_success").position().top);        });      } else {        $("#test_success").addClass('hidden');        $("#test_error").removeClass('hidden');      }
    });    return false;  });</script>
 |