This directory is for promoting ApacheCon and other ASF-sponsored events.

NOTE: I'm in the process of moving all of this over to
events.apache.org, so please go look there instead: 
http://events.apache.org/README.txt

-----------------------------------------------------------------------------

# UPDATE!

Do it this way instead! https://www.apachecon.com/event-images

# How-To add ApacheCon event promotion to your project site (Legacy method)

All PMCs are asked to help promote ApacheCon and other major Apache 
sponsored events by adding some form of img link to their homepages, 
in whatever place works best for your site navigation.  Once you add 
the code, no further changes needed (will be auto-updated to be 
the next upcoming event).

- Add a small image and link (where {size} = 125x125 or 234x60)

<a  href="https://www.apache.org/events/current-event.html">
  <img src="https://www.apache.org/events/current-event-{size}.png"/>
</a>

- (or) Add larger banners with an iframe or hardcoded div:
  https://apache.org/ads/adserver.txt


# How ComDev/VP, Conferences Maintains These current-event & Meetup Pages

* Maintenance of current-event* files for PMC inclusion:
- update text in content/events/current-event.mdtext
- replace content/events/current-event-*.png files with the new versions from content/ads/ApacheCon

See also content/ads/README.txt
