├── data ├── sf │ └── .gitignore ├── nyc │ └── .gitignore ├── summit │ └── .gitignore ├── austin │ └── .gitignore ├── berlin │ └── .gitignore ├── online │ └── .gitignore └── newhaven │ └── .gitignore ├── .gitignore ├── public ├── images │ ├── rose.jpg │ ├── jacky.jpg │ ├── tantek.jpg │ ├── teresa.jpg │ ├── yulia.jpg │ ├── aaronpk.jpg │ ├── mjordan.jpg │ ├── schmarty.jpg │ ├── mozilla-sf.jpg │ ├── kitt-hodsden.jpg │ ├── indieweb-summit-venues.jpg │ └── indiewebcamp-nyc-venues.jpg ├── assets │ ├── namelogo.png │ ├── no-photo.png │ ├── icomoon │ │ ├── fonts │ │ │ ├── icomoon.eot │ │ │ ├── icomoon.ttf │ │ │ ├── icomoon.woff │ │ │ └── icomoon.svg │ │ ├── style.css │ │ └── selection.json │ └── leaflet │ │ └── images │ │ ├── marker-icon.png │ │ ├── marker-icon-2x.png │ │ └── marker-shadow.png ├── semantic │ ├── themes │ │ ├── basic │ │ │ └── assets │ │ │ │ └── fonts │ │ │ │ ├── icons.eot │ │ │ │ ├── icons.ttf │ │ │ │ └── icons.woff │ │ └── default │ │ │ └── assets │ │ │ ├── fonts │ │ │ ├── icons.eot │ │ │ ├── icons.otf │ │ │ ├── icons.ttf │ │ │ ├── icons.woff │ │ │ └── icons.woff2 │ │ │ └── images │ │ │ └── flags.png │ └── components │ │ ├── sticky.min.css │ │ ├── tab.min.css │ │ ├── rail.min.css │ │ ├── breadcrumb.min.css │ │ ├── video.min.css │ │ ├── container.min.css │ │ ├── nag.min.css │ │ ├── sticky.css │ │ ├── site.min.css │ │ ├── embed.min.css │ │ ├── shape.min.css │ │ ├── ad.min.css │ │ ├── tab.css │ │ ├── reset.min.css │ │ ├── dimmer.min.css │ │ ├── comment.min.css │ │ ├── breadcrumb.css │ │ ├── rail.css │ │ ├── video.css │ │ ├── container.css │ │ ├── colorize.min.js │ │ ├── nag.css │ │ ├── loader.min.css │ │ ├── image.min.css │ │ ├── site.css │ │ ├── feed.min.css │ │ ├── embed.css │ │ ├── popup.min.css │ │ ├── shape.css │ │ ├── dimmer.css │ │ ├── rating.min.js │ │ ├── nag.min.js │ │ ├── search.min.css │ │ ├── ad.css │ │ ├── item.min.css │ │ ├── visit.min.js │ │ ├── message.min.css │ │ ├── divider.min.css │ │ ├── video.min.js │ │ └── comment.css ├── img.php └── webmention.php ├── lib ├── config.php ├── rsvps.php └── HTTP.php ├── templates ├── nyc │ ├── nav.php │ └── sponsors.php ├── sf │ ├── nav.php │ ├── sponsors.php │ └── schedule.php ├── berlin │ ├── nav.php │ ├── sponsors.php │ └── schedule.php ├── berlin2 │ ├── nav.php │ ├── sponsors.php │ └── schedule.php ├── summit │ ├── nav.php │ ├── assistance.php │ └── sponsors.php ├── austin │ ├── nav.php │ ├── sponsors.php │ └── schedule.php ├── newhaven │ ├── nav.php │ ├── sponsors.php │ └── schedule.php ├── baltimore │ ├── nav.php │ ├── sponsors.php │ └── schedule.php ├── online │ ├── nav.php │ ├── sponsors.php │ └── schedule.php ├── show-rsvps.php └── show-tito-tickets.php ├── README.md └── get-tito-registrations.php /data/sf/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/nyc/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/summit/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data/austin/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /data/berlin/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /data/online/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | data/ -------------------------------------------------------------------------------- /data/newhaven/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /public/images/rose.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indieweb/2019.indieweb.org/master/public/images/rose.jpg -------------------------------------------------------------------------------- /public/images/jacky.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indieweb/2019.indieweb.org/master/public/images/jacky.jpg -------------------------------------------------------------------------------- /public/images/tantek.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indieweb/2019.indieweb.org/master/public/images/tantek.jpg -------------------------------------------------------------------------------- /public/images/teresa.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indieweb/2019.indieweb.org/master/public/images/teresa.jpg -------------------------------------------------------------------------------- /public/images/yulia.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/indieweb/2019.indieweb.org/master/public/images/yulia.jpg -------------------------------------------------------------------------------- /lib/config.php: -------------------------------------------------------------------------------- 1 | About 2 | Register 3 | Schedule 4 | Location 5 | Sponsors 6 | -------------------------------------------------------------------------------- /templates/sf/nav.php: -------------------------------------------------------------------------------- 1 | About 2 | Register 3 | Schedule 4 | Location 5 | Sponsors 6 | -------------------------------------------------------------------------------- /templates/berlin/nav.php: -------------------------------------------------------------------------------- 1 | About 2 | Register 3 | Schedule 4 | Location 5 | Sponsors 6 | -------------------------------------------------------------------------------- /templates/berlin2/nav.php: -------------------------------------------------------------------------------- 1 | About 2 | Register 3 | Schedule 4 | Location 5 | Sponsors 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 2019.indieweb.org 2 | 3 | To create a new event for a city, you'll need to create a few files: 4 | 5 | * `public/{city}.php` - the main file for the event 6 | * `templates/{city}` - the schedule and sponsor files live here so they are easier to edit 7 | * `data/{city}/.gitignore` - a place to store RSVPs 8 | -------------------------------------------------------------------------------- /templates/summit/nav.php: -------------------------------------------------------------------------------- 1 | About 2 | Register 3 | Schedule 4 | Location 5 | Travel Assistance 6 | Sponsors 7 | -------------------------------------------------------------------------------- /templates/austin/nav.php: -------------------------------------------------------------------------------- 1 | About 2 | Register 3 | Schedule 4 | Location 5 | 6 | Sponsors 7 | -------------------------------------------------------------------------------- /templates/newhaven/nav.php: -------------------------------------------------------------------------------- 1 | About 2 | Register 3 | Schedule 4 | Location 5 | 6 | Sponsors 7 | -------------------------------------------------------------------------------- /templates/baltimore/nav.php: -------------------------------------------------------------------------------- 1 | About 2 | Register 3 | Schedule 4 | Location 5 | 6 | Sponsors 7 | -------------------------------------------------------------------------------- /templates/online/nav.php: -------------------------------------------------------------------------------- 1 | About 2 | Register 3 | Schedule 4 | 5 | 6 | Sponsors 7 | -------------------------------------------------------------------------------- /public/semantic/components/sticky.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Sticky 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.sticky{position:static;-webkit-transition:none;transition:none;z-index:800}.ui.sticky.bound{position:absolute;left:auto;right:auto}.ui.sticky.fixed{position:fixed;left:auto;right:auto}.ui.sticky.bound.top,.ui.sticky.fixed.top{top:0;bottom:auto}.ui.sticky.bound.bottom,.ui.sticky.fixed.bottom{top:auto;bottom:0}.ui.native.sticky{position:-webkit-sticky;position:-moz-sticky;position:-ms-sticky;position:-o-sticky;position:sticky} -------------------------------------------------------------------------------- /lib/rsvps.php: -------------------------------------------------------------------------------- 1 | strtotime($b['received']); 23 | }); 24 | return $rsvps; 25 | } 26 | -------------------------------------------------------------------------------- /templates/berlin/sponsors.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 13 |

How to Sponsor

14 |

We would be thrilled to list you as a sponsor! See our sponsorship prospectus for details, or become a monthly supporter.

15 | Download Sponsorship Prospectus (PDF) 16 | 17 | -------------------------------------------------------------------------------- /templates/sf/sponsors.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 13 |

How to Sponsor

14 |

We would be thrilled to list you as a sponsor! See our sponsorship prospectus for details, or become a monthly supporter.

15 | Download Sponsorship Prospectus (PDF) 16 | 17 | -------------------------------------------------------------------------------- /templates/berlin2/sponsors.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 13 |

How to Sponsor

14 |

We would be thrilled to list you as a sponsor! See our sponsorship prospectus for details, or become a monthly supporter.

15 | Download Sponsorship Prospectus (PDF) 16 | 17 | -------------------------------------------------------------------------------- /public/assets/icomoon/style.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'icomoon'; 3 | src: url('fonts/icomoon.eot?z3jps2'); 4 | src: url('fonts/icomoon.eot?z3jps2#iefix') format('embedded-opentype'), 5 | url('fonts/icomoon.ttf?z3jps2') format('truetype'), 6 | url('fonts/icomoon.woff?z3jps2') format('woff'), 7 | url('fonts/icomoon.svg?z3jps2#icomoon') format('svg'); 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | 12 | [class^="icon-"], [class*=" icon-"] { 13 | /* use !important to prevent issues with browser extensions that change fonts */ 14 | font-family: 'icomoon' !important; 15 | speak: none; 16 | font-style: normal; 17 | font-weight: normal; 18 | font-variant: normal; 19 | text-transform: none; 20 | line-height: 1; 21 | 22 | /* Better Font Rendering =========== */ 23 | -webkit-font-smoothing: antialiased; 24 | -moz-osx-font-smoothing: grayscale; 25 | } 26 | 27 | .icon-beeminder:before { 28 | content: "\e900"; 29 | } 30 | 31 | -------------------------------------------------------------------------------- /public/img.php: -------------------------------------------------------------------------------- 1 | Special thanks to our sponsors who make it possible to provide food and space for the IndieWebCamp

--> 2 | 3 | 11 | 12 | 13 |

How to Sponsor

14 |

We would be thrilled to list you as a sponsor! See our sponsorship prospectus for details, or become a monthly supporter.

15 | Download Sponsorship Prospectus (PDF) 16 | 17 | -------------------------------------------------------------------------------- /templates/online/sponsors.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 13 |

How to Sponsor

14 |

We would be thrilled to list you as a sponsor! See our sponsorship prospectus for details, or become a monthly supporter.

15 | Download Sponsorship Prospectus (PDF) 16 | 17 | -------------------------------------------------------------------------------- /public/semantic/components/tab.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Tab 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.tab{display:none}.ui.tab.active,.ui.tab.open{display:block}.ui.tab.loading{position:relative;overflow:hidden;display:block;min-height:250px}.ui.tab.loading *{position:relative!important;left:-10000px!important}.ui.tab.loading.segment:before,.ui.tab.loading:before{position:absolute;content:'';top:100px;left:50%;margin:-1.25em 0 0 -1.25em;width:2.5em;height:2.5em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.tab.loading.segment:after,.ui.tab.loading:after{position:absolute;content:'';top:100px;left:50%;margin:-1.25em 0 0 -1.25em;width:2.5em;height:2.5em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent} -------------------------------------------------------------------------------- /public/semantic/components/rail.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Rail 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.rail{position:absolute;top:0;width:300px;height:100%;font-size:1rem}.ui.left.rail{left:auto;right:100%;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.right.rail{left:100%;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.left.internal.rail{left:0;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.right.internal.rail{left:auto;right:0;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.dividing.rail{width:302.5px}.ui.left.dividing.rail{padding:0 2.5rem 0 0;margin:0 2.5rem 0 0;border-right:1px solid rgba(34,36,38,.15)}.ui.right.dividing.rail{border-left:1px solid rgba(34,36,38,.15);padding:0 0 0 2.5rem;margin:0 0 0 2.5rem}.ui.close.rail{width:301px}.ui.close.left.rail{padding:0 1em 0 0;margin:0 1em 0 0}.ui.close.right.rail{padding:0 0 0 1em;margin:0 0 0 1em}.ui.very.close.rail{width:300.5px}.ui.very.close.left.rail{padding:0 .5em 0 0;margin:0 .5em 0 0}.ui.very.close.right.rail{padding:0 0 0 .5em;margin:0 0 0 .5em}.ui.attached.left.rail,.ui.attached.right.rail{padding:0;margin:0} -------------------------------------------------------------------------------- /public/semantic/components/breadcrumb.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Breadcrumb 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.breadcrumb{line-height:1;margin:1em 0;display:inline-block;vertical-align:middle}.ui.breadcrumb:first-child{margin-top:0}.ui.breadcrumb:last-child{margin-bottom:0}.ui.breadcrumb .divider{display:inline-block;opacity:.7;margin:0 .21428571rem;font-size:.92857143em;color:rgba(0,0,0,.4);vertical-align:baseline}.ui.breadcrumb a{color:#4183c4}.ui.breadcrumb a:hover{color:#1e70bf}.ui.breadcrumb .icon.divider{font-size:.85714286em;vertical-align:baseline}.ui.breadcrumb a.section{cursor:pointer}.ui.breadcrumb .section{display:inline-block;margin:0;padding:0}.ui.breadcrumb.segment{display:inline-block;padding:.71428571em 1em}.ui.breadcrumb .active.section{font-weight:700}.ui.mini.breadcrumb{font-size:.71428571rem}.ui.tiny.breadcrumb{font-size:.85714286rem}.ui.small.breadcrumb{font-size:.92857143rem}.ui.breadcrumb{font-size:1rem}.ui.large.breadcrumb{font-size:1.14285714rem}.ui.big.breadcrumb{font-size:1.28571429rem}.ui.huge.breadcrumb{font-size:1.42857143rem}.ui.massive.breadcrumb{font-size:1.71428571rem} -------------------------------------------------------------------------------- /public/semantic/components/video.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Video 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.video{background-color:#ddd;position:relative;max-width:100%;padding-bottom:56.25%;height:0;overflow:hidden}.ui.video .placeholder{background-color:#333}.ui.video .play{cursor:pointer;position:absolute;top:0;left:0;z-index:10;width:100%;height:100%;background:0 0;-webkit-transition:background .2s ease;transition:background .2s ease}.ui.video .play.icon:before{position:absolute;top:50%;left:50%;z-index:11;-webkit-transform:translateX(-50%)translateY(-50%);-ms-transform:translateX(-50%)translateY(-50%);transform:translateX(-50%)translateY(-50%);color:rgba(255,255,255,.7);font-size:7rem;text-shadow:2px 2px 0 rgba(0,0,0,.15);-webkit-transition:color .2s ease;transition:color .2s ease}.ui.video .placeholder{position:absolute;top:0;left:0;display:block;width:100%;height:100%}.ui.video .embed embed,.ui.video .embed iframe,.ui.video .embed object{position:absolute;border:none;width:100%;height:100%;top:0;left:0;margin:0;padding:0}.ui.video .play:hover{background:0 0}.ui.video .play:hover:before{color:#fff}.ui.active.video .placeholder,.ui.active.video .play{display:none}.ui.active.video .embed{display:inline} -------------------------------------------------------------------------------- /public/semantic/components/container.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Container 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.container{display:block;max-width:100%!important}@media only screen and (max-width:767px){.ui.container{width:auto;margin-left:1em!important;margin-right:1em!important}.ui.grid.container{width:auto!important}}@media only screen and (min-width:768px) and (max-width:991px){.ui.container{width:723px;margin-left:auto!important;margin-right:auto!important}.ui.grid.container{width:calc(723px + 2em)!important}}@media only screen and (min-width:992px) and (max-width:1199px){.ui.container{width:933px;margin-left:auto!important;margin-right:auto!important}.ui.grid.container{width:calc(933px + 2em)!important}}@media only screen and (min-width:1200px){.ui.container{width:1127px;margin-left:auto!important;margin-right:auto!important}.ui.grid.container{width:calc(1127px + 2em)!important}}.ui.text.container{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;max-width:700px!important;line-height:1.5;font-size:1.14285714rem}.ui.fluid.container{width:100%}.ui[class*="left aligned"].container{text-align:left}.ui[class*="center aligned"].container{text-align:center}.ui[class*="right aligned"].container{text-align:right}.ui.justified.container{text-align:justify;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto} -------------------------------------------------------------------------------- /public/semantic/components/nag.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Nag 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.nag{display:none;opacity:.95;position:relative;top:0;left:0;z-index:999;min-height:0;width:100%;margin:0;padding:.75em 1em;background:#555;box-shadow:0 1px 2px 0 rgba(0,0,0,.2);font-size:1rem;text-align:center;color:rgba(0,0,0,.87);border-radius:0 0 .28571429rem .28571429rem;-webkit-transition:.2s background ease;transition:.2s background ease}a.ui.nag{cursor:pointer}.ui.nag>.title{display:inline-block;margin:0 .5em;color:#fff}.ui.nag>.close.icon{cursor:pointer;opacity:.4;position:absolute;top:50%;right:1em;font-size:1em;margin:-.5em 0 0;color:#fff;-webkit-transition:opacity .2s ease;transition:opacity .2s ease}.ui.nag:hover{background:#555;opacity:1}.ui.nag .close:hover{opacity:1}.ui.overlay.nag{position:absolute;display:block}.ui.fixed.nag{position:fixed}.ui.bottom.nag,.ui.bottom.nags{border-radius:.28571429rem .28571429rem 0 0;top:auto;bottom:0}.ui.inverted.nag,.ui.inverted.nags .nag{background-color:#f3f4f5;color:rgba(0,0,0,.85)}.ui.inverted.nag .close,.ui.inverted.nag .title,.ui.inverted.nags .nag .close,.ui.inverted.nags .nag .title{color:rgba(0,0,0,.4)}.ui.nags .nag{border-radius:0!important}.ui.nags .nag:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.bottom.nags .nag:last-child{border-radius:.28571429rem .28571429rem 0 0} -------------------------------------------------------------------------------- /templates/summit/assistance.php: -------------------------------------------------------------------------------- 1 |
2 | Travel assistance applications are now closed, and all applicants have been notified. Thanks to everyone who submitted an application! Please see our remote particiation options if you are not able to attend in person. 3 |
4 | 5 |

The IndieWeb community is building the foundation of a web controlled by individuals for themselves. It's crucial to have independent web creators from all backgrounds at IndieWeb Summit to have a rich discussion and build cool things.

6 | 7 |

If you are a member of a group that is typically underrepresented (e.g. if you are not hetero, white, cis and male), and otherwise could not afford to travel to IndieWeb Summit on your own, generous donations from sponsors and other IndieWeb Summit attendees are able to be put towards a fund to assist individuals from underrepresented backgrounds with travel, lodging, and/or childcare costs for the Indieweb Summit in Portland.

8 | 9 |

If you think that you could benefit from this fund, please apply here. You needn't be an IndieWeb expert or master hacker, just an excited participant willing to share and learn.

10 | 11 |

If you would like to contribute to this fund so that we can provide assistance to more individuals from a diverse background, please contact Aaron Parecki.

12 | -------------------------------------------------------------------------------- /templates/baltimore/sponsors.php: -------------------------------------------------------------------------------- 1 |

Special thanks to our sponsors who make it possible to provide food and space for the IndieWeb Summit

2 | 3 | 17 | 18 | 19 |

How to Sponsor

20 |

We would be thrilled to list you as a sponsor! See our sponsorship prospectus for details, or become a monthly supporter.

21 | Download Sponsorship Prospectus (PDF) 22 | 23 | -------------------------------------------------------------------------------- /public/semantic/components/sticky.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Sticky 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Sticky 15 | *******************************/ 16 | 17 | .ui.sticky { 18 | position: static; 19 | -webkit-transition: none; 20 | transition: none; 21 | z-index: 800; 22 | } 23 | 24 | 25 | /******************************* 26 | States 27 | *******************************/ 28 | 29 | 30 | /* Bound */ 31 | .ui.sticky.bound { 32 | position: absolute; 33 | left: auto; 34 | right: auto; 35 | } 36 | 37 | /* Fixed */ 38 | .ui.sticky.fixed { 39 | position: fixed; 40 | left: auto; 41 | right: auto; 42 | } 43 | 44 | /* Bound/Fixed Position */ 45 | .ui.sticky.bound.top, 46 | .ui.sticky.fixed.top { 47 | top: 0px; 48 | bottom: auto; 49 | } 50 | .ui.sticky.bound.bottom, 51 | .ui.sticky.fixed.bottom { 52 | top: auto; 53 | bottom: 0px; 54 | } 55 | 56 | 57 | /******************************* 58 | Types 59 | *******************************/ 60 | 61 | .ui.native.sticky { 62 | position: -webkit-sticky; 63 | position: -moz-sticky; 64 | position: -ms-sticky; 65 | position: -o-sticky; 66 | position: sticky; 67 | } 68 | 69 | 70 | /******************************* 71 | Theme Overrides 72 | *******************************/ 73 | 74 | 75 | 76 | /******************************* 77 | Site Overrides 78 | *******************************/ 79 | 80 | -------------------------------------------------------------------------------- /public/semantic/components/site.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Site 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic&subset=latin);body,html{height:100%}html{font-size:14px}body{margin:0;padding:0;overflow-x:hidden;min-width:320px;background:#fff;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:14px;line-height:1.4285em;color:rgba(0,0,0,.87);font-smoothing:antialiased}h1,h2,h3,h4,h5{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;line-height:1.2857em;margin:calc(2rem - .14285em) 0 1rem;font-weight:700;padding:0}h1{min-height:1rem;font-size:2rem}h2{font-size:1.714rem}h3{font-size:1.28rem}h4{font-size:1.071rem}h5{font-size:1rem}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,p:first-child{margin-top:0}h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child,p:last-child{margin-bottom:0}p{margin:0 0 1em;line-height:1.4285em}a{color:#4183c4;text-decoration:none}a:hover{color:#1e70bf;text-decoration:none}::-webkit-selection{background-color:#cce2ff;color:rgba(0,0,0,.87)}::-moz-selection{background-color:#cce2ff;color:rgba(0,0,0,.87)}::selection{background-color:#cce2ff;color:rgba(0,0,0,.87)}input::-webkit-selection,textarea::-webkit-selection{background-color:rgba(100,100,100,.4);color:rgba(0,0,0,.87)}input::-moz-selection,textarea::-moz-selection{background-color:rgba(100,100,100,.4);color:rgba(0,0,0,.87)}input::selection,textarea::selection{background-color:rgba(100,100,100,.4);color:rgba(0,0,0,.87)} -------------------------------------------------------------------------------- /templates/austin/sponsors.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 23 | 24 | 25 |

How to Sponsor

26 |

We would be thrilled to list you as a sponsor! See our sponsorship prospectus for details, or become a monthly supporter.

27 | Download Sponsorship Prospectus (PDF) 28 | 29 | -------------------------------------------------------------------------------- /public/semantic/components/embed.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Video 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.embed{position:relative;max-width:100%;height:0;overflow:hidden;background:#dcddde;padding-bottom:56.25%}.ui.embed embed,.ui.embed iframe,.ui.embed object{position:absolute;border:none;width:100%;height:100%;top:0;left:0;margin:0;padding:0}.ui.embed>.embed{display:none}.ui.embed>.placeholder{position:absolute;cursor:pointer;top:0;left:0;display:block;width:100%;height:100%;background-color:radial-gradient(transparent 45%,rgba(0,0,0,.3))}.ui.embed>.icon{cursor:pointer;position:absolute;top:0;left:0;width:100%;height:100%;z-index:2}.ui.embed>.icon:after{position:absolute;top:0;left:0;width:100%;height:100%;z-index:3;content:'';background:-webkit-radial-gradient(transparent 45%,rgba(0,0,0,.3));background:radial-gradient(transparent 45%,rgba(0,0,0,.3));opacity:.5;-webkit-transition:opacity .5s ease;transition:opacity .5s ease}.ui.embed>.icon:before{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);color:#fff;font-size:6rem;text-shadow:0 2px 10px rgba(34,36,38,.2);-webkit-transition:opacity .5s ease,color .5s ease;transition:opacity .5s ease,color .5s ease;z-index:10}.ui.embed .icon:hover:after{background:-webkit-radial-gradient(transparent 45%,rgba(0,0,0,.3));background:radial-gradient(transparent 45%,rgba(0,0,0,.3));opacity:1}.ui.embed .icon:hover:before{color:#fff}.ui.active.embed>.icon,.ui.active.embed>.placeholder{display:none}.ui.active.embed>.embed{display:block}.ui.square.embed{padding-bottom:100%}.ui[class*="4:3"].embed{padding-bottom:75%}.ui[class*="16:9"].embed{padding-bottom:56.25%}.ui[class*="21:9"].embed{padding-bottom:42.85714286%} -------------------------------------------------------------------------------- /public/semantic/components/shape.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Shape 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.shape{position:relative;vertical-align:top;display:inline-block;-webkit-perspective:2000px;perspective:2000px;-webkit-transition:-webkit-transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out}.ui.shape .sides{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.ui.shape .side{opacity:1;width:100%;margin:0!important;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:none}.ui.shape .side *{-webkit-backface-visibility:visible!important;backface-visibility:visible!important}.ui.cube.shape .side{min-width:15em;height:15em;padding:2em;background-color:#e6e6e6;color:rgba(0,0,0,.87);box-shadow:0 0 2px rgba(0,0,0,.3)}.ui.cube.shape .side>.content{width:100%;height:100%;display:table;text-align:center;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ui.cube.shape .side>.content>div{display:table-cell;vertical-align:middle;font-size:2em}.ui.text.shape.animating .sides{position:static}.ui.text.shape .side{white-space:nowrap}.ui.text.shape .side>*{white-space:normal}.ui.loading.shape{position:absolute;top:-9999px;left:-9999px}.ui.shape .animating.side{position:absolute;top:0;left:0;display:block;z-index:100}.ui.shape .hidden.side{opacity:.6}.ui.shape.animating .sides{position:absolute;-webkit-transition:-webkit-transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out}.ui.shape.animating .side{-webkit-transition:opacity .6s ease-in-out;transition:opacity .6s ease-in-out}.ui.shape .active.side{display:block} -------------------------------------------------------------------------------- /public/semantic/components/ad.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Ad 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2013 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.ad{display:block;overflow:hidden;margin:1em 0}.ui.ad:first-child,.ui.ad:last-child{margin:0}.ui.ad iframe{margin:0;padding:0;border:none;overflow:hidden}.ui.leaderboard.ad{width:728px;height:90px}.ui[class*="medium rectangle"].ad{width:300px;height:250px}.ui[class*="large rectangle"].ad{width:336px;height:280px}.ui[class*="half page"].ad{width:300px;height:600px}.ui.square.ad{width:250px;height:250px}.ui[class*="small square"].ad{width:200px;height:200px}.ui[class*="small rectangle"].ad{width:180px;height:150px}.ui[class*="vertical rectangle"].ad{width:240px;height:400px}.ui.button.ad{width:120px;height:90px}.ui[class*="square button"].ad{width:125px;height:125px}.ui[class*="small button"].ad{width:120px;height:60px}.ui.skyscraper.ad{width:120px;height:600px}.ui[class*="wide skyscraper"].ad{width:160px}.ui.banner.ad{width:468px;height:60px}.ui[class*="vertical banner"].ad{width:120px;height:240px}.ui[class*="top banner"].ad{width:930px;height:180px}.ui[class*="half banner"].ad{width:234px;height:60px}.ui[class*="large leaderboard"].ad{width:970px;height:90px}.ui.billboard.ad{width:970px;height:250px}.ui.panorama.ad{width:980px;height:120px}.ui.netboard.ad{width:580px;height:400px}.ui[class*="large mobile banner"].ad{width:320px;height:100px}.ui[class*="mobile leaderboard"].ad{width:320px;height:50px}.ui.mobile.ad{display:none}@media only screen and (max-width:767px){.ui.mobile.ad{display:block}}.ui.centered.ad{margin-left:auto;margin-right:auto}.ui.test.ad{position:relative;background:#545454}.ui.test.ad:after{position:absolute;top:50%;left:50%;width:100%;text-align:center;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);content:'Ad';color:#fff;font-size:1em;font-weight:700}.ui.mobile.test.ad:after{font-size:.85714286em}.ui.test.ad[data-text]:after{content:attr(data-text)} -------------------------------------------------------------------------------- /public/semantic/components/tab.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Tab 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | UI Tabs 15 | *******************************/ 16 | 17 | .ui.tab { 18 | display: none; 19 | } 20 | 21 | 22 | /******************************* 23 | States 24 | *******************************/ 25 | 26 | 27 | /*-------------------- 28 | Active 29 | ---------------------*/ 30 | 31 | .ui.tab.active, 32 | .ui.tab.open { 33 | display: block; 34 | } 35 | 36 | /*-------------------- 37 | Loading 38 | ---------------------*/ 39 | 40 | .ui.tab.loading { 41 | position: relative; 42 | overflow: hidden; 43 | display: block; 44 | min-height: 250px; 45 | } 46 | .ui.tab.loading * { 47 | position: relative !important; 48 | left: -10000px !important; 49 | } 50 | .ui.tab.loading:before, 51 | .ui.tab.loading.segment:before { 52 | position: absolute; 53 | content: ''; 54 | top: 100px; 55 | left: 50%; 56 | margin: -1.25em 0em 0em -1.25em; 57 | width: 2.5em; 58 | height: 2.5em; 59 | border-radius: 500rem; 60 | border: 0.2em solid rgba(0, 0, 0, 0.1); 61 | } 62 | .ui.tab.loading:after, 63 | .ui.tab.loading.segment:after { 64 | position: absolute; 65 | content: ''; 66 | top: 100px; 67 | left: 50%; 68 | margin: -1.25em 0em 0em -1.25em; 69 | width: 2.5em; 70 | height: 2.5em; 71 | -webkit-animation: button-spin 0.6s linear; 72 | animation: button-spin 0.6s linear; 73 | -webkit-animation-iteration-count: infinite; 74 | animation-iteration-count: infinite; 75 | border-radius: 500rem; 76 | border-color: #767676 transparent transparent; 77 | border-style: solid; 78 | border-width: 0.2em; 79 | box-shadow: 0px 0px 0px 1px transparent; 80 | } 81 | 82 | 83 | /******************************* 84 | Tab Overrides 85 | *******************************/ 86 | 87 | 88 | 89 | /******************************* 90 | User Overrides 91 | *******************************/ 92 | 93 | -------------------------------------------------------------------------------- /public/semantic/components/reset.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Reset 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}input[type=text],input[type=email],input[type=search],input[type=password]{-webkit-appearance:none;-moz-appearance:none}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0} -------------------------------------------------------------------------------- /templates/show-rsvps.php: -------------------------------------------------------------------------------- 1 |
2 | ', $event, $rsvp['author_photo']); 38 | } else { 39 | $author_photo = ''; 40 | } 41 | 42 | // build author class attribute if there are mf2 classes 43 | $author_class = ''; 44 | if ($author_mf2) { 45 | $author_class = sprintf(' class="%s"', implode(' ', $author_mf2)); 46 | } 47 | ?> 48 |
49 |
50 | 51 |
52 |
53 |
54 | > 55 |
56 | 57 |
58 |
59 | 62 |
63 |
64 | -------------------------------------------------------------------------------- /public/semantic/components/dimmer.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Dimmer 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.dimmable{position:relative}.ui.dimmer{display:none;position:absolute;top:0!important;left:0!important;width:100%;height:100%;text-align:center;vertical-align:middle;background-color:rgba(0,0,0,.85);opacity:0;line-height:1;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-transition:background-color .5s linear;transition:background-color .5s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;will-change:opacity;z-index:1000}.ui.dimmer>.content{width:100%;height:100%;display:table;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ui.dimmer>.content>*{display:table-cell;vertical-align:middle;color:#fff}.ui.segment>.ui.dimmer{border-radius:inherit!important}.animating.dimmable:not(body),.dimmed.dimmable:not(body){overflow:hidden}.dimmed.dimmable>.ui.animating.dimmer,.dimmed.dimmable>.ui.visible.dimmer,.ui.active.dimmer{display:block;opacity:1}.ui.disabled.dimmer{width:0!important;height:0!important}.ui.page.dimmer{position:fixed;-webkit-transform-style:'';transform-style:'';-webkit-perspective:2000px;perspective:2000px;-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center}body.animating.in.dimmable,body.dimmed.dimmable{overflow:hidden}body.dimmable>.dimmer{position:fixed}.blurring.dimmable>:not(.dimmer){-webkit-filter:blur(0) grayscale(0);filter:blur(0) grayscale(0);-webkit-transition:800ms -webkit-filter ease,800ms filter ease;transition:800ms filter ease}.blurring.dimmed.dimmable>:not(.dimmer){-webkit-filter:blur(5px) grayscale(.7);filter:blur(5px) grayscale(.7)}.blurring.dimmable>.dimmer{background-color:rgba(0,0,0,.6)}.blurring.dimmable>.inverted.dimmer{background-color:rgba(255,255,255,.6)}.ui.dimmer>.top.aligned.content>*{vertical-align:top}.ui.dimmer>.bottom.aligned.content>*{vertical-align:bottom}.ui.inverted.dimmer{background-color:rgba(255,255,255,.85)}.ui.inverted.dimmer>.content>*{color:#fff}.ui.simple.dimmer{display:block;overflow:hidden;opacity:1;width:0;height:0;z-index:-100;background-color:transparent}.dimmed.dimmable>.ui.simple.dimmer{overflow:visible;opacity:1;width:100%;height:100%;background-color:rgba(0,0,0,.85);z-index:1}.ui.simple.inverted.dimmer{background-color:rgba(255,255,255,0)}.dimmed.dimmable>.ui.simple.inverted.dimmer{background-color:rgba(255,255,255,.85)} -------------------------------------------------------------------------------- /public/semantic/components/comment.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Comment 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.comments{margin:1.5em 0;max-width:650px}.ui.comments:first-child{margin-top:0}.ui.comments:last-child{margin-bottom:0}.ui.comments .comment{position:relative;background:0 0;margin:.5em 0 0;padding:.5em 0 0;border:none;border-top:none;line-height:1.2}.ui.comments .comment:first-child{margin-top:0;padding-top:0}.ui.comments .comment .comments{margin:0 0 .5em .5em;padding:1em 0 1em 1em}.ui.comments .comment .comments:before{position:absolute;top:0;left:0}.ui.comments .comment .comments .comment{border:none;border-top:none;background:0 0}.ui.comments .comment .avatar{display:block;width:2.5em;height:auto;float:left;margin:.2em 0 0}.ui.comments .comment .avatar img,.ui.comments .comment img.avatar{display:block;margin:0 auto;width:100%;height:100%;border-radius:.25rem}.ui.comments .comment>.content{display:block}.ui.comments .comment>.avatar~.content{margin-left:3.5em}.ui.comments .comment .author{font-size:1em;color:rgba(0,0,0,.87);font-weight:700}.ui.comments .comment a.author{cursor:pointer}.ui.comments .comment a.author:hover{color:#1e70bf}.ui.comments .comment .metadata{display:inline-block;margin-left:.5em;color:rgba(0,0,0,.4);font-size:.875em}.ui.comments .comment .metadata>*{display:inline-block;margin:0 .5em 0 0}.ui.comments .comment .metadata>:last-child{margin-right:0}.ui.comments .comment .text{margin:.25em 0 .5em;font-size:1em;word-wrap:break-word;color:rgba(0,0,0,.87);line-height:1.3}.ui.comments .comment .actions{font-size:.875em}.ui.comments .comment .actions a{cursor:pointer;display:inline-block;margin:0 .75em 0 0;color:rgba(0,0,0,.4)}.ui.comments .comment .actions a:last-child{margin-right:0}.ui.comments .comment .actions a.active,.ui.comments .comment .actions a:hover{color:rgba(0,0,0,.8)}.ui.comments>.reply.form{margin-top:1em}.ui.comments .comment .reply.form{width:100%;margin-top:1em}.ui.comments .reply.form textarea{font-size:1em;height:12em}.ui.collapsed.comments,.ui.comments .collapsed.comment,.ui.comments .collapsed.comments{display:none}.ui.threaded.comments .comment .comments{margin:-1.5em 0 -1em 1.25em;padding:3em 0 2em 2.25em;box-shadow:-1px 0 0 rgba(34,36,38,.15)}.ui.minimal.comments .comment .actions{opacity:0;position:absolute;top:0;right:0;left:auto;-webkit-transition:opacity .2s ease;transition:opacity .2s ease;-webkit-transition-delay:.1s;transition-delay:.1s}.ui.minimal.comments .comment>.content:hover>.actions{opacity:1}.ui.small.comments{font-size:.9em}.ui.comments{font-size:1em}.ui.large.comments{font-size:1.1em}.ui.huge.comments{font-size:1.2em} -------------------------------------------------------------------------------- /templates/sf/schedule.php: -------------------------------------------------------------------------------- 1 |

2 | -, 2019
3 | Mozilla San Francisco, 2 Harrison St, San Francisco, California 4 |

5 | 6 |
7 |
8 |
9 | Saturday, December 7
10 | Learn, Share, Discuss! 11 |
12 |
13 | Day 1 is about discussing in a BarCamp-like environment. Bring a topic you'd like to discuss or join in on topics as they are added to the board. 14 |
15 |
16 |
    17 |
  • 9:00 Organizer setup
  • 18 |
  • 9:30 Doors Open
  • 19 |
  • 10:00 Introduction
  • 20 |
  • 10:15 Opening Keynote
  • 21 |
  • 10:30 Lightning Intros and Demos
  • 22 |
  • 11:00 Session Planning
  • 23 |
  • 12:00 Group photo & lunch break
  • 24 |
  • 13:30 Sessions
  • 25 |
  • 18:00 End of sessions for Day 1
  • 26 |
27 |
28 |
29 |
30 |
31 | Sunday, December 8
32 | Create, Hack, Demo! 33 |
34 |
35 | Day 2 is about implementing what we discussed. Work with others or on your own. We'll have demos at the end of the day to see what everyone worked on! 36 |
37 |
38 |
    39 |
  • 9:00 Organizer setup
  • 40 |
  • 9:30 Doors Open
  • 41 |
  • 10:00 Day 2 kick-off
  • 42 |
  • 12:00 Lunch
  • 43 |
  • 13:37 Demos!
  • 44 |
  • 14:00 Clean-up
  • 45 |
  • 14:15 Camp closed
  • 46 |
47 |
48 |
49 |
50 | 51 |
52 | 53 |

Schedule is subject to change. View the full schedule grid on the IndieWeb wiki for the latest updates.

54 | 55 |
56 | -------------------------------------------------------------------------------- /public/semantic/components/breadcrumb.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Breadcrumb 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Breadcrumb 15 | *******************************/ 16 | 17 | .ui.breadcrumb { 18 | line-height: 1; 19 | margin: 1em 0em; 20 | display: inline-block; 21 | vertical-align: middle; 22 | } 23 | .ui.breadcrumb:first-child { 24 | margin-top: 0em; 25 | } 26 | .ui.breadcrumb:last-child { 27 | margin-bottom: 0em; 28 | } 29 | 30 | 31 | /******************************* 32 | Content 33 | *******************************/ 34 | 35 | 36 | /* Divider */ 37 | .ui.breadcrumb .divider { 38 | display: inline-block; 39 | opacity: 0.7; 40 | margin: 0em 0.21428571rem 0em; 41 | font-size: 0.92857143em; 42 | color: rgba(0, 0, 0, 0.4); 43 | vertical-align: baseline; 44 | } 45 | 46 | /* Link */ 47 | .ui.breadcrumb a { 48 | color: #4183c4; 49 | } 50 | .ui.breadcrumb a:hover { 51 | color: #1e70bf; 52 | } 53 | 54 | /* Icon Divider */ 55 | .ui.breadcrumb .icon.divider { 56 | font-size: 0.85714286em; 57 | vertical-align: baseline; 58 | } 59 | 60 | /* Section */ 61 | .ui.breadcrumb a.section { 62 | cursor: pointer; 63 | } 64 | .ui.breadcrumb .section { 65 | display: inline-block; 66 | margin: 0em; 67 | padding: 0em; 68 | } 69 | 70 | /* Loose Coupling */ 71 | .ui.breadcrumb.segment { 72 | display: inline-block; 73 | padding: 0.71428571em 1em; 74 | } 75 | 76 | 77 | /******************************* 78 | States 79 | *******************************/ 80 | 81 | .ui.breadcrumb .active.section { 82 | font-weight: bold; 83 | } 84 | 85 | 86 | /******************************* 87 | Variations 88 | *******************************/ 89 | 90 | .ui.mini.breadcrumb { 91 | font-size: 0.71428571rem; 92 | } 93 | .ui.tiny.breadcrumb { 94 | font-size: 0.85714286rem; 95 | } 96 | .ui.small.breadcrumb { 97 | font-size: 0.92857143rem; 98 | } 99 | .ui.breadcrumb { 100 | font-size: 1rem; 101 | } 102 | .ui.large.breadcrumb { 103 | font-size: 1.14285714rem; 104 | } 105 | .ui.big.breadcrumb { 106 | font-size: 1.28571429rem; 107 | } 108 | .ui.huge.breadcrumb { 109 | font-size: 1.42857143rem; 110 | } 111 | .ui.massive.breadcrumb { 112 | font-size: 1.71428571rem; 113 | } 114 | 115 | 116 | /******************************* 117 | Theme Overrides 118 | *******************************/ 119 | 120 | 121 | 122 | /******************************* 123 | Site Overrides 124 | *******************************/ 125 | 126 | -------------------------------------------------------------------------------- /templates/show-tito-tickets.php: -------------------------------------------------------------------------------- 1 | 'Registrations', 19 | 'filter' => ['Regular','Free Ticket'], 20 | ]; 21 | $ticket_types[] = [ 22 | 'title' => 'Remote Participants', 23 | 'filter' => ['Remote Participation'], 24 | ]; 25 | 26 | if($tickets): 27 | foreach($ticket_types as $type): 28 | echo '

'.$type['title'].'

'; 29 | echo '
'; 30 | 31 | $count = 0; 32 | $hidden = 0; 33 | foreach($tickets as $ticket): 34 | if(array_intersect($type['filter'], $ticket->ticket_type)): 35 | if($ticket->show == 'yes'): 36 | $count++; 37 | if(!$ticket->website || !in_array(parse_url($ticket->website, PHP_URL_HOST), $websites)): 38 | if($ticket->website) { 39 | $websites[] = parse_url($ticket->website, PHP_URL_HOST); 40 | } 41 | ?> 42 |
43 |
44 | website): ?> 45 | 46 | website): ?> 47 |
48 |
49 |
50 | website): ?> 51 | name ?> 52 | website): ?> 53 |
54 |
55 |
56 | website, PHP_URL_HOST), $websites)) { 60 | $hidden++; 61 | } 62 | endif; 63 | endif; 64 | endforeach; 65 | 66 | if($count == 0) { 67 | echo 'None yet!'; 68 | } 69 | 70 | if($hidden): 71 | echo '
72 |
73 | and '.$hidden.' private registrations 74 |
75 |
'; 76 | endif; 77 | 78 | echo '
'; 79 | echo '
'; 80 | 81 | endforeach; 82 | endif; 83 | 84 | -------------------------------------------------------------------------------- /public/semantic/components/rail.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Rail 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Rails 15 | *******************************/ 16 | 17 | .ui.rail { 18 | position: absolute; 19 | top: 0%; 20 | width: 300px; 21 | height: 100%; 22 | } 23 | .ui.left.rail { 24 | left: auto; 25 | right: 100%; 26 | padding: 0em 2rem 0em 0em; 27 | margin: 0em 2rem 0em 0em; 28 | } 29 | .ui.right.rail { 30 | left: 100%; 31 | right: auto; 32 | padding: 0em 0em 0em 2rem; 33 | margin: 0em 0em 0em 2rem; 34 | } 35 | 36 | 37 | /******************************* 38 | Variations 39 | *******************************/ 40 | 41 | 42 | /*-------------- 43 | Internal 44 | ---------------*/ 45 | 46 | .ui.left.internal.rail { 47 | left: 0%; 48 | right: auto; 49 | padding: 0em 0em 0em 2rem; 50 | margin: 0em 0em 0em 2rem; 51 | } 52 | .ui.right.internal.rail { 53 | left: auto; 54 | right: 0%; 55 | padding: 0em 2rem 0em 0em; 56 | margin: 0em 2rem 0em 0em; 57 | } 58 | 59 | /*-------------- 60 | Dividing 61 | ---------------*/ 62 | 63 | .ui.dividing.rail { 64 | width: 302.5px; 65 | } 66 | .ui.left.dividing.rail { 67 | padding: 0em 2.5rem 0em 0em; 68 | margin: 0em 2.5rem 0em 0em; 69 | border-right: 1px solid rgba(34, 36, 38, 0.15); 70 | } 71 | .ui.right.dividing.rail { 72 | border-left: 1px solid rgba(34, 36, 38, 0.15); 73 | padding: 0em 0em 0em 2.5rem; 74 | margin: 0em 0em 0em 2.5rem; 75 | } 76 | 77 | /*-------------- 78 | Distance 79 | ---------------*/ 80 | 81 | .ui.close.rail { 82 | width: 301px; 83 | } 84 | .ui.close.left.rail { 85 | padding: 0em 1em 0em 0em; 86 | margin: 0em 1em 0em 0em; 87 | } 88 | .ui.close.right.rail { 89 | padding: 0em 0em 0em 1em; 90 | margin: 0em 0em 0em 1em; 91 | } 92 | .ui.very.close.rail { 93 | width: 300.5px; 94 | } 95 | .ui.very.close.left.rail { 96 | padding: 0em 0.5em 0em 0em; 97 | margin: 0em 0.5em 0em 0em; 98 | } 99 | .ui.very.close.right.rail { 100 | padding: 0em 0em 0em 0.5em; 101 | margin: 0em 0em 0em 0.5em; 102 | } 103 | 104 | /*-------------- 105 | Attached 106 | ---------------*/ 107 | 108 | .ui.attached.left.rail, 109 | .ui.attached.right.rail { 110 | padding: 0em; 111 | margin: 0em; 112 | } 113 | 114 | /*-------------- 115 | Sizing 116 | ---------------*/ 117 | 118 | .ui.rail { 119 | font-size: 1rem; 120 | } 121 | 122 | 123 | /******************************* 124 | Theme Overrides 125 | *******************************/ 126 | 127 | 128 | 129 | /******************************* 130 | Site Overrides 131 | *******************************/ 132 | 133 | -------------------------------------------------------------------------------- /public/semantic/components/video.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Video 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Video 15 | *******************************/ 16 | 17 | .ui.video { 18 | background-color: #dddddd; 19 | position: relative; 20 | max-width: 100%; 21 | padding-bottom: 56.25%; 22 | height: 0px; 23 | overflow: hidden; 24 | } 25 | 26 | /*-------------- 27 | Content 28 | ---------------*/ 29 | 30 | 31 | /* Placeholder Image */ 32 | .ui.video .placeholder { 33 | background-color: #333333; 34 | } 35 | 36 | /* Play Icon Overlay */ 37 | .ui.video .play { 38 | cursor: pointer; 39 | position: absolute; 40 | top: 0px; 41 | left: 0px; 42 | z-index: 10; 43 | width: 100%; 44 | height: 100%; 45 | background: transparent; 46 | -webkit-transition: background 0.2s ease; 47 | transition: background 0.2s ease; 48 | } 49 | .ui.video .play.icon:before { 50 | position: absolute; 51 | top: 50%; 52 | left: 50%; 53 | z-index: 11; 54 | -webkit-transform: translateX(-50%) translateY(-50%); 55 | -ms-transform: translateX(-50%) translateY(-50%); 56 | transform: translateX(-50%) translateY(-50%); 57 | color: rgba(255, 255, 255, 0.7); 58 | font-size: 7rem; 59 | text-shadow: 2px 2px 0px rgba(0, 0, 0, 0.15); 60 | -webkit-transition: color 0.2s ease; 61 | transition: color 0.2s ease; 62 | } 63 | .ui.video .placeholder { 64 | position: absolute; 65 | top: 0px; 66 | left: 0px; 67 | display: block; 68 | width: 100%; 69 | height: 100%; 70 | } 71 | 72 | /* IFrame Embed */ 73 | .ui.video .embed iframe, 74 | .ui.video .embed embed, 75 | .ui.video .embed object { 76 | position: absolute; 77 | border: none; 78 | width: 100%; 79 | height: 100%; 80 | top: 0px; 81 | left: 0px; 82 | margin: 0em; 83 | padding: 0em; 84 | } 85 | 86 | 87 | /******************************* 88 | States 89 | *******************************/ 90 | 91 | 92 | /*-------------- 93 | Hover 94 | ---------------*/ 95 | 96 | .ui.video .play:hover { 97 | background: rgba(0, 0, 0, 0); 98 | } 99 | .ui.video .play:hover:before { 100 | color: #ffffff; 101 | } 102 | 103 | /*-------------- 104 | Active 105 | ---------------*/ 106 | 107 | .ui.active.video .play, 108 | .ui.active.video .placeholder { 109 | display: none; 110 | } 111 | .ui.active.video .embed { 112 | display: inline; 113 | } 114 | 115 | 116 | /******************************* 117 | Video Overrides 118 | *******************************/ 119 | 120 | 121 | 122 | /******************************* 123 | Site Overrides 124 | *******************************/ 125 | 126 | -------------------------------------------------------------------------------- /templates/summit/sponsors.php: -------------------------------------------------------------------------------- 1 |

Special thanks to our sponsors who make it possible to provide food and space for the IndieWeb Summit

2 | 3 | 50 | 51 | 52 |

How to Sponsor

53 |

We would be thrilled to list you as a sponsor! See our sponsorship prospectus for details, or become a monthly supporter.

54 | Download Sponsorship Prospectus (PDF) 55 | 56 | -------------------------------------------------------------------------------- /templates/nyc/sponsors.php: -------------------------------------------------------------------------------- 1 |

Special thanks to our sponsors who make it possible to provide food and space for IndieWebCamp NYC

2 | 3 | 51 | 52 | 53 |

How to Sponsor

54 |

We would be thrilled to list you as a sponsor! See our sponsorship prospectus for details, or become a monthly supporter.

55 | Download Sponsorship Prospectus (PDF) 56 | 57 | -------------------------------------------------------------------------------- /public/semantic/components/container.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Container 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Container 15 | *******************************/ 16 | 17 | 18 | /* All Sizes */ 19 | .ui.container { 20 | display: block; 21 | max-width: 100% !important; 22 | } 23 | 24 | /* Mobile */ 25 | @media only screen and (max-width: 767px) { 26 | .ui.container { 27 | width: auto; 28 | margin-left: 1em !important; 29 | margin-right: 1em !important; 30 | } 31 | .ui.grid.container { 32 | width: auto !important; 33 | } 34 | } 35 | 36 | /* Tablet */ 37 | @media only screen and (min-width: 768px) and (max-width: 991px) { 38 | .ui.container { 39 | width: 723px; 40 | margin-left: auto !important; 41 | margin-right: auto !important; 42 | } 43 | .ui.grid.container { 44 | width: calc( 723px + 2em ) !important; 45 | } 46 | } 47 | 48 | /* Small Monitor */ 49 | @media only screen and (min-width: 992px) and (max-width: 1199px) { 50 | .ui.container { 51 | width: 933px; 52 | margin-left: auto !important; 53 | margin-right: auto !important; 54 | } 55 | .ui.grid.container { 56 | width: calc( 933px + 2em ) !important; 57 | } 58 | } 59 | 60 | /* Large Monitor */ 61 | @media only screen and (min-width: 1200px) { 62 | .ui.container { 63 | width: 1127px; 64 | margin-left: auto !important; 65 | margin-right: auto !important; 66 | } 67 | .ui.grid.container { 68 | width: calc( 1127px + 2em ) !important; 69 | } 70 | } 71 | 72 | 73 | /******************************* 74 | Types 75 | *******************************/ 76 | 77 | 78 | /* Text Container */ 79 | .ui.text.container { 80 | font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; 81 | max-width: 700px !important; 82 | line-height: 1.5; 83 | } 84 | .ui.text.container { 85 | font-size: 1.14285714rem; 86 | } 87 | 88 | /* Fluid */ 89 | .ui.fluid.container { 90 | width: 100%; 91 | } 92 | 93 | 94 | /******************************* 95 | Variations 96 | *******************************/ 97 | 98 | .ui[class*="left aligned"].container { 99 | text-align: left; 100 | } 101 | .ui[class*="center aligned"].container { 102 | text-align: center; 103 | } 104 | .ui[class*="right aligned"].container { 105 | text-align: right; 106 | } 107 | .ui.justified.container { 108 | text-align: justify; 109 | -webkit-hyphens: auto; 110 | -moz-hyphens: auto; 111 | -ms-hyphens: auto; 112 | hyphens: auto; 113 | } 114 | 115 | 116 | /******************************* 117 | Theme Overrides 118 | *******************************/ 119 | 120 | 121 | 122 | /******************************* 123 | Site Overrides 124 | *******************************/ 125 | 126 | -------------------------------------------------------------------------------- /public/assets/icomoon/fonts/icomoon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /public/semantic/components/colorize.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Colorize 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | !function(e,n,i,t){"use strict";e.fn.colorize=function(n){var i=e.isPlainObject(n)?e.extend(!0,{},e.fn.colorize.settings,n):e.extend({},e.fn.colorize.settings),o=arguments||!1;return e(this).each(function(n){var a,r,c,s,d,g,u,l,m=e(this),f=e("")[0],h=e("")[0],p=e("")[0],v=new Image,w=i.colors,b=(i.paths,i.namespace),y=i.error,C=m.data("module-"+b);return l={checkPreconditions:function(){return l.debug("Checking pre-conditions"),!e.isPlainObject(w)||e.isEmptyObject(w)?(l.error(y.undefinedColors),!1):!0},async:function(e){i.async?setTimeout(e,0):e()},getMetadata:function(){l.debug("Grabbing metadata"),s=m.data("image")||i.image||t,d=m.data("name")||i.name||n,g=i.width||m.width(),u=i.height||m.height(),(0===g||0===u)&&l.error(y.undefinedSize)},initialize:function(){l.debug("Initializing with colors",w),l.checkPreconditions()&&l.async(function(){l.getMetadata(),l.canvas.create(),l.draw.image(function(){l.draw.colors(),l.canvas.merge()}),m.data("module-"+b,l)})},redraw:function(){l.debug("Redrawing image"),l.async(function(){l.canvas.clear(),l.draw.colors(),l.canvas.merge()})},change:{color:function(e,n){return l.debug("Changing color",e),w[e]===t?(l.error(y.missingColor),!1):(w[e]=n,void l.redraw())}},canvas:{create:function(){l.debug("Creating canvases"),f.width=g,f.height=u,h.width=g,h.height=u,p.width=g,p.height=u,a=f.getContext("2d"),r=h.getContext("2d"),c=p.getContext("2d"),m.append(f),a=m.children("canvas")[0].getContext("2d")},clear:function(e){l.debug("Clearing canvas"),c.fillStyle="#FFFFFF",c.fillRect(0,0,g,u)},merge:function(){return e.isFunction(a.blendOnto)?(a.putImageData(r.getImageData(0,0,g,u),0,0),void c.blendOnto(a,"multiply")):void l.error(y.missingPlugin)}},draw:{image:function(e){l.debug("Drawing image"),e=e||function(){},s?(v.src=s,v.onload=function(){r.drawImage(v,0,0),e()}):(l.error(y.noImage),e())},colors:function(){l.debug("Drawing color overlays",w),e.each(w,function(e,n){i.onDraw(c,d,e,n)})}},debug:function(e,n){i.debug&&(n!==t?console.info(i.name+": "+e,n):console.info(i.name+": "+e))},error:function(e){console.warn(i.name+": "+e)},invoke:function(n,o,a){var r;return a=a||Array.prototype.slice.call(arguments,2),"string"==typeof n&&C!==t&&(n=n.split("."),e.each(n,function(n,t){return e.isPlainObject(C[t])?(C=C[t],!0):e.isFunction(C[t])?(r=C[t],!0):(l.error(i.error.method),!1)})),e.isFunction(r)?r.apply(o,a):!1}},C!==t&&o?("invoke"==o[0]&&(o=Array.prototype.slice.call(o,1)),l.invoke(o[0],this,Array.prototype.slice.call(o,1))):void l.initialize()}),this},e.fn.colorize.settings={name:"Image Colorizer",debug:!0,namespace:"colorize",onDraw:function(e,n,i,t){},async:!0,colors:{},metadata:{image:"image",name:"name"},error:{noImage:"No tracing image specified",undefinedColors:"No default colors specified.",missingColor:"Attempted to change color that does not exist",missingPlugin:"Blend onto plug-in must be included",undefinedHeight:"The width or height of image canvas could not be automatically determined. Please specify a height."}}}(jQuery,window,document); -------------------------------------------------------------------------------- /public/semantic/components/nag.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Nag 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Nag 15 | *******************************/ 16 | 17 | .ui.nag { 18 | display: none; 19 | opacity: 0.95; 20 | position: relative; 21 | top: 0em; 22 | left: 0px; 23 | z-index: 999; 24 | min-height: 0em; 25 | width: 100%; 26 | margin: 0em; 27 | padding: 0.75em 1em; 28 | background: #555555; 29 | box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.2); 30 | font-size: 1rem; 31 | text-align: center; 32 | color: rgba(0, 0, 0, 0.87); 33 | border-radius: 0em 0em 0.28571429rem 0.28571429rem; 34 | -webkit-transition: 0.2s background ease; 35 | transition: 0.2s background ease; 36 | } 37 | a.ui.nag { 38 | cursor: pointer; 39 | } 40 | .ui.nag > .title { 41 | display: inline-block; 42 | margin: 0em 0.5em; 43 | color: #ffffff; 44 | } 45 | .ui.nag > .close.icon { 46 | cursor: pointer; 47 | opacity: 0.4; 48 | position: absolute; 49 | top: 50%; 50 | right: 1em; 51 | font-size: 1em; 52 | margin: -0.5em 0em 0em; 53 | color: #ffffff; 54 | -webkit-transition: opacity 0.2s ease; 55 | transition: opacity 0.2s ease; 56 | } 57 | 58 | 59 | /******************************* 60 | States 61 | *******************************/ 62 | 63 | 64 | /* Hover */ 65 | .ui.nag:hover { 66 | background: #555555; 67 | opacity: 1; 68 | } 69 | .ui.nag .close:hover { 70 | opacity: 1; 71 | } 72 | 73 | 74 | /******************************* 75 | Variations 76 | *******************************/ 77 | 78 | 79 | /*-------------- 80 | Static 81 | ---------------*/ 82 | 83 | .ui.overlay.nag { 84 | position: absolute; 85 | display: block; 86 | } 87 | 88 | /*-------------- 89 | Fixed 90 | ---------------*/ 91 | 92 | .ui.fixed.nag { 93 | position: fixed; 94 | } 95 | 96 | /*-------------- 97 | Bottom 98 | ---------------*/ 99 | 100 | .ui.bottom.nags, 101 | .ui.bottom.nag { 102 | border-radius: 0.28571429rem 0.28571429rem 0em 0em; 103 | top: auto; 104 | bottom: 0em; 105 | } 106 | 107 | /*-------------- 108 | White 109 | ---------------*/ 110 | 111 | .ui.inverted.nags .nag, 112 | .ui.inverted.nag { 113 | background-color: #f3f4f5; 114 | color: rgba(0, 0, 0, 0.85); 115 | } 116 | .ui.inverted.nags .nag .close, 117 | .ui.inverted.nags .nag .title, 118 | .ui.inverted.nag .close, 119 | .ui.inverted.nag .title { 120 | color: rgba(0, 0, 0, 0.4); 121 | } 122 | 123 | 124 | /******************************* 125 | Groups 126 | *******************************/ 127 | 128 | .ui.nags .nag { 129 | border-radius: 0em !important; 130 | } 131 | .ui.nags .nag:last-child { 132 | border-radius: 0em 0em 0.28571429rem 0.28571429rem; 133 | } 134 | .ui.bottom.nags .nag:last-child { 135 | border-radius: 0.28571429rem 0.28571429rem 0em 0em; 136 | } 137 | 138 | 139 | /******************************* 140 | Theme Overrides 141 | *******************************/ 142 | 143 | 144 | 145 | /******************************* 146 | User Overrides 147 | *******************************/ 148 | 149 | -------------------------------------------------------------------------------- /public/semantic/components/loader.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Loader 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.loader{display:none;position:absolute;top:50%;left:50%;margin:0;text-align:center;z-index:1000;-webkit-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ui.loader:before{position:absolute;content:'';top:0;left:50%;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loader:after{position:absolute;content:'';top:0;left:50%;-webkit-animation:loader .6s linear;animation:loader .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}@-webkit-keyframes loader{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loader{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.loader:after,.ui.loader:before{width:2.2585em;height:2.2585em;margin:0 0 0 -1.12925em}.ui.mini.loader:after,.ui.mini.loader:before{width:1.2857em;height:1.2857em;margin:0 0 0 -.64285em}.ui.small.loader:after,.ui.small.loader:before{width:1.7142em;height:1.7142em;margin:0 0 0 -.8571em}.ui.large.loader:after,.ui.large.loader:before{width:4.5714em;height:4.5714em;margin:0 0 0 -2.2857em}.ui.dimmer .loader{display:block}.ui.dimmer .ui.loader{color:rgba(255,255,255,.9)}.ui.dimmer .ui.loader:before{border-color:rgba(255,255,255,.15)}.ui.dimmer .ui.loader:after{border-color:#fff transparent transparent}.ui.inverted.dimmer .ui.loader{color:rgba(0,0,0,.87)}.ui.inverted.dimmer .ui.loader:before{border-color:rgba(0,0,0,.1)}.ui.inverted.dimmer .ui.loader:after{border-color:#767676 transparent transparent}.ui.text.loader{width:auto!important;height:auto!important;text-align:center;font-style:normal}.ui.indeterminate.loader:after{-webkit-animation-direction:reverse;animation-direction:reverse;-webkit-animation-duration:1.2s;animation-duration:1.2s}.ui.loader.active,.ui.loader.visible{display:block}.ui.loader.disabled,.ui.loader.hidden{display:none}.ui.inverted.dimmer .ui.mini.loader,.ui.mini.loader{width:1.2857em;height:1.2857em;font-size:.71428571em}.ui.inverted.dimmer .ui.small.loader,.ui.small.loader{width:1.7142em;height:1.7142em;font-size:.92857143em}.ui.inverted.dimmer .ui.loader,.ui.loader{width:2.2585em;height:2.2585em;font-size:1em}.ui.inverted.dimmer .ui.loader.large,.ui.loader.large{width:4.5714em;height:4.5714em;font-size:1.14285714em}.ui.mini.text.loader{min-width:1.2857em;padding-top:1.99998571em}.ui.small.text.loader{min-width:1.7142em;padding-top:2.42848571em}.ui.text.loader{min-width:2.2585em;padding-top:2.97278571em}.ui.large.text.loader{min-width:4.5714em;padding-top:5.28568571em}.ui.inverted.loader{color:rgba(255,255,255,.9)}.ui.inverted.loader:before{border-color:rgba(255,255,255,.15)}.ui.inverted.loader:after{border-top-color:#fff}.ui.inline.loader{position:relative;vertical-align:middle;margin:0;left:0;top:0;-webkit-transform:none;-ms-transform:none;transform:none}.ui.inline.loader.active,.ui.inline.loader.visible{display:inline-block}.ui.centered.inline.loader.active,.ui.centered.inline.loader.visible{display:block;margin-left:auto;margin-right:auto} -------------------------------------------------------------------------------- /public/semantic/components/image.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Image 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.image{position:relative;display:inline-block;vertical-align:middle;max-width:100%;background-color:transparent}img.ui.image{display:block}.ui.image img,.ui.image svg{display:block;max-width:100%;height:auto}.ui.hidden.image,.ui.hidden.images{display:none}.ui.disabled.image,.ui.disabled.images{cursor:default;opacity:.45}.ui.inline.image,.ui.inline.image img,.ui.inline.image svg{display:inline-block}.ui.top.aligned.image,.ui.top.aligned.image img,.ui.top.aligned.image svg,.ui.top.aligned.images .image{display:inline-block;vertical-align:top}.ui.middle.aligned.image,.ui.middle.aligned.image img,.ui.middle.aligned.image svg,.ui.middle.aligned.images .image{display:inline-block;vertical-align:middle}.ui.bottom.aligned.image,.ui.bottom.aligned.image img,.ui.bottom.aligned.image svg,.ui.bottom.aligned.images .image{display:inline-block;vertical-align:bottom}.ui.rounded.image,.ui.rounded.image>*,.ui.rounded.images .image,.ui.rounded.images .image>*{border-radius:.3125em}.ui.bordered.image img,.ui.bordered.image svg,.ui.bordered.images .image,.ui.bordered.images img,.ui.bordered.images svg,img.ui.bordered.image{border:1px solid rgba(0,0,0,.1)}.ui.circular.image,.ui.circular.images{overflow:hidden}.ui.circular.image,.ui.circular.image>*,.ui.circular.images .image,.ui.circular.images .image>*{border-radius:500rem}.ui.fluid.image,.ui.fluid.image img,.ui.fluid.image svg,.ui.fluid.images,.ui.fluid.images img,.ui.fluid.images svg{display:block;width:100%;height:auto}.ui.avatar.image,.ui.avatar.image img,.ui.avatar.image svg,.ui.avatar.images .image,.ui.avatar.images img,.ui.avatar.images svg{margin-right:.25em;display:inline-block;width:2em;height:2em;border-radius:500rem}.ui.spaced.image{display:inline-block!important;margin-left:.5em;margin-right:.5em}.ui[class*="left spaced"].image{margin-left:.5em;margin-right:0}.ui[class*="right spaced"].image{margin-left:0;margin-right:.5em}.ui.floated.image,.ui.floated.images{float:left;margin-right:1em;margin-bottom:1em}.ui.right.floated.image,.ui.right.floated.images{float:right;margin-right:0;margin-bottom:1em;margin-left:1em}.ui.floated.image:last-child,.ui.floated.images:last-child{margin-bottom:0}.ui.centered.image,.ui.centered.images{margin-left:auto;margin-right:auto}.ui.mini.image,.ui.mini.images .image,.ui.mini.images img,.ui.mini.images svg{width:35px;height:auto;font-size:.71428571rem}.ui.tiny.image,.ui.tiny.images .image,.ui.tiny.images img,.ui.tiny.images svg{width:80px;height:auto;font-size:.85714286rem}.ui.small.image,.ui.small.images .image,.ui.small.images img,.ui.small.images svg{width:150px;height:auto;font-size:.92857143rem}.ui.medium.image,.ui.medium.images .image,.ui.medium.images img,.ui.medium.images svg{width:300px;height:auto;font-size:1rem}.ui.large.image,.ui.large.images .image,.ui.large.images img,.ui.large.images svg{width:450px;height:auto;font-size:1.14285714rem}.ui.big.image,.ui.big.images .image,.ui.big.images img,.ui.big.images svg{width:600px;height:auto;font-size:1.28571429rem}.ui.huge.image,.ui.huge.images .image,.ui.huge.images img,.ui.huge.images svg{width:800px;height:auto;font-size:1.42857143rem}.ui.massive.image,.ui.massive.images .image,.ui.massive.images img,.ui.massive.images svg{width:960px;height:auto;font-size:1.71428571rem}.ui.images{font-size:0;margin:0 -.25rem}.ui.images .image,.ui.images img,.ui.images svg{display:inline-block;margin:0 .25rem .5rem} -------------------------------------------------------------------------------- /public/semantic/components/site.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Site 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Page 15 | *******************************/ 16 | 17 | @import url('https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic&subset=latin'); 18 | html, 19 | body { 20 | height: 100%; 21 | } 22 | html { 23 | font-size: 14px; 24 | } 25 | body { 26 | margin: 0px; 27 | padding: 0px; 28 | overflow-x: hidden; 29 | min-width: 320px; 30 | background: #ffffff; 31 | font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; 32 | font-size: 14px; 33 | line-height: 1.4285em; 34 | color: rgba(0, 0, 0, 0.87); 35 | font-smoothing: antialiased; 36 | } 37 | 38 | 39 | /******************************* 40 | Headers 41 | *******************************/ 42 | 43 | h1, 44 | h2, 45 | h3, 46 | h4, 47 | h5 { 48 | font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; 49 | line-height: 1.2857em; 50 | margin: calc(2rem - 0.14285em ) 0em 1rem; 51 | font-weight: bold; 52 | padding: 0em; 53 | } 54 | h1 { 55 | min-height: 1rem; 56 | font-size: 2rem; 57 | } 58 | h2 { 59 | font-size: 1.714rem; 60 | } 61 | h3 { 62 | font-size: 1.28rem; 63 | } 64 | h4 { 65 | font-size: 1.071rem; 66 | } 67 | h5 { 68 | font-size: 1rem; 69 | } 70 | h1:first-child, 71 | h2:first-child, 72 | h3:first-child, 73 | h4:first-child, 74 | h5:first-child { 75 | margin-top: 0em; 76 | } 77 | h1:last-child, 78 | h2:last-child, 79 | h3:last-child, 80 | h4:last-child, 81 | h5:last-child { 82 | margin-bottom: 0em; 83 | } 84 | 85 | 86 | /******************************* 87 | Text 88 | *******************************/ 89 | 90 | p { 91 | margin: 0em 0em 1em; 92 | line-height: 1.4285em; 93 | } 94 | p:first-child { 95 | margin-top: 0em; 96 | } 97 | p:last-child { 98 | margin-bottom: 0em; 99 | } 100 | 101 | /*------------------- 102 | Links 103 | --------------------*/ 104 | 105 | a { 106 | color: #4183c4; 107 | text-decoration: none; 108 | } 109 | a:hover { 110 | color: #1e70bf; 111 | text-decoration: none; 112 | } 113 | 114 | 115 | /******************************* 116 | Highlighting 117 | *******************************/ 118 | 119 | 120 | /* Site */ 121 | ::-webkit-selection { 122 | background-color: #cce2ff; 123 | color: rgba(0, 0, 0, 0.87); 124 | } 125 | ::-moz-selection { 126 | background-color: #cce2ff; 127 | color: rgba(0, 0, 0, 0.87); 128 | } 129 | ::selection { 130 | background-color: #cce2ff; 131 | color: rgba(0, 0, 0, 0.87); 132 | } 133 | 134 | /* Form */ 135 | textarea::-webkit-selection, 136 | input::-webkit-selection { 137 | background-color: rgba(100, 100, 100, 0.4); 138 | color: rgba(0, 0, 0, 0.87); 139 | } 140 | textarea::-moz-selection, 141 | input::-moz-selection { 142 | background-color: rgba(100, 100, 100, 0.4); 143 | color: rgba(0, 0, 0, 0.87); 144 | } 145 | textarea::selection, 146 | input::selection { 147 | background-color: rgba(100, 100, 100, 0.4); 148 | color: rgba(0, 0, 0, 0.87); 149 | } 150 | 151 | 152 | /******************************* 153 | Global Overrides 154 | *******************************/ 155 | 156 | 157 | 158 | /******************************* 159 | Site Overrides 160 | *******************************/ 161 | 162 | -------------------------------------------------------------------------------- /public/semantic/components/feed.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Feed 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.feed{margin:1em 0}.ui.feed:first-child{margin-top:0}.ui.feed:last-child{margin-bottom:0}.ui.feed>.event{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;width:100%;padding:.21428571rem 0;margin:0;background:0 0;border-top:none}.ui.feed>.event:first-child{border-top:0;padding-top:0}.ui.feed>.event:last-child{padding-bottom:0}.ui.feed>.event>.label{display:block;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:2.5em;height:auto;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;text-align:left}.ui.feed>.event>.label .icon{opacity:1;font-size:1.5em;width:100%;padding:.25em;background:0 0;border:none;border-radius:none;color:rgba(0,0,0,.6)}.ui.feed>.event>.label img{width:100%;height:auto;border-radius:500rem}.ui.feed>.event>.label+.content{margin:.5em 0 .35714286em 1.14285714em}.ui.feed>.event>.content{display:block;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;text-align:left;word-wrap:break-word}.ui.feed>.event:last-child>.content{padding-bottom:0}.ui.feed>.event>.content a{cursor:pointer}.ui.feed>.event>.content .date{margin:-.5rem 0 0;padding:0;font-weight:400;font-size:1em;font-style:normal;color:rgba(0,0,0,.4)}.ui.feed>.event>.content .summary{margin:0;font-size:1em;font-weight:700;color:rgba(0,0,0,.87)}.ui.feed>.event>.content .summary img{display:inline-block;width:auto;height:10em;margin:-.25em .25em 0 0;border-radius:.25em;vertical-align:middle}.ui.feed>.event>.content .user{display:inline-block;font-weight:700;margin-right:0;vertical-align:baseline}.ui.feed>.event>.content .user img{margin:-.25em .25em 0 0;width:auto;height:10em;vertical-align:middle}.ui.feed>.event>.content .summary>.date{display:inline-block;float:none;font-weight:400;font-size:.85714286em;font-style:normal;margin:0 0 0 .5em;padding:0;color:rgba(0,0,0,.4)}.ui.feed>.event>.content .extra{margin:.5em 0 0;background:0 0;padding:0;color:rgba(0,0,0,.87)}.ui.feed>.event>.content .extra.images img{display:inline-block;margin:0 .25em 0 0;width:6em}.ui.feed>.event>.content .extra.text{padding:0;border-left:none;font-size:1em;max-width:500px;line-height:1.4285em}.ui.feed>.event>.content .meta{display:inline-block;font-size:.85714286em;margin:.5em 0 0;background:0 0;border:none;border-radius:0;box-shadow:none;padding:0;color:rgba(0,0,0,.6)}.ui.feed>.event>.content .meta>*{position:relative;margin-left:.75em}.ui.feed>.event>.content .meta>:after{content:'';color:rgba(0,0,0,.2);top:0;left:-1em;opacity:1;position:absolute;vertical-align:top}.ui.feed>.event>.content .meta .like{color:'';-webkit-transition:.2s color ease;transition:.2s color ease}.ui.feed>.event>.content .meta .like:hover .icon{color:#ff2733}.ui.feed>.event>.content .meta .active.like .icon{color:#ef404a}.ui.feed>.event>.content .meta>:first-child{margin-left:0}.ui.feed>.event>.content .meta>:first-child::after{display:none}.ui.feed>.event>.content .meta a,.ui.feed>.event>.content .meta>.icon{cursor:pointer;opacity:1;color:rgba(0,0,0,.5);-webkit-transition:color .1s ease;transition:color .1s ease}.ui.feed>.event>.content .meta a:hover,.ui.feed>.event>.content .meta a:hover .icon,.ui.feed>.event>.content .meta>.icon:hover{color:rgba(0,0,0,.95)}.ui.small.feed{font-size:.92857143rem}.ui.feed{font-size:1rem}.ui.large.feed{font-size:1.14285714rem} -------------------------------------------------------------------------------- /public/semantic/components/embed.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Video 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Types 15 | *******************************/ 16 | 17 | .ui.embed { 18 | position: relative; 19 | max-width: 100%; 20 | height: 0px; 21 | overflow: hidden; 22 | background: #dcddde; 23 | padding-bottom: 56.25%; 24 | } 25 | 26 | /*----------------- 27 | Embedded Content 28 | ------------------*/ 29 | 30 | .ui.embed iframe, 31 | .ui.embed embed, 32 | .ui.embed object { 33 | position: absolute; 34 | border: none; 35 | width: 100%; 36 | height: 100%; 37 | top: 0px; 38 | left: 0px; 39 | margin: 0em; 40 | padding: 0em; 41 | } 42 | 43 | /*----------------- 44 | Embed 45 | ------------------*/ 46 | 47 | .ui.embed > .embed { 48 | display: none; 49 | } 50 | 51 | /*-------------- 52 | Placeholder 53 | ---------------*/ 54 | 55 | .ui.embed > .placeholder { 56 | position: absolute; 57 | cursor: pointer; 58 | top: 0px; 59 | left: 0px; 60 | display: block; 61 | width: 100%; 62 | height: 100%; 63 | background-color: radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3)); 64 | } 65 | 66 | /*-------------- 67 | Icon 68 | ---------------*/ 69 | 70 | .ui.embed > .icon { 71 | cursor: pointer; 72 | position: absolute; 73 | top: 0px; 74 | left: 0px; 75 | width: 100%; 76 | height: 100%; 77 | z-index: 2; 78 | } 79 | .ui.embed > .icon:after { 80 | position: absolute; 81 | top: 0%; 82 | left: 0%; 83 | width: 100%; 84 | height: 100%; 85 | z-index: 3; 86 | content: ''; 87 | background: -webkit-radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3)); 88 | background: radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3)); 89 | opacity: 0.5; 90 | -webkit-transition: opacity 0.5s ease; 91 | transition: opacity 0.5s ease; 92 | } 93 | .ui.embed > .icon:before { 94 | position: absolute; 95 | top: 50%; 96 | left: 50%; 97 | z-index: 4; 98 | -webkit-transform: translateX(-50%) translateY(-50%); 99 | -ms-transform: translateX(-50%) translateY(-50%); 100 | transform: translateX(-50%) translateY(-50%); 101 | color: #ffffff; 102 | font-size: 6rem; 103 | text-shadow: 0px 2px 10px rgba(34, 36, 38, 0.2); 104 | -webkit-transition: opacity 0.5s ease, color 0.5s ease; 105 | transition: opacity 0.5s ease, color 0.5s ease; 106 | z-index: 10; 107 | } 108 | 109 | 110 | /******************************* 111 | States 112 | *******************************/ 113 | 114 | 115 | /*-------------- 116 | Hover 117 | ---------------*/ 118 | 119 | .ui.embed .icon:hover:after { 120 | background: -webkit-radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3)); 121 | background: radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3)); 122 | opacity: 1; 123 | } 124 | .ui.embed .icon:hover:before { 125 | color: #ffffff; 126 | } 127 | 128 | /*-------------- 129 | Active 130 | ---------------*/ 131 | 132 | .ui.active.embed > .icon, 133 | .ui.active.embed > .placeholder { 134 | display: none; 135 | } 136 | .ui.active.embed > .embed { 137 | display: block; 138 | } 139 | 140 | 141 | /******************************* 142 | Video Overrides 143 | *******************************/ 144 | 145 | 146 | 147 | /******************************* 148 | Variations 149 | *******************************/ 150 | 151 | .ui.square.embed { 152 | padding-bottom: 100%; 153 | } 154 | .ui[class*="4:3"].embed { 155 | padding-bottom: 75%; 156 | } 157 | .ui[class*="16:9"].embed { 158 | padding-bottom: 56.25%; 159 | } 160 | .ui[class*="21:9"].embed { 161 | padding-bottom: 42.85714286%; 162 | } 163 | -------------------------------------------------------------------------------- /public/semantic/components/popup.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Popup 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.popup{display:none;position:absolute;top:0;right:0;min-width:-webkit-min-content;min-width:-moz-min-content;min-width:min-content;z-index:1900;border:1px solid #d4d4d5;line-height:1.4285em;max-width:250px;background-color:#fff;padding:.833em 1em;font-weight:400;font-style:normal;color:rgba(0,0,0,.87);border-radius:.28571429rem;box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.08);margin:0}.ui.popup>.header{padding:0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1.125em;line-height:1.2;font-weight:700}.ui.popup>.header+.content{padding-top:.5em}.ui.popup:before{position:absolute;content:'';width:.75em;height:.75em;background:#fff;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);z-index:2;box-shadow:1px 1px 0 0 #bababc}.ui.top.popup{margin:0 0 .75em}.ui.top.left.popup{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom}.ui.top.center.popup{-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}.ui.top.right.popup{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom}.ui.left.center.popup{margin:0 .75em 0 0;-webkit-transform-origin:right 50%;-ms-transform-origin:right 50%;transform-origin:right 50%}.ui.right.center.popup{margin:0 0 0 .75em;-webkit-transform-origin:left 50%;-ms-transform-origin:left 50%;transform-origin:left 50%}.ui.bottom.popup{margin:.75em 0 0}.ui.bottom.left.popup{-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.ui.bottom.center.popup{-webkit-transform-origin:center top;-ms-transform-origin:center top;transform-origin:center top}.ui.bottom.right.popup{-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top;margin-right:0}.ui.bottom.center.popup:before{margin-left:-.325em;top:-.325em;left:50%;right:auto;bottom:auto;box-shadow:-1px -1px 0 0 #bababc}.ui.bottom.left.popup{margin-left:0}.ui.bottom.left.popup:before{top:-.325em;left:1em;right:auto;bottom:auto;margin-left:0;box-shadow:-1px -1px 0 0 #bababc}.ui.bottom.right.popup:before{top:-.325em;right:1em;bottom:auto;left:auto;margin-left:0;box-shadow:-1px -1px 0 0 #bababc}.ui.top.center.popup:before{top:auto;right:auto;bottom:-.325em;left:50%;margin-left:-.325em}.ui.top.left.popup{margin-left:0}.ui.top.left.popup:before{bottom:-.325em;left:1em;top:auto;right:auto;margin-left:0}.ui.top.right.popup{margin-right:0}.ui.top.right.popup:before{bottom:-.325em;right:1em;top:auto;left:auto;margin-left:0}.ui.left.center.popup:before{top:50%;right:-.325em;bottom:auto;left:auto;margin-top:-.325em;box-shadow:1px -1px 0 0 #bababc}.ui.right.center.popup:before{top:50%;left:-.325em;bottom:auto;right:auto;margin-top:-.325em;box-shadow:-1px 1px 0 0 #bababc}.ui.popup>.ui.grid:not(.padded){width:calc(100% + 1.75rem);margin:-.7rem -.875rem}.ui.loading.popup{display:block;visibility:hidden;z-index:-1}.ui.animating.popup,.ui.visible.popup{display:block}.ui.visible.popup{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.ui.basic.popup:before{display:none}.ui.wide.popup{max-width:350px}.ui[class*="very wide"].popup{max-width:550px}.ui.fluid.popup{width:100%;max-width:none}.ui.inverted.popup{background:#1b1c1d;color:#fff;border:none;box-shadow:none}.ui.inverted.popup .header{background-color:none;color:#fff}.ui.inverted.popup:before{background-color:#1b1c1d;box-shadow:none!important}.ui.flowing.popup{max-width:none}.ui.mini.popup{font-size:.71428571rem}.ui.tiny.popup{font-size:.85714286rem}.ui.small.popup{font-size:.92857143rem}.ui.popup{font-size:1rem}.ui.large.popup{font-size:1.14285714rem}.ui.huge.popup{font-size:1.42857143rem} -------------------------------------------------------------------------------- /public/semantic/components/shape.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Shape 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Shape 15 | *******************************/ 16 | 17 | .ui.shape { 18 | position: relative; 19 | vertical-align: top; 20 | display: inline-block; 21 | -webkit-perspective: 2000px; 22 | perspective: 2000px; 23 | -webkit-transition: -webkit-transform 0.6s ease-in-out, left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out; 24 | transition: transform 0.6s ease-in-out, left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out; 25 | } 26 | .ui.shape .sides { 27 | -webkit-transform-style: preserve-3d; 28 | transform-style: preserve-3d; 29 | } 30 | .ui.shape .side { 31 | opacity: 1; 32 | width: 100%; 33 | margin: 0em !important; 34 | -webkit-backface-visibility: hidden; 35 | backface-visibility: hidden; 36 | } 37 | .ui.shape .side { 38 | display: none; 39 | } 40 | .ui.shape .side * { 41 | -webkit-backface-visibility: visible !important; 42 | backface-visibility: visible !important; 43 | } 44 | 45 | 46 | /******************************* 47 | Types 48 | *******************************/ 49 | 50 | .ui.cube.shape .side { 51 | min-width: 15em; 52 | height: 15em; 53 | padding: 2em; 54 | background-color: #e6e6e6; 55 | color: rgba(0, 0, 0, 0.87); 56 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.3); 57 | } 58 | .ui.cube.shape .side > .content { 59 | width: 100%; 60 | height: 100%; 61 | display: table; 62 | text-align: center; 63 | -webkit-user-select: text; 64 | -moz-user-select: text; 65 | -ms-user-select: text; 66 | user-select: text; 67 | } 68 | .ui.cube.shape .side > .content > div { 69 | display: table-cell; 70 | vertical-align: middle; 71 | font-size: 2em; 72 | } 73 | 74 | 75 | /******************************* 76 | Variations 77 | *******************************/ 78 | 79 | .ui.text.shape.animating .sides { 80 | position: static; 81 | } 82 | .ui.text.shape .side { 83 | white-space: nowrap; 84 | } 85 | .ui.text.shape .side > * { 86 | white-space: normal; 87 | } 88 | 89 | 90 | /******************************* 91 | States 92 | *******************************/ 93 | 94 | 95 | /*-------------- 96 | Loading 97 | ---------------*/ 98 | 99 | .ui.loading.shape { 100 | position: absolute; 101 | top: -9999px; 102 | left: -9999px; 103 | } 104 | 105 | /*-------------- 106 | Animating 107 | ---------------*/ 108 | 109 | .ui.shape .animating.side { 110 | position: absolute; 111 | top: 0px; 112 | left: 0px; 113 | display: block; 114 | z-index: 100; 115 | } 116 | .ui.shape .hidden.side { 117 | opacity: 0.6; 118 | } 119 | 120 | /*-------------- 121 | CSS 122 | ---------------*/ 123 | 124 | .ui.shape.animating .sides { 125 | position: absolute; 126 | } 127 | .ui.shape.animating .sides { 128 | -webkit-transition: -webkit-transform 0.6s ease-in-out, left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out; 129 | transition: transform 0.6s ease-in-out, left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out; 130 | } 131 | .ui.shape.animating .side { 132 | -webkit-transition: opacity 0.6s ease-in-out; 133 | transition: opacity 0.6s ease-in-out; 134 | } 135 | 136 | /*-------------- 137 | Active 138 | ---------------*/ 139 | 140 | .ui.shape .active.side { 141 | display: block; 142 | } 143 | 144 | 145 | /******************************* 146 | Theme Overrides 147 | *******************************/ 148 | 149 | 150 | 151 | /******************************* 152 | User Overrides 153 | *******************************/ 154 | 155 | -------------------------------------------------------------------------------- /public/assets/icomoon/selection.json: -------------------------------------------------------------------------------- 1 | { 2 | "IcoMoonType": "selection", 3 | "icons": [ 4 | { 5 | "icon": { 6 | "paths": [ 7 | "M854.567 232.446c-34.412 0-69.756 9.189-101.644 25.894-3.48-15.068-8.268-29.624-14.397-43.589 3.764-5.754 7.835-11.554 12.225-17.388 38.313-50.924 28.044-123.546-22.892-161.859-20.254-15.204-44.249-23.222-69.483-23.222-36.141 0-70.689 17.24-92.41 46.125-3.4 4.526-6.71 9.075-9.951 13.669-12.225-1.979-24.609-2.968-36.971-2.968-9.496 0-18.889 0.546-28.191 1.672-2.934-4.151-5.97-8.29-9.064-12.373-21.675-28.862-56.212-46.125-92.376-46.125-25.28 0-49.332 8.051-69.518 23.267-50.901 38.278-61.159 110.889-22.847 161.836 2.24 3.002 4.424 5.97 6.493 8.95-8.006 16.546-14.192 34.014-18.389 51.925-31.671-16.66-67.050-25.803-101.644-25.803-83.153 0-180.293 56.644-180.293 216.309 0 159.653 97.14 216.297 180.293 216.297 13.794 0 27.737-1.592 41.554-4.412 0.034 1.456-0.068 2.866 0.034 4.31 7.608 95.81 51.436 182.647 120.351 238.484l119.85 104.316c15.364 13.408 34.492 20.094 53.608 20.094 19.105 0 38.176-6.664 53.528-20.004l120.055-104.441c68.926-55.894 112.788-142.686 120.419-238.427 0.102-1.444 0-2.854 0.023-4.287 13.828 2.786 27.782 4.367 41.645 4.367 83.164-0.011 180.282-56.656 180.282-216.309 0-159.664-97.118-216.309-180.293-216.309zM368.979 100.711c6.13-4.606 13.294-6.846 20.402-6.846 10.326 0 20.527 4.697 27.202 13.567 15.466 20.549 27.543 39.893 37.084 57.827 19.947-9.359 42.065-14.579 65.378-14.579 26.383 0 51.174 6.789 73.043 18.559 9.86-19.048 22.483-39.711 39.097-61.807 6.675-8.882 16.876-13.567 27.202-13.567 7.108 0 14.295 2.229 20.424 6.846 15.011 11.292 18.002 32.604 6.71 47.615-18.935 25.189-31.626 47.831-40.212 67.209 13.317 18.070 23.131 39.109 28.339 61.967l-154.604 105.431-154.626-105.419c6.004-26.201 18.059-49.935 34.48-69.654-8.415-17.615-20.129-37.585-36.664-59.533-11.292-15.011-8.268-36.322 6.744-47.615zM183.489 583.457c-63.627 0-98.698-47.842-98.698-134.691 0-86.871 35.072-134.714 98.698-134.714 25.781 0 52.846 8.427 75.363 23.154l163.633 111.56-162.78 110.992c-23.37 15.284-50.412 23.699-76.17 23.699h-0.045zM640.078 840.841l-121.192 105.397-8.893-7.756-112.174-97.618c-52.573-42.065-85.586-109.047-91.409-182.363 4.628-2.65 9.223-5.356 13.715-8.29l198.898-135.612 199.774 136.181c4.128 2.729 8.449 5.243 12.748 7.733-5.845 73.316-38.927 140.241-91.466 182.329zM854.567 583.457c-25.781 0-52.835-8.415-75.329-23.119l-163.622-111.572 162.757-110.98c23.347-15.307 50.412-23.734 76.193-23.734 63.65 0 98.698 47.842 98.698 134.714-0 86.849-35.049 134.691-98.698 134.691z", 8 | "M390.984 604.381c-1.603 10.098-2.763 20.413-2.763 31.080 0 4.344 0.398 8.597 0.671 12.873h260.148c0.25-4.276 0.625-8.529 0.625-12.873 0-10.644-0.876-21.004-2.377-31.080h-256.304z", 9 | "M450.176 776.395l1.456 1.228 6.323 5.493h122.011l7.722-6.732c11.509-9.12 21.448-20.333 29.988-32.854h-197.454c8.552 12.543 18.457 23.768 29.954 32.865z" 10 | ], 11 | "attrs": [], 12 | "isMulticolor": false, 13 | "width": 1040, 14 | "grid": 0, 15 | "tags": [ 16 | "beeminder" 17 | ] 18 | }, 19 | "attrs": [], 20 | "properties": { 21 | "order": 7, 22 | "id": 0, 23 | "prevSize": 32, 24 | "code": 59648, 25 | "name": "beeminder" 26 | }, 27 | "setIdx": 0, 28 | "setId": 5, 29 | "iconIdx": 0 30 | } 31 | ], 32 | "height": 1024, 33 | "metadata": { 34 | "name": "icomoon" 35 | }, 36 | "preferences": { 37 | "showGlyphs": true, 38 | "showQuickUse": true, 39 | "showQuickUse2": true, 40 | "showSVGs": true, 41 | "fontPref": { 42 | "prefix": "icon-", 43 | "metadata": { 44 | "fontFamily": "icomoon" 45 | }, 46 | "metrics": { 47 | "emSize": 1024, 48 | "baseline": 6.25, 49 | "whitespace": 50 50 | }, 51 | "embed": false, 52 | "autoHost": false 53 | }, 54 | "imagePref": { 55 | "prefix": "icon-", 56 | "png": true, 57 | "useClassSelector": true, 58 | "color": 0, 59 | "bgColor": 16777215, 60 | "classSelector": ".icon" 61 | }, 62 | "historySize": 100, 63 | "showCodes": true, 64 | "gridSize": 16, 65 | "quickUsageToken": { 66 | "aaronpareckicom": "OTAwNWY0YTA2YmQxMDI0ZjNlMzRiMTI2M2NiYjgzOGQjMSMxNDU0Nzk3ODc1IyMj" 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /templates/berlin/schedule.php: -------------------------------------------------------------------------------- 1 |

2 | -, 2019
3 | Mozilla Berlin, GSG-Hof Schlesische Straße, Building 3, 3rd floor, Schlesische Straße 27, Berlin, Germany 4 |

5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 |
30 | Saturday, May 4
31 | Learn, Share, Discuss! 32 |
33 |
34 | Day 1 is about discussing in a BarCamp-like environment. Bring a topic you'd like to discuss or join in on topics as they are added to the board. 35 |
36 |
37 |
    38 |
  • 9:00 Organizer setup
  • 39 |
  • 9:30 Doors Open
  • 40 |
  • 10:30 Introduction
  • 41 |
  • 10:45 Keynote
  • 42 |
  • 11:00 Intros and Demos
  • 43 |
  • 11:45 Session Planning
  • 44 |
  • 12:00 Group photo & lunch break
  • 45 |
  • 13:15 Sessions
  • 46 |
  • 18:00 End of sessions for Day 1
  • 47 |
48 |
49 |
50 |
51 |
52 | Sunday, May 5th
53 | Create, Hack, Demo! 54 |
55 |
56 | Day 2 is about implementing what we discussed. Work with others or on your own. We'll have demos at the end of the day to see what everyone worked on! 57 |
58 |
59 |
    60 |
  • 9:00 Organizer setup
  • 61 |
  • 10:00 Day 2 kick-off
  • 62 |
  • 10:30 Hack sessions
  • 63 |
  • 12:45 Lunch
  • 64 |
  • 14:00 Hack sessions continue
  • 65 |
  • 16:35 Demos
  • 66 |
  • 17:45 Clean-up
  • 67 |
  • 18:00 Camp closed
  • 68 |
69 |
70 |
71 |
72 | 73 |
74 | 75 |

Schedule is subject to change. View the full schedule grid on the IndieWeb wiki for the latest updates.

76 | 77 |
78 | -------------------------------------------------------------------------------- /public/webmention.php: -------------------------------------------------------------------------------- 1 | 20 | 21 |
22 |

Send a Webmention

23 |
24 | Source:

25 | Target:

26 | 27 |
28 |
29 | get($xrayBaseURL.'/parse?url='.urlencode($sourceURL).'&target='.urlencode($targetURL)); 60 | $data = json_decode($response['body'], true); 61 | 62 | // XRay tells us if the URL didn't link to the target 63 | if(isset($data['error'])) { 64 | error($data['error_description']); 65 | } 66 | 67 | $source = $data['data']; 68 | 69 | if(!is_array($source)) { 70 | error("There was a problem parsing the source URL"); 71 | } 72 | 73 | // Check the source for in-reply-to and rsvp properties 74 | if(!array_key_exists('in-reply-to', $source)) { 75 | error("Your post doesn't seem to have an in-reply-to property"); 76 | } 77 | 78 | if(!in_array($targetURL, $source['in-reply-to'])) { 79 | error("It looks like your post does not have the event URL in the in-reply-to property"); 80 | } 81 | 82 | if(!array_key_exists('rsvp', $source)) { 83 | error("Your post doesn't have an 'rsvp' property"); 84 | } 85 | 86 | // Store the response data to disk so that it's rendered on the event page 87 | $folder = dirname(__FILE__).'/../data/'.$event.'/'.md5($sourceURL); 88 | 89 | if(strtolower($source['rsvp']) == 'yes') { 90 | 91 | @mkdir($folder); 92 | 93 | if($source['author']['photo']) { 94 | $tmp = tempnam(sys_get_temp_dir(), 'img'); 95 | $img = $http->get($source['author']['photo']); 96 | if($img['body']) { 97 | file_put_contents($tmp, $img['body']); 98 | if(preg_match('/^<\?xml.+$/', trim($img['body']))) { 99 | $ext = 'svg'; 100 | } else { 101 | $type = exif_imagetype($tmp); 102 | $ext = false; 103 | switch($type) { 104 | case IMAGETYPE_GIF: 105 | $ext = 'gif'; break; 106 | case IMAGETYPE_JPEG: 107 | $ext = 'jpg'; break; 108 | case IMAGETYPE_PNG: 109 | $ext = 'png'; break; 110 | case IMAGETYPE_ICO: 111 | $ext = 'ico'; break; 112 | } 113 | } 114 | if($ext) { 115 | copy($tmp, $folder . '/photo.'.$ext); 116 | } 117 | } 118 | } 119 | 120 | $filename = $folder . '/post.json'; 121 | $data = [ 122 | 'received' => date('c'), 123 | 'source' => $sourceURL, 124 | 'data' => $source 125 | ]; 126 | file_put_contents($filename, json_encode($data)); 127 | 128 | echo "Thanks! Your RSVP is listed on the event page now!\n"; 129 | } else { 130 | 131 | if(file_exists($folder . '/post.json')) { 132 | unlink($folder . '/post.json'); 133 | } 134 | 135 | echo "Thanks! Your RSVP was received, but you won't be listed on the event page because your RSVP was not \"yes\"\n"; 136 | } 137 | -------------------------------------------------------------------------------- /templates/austin/schedule.php: -------------------------------------------------------------------------------- 1 |

2 | -, 2019
3 | Capital Factory, 701 Brazos St, Austin, Texas 4 |

5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 |
30 | Saturday, February 23
31 | Learn, Share, Discuss! 32 |
33 |
34 | Day 1 starts with introductions, demos of personal sites, a review of the IndieWeb community and development building blocks, then BarCamp-style brainstorming and discussion sessions. 35 |
36 |
37 |
    38 |
  • 9:00 Doors open, coffee, and breakfast!
  • 39 |
  • 10:00 Welcome
  • 40 |
  • 10:15 Keynote: State of Social Readers
  • 41 |
  • 10:45 Personal site demos
  • 42 |
  • 11:30 Session proposals & scheduling
  • 43 |
  • 12:00 Group photo & lunch
  • 44 |
  • 13:00 Sessions (45min)
  • 45 |
  • 16:45 Day 2 preview
  • 46 |
47 |
48 |
49 |
50 |
51 | Sunday, February 24
52 | Create, Hack, Demo! 53 |
54 |
55 | Day 2 make things on and for your personal site! Collaborate with others or work on your own to improve at least one thing on your personal site, no matter how small or how epic. 56 |
57 |
58 |
    59 |
  • 9:00 Doors open, coffee, and breakfast!
  • 60 |
  • 10:00 Day 2 kickoff, session planning
  • 61 |
  • 10:30 Creating sessions
  • 62 |
  • 12:00 Group photo & lunch
  • 63 |
  • 13:00 Sessions continue
  • 64 |
  • 16:00 Demos
  • 65 |
  • 17:00 Camp closed!
  • 66 |
67 |
68 |
69 |
70 | 71 | 93 | 94 | -------------------------------------------------------------------------------- /lib/HTTP.php: -------------------------------------------------------------------------------- 1 | _set_curlopts($ch, $url); 11 | $response = curl_exec($ch); 12 | $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); 13 | return array( 14 | 'code' => curl_getinfo($ch, CURLINFO_HTTP_CODE), 15 | 'headers' => self::parse_headers(trim(substr($response, 0, $header_size))), 16 | 'body' => substr($response, $header_size), 17 | 'error' => self::error_string_from_code(curl_errno($ch)), 18 | 'error_description' => curl_error($ch), 19 | 'error_code' => curl_errno($ch), 20 | 'url' => curl_getinfo($ch, CURLINFO_EFFECTIVE_URL), 21 | ); 22 | } 23 | 24 | public function post($url, $body, $headers=array()) { 25 | $ch = curl_init($url); 26 | $this->_set_curlopts($ch, $url); 27 | curl_setopt($ch, CURLOPT_POST, true); 28 | curl_setopt($ch, CURLOPT_POSTFIELDS, $body); 29 | curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 30 | $response = curl_exec($ch); 31 | $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); 32 | return array( 33 | 'code' => curl_getinfo($ch, CURLINFO_HTTP_CODE), 34 | 'headers' => self::parse_headers(trim(substr($response, 0, $header_size))), 35 | 'body' => substr($response, $header_size), 36 | 'error' => self::error_string_from_code(curl_errno($ch)), 37 | 'error_description' => curl_error($ch), 38 | 'error_code' => curl_errno($ch), 39 | 'url' => curl_getinfo($ch, CURLINFO_EFFECTIVE_URL), 40 | ); 41 | } 42 | 43 | public function head($url) { 44 | $ch = curl_init($url); 45 | $this->_set_curlopts($ch, $url); 46 | curl_setopt($ch, CURLOPT_NOBODY, true); 47 | $response = curl_exec($ch); 48 | return array( 49 | 'code' => curl_getinfo($ch, CURLINFO_HTTP_CODE), 50 | 'headers' => self::parse_headers(trim($response)), 51 | 'error' => self::error_string_from_code(curl_errno($ch)), 52 | 'error_description' => curl_error($ch), 53 | 'error_code' => curl_errno($ch), 54 | 'url' => curl_getinfo($ch, CURLINFO_EFFECTIVE_URL), 55 | ); 56 | } 57 | 58 | private function _set_curlopts($ch, $url) { 59 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 60 | curl_setopt($ch, CURLOPT_HEADER, true); 61 | curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 62 | curl_setopt($ch, CURLOPT_MAXREDIRS, $this->max_redirects); 63 | curl_setopt($ch, CURLOPT_TIMEOUT_MS, round($this->timeout * 1000)); 64 | } 65 | 66 | public static function error_string_from_code($code) { 67 | switch($code) { 68 | case 0: 69 | return ''; 70 | case CURLE_COULDNT_RESOLVE_HOST: 71 | return 'dns_error'; 72 | case CURLE_COULDNT_CONNECT: 73 | return 'connect_error'; 74 | case CURLE_OPERATION_TIMEDOUT: 75 | return 'timeout'; 76 | case CURLE_SSL_CONNECT_ERROR: 77 | return 'ssl_error'; 78 | case CURLE_SSL_CERTPROBLEM: 79 | return 'ssl_cert_error'; 80 | case CURLE_SSL_CIPHER: 81 | return 'ssl_unsupported_cipher'; 82 | case CURLE_SSL_CACERT: 83 | return 'ssl_cert_error'; 84 | case CURLE_TOO_MANY_REDIRECTS: 85 | return 'too_many_redirects'; 86 | default: 87 | return 'unknown'; 88 | } 89 | } 90 | 91 | public static function parse_headers($headers) { 92 | $retVal = array(); 93 | $fields = explode("\r\n", preg_replace('/\x0D\x0A[\x09\x20]+/', ' ', $headers)); 94 | foreach($fields as $field) { 95 | if(preg_match('/([^:]+): (.+)/m', $field, $match)) { 96 | $match[1] = preg_replace_callback('/(?<=^|[\x09\x20\x2D])./', function($m) { 97 | return strtoupper($m[0]); 98 | }, strtolower(trim($match[1]))); 99 | // If there's already a value set for the header name being returned, turn it into an array and add the new value 100 | $match[1] = preg_replace_callback('/(?<=^|[\x09\x20\x2D])./', function($m) { 101 | return strtoupper($m[0]); 102 | }, strtolower(trim($match[1]))); 103 | if(isset($retVal[$match[1]])) { 104 | if(!is_array($retVal[$match[1]])) 105 | $retVal[$match[1]] = array($retVal[$match[1]]); 106 | $retVal[$match[1]][] = $match[2]; 107 | } else { 108 | $retVal[$match[1]] = trim($match[2]); 109 | } 110 | } 111 | } 112 | return $retVal; 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /templates/baltimore/schedule.php: -------------------------------------------------------------------------------- 1 |

2 | -, 2018
3 | Digital Harbor Foundation Tech Center, 1045 Light St., Baltimore, Maryland 4 |

5 | 6 |
7 |
8 |
9 | Friday, January 19th
10 | Pre-Camp Meetup 11 |
12 |
13 | The Pre-Camp Meetup is an informal social meetup for IndieWebCamp participants to catch up and get to know each other before the camp. 14 |
15 |
16 |
    17 |
  • 19:00 Pre-Camp Meetup!
  • 18 |
19 | Joe Squared
33 W. North Ave.
20 |

Joe Squared is in Baltimore's Station North with great pizza, risotto, drink options, and more. Vegan and GF friendly.

21 |
    22 |
  • 21:00 IndieWeb-themed* Comedy Show
  • 23 |
24 | Baltimore Improv Group
1727 N. Charles St.
25 |

The Baltimore Improv Group (BIG) is a non-profit for improvisational theatre shows and instruction. Co-organizer Marty will be appearing in the evening's 9PM show.

26 |
27 |
28 |
29 |
30 | Saturday, January 20
31 | Learn, Share, Discuss! 32 |
33 |
34 | Day 1 starts with introductions, demos of personal sites, a review of the IndieWeb community and development building blocks, then BarCamp-style brainstorming and discussion sessions. 35 |
36 |
37 | 47 |
48 |
49 |
50 |
51 | Sunday, January 21
52 | Create, Hack, Demo! 53 |
54 |
55 | Day 2 make things on and for your personal site! Collaborate with others or work on your own to improve at least one thing on your personal site, no matter how small or how epic. 56 |
57 |
58 |
    59 |
  • 9:00 Doors open, badges, coffee, and breakfast!
  • 60 |
  • 9:30 Day 2 kickoff & project intros
  • 61 |
  • 10:00 Start creating!
  • 62 |
  • 12:00 Group photo & lunch
  • 63 |
  • 13:00 Creating sessions continue
  • 64 |
  • 16:00 Demos
  • 65 |
  • 17:15 Camp closed!
  • 66 |
67 |
68 |
69 |
70 | 71 |
72 | 73 | 95 | 96 | -------------------------------------------------------------------------------- /templates/online/schedule.php: -------------------------------------------------------------------------------- 1 |

2 | -, 2019
3 | Online 4 |

5 | 6 |
7 |
8 |
9 | Pre-Camp Help 10 |
11 |
12 | For those wanting some general help getting prepared and set up for IndieWebCamp Online, you can join us in the chat. 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 |
28 |
29 | Day One: Friday, March 8 - Saturday, March 9
30 | Learn, Share, Discuss! 31 |
32 |
33 | Day 1 starts with introductions, demos of personal sites, a review of the IndieWeb community and development building blocks, then BarCamp-style brainstorming and discussion sessions. 34 |
35 |
36 | 42 |
43 |
44 |
45 |
46 | Day Two: Saturday, March 9 - Sunday, March 10
47 | Create, Hack, Demo! 48 |
49 |
50 | Day 2 make things on and for your personal site! Collaborate with others or work on your own to improve at least one thing on your personal site, no matter how small or how epic. 51 |
52 |
53 |
    54 |
  • 20:00 UTC March 9 Sessions Conclusion & Project Kickoff
  • 55 |
  • 21:00 UTC March 9 to 20:00 UTC March 10 Projects Time.
    Collaboration Rooms will be available throughout the Projects Time
  • 56 |
  • 20:00 UTC March 10 Projects Conclusion & Demos
  • 57 |
58 |
59 |
60 |
61 | 62 |
63 | 64 | 86 | 87 | -------------------------------------------------------------------------------- /get-tito-registrations.php: -------------------------------------------------------------------------------- 1 | token 16 | ]); 17 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 18 | $response = curl_exec($ch); 19 | return json_decode($response, true); 20 | } 21 | 22 | function normalize_url($url) { 23 | if($url == '') return $url; 24 | if(!preg_match('/^https?:\/\//', $url)) 25 | return 'http://'.$url; 26 | return $url; 27 | } 28 | 29 | $registrations = get_tito($config->registrations); 30 | 31 | if(!file_exists(dirname(__FILE__).'/data/'.$event)) { 32 | mkdir(dirname(__FILE__).'/data/'.$event, 0755); 33 | } 34 | 35 | file_put_contents(dirname(__FILE__).'/data/'.$event.'/tito.json', json_encode($registrations, JSON_PRETTY_PRINT+JSON_UNESCAPED_SLASHES)); 36 | 37 | 38 | $ticketData = []; 39 | 40 | foreach($registrations['data'] as $reg) { 41 | $timestamp = $reg['attributes']['completed-at']; 42 | $email = $reg['attributes']['email']; 43 | 44 | echo "======\n"; 45 | $hash = md5(strtolower(trim($email))); 46 | echo $email . "\n"; 47 | echo $hash . "\n"; 48 | 49 | $dir = __DIR__.'/data/'.$event.'/'.$hash; 50 | @mkdir($dir, 0755); 51 | 52 | 53 | $website = false; 54 | $show = false; 55 | $attendance = []; 56 | $ticket_type = []; 57 | 58 | if(isset($reg['relationships']['tickets']['links']['related'])) { 59 | $ticket = get_tito($reg['relationships']['tickets']['links']['related']); 60 | if($ticket && isset($ticket['data'][0])) { 61 | 62 | 63 | $ticket = $ticket['data'][0]; 64 | $name = $ticket['attributes']['name']; 65 | if(isset($ticket['attributes']['answers']) && is_array($ticket['attributes']['answers'])) { 66 | foreach($ticket['attributes']['answers'] as $question=>$answer) { 67 | if($question == 'your-personal-website') 68 | $website = normalize_url($answer); 69 | if($question == 'would-you-like-to-be-shown-on-the-public') 70 | $show = ($answer == 'Yes, show me on the guest list' ? 'yes' : 'no'); 71 | if($question == 'would-you-like-to-be-seen-on-the-public') // for nyc 72 | $show = ($answer == 'Yes, show me on the guest list' ? 'yes' : 'no'); 73 | if($question == 'event-attendance') 74 | $attendance = $answer; 75 | } 76 | } 77 | 78 | echo $name . "\n"; 79 | echo $timestamp . "\n"; 80 | echo $website . "\n"; 81 | echo $show . "\n"; 82 | 83 | file_put_contents($dir.'/ticket.json', json_encode($ticket, JSON_PRETTY_PRINT+JSON_UNESCAPED_SLASHES)); 84 | 85 | $fn = $dir.'/photo.jpg'; 86 | if(!file_exists($fn)) { 87 | // Try to download the profile photo from Gravatar 88 | $ch = curl_init('https://www.gravatar.com/avatar/'.$hash.'.jpg?d=404'); 89 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 90 | curl_setopt($ch, CURLOPT_FAILONERROR, true); 91 | $imgdata = curl_exec($ch); 92 | 93 | if($imgdata) { 94 | echo "found gravatar\n"; 95 | @mkdir($dir, 0755); 96 | file_put_contents($fn, $imgdata); 97 | } else { 98 | echo "no gravatar\n"; 99 | } 100 | } 101 | 102 | // Fetch "Releases" to find out what type of ticket they registered for 103 | if(isset($ticket['relationships']['release']['links']['related'])) { 104 | $release = get_tito($ticket['relationships']['release']['links']['related']); 105 | file_put_contents($dir.'/release.json', json_encode($release, JSON_PRETTY_PRINT+JSON_UNESCAPED_SLASHES)); 106 | 107 | if(isset($release['data']['attributes']['title'])) { 108 | $ticket_type[] = $release['data']['attributes']['title']; 109 | } 110 | } 111 | 112 | } 113 | 114 | $thisTicket = [ 115 | 'name' => $name, 116 | 'website' => $website, 117 | 'email' => $email, 118 | 'timestamp' => $timestamp, 119 | 'show' => $show, 120 | 'attendance' => $attendance, 121 | 'ticket_type' => $ticket_type, 122 | ]; 123 | 124 | $ticketData[] = $thisTicket; 125 | 126 | file_put_contents($dir.'/summary.json', json_encode($thisTicket, JSON_PRETTY_PRINT+JSON_UNESCAPED_SLASHES)); 127 | 128 | } 129 | 130 | } 131 | 132 | file_put_contents(dirname(__FILE__).'/data/'.$event.'/tickets.json', json_encode($ticketData, JSON_PRETTY_PRINT)); 133 | 134 | -------------------------------------------------------------------------------- /templates/newhaven/schedule.php: -------------------------------------------------------------------------------- 1 |

2 | -, 2019
3 | Davis Hall, Southern Coneccticut State University, 501 Crescent Street, New Haven, CT 4 | Schedule 5 |

6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 63 | 64 | 65 | 66 | 67 | 68 | 75 | 76 | 98 | 99 | -------------------------------------------------------------------------------- /public/semantic/components/dimmer.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Dimmer 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Dimmer 15 | *******************************/ 16 | 17 | .dimmable { 18 | position: relative; 19 | } 20 | .ui.dimmer { 21 | display: none; 22 | position: absolute; 23 | top: 0em !important; 24 | left: 0em !important; 25 | width: 100%; 26 | height: 100%; 27 | text-align: center; 28 | vertical-align: middle; 29 | background-color: rgba(0, 0, 0, 0.85); 30 | opacity: 0; 31 | line-height: 1; 32 | -webkit-animation-fill-mode: both; 33 | animation-fill-mode: both; 34 | -webkit-animation-duration: 0.5s; 35 | animation-duration: 0.5s; 36 | -webkit-transition: background-color 0.5s linear; 37 | transition: background-color 0.5s linear; 38 | -webkit-user-select: none; 39 | -moz-user-select: none; 40 | -ms-user-select: none; 41 | user-select: none; 42 | will-change: opacity; 43 | z-index: 1000; 44 | } 45 | 46 | /* Dimmer Content */ 47 | .ui.dimmer > .content { 48 | width: 100%; 49 | height: 100%; 50 | display: table; 51 | -webkit-user-select: text; 52 | -moz-user-select: text; 53 | -ms-user-select: text; 54 | user-select: text; 55 | } 56 | .ui.dimmer > .content > * { 57 | display: table-cell; 58 | vertical-align: middle; 59 | color: #ffffff; 60 | } 61 | 62 | /* Loose Coupling */ 63 | .ui.segment > .ui.dimmer { 64 | border-radius: inherit !important; 65 | } 66 | 67 | 68 | /******************************* 69 | States 70 | *******************************/ 71 | 72 | .animating.dimmable:not(body), 73 | .dimmed.dimmable:not(body) { 74 | overflow: hidden; 75 | } 76 | .dimmed.dimmable > .ui.animating.dimmer, 77 | .dimmed.dimmable > .ui.visible.dimmer, 78 | .ui.active.dimmer { 79 | display: block; 80 | opacity: 1; 81 | } 82 | .ui.disabled.dimmer { 83 | width: 0 !important; 84 | height: 0 !important; 85 | } 86 | 87 | 88 | /******************************* 89 | Variations 90 | *******************************/ 91 | 92 | 93 | /*-------------- 94 | Page 95 | ---------------*/ 96 | 97 | .ui.page.dimmer { 98 | position: fixed; 99 | -webkit-transform-style: ''; 100 | transform-style: ''; 101 | -webkit-perspective: 2000px; 102 | perspective: 2000px; 103 | -webkit-transform-origin: center center; 104 | -ms-transform-origin: center center; 105 | transform-origin: center center; 106 | } 107 | body.animating.in.dimmable, 108 | body.dimmed.dimmable { 109 | overflow: hidden; 110 | } 111 | body.dimmable > .dimmer { 112 | position: fixed; 113 | } 114 | 115 | /*-------------- 116 | Blurring 117 | ---------------*/ 118 | 119 | .blurring.dimmable > :not(.dimmer) { 120 | -webkit-filter: blur(0px) grayscale(0); 121 | filter: blur(0px) grayscale(0); 122 | -webkit-transition: 800ms -webkit-filter ease, 800ms filter ease; 123 | transition: 800ms filter ease; 124 | } 125 | .blurring.dimmed.dimmable > :not(.dimmer) { 126 | -webkit-filter: blur(5px) grayscale(0.7); 127 | filter: blur(5px) grayscale(0.7); 128 | } 129 | 130 | /* Dimmer Color */ 131 | .blurring.dimmable > .dimmer { 132 | background-color: rgba(0, 0, 0, 0.6); 133 | } 134 | .blurring.dimmable > .inverted.dimmer { 135 | background-color: rgba(255, 255, 255, 0.6); 136 | } 137 | 138 | /*-------------- 139 | Aligned 140 | ---------------*/ 141 | 142 | .ui.dimmer > .top.aligned.content > * { 143 | vertical-align: top; 144 | } 145 | .ui.dimmer > .bottom.aligned.content > * { 146 | vertical-align: bottom; 147 | } 148 | 149 | /*-------------- 150 | Inverted 151 | ---------------*/ 152 | 153 | .ui.inverted.dimmer { 154 | background-color: rgba(255, 255, 255, 0.85); 155 | } 156 | .ui.inverted.dimmer > .content > * { 157 | color: #ffffff; 158 | } 159 | 160 | /*-------------- 161 | Simple 162 | ---------------*/ 163 | 164 | 165 | /* Displays without javascript */ 166 | .ui.simple.dimmer { 167 | display: block; 168 | overflow: hidden; 169 | opacity: 1; 170 | width: 0%; 171 | height: 0%; 172 | z-index: -100; 173 | background-color: rgba(0, 0, 0, 0); 174 | } 175 | .dimmed.dimmable > .ui.simple.dimmer { 176 | overflow: visible; 177 | opacity: 1; 178 | width: 100%; 179 | height: 100%; 180 | background-color: rgba(0, 0, 0, 0.85); 181 | z-index: 1; 182 | } 183 | .ui.simple.inverted.dimmer { 184 | background-color: rgba(255, 255, 255, 0); 185 | } 186 | .dimmed.dimmable > .ui.simple.inverted.dimmer { 187 | background-color: rgba(255, 255, 255, 0.85); 188 | } 189 | 190 | 191 | /******************************* 192 | Theme Overrides 193 | *******************************/ 194 | 195 | 196 | 197 | /******************************* 198 | User Overrides 199 | *******************************/ 200 | 201 | -------------------------------------------------------------------------------- /public/semantic/components/rating.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Rating 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | !function(e,n,t,i){"use strict";e.fn.rating=function(n){var t,a=e(this),o=a.selector||"",r=(new Date).getTime(),s=[],l=arguments[0],c="string"==typeof l,u=[].slice.call(arguments,1);return a.each(function(){var g,m=e.isPlainObject(n)?e.extend(!0,{},e.fn.rating.settings,n):e.extend({},e.fn.rating.settings),d=m.namespace,f=m.className,v=m.metadata,p=m.selector,b=(m.error,"."+d),h="module-"+d,y=this,x=e(this).data(h),R=e(this),C=R.find(p.icon);g={initialize:function(){g.verbose("Initializing rating module",m),0===C.length&&g.setup.layout(),m.interactive?g.enable():g.disable(),g.set.rating(g.get.initialRating()),g.instantiate()},instantiate:function(){g.verbose("Instantiating module",m),x=g,R.data(h,g)},destroy:function(){g.verbose("Destroying previous instance",x),g.remove.events(),R.removeData(h)},refresh:function(){C=R.find(p.icon)},setup:{layout:function(){var n=g.get.maxRating(),t=e.fn.rating.settings.templates.icon(n);g.debug("Generating icon html dynamically"),R.html(t),g.refresh()}},event:{mouseenter:function(){var n=e(this);n.nextAll().removeClass(f.selected),R.addClass(f.selected),n.addClass(f.selected).prevAll().addClass(f.selected)},mouseleave:function(){R.removeClass(f.selected),C.removeClass(f.selected)},click:function(){var n=e(this),t=g.get.rating(),i=C.index(n)+1,a="auto"==m.clearable?1===C.length:m.clearable;a&&t==i?g.clearRating():g.set.rating(i)}},clearRating:function(){g.debug("Clearing current rating"),g.set.rating(0)},bind:{events:function(){g.verbose("Binding events"),R.on("mouseenter"+b,p.icon,g.event.mouseenter).on("mouseleave"+b,p.icon,g.event.mouseleave).on("click"+b,p.icon,g.event.click)}},remove:{events:function(){g.verbose("Removing events"),R.off(b)}},enable:function(){g.debug("Setting rating to interactive mode"),g.bind.events(),R.removeClass(f.disabled)},disable:function(){g.debug("Setting rating to read-only mode"),g.remove.events(),R.addClass(f.disabled)},get:{initialRating:function(){return R.data(v.rating)!==i?(R.removeData(v.rating),R.data(v.rating)):m.initialRating},maxRating:function(){return R.data(v.maxRating)!==i?(R.removeData(v.maxRating),R.data(v.maxRating)):m.maxRating},rating:function(){var e=C.filter("."+f.active).length;return g.verbose("Current rating retrieved",e),e}},set:{rating:function(e){var n=e-1>=0?e-1:0,t=C.eq(n);R.removeClass(f.selected),C.removeClass(f.selected).removeClass(f.active),e>0&&(g.verbose("Setting current rating to",e),t.prevAll().andSelf().addClass(f.active)),m.onRate.call(y,e)}},setting:function(n,t){if(g.debug("Changing setting",n,t),e.isPlainObject(n))e.extend(!0,m,n);else{if(t===i)return m[n];m[n]=t}},internal:function(n,t){if(e.isPlainObject(n))e.extend(!0,g,n);else{if(t===i)return g[n];g[n]=t}},debug:function(){m.debug&&(m.performance?g.performance.log(arguments):(g.debug=Function.prototype.bind.call(console.info,console,m.name+":"),g.debug.apply(console,arguments)))},verbose:function(){m.verbose&&m.debug&&(m.performance?g.performance.log(arguments):(g.verbose=Function.prototype.bind.call(console.info,console,m.name+":"),g.verbose.apply(console,arguments)))},error:function(){g.error=Function.prototype.bind.call(console.error,console,m.name+":"),g.error.apply(console,arguments)},performance:{log:function(e){var n,t,i;m.performance&&(n=(new Date).getTime(),i=r||n,t=n-i,r=n,s.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:y,"Execution Time":t})),clearTimeout(g.performance.timer),g.performance.timer=setTimeout(g.performance.display,500)},display:function(){var n=m.name+":",t=0;r=!1,clearTimeout(g.performance.timer),e.each(s,function(e,n){t+=n["Execution Time"]}),n+=" "+t+"ms",o&&(n+=" '"+o+"'"),a.length>1&&(n+=" ("+a.length+")"),(console.group!==i||console.table!==i)&&s.length>0&&(console.groupCollapsed(n),console.table?console.table(s):e.each(s,function(e,n){console.log(n.Name+": "+n["Execution Time"]+"ms")}),console.groupEnd()),s=[]}},invoke:function(n,a,o){var r,s,l,c=x;return a=a||u,o=y||o,"string"==typeof n&&c!==i&&(n=n.split(/[\. ]/),r=n.length-1,e.each(n,function(t,a){var o=t!=r?a+n[t+1].charAt(0).toUpperCase()+n[t+1].slice(1):n;if(e.isPlainObject(c[o])&&t!=r)c=c[o];else{if(c[o]!==i)return s=c[o],!1;if(!e.isPlainObject(c[a])||t==r)return c[a]!==i?(s=c[a],!1):!1;c=c[a]}})),e.isFunction(s)?l=s.apply(o,a):s!==i&&(l=s),e.isArray(t)?t.push(l):t!==i?t=[t,l]:l!==i&&(t=l),s}},c?(x===i&&g.initialize(),g.invoke(l)):(x!==i&&x.invoke("destroy"),g.initialize())}),t!==i?t:this},e.fn.rating.settings={name:"Rating",namespace:"rating",debug:!1,verbose:!1,performance:!0,initialRating:0,interactive:!0,maxRating:4,clearable:"auto",onRate:function(e){},error:{method:"The method you called is not defined",noMaximum:"No maximum rating specified. Cannot generate HTML automatically"},metadata:{rating:"rating",maxRating:"maxRating"},className:{active:"active",disabled:"disabled",selected:"selected",loading:"loading"},selector:{icon:".icon"},templates:{icon:function(e){for(var n=1,t="";e>=n;)t+='',n++;return t}}}}(jQuery,window,document); -------------------------------------------------------------------------------- /public/semantic/components/nag.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Nag 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | !function(e,o,n,t){"use strict";e.fn.nag=function(n){var i,a=e(this),r=a.selector||"",s=(new Date).getTime(),c=[],l=arguments[0],u="string"==typeof l,g=[].slice.call(arguments,1);return a.each(function(){{var a,d=e.isPlainObject(n)?e.extend(!0,{},e.fn.nag.settings,n):e.extend({},e.fn.nag.settings),m=(d.className,d.selector),f=d.error,p=d.namespace,h="."+p,b=p+"-module",v=e(this),y=(v.find(m.close),e(d.context?d.context:"body")),k=this,w=v.data(b);o.requestAnimationFrame||o.mozRequestAnimationFrame||o.webkitRequestAnimationFrame||o.msRequestAnimationFrame||function(e){setTimeout(e,0)}}a={initialize:function(){a.verbose("Initializing element"),v.on("click"+h,m.close,a.dismiss).data(b,a),d.detachable&&v.parent()[0]!==y[0]&&v.detach().prependTo(y),d.displayTime>0&&setTimeout(a.hide,d.displayTime),a.show()},destroy:function(){a.verbose("Destroying instance"),v.removeData(b).off(h)},show:function(){a.should.show()&&!v.is(":visible")&&(a.debug("Showing nag",d.animation.show),"fade"==d.animation.show?v.fadeIn(d.duration,d.easing):v.slideDown(d.duration,d.easing))},hide:function(){a.debug("Showing nag",d.animation.hide),"fade"==d.animation.show?v.fadeIn(d.duration,d.easing):v.slideUp(d.duration,d.easing)},onHide:function(){a.debug("Removing nag",d.animation.hide),v.remove(),d.onHide&&d.onHide()},dismiss:function(e){d.storageMethod&&a.storage.set(d.key,d.value),a.hide(),e.stopImmediatePropagation(),e.preventDefault()},should:{show:function(){return d.persist?(a.debug("Persistent nag is set, can show nag"),!0):a.storage.get(d.key)!=d.value.toString()?(a.debug("Stored value is not set, can show nag",a.storage.get(d.key)),!0):(a.debug("Stored value is set, cannot show nag",a.storage.get(d.key)),!1)}},get:{storageOptions:function(){var e={};return d.expires&&(e.expires=d.expires),d.domain&&(e.domain=d.domain),d.path&&(e.path=d.path),e}},clear:function(){a.storage.remove(d.key)},storage:{set:function(n,i){var r=a.get.storageOptions();if("localstorage"==d.storageMethod&&o.localStorage!==t)o.localStorage.setItem(n,i),a.debug("Value stored using local storage",n,i);else{if(e.cookie===t)return void a.error(f.noCookieStorage);e.cookie(n,i,r),a.debug("Value stored using cookie",n,i,r)}},get:function(n,i){var r;return"localstorage"==d.storageMethod&&o.localStorage!==t?r=o.localStorage.getItem(n):e.cookie!==t?r=e.cookie(n):a.error(f.noCookieStorage),("undefined"==r||"null"==r||r===t||null===r)&&(r=t),r},remove:function(n){var i=a.get.storageOptions();"local"==d.storageMethod&&o.store!==t?o.localStorage.removeItem(n):e.cookie!==t?e.removeCookie(n,i):a.error(f.noStorage)}},setting:function(o,n){if(a.debug("Changing setting",o,n),e.isPlainObject(o))e.extend(!0,d,o);else{if(n===t)return d[o];d[o]=n}},internal:function(o,n){if(e.isPlainObject(o))e.extend(!0,a,o);else{if(n===t)return a[o];a[o]=n}},debug:function(){d.debug&&(d.performance?a.performance.log(arguments):(a.debug=Function.prototype.bind.call(console.info,console,d.name+":"),a.debug.apply(console,arguments)))},verbose:function(){d.verbose&&d.debug&&(d.performance?a.performance.log(arguments):(a.verbose=Function.prototype.bind.call(console.info,console,d.name+":"),a.verbose.apply(console,arguments)))},error:function(){a.error=Function.prototype.bind.call(console.error,console,d.name+":"),a.error.apply(console,arguments)},performance:{log:function(e){var o,n,t;d.performance&&(o=(new Date).getTime(),t=s||o,n=o-t,s=o,c.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:k,"Execution Time":n})),clearTimeout(a.performance.timer),a.performance.timer=setTimeout(a.performance.display,500)},display:function(){var o=d.name+":",n=0;s=!1,clearTimeout(a.performance.timer),e.each(c,function(e,o){n+=o["Execution Time"]}),o+=" "+n+"ms",r&&(o+=" '"+r+"'"),(console.group!==t||console.table!==t)&&c.length>0&&(console.groupCollapsed(o),console.table?console.table(c):e.each(c,function(e,o){console.log(o.Name+": "+o["Execution Time"]+"ms")}),console.groupEnd()),c=[]}},invoke:function(o,n,r){var s,c,l,u=w;return n=n||g,r=k||r,"string"==typeof o&&u!==t&&(o=o.split(/[\. ]/),s=o.length-1,e.each(o,function(n,i){var r=n!=s?i+o[n+1].charAt(0).toUpperCase()+o[n+1].slice(1):o;if(e.isPlainObject(u[r])&&n!=s)u=u[r];else{if(u[r]!==t)return c=u[r],!1;if(!e.isPlainObject(u[i])||n==s)return u[i]!==t?(c=u[i],!1):(a.error(f.method,o),!1);u=u[i]}})),e.isFunction(c)?l=c.apply(r,n):c!==t&&(l=c),e.isArray(i)?i.push(l):i!==t?i=[i,l]:l!==t&&(i=l),c}},u?(w===t&&a.initialize(),a.invoke(l)):(w!==t&&w.invoke("destroy"),a.initialize())}),i!==t?i:this},e.fn.nag.settings={name:"Nag",debug:!1,verbose:!1,performance:!0,namespace:"Nag",persist:!1,displayTime:0,animation:{show:"slide",hide:"slide"},context:!1,detachable:!1,expires:30,domain:!1,path:"/",storageMethod:"cookie",key:"nag",value:"dismiss",error:{noCookieStorage:"$.cookie is not included. A storage solution is required.",noStorage:"Neither $.cookie or store is defined. A storage solution is required for storing state",method:"The method you called is not defined."},className:{bottom:"bottom",fixed:"fixed"},selector:{close:".close.icon"},speed:500,easing:"easeOutQuad",onHide:function(){}}}(jQuery,window,document); -------------------------------------------------------------------------------- /public/semantic/components/search.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Search 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.search{position:relative}.ui.search>.prompt{margin:0;outline:0;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(255,255,255,0);text-shadow:none;font-style:normal;font-weight:400;line-height:1.2142em;padding:.67861429em 1em;font-size:1em;background:#fff;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);box-shadow:0 0 0 0 transparent inset;-webkit-transition:background-color .1s ease,color .1s ease,box-shadow .1s ease,border-color .1s ease;transition:background-color .1s ease,color .1s ease,box-shadow .1s ease,border-color .1s ease}.ui.search .prompt{border-radius:500rem}.ui.search .prompt~.search.icon{cursor:pointer}.ui.search>.results{display:none;position:absolute;top:100%;left:0;-webkit-transform-origin:center top;-ms-transform-origin:center top;transform-origin:center top;background:#fff;margin-top:.5em;width:18em;border-radius:.28571429rem;box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.08);border:1px solid #d4d4d5;z-index:998}.ui.search>.results>:first-child{border-radius:.28571429rem .28571429rem 0 0}.ui.search>.results>:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.search>.results .result{cursor:pointer;display:block;overflow:hidden;font-size:1em;padding:.85714286em 1.14285714em;color:rgba(0,0,0,.87);line-height:1.33;border-bottom:1px solid rgba(34,36,38,.1)}.ui.search>.results .result:last-child{border-bottom:none!important}.ui.search>.results .result .image{float:right;overflow:hidden;background:0 0;width:5em;height:3em;border-radius:.25em}.ui.search>.results .result .image img{display:block;width:auto;height:100%}.ui.search>.results .result .image+.content{margin:0 6em 0 0}.ui.search>.results .result .title{margin:-.14285em 0 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;font-size:1em;color:rgba(0,0,0,.85)}.ui.search>.results .result .description{margin-top:0;font-size:.92857143em;color:rgba(0,0,0,.4)}.ui.search>.results .result .price{float:right;color:#21ba45}.ui.search>.results>.message{padding:1em}.ui.search>.results>.message .header{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1rem;font-weight:700;color:rgba(0,0,0,.87)}.ui.search>.results>.message .description{margin-top:.25rem;font-size:1em;color:rgba(0,0,0,.87)}.ui.search>.results>.action{display:block;border-top:none;background:#f3f4f5;padding:.92857143em 1em;color:rgba(0,0,0,.87);font-weight:700;text-align:center}.ui.search>.prompt:focus{border-color:rgba(34,36,38,.35);background:#fff;color:rgba(0,0,0,.95)}.ui.loading.search .input>i.icon:before{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loading.search .input>i.icon:after{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}.ui.category.search>.results .category .result:hover,.ui.search>.results .result:hover{background:#f9fafb}.ui.search .action:hover{background:#e0e0e0}.ui.category.search>.results .category.active{background:#f3f4f5}.ui.category.search>.results .category.active>.name{color:rgba(0,0,0,.87)}.ui.category.search>.results .category .result.active,.ui.search>.results .result.active{position:relative;border-left-color:rgba(34,36,38,.1);background:#f3f4f5;box-shadow:none}.ui.search>.results .result.active .description,.ui.search>.results .result.active .title{color:rgba(0,0,0,.85)}.ui.category.search .results{width:28em}.ui.category.search>.results .category{background:#f3f4f5;box-shadow:none;border-bottom:1px solid rgba(34,36,38,.1);-webkit-transition:background .1s ease,border-color .1s ease;transition:background .1s ease,border-color .1s ease}.ui.category.search>.results .category:last-child{border-bottom:none}.ui.category.search>.results .category:first-child .name+.result{border-radius:0 .28571429rem 0 0}.ui.category.search>.results .category .result{background:#fff;margin-left:100px;border-left:1px solid rgba(34,36,38,.15);border-bottom:1px solid rgba(34,36,38,.1);-webkit-transition:background .1s ease,border-color .1s ease;transition:background .1s ease,border-color .1s ease;padding:.85714286em 1.14285714em}.ui.category.search>.results .category:last-child .result:last-child{border-radius:0 0 .28571429rem;border-bottom:none}.ui.category.search>.results .category>.name{width:100px;background:0 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1em;float:1em;float:left;padding:.4em 1em;font-weight:700;color:rgba(0,0,0,.4)}.ui[class*="left aligned"].search>.results{right:auto;left:0}.ui[class*="right aligned"].search>.results{right:0;left:auto}.ui.fluid.search .results{width:100%}.ui.mini.search{font-size:.71428571em}.ui.small.search{font-size:.92857143em}.ui.search{font-size:1em}.ui.large.search{font-size:1.14285714em}.ui.big.search{font-size:1.28571429em}.ui.huge.search{font-size:1.42857143em}.ui.massive.search{font-size:1.71428571em} -------------------------------------------------------------------------------- /public/semantic/components/ad.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Ad 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2013 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Advertisement 15 | *******************************/ 16 | 17 | .ui.ad { 18 | display: block; 19 | overflow: hidden; 20 | margin: 1em 0em; 21 | } 22 | .ui.ad:first-child { 23 | margin: 0em; 24 | } 25 | .ui.ad:last-child { 26 | margin: 0em; 27 | } 28 | .ui.ad iframe { 29 | margin: 0em; 30 | padding: 0em; 31 | border: none; 32 | overflow: hidden; 33 | } 34 | 35 | /*-------------- 36 | Common 37 | ---------------*/ 38 | 39 | 40 | /* Leaderboard */ 41 | .ui.leaderboard.ad { 42 | width: 728px; 43 | height: 90px; 44 | } 45 | 46 | /* Medium Rectangle */ 47 | .ui[class*="medium rectangle"].ad { 48 | width: 300px; 49 | height: 250px; 50 | } 51 | 52 | /* Large Rectangle */ 53 | .ui[class*="large rectangle"].ad { 54 | width: 336px; 55 | height: 280px; 56 | } 57 | 58 | /* Half Page */ 59 | .ui[class*="half page"].ad { 60 | width: 300px; 61 | height: 600px; 62 | } 63 | 64 | /*-------------- 65 | Square 66 | ---------------*/ 67 | 68 | 69 | /* Square */ 70 | .ui.square.ad { 71 | width: 250px; 72 | height: 250px; 73 | } 74 | 75 | /* Small Square */ 76 | .ui[class*="small square"].ad { 77 | width: 200px; 78 | height: 200px; 79 | } 80 | 81 | /*-------------- 82 | Rectangle 83 | ---------------*/ 84 | 85 | 86 | /* Small Rectangle */ 87 | .ui[class*="small rectangle"].ad { 88 | width: 180px; 89 | height: 150px; 90 | } 91 | 92 | /* Vertical Rectangle */ 93 | .ui[class*="vertical rectangle"].ad { 94 | width: 240px; 95 | height: 400px; 96 | } 97 | 98 | /*-------------- 99 | Button 100 | ---------------*/ 101 | 102 | .ui.button.ad { 103 | width: 120px; 104 | height: 90px; 105 | } 106 | .ui[class*="square button"].ad { 107 | width: 125px; 108 | height: 125px; 109 | } 110 | .ui[class*="small button"].ad { 111 | width: 120px; 112 | height: 60px; 113 | } 114 | 115 | /*-------------- 116 | Skyscrapers 117 | ---------------*/ 118 | 119 | 120 | /* Skyscraper */ 121 | .ui.skyscraper.ad { 122 | width: 120px; 123 | height: 600px; 124 | } 125 | 126 | /* Wide Skyscraper */ 127 | .ui[class*="wide skyscraper"].ad { 128 | width: 160px; 129 | } 130 | 131 | /*-------------- 132 | Banners 133 | ---------------*/ 134 | 135 | 136 | /* Banner */ 137 | .ui.banner.ad { 138 | width: 468px; 139 | height: 60px; 140 | } 141 | 142 | /* Vertical Banner */ 143 | .ui[class*="vertical banner"].ad { 144 | width: 120px; 145 | height: 240px; 146 | } 147 | 148 | /* Top Banner */ 149 | .ui[class*="top banner"].ad { 150 | width: 930px; 151 | height: 180px; 152 | } 153 | 154 | /* Half Banner */ 155 | .ui[class*="half banner"].ad { 156 | width: 234px; 157 | height: 60px; 158 | } 159 | 160 | /*-------------- 161 | Boards 162 | ---------------*/ 163 | 164 | 165 | /* Leaderboard */ 166 | .ui[class*="large leaderboard"].ad { 167 | width: 970px; 168 | height: 90px; 169 | } 170 | 171 | /* Billboard */ 172 | .ui.billboard.ad { 173 | width: 970px; 174 | height: 250px; 175 | } 176 | 177 | /*-------------- 178 | Panorama 179 | ---------------*/ 180 | 181 | 182 | /* Panorama */ 183 | .ui.panorama.ad { 184 | width: 980px; 185 | height: 120px; 186 | } 187 | 188 | /*-------------- 189 | Netboard 190 | ---------------*/ 191 | 192 | 193 | /* Netboard */ 194 | .ui.netboard.ad { 195 | width: 580px; 196 | height: 400px; 197 | } 198 | 199 | /*-------------- 200 | Mobile 201 | ---------------*/ 202 | 203 | 204 | /* Large Mobile Banner */ 205 | .ui[class*="large mobile banner"].ad { 206 | width: 320px; 207 | height: 100px; 208 | } 209 | 210 | /* Mobile Leaderboard */ 211 | .ui[class*="mobile leaderboard"].ad { 212 | width: 320px; 213 | height: 50px; 214 | } 215 | 216 | 217 | /******************************* 218 | Types 219 | *******************************/ 220 | 221 | 222 | /* Mobile Sizes */ 223 | .ui.mobile.ad { 224 | display: none; 225 | } 226 | @media only screen and (max-width: 767px) { 227 | .ui.mobile.ad { 228 | display: block; 229 | } 230 | } 231 | 232 | 233 | /******************************* 234 | Variations 235 | *******************************/ 236 | 237 | .ui.centered.ad { 238 | margin-left: auto; 239 | margin-right: auto; 240 | } 241 | .ui.test.ad { 242 | position: relative; 243 | background: #545454; 244 | } 245 | .ui.test.ad:after { 246 | position: absolute; 247 | top: 50%; 248 | left: 50%; 249 | width: 100%; 250 | text-align: center; 251 | -webkit-transform: translateX(-50%) translateY(-50%); 252 | -ms-transform: translateX(-50%) translateY(-50%); 253 | transform: translateX(-50%) translateY(-50%); 254 | content: 'Ad'; 255 | color: #ffffff; 256 | font-size: 1em; 257 | font-weight: bold; 258 | } 259 | .ui.mobile.test.ad:after { 260 | font-size: 0.85714286em; 261 | } 262 | .ui.test.ad[data-text]:after { 263 | content: attr(data-text); 264 | } 265 | 266 | 267 | /******************************* 268 | Theme Overrides 269 | *******************************/ 270 | 271 | 272 | 273 | /******************************* 274 | User Variable Overrides 275 | *******************************/ 276 | 277 | -------------------------------------------------------------------------------- /templates/berlin2/schedule.php: -------------------------------------------------------------------------------- 1 |

2 | -, 2019
3 | Mozilla Berlin, GSG-Hof Schlesische Straße, Building 3, 3rd floor, Schlesische Straße 27, Berlin, Germany 4 |

5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 |
30 | Saturday, November 23
31 | Learn, Share, Discuss! 32 |
33 |
34 | Day 1 is about discussing in a BarCamp-like environment. Bring a topic you'd like to discuss or join in on topics as they are added to the board. 35 |
36 |
37 |
    38 |
  • 9:00 Organizer setup
  • 39 |
  • 9:30 Doors Open
  • 40 |
  • 10:00 Introduction
  • 41 |
  • 10:15 Keynotes
  • 42 |
  • 11:00 Intros and Demos
  • 43 |
  • 11:45 Session Planning
  • 44 |
  • 12:00 Group photo & lunch break
  • 45 |
  • 13:15 Sessions
  • 46 |
  • 18:00 End of sessions for Day 1
  • 47 |
48 |
49 |
50 |
51 |
52 | Sunday, November 24
53 | Create, Hack, Demo! 54 |
55 |
56 | Day 2 is about implementing what we discussed. Work with others or on your own. We'll have demos at the end of the day to see what everyone worked on! 57 |
58 |
59 |
    60 |
  • 9:00 Organizer setup
  • 61 |
  • 9:30 Doors Open
  • 62 |
  • 10:00 Day 2 kick-off
  • 63 |
  • 10:30 Hack sessions
  • 64 |
  • 12:45 Lunch
  • 65 |
  • 14:00 Hack sessions continue
  • 66 |
  • 16:00 Demos
  • 67 |
  • 17:15 Clean-up
  • 68 |
  • 17:30 Camp closed
  • 69 |
70 |
71 |
72 |
73 | 74 |
75 | 76 |

Schedule is subject to change. View the full schedule grid on the IndieWeb wiki for the latest updates.

77 | 78 |
79 | 80 |

Keynotes

81 |
82 |
83 | 84 |

Teresa Ingram

85 |

Towards A More Civil & Thoughtful Social Web

86 |
87 |
88 | 89 |

Yulia Startsev

90 |

My First IndieWebCamp

91 |
92 |
93 | 94 |

Organizers

95 |
96 |
97 | 98 |

Yulia Startsev

99 |
100 |
101 | 102 |

Tantek Çelik

103 |
104 |
105 | 106 |

Rosemary Orchard

107 |
108 |
109 | -------------------------------------------------------------------------------- /public/semantic/components/item.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Item 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.items>.item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:1em 0;width:100%;min-height:0;background:0 0;padding:0;border:none;border-radius:0;box-shadow:none;-webkit-transition:box-shadow .1s ease;transition:box-shadow .1s ease;z-index:''}.ui.items>.item a{cursor:pointer}.ui.items{margin:1.5em 0}.ui.items:first-child{margin-top:0!important}.ui.items:last-child{margin-bottom:0!important}.ui.items>.item:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.items>.item:first-child{margin-top:0}.ui.items>.item:last-child{margin-bottom:0}.ui.items>.item>.image{position:relative;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;display:block;float:none;margin:0;padding:0;max-height:'';-webkit-align-self:top;-ms-flex-item-align:top;align-self:top}.ui.items>.item>.image>img{display:block;width:100%;height:auto;border-radius:.125rem;border:none}.ui.items>.item>.image:only-child>img{border-radius:0}.ui.items>.item>.content{display:block;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;background:0 0;margin:0;padding:0;box-shadow:none;font-size:1em;border:none;border-radius:0}.ui.items>.item>.content:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.items>.item>.image+.content{min-width:0;width:auto;display:block;margin-left:0;-webkit-align-self:top;-ms-flex-item-align:top;align-self:top;padding-left:1.5em}.ui.items>.item>.content>.header{display:inline-block;margin:-.21425em 0 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;color:rgba(0,0,0,.85)}.ui.items>.item>.content>.header:not(.ui){font-size:1.28571429em}.ui.items>.item [class*="left floated"]{float:left}.ui.items>.item [class*="right floated"]{float:right}.ui.items>.item .content img{-webkit-align-self:middle;-ms-flex-item-align:middle;align-self:middle;width:''}.ui.items>.item .avatar img,.ui.items>.item img.avatar{width:'';height:'';border-radius:500rem}.ui.items>.item>.content>.description{margin-top:.6em;max-width:auto;font-size:1em;line-height:1.4285em;color:rgba(0,0,0,.87)}.ui.items>.item>.content p{margin:0 0 .5em}.ui.items>.item>.content p:last-child{margin-bottom:0}.ui.items>.item .meta{margin:.5em 0;font-size:1em;line-height:1em;color:rgba(0,0,0,.6)}.ui.items>.item .meta *{margin-right:.3em}.ui.items>.item .meta :last-child{margin-right:0}.ui.items>.item .meta [class*="right floated"]{margin-right:0;margin-left:.3em}.ui.items>.item>.content a:not(.ui){color:'';-webkit-transition:color .1s ease;transition:color .1s ease}.ui.items>.item>.content a:not(.ui):hover{color:''}.ui.items>.item>.content>a.header{color:rgba(0,0,0,.85)}.ui.items>.item>.content>a.header:hover{color:#1e70bf}.ui.items>.item .meta>a:not(.ui){color:rgba(0,0,0,.4)}.ui.items>.item .meta>a:not(.ui):hover{color:rgba(0,0,0,.87)}.ui.items>.item>.content .favorite.icon{cursor:pointer;opacity:.75;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.items>.item>.content .favorite.icon:hover{opacity:1;color:#ffb70a}.ui.items>.item>.content .active.favorite.icon{color:#ffe623}.ui.items>.item>.content .like.icon{cursor:pointer;opacity:.75;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.items>.item>.content .like.icon:hover{opacity:1;color:#ff2733}.ui.items>.item>.content .active.like.icon{color:#ff2733}.ui.items>.item .extra{display:block;position:relative;background:0 0;margin:.5rem 0 0;width:100%;padding:0;top:0;left:0;color:rgba(0,0,0,.4);box-shadow:none;-webkit-transition:color .1s ease;transition:color .1s ease;border-top:none}.ui.items>.item .extra>*{margin:.25rem .5rem .25rem 0}.ui.items>.item .extra>[class*="right floated"]{margin:.25rem 0 .25rem .5rem}.ui.items>.item .extra:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.items>.item>.image:not(.ui){width:175px}@media only screen and (min-width:768px) and (max-width:991px){.ui.items>.item{margin:1em 0}.ui.items>.item>.image:not(.ui){width:150px}.ui.items>.item>.image+.content{display:block;padding:0 0 0 1em}}@media only screen and (max-width:767px){.ui.items>.item{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:2em 0}.ui.items>.item>.image{display:block;margin-left:auto;margin-right:auto}.ui.items>.item>.image,.ui.items>.item>.image>img{max-width:100%!important;width:auto!important;max-height:250px!important}.ui.items>.item>.image+.content{display:block;padding:1.5em 0 0}}.ui.items>.item>.image+[class*="top aligned"].content{-webkit-align-self:top;-ms-flex-item-align:top;align-self:top}.ui.items>.item>.image+[class*="middle aligned"].content{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.ui.items>.item>.image+[class*="bottom aligned"].content{-webkit-align-self:bottom;-ms-flex-item-align:bottom;align-self:bottom}.ui.relaxed.items>.item{margin:1.5em 0}.ui[class*="very relaxed"].items>.item{margin:2em 0}.ui.divided.items>.item{border-top:1px solid rgba(34,36,38,.15);margin:0;padding:1em 0}.ui.divided.items>.item:first-child{border-top:none;margin-top:0!important;padding-top:0!important}.ui.divided.items>.item:last-child{margin-bottom:0!important;padding-bottom:0!important}.ui.relaxed.divided.items>.item{margin:0;padding:1.5em 0}.ui[class*="very relaxed"].divided.items>.item{margin:0;padding:2em 0}.ui.items a.item:hover,.ui.link.items>.item:hover{cursor:pointer}.ui.items a.item:hover .content .header,.ui.link.items>.item:hover .content .header{color:#1e70bf}.ui.items>.item{font-size:1em} -------------------------------------------------------------------------------- /public/semantic/components/visit.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Visit 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | !function(e,t,i,n){"use strict";e.visit=e.fn.visit=function(i){var o,r=e(e.isFunction(this)?t:this),s=r.selector||"",a=(new Date).getTime(),c=[],u=arguments[0],l="string"==typeof u,d=[].slice.call(arguments,1);return r.each(function(){var g,m=e.isPlainObject(i)?e.extend(!0,{},e.fn.visit.settings,i):e.extend({},e.fn.visit.settings),f=m.error,p=m.namespace,v=p+"-module",h=e(this),b=e(),y=this,k=h.data(v);g={initialize:function(){m.count?g.store(m.key.count,m.count):m.id?g.add.id(m.id):m.increment&&"increment"!==l&&g.increment(),g.add.display(h),g.instantiate()},instantiate:function(){g.verbose("Storing instance of visit module",g),k=g,h.data(v,g)},destroy:function(){g.verbose("Destroying instance"),h.removeData(v)},increment:function(e){var t=g.get.count(),i=+t+1;e?g.add.id(e):(i>m.limit&&!m.surpass&&(i=m.limit),g.debug("Incrementing visits",i),g.store(m.key.count,i))},decrement:function(e){var t=g.get.count(),i=+t-1;e?g.remove.id(e):(g.debug("Removing visit"),g.store(m.key.count,i))},get:{count:function(){return+g.retrieve(m.key.count)||0},idCount:function(e){return e=e||g.get.ids(),e.length},ids:function(e){var t=[];return e=e||g.retrieve(m.key.ids),"string"==typeof e&&(t=e.split(m.delimiter)),g.verbose("Found visited ID list",t),t},storageOptions:function(e){var t={};return m.expires&&(t.expires=m.expires),m.domain&&(t.domain=m.domain),m.path&&(t.path=m.path),t}},has:{visited:function(t,i){var o=!1;return i=i||g.get.ids(),t!==n&&i&&e.each(i,function(e,i){i==t&&(o=!0)}),o}},set:{count:function(e){g.store(m.key.count,e)},ids:function(e){g.store(m.key.ids,e)}},reset:function(){g.store(m.key.count,0),g.store(m.key.ids,null)},add:{id:function(e){var t=g.retrieve(m.key.ids),i=t===n||""===t?e:t+m.delimiter+e;g.has.visited(e)?g.debug("Unique content already visited, not adding visit",e,t):e===n?g.debug("ID is not defined"):(g.debug("Adding visit to unique content",e),g.store(m.key.ids,i)),g.set.count(g.get.idCount())},display:function(t){var i=e(t);i.length>0&&!e.isWindow(i[0])&&(g.debug("Updating visit count for element",i),b=b.length>0?b.add(i):i)}},remove:{id:function(t){var i=g.get.ids(),o=[];t!==n&&i!==n&&(g.debug("Removing visit to unique content",t,i),e.each(i,function(e,i){i!==t&&o.push(i)}),o=o.join(m.delimiter),g.store(m.key.ids,o)),g.set.count(g.get.idCount())}},check:{limit:function(e){e=e||g.get.count(),m.limit&&(e>=m.limit&&(g.debug("Pages viewed exceeded limit, firing callback",e,m.limit),m.onLimit.call(y,e)),g.debug("Limit not reached",e,m.limit),m.onChange.call(y,e)),g.update.display(e)}},update:{display:function(e){e=e||g.get.count(),b.length>0&&(g.debug("Updating displayed view count",b),b.html(e))}},store:function(i,o){var r=g.get.storageOptions(o);if("localstorage"==m.storageMethod&&t.localStorage!==n)t.localStorage.setItem(i,o),g.debug("Value stored using local storage",i,o);else{if(e.cookie===n)return void g.error(f.noCookieStorage);e.cookie(i,o,r),g.debug("Value stored using cookie",i,o,r)}i==m.key.count&&g.check.limit(o)},retrieve:function(i,o){var r;return"localstorage"==m.storageMethod&&t.localStorage!==n?r=t.localStorage.getItem(i):e.cookie!==n?r=e.cookie(i):g.error(f.noCookieStorage),("undefined"==r||"null"==r||r===n||null===r)&&(r=n),r},setting:function(t,i){if(e.isPlainObject(t))e.extend(!0,m,t);else{if(i===n)return m[t];m[t]=i}},internal:function(t,i){return g.debug("Changing internal",t,i),i===n?g[t]:void(e.isPlainObject(t)?e.extend(!0,g,t):g[t]=i)},debug:function(){m.debug&&(m.performance?g.performance.log(arguments):(g.debug=Function.prototype.bind.call(console.info,console,m.name+":"),g.debug.apply(console,arguments)))},verbose:function(){m.verbose&&m.debug&&(m.performance?g.performance.log(arguments):(g.verbose=Function.prototype.bind.call(console.info,console,m.name+":"),g.verbose.apply(console,arguments)))},error:function(){g.error=Function.prototype.bind.call(console.error,console,m.name+":"),g.error.apply(console,arguments)},performance:{log:function(e){var t,i,n;m.performance&&(t=(new Date).getTime(),n=a||t,i=t-n,a=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:y,"Execution Time":i})),clearTimeout(g.performance.timer),g.performance.timer=setTimeout(g.performance.display,500)},display:function(){var t=m.name+":",i=0;a=!1,clearTimeout(g.performance.timer),e.each(c,function(e,t){i+=t["Execution Time"]}),t+=" "+i+"ms",s&&(t+=" '"+s+"'"),r.length>1&&(t+=" ("+r.length+")"),(console.group!==n||console.table!==n)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),c=[]}},invoke:function(t,i,r){var s,a,c,u=k;return i=i||d,r=y||r,"string"==typeof t&&u!==n&&(t=t.split(/[\. ]/),s=t.length-1,e.each(t,function(i,o){var r=i!=s?o+t[i+1].charAt(0).toUpperCase()+t[i+1].slice(1):t;if(e.isPlainObject(u[r])&&i!=s)u=u[r];else{if(u[r]!==n)return a=u[r],!1;if(!e.isPlainObject(u[o])||i==s)return u[o]!==n?(a=u[o],!1):!1;u=u[o]}})),e.isFunction(a)?c=a.apply(r,i):a!==n&&(c=a),e.isArray(o)?o.push(c):o!==n?o=[o,c]:c!==n&&(o=c),a}},l?(k===n&&g.initialize(),g.invoke(u)):(k!==n&&k.invoke("destroy"),g.initialize())}),o!==n?o:this},e.fn.visit.settings={name:"Visit",debug:!1,verbose:!1,performance:!0,namespace:"visit",increment:!1,surpass:!1,count:!1,limit:!1,delimiter:"&",storageMethod:"localstorage",key:{count:"visit-count",ids:"visit-ids"},expires:30,domain:!1,path:"/",onLimit:function(){},onChange:function(){},error:{method:"The method you called is not defined",missingPersist:"Using the persist setting requires the inclusion of PersistJS",noCookieStorage:"The default storage cookie requires $.cookie to be included."}}}(jQuery,window,document); -------------------------------------------------------------------------------- /public/semantic/components/message.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Message 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.message{position:relative;min-height:1em;margin:1em 0;background:#f8f8f9;padding:1em 1.5em;line-height:1.4285em;color:rgba(0,0,0,.87);-webkit-transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;border-radius:.28571429rem;box-shadow:0 0 0 1px rgba(34,36,38,.22) inset,0 0 0 0 transparent}.ui.message:first-child{margin-top:0}.ui.message:last-child{margin-bottom:0}.ui.message .header{display:block;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;margin:-.14285em 0 0}.ui.message .header:not(.ui){font-size:1.14285714em}.ui.message p{opacity:.85;margin:.75em 0}.ui.message p:first-child{margin-top:0}.ui.message p:last-child{margin-bottom:0}.ui.message .header+p{margin-top:.25em}.ui.message ul.list{text-align:left;padding:0;opacity:.85;list-style-position:inside;margin:.5em 0 0}.ui.message ul.list:first-child{margin-top:0}.ui.message ul.list:last-child{margin-bottom:0}.ui.message ul.list li{position:relative;list-style-type:none;margin:0 0 .3em 1em;padding:0}.ui.message ul.list li:before{position:absolute;content:'•';left:-1em;height:100%;vertical-align:baseline}.ui.message ul.list li:last-child{margin-bottom:0}.ui.message>.icon{margin-right:.6em}.ui.message>.close.icon{cursor:pointer;position:absolute;margin:0;top:.78575em;right:.5em;opacity:.7;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.message>.close.icon:hover{opacity:1}.ui.message>:first-child{margin-top:0}.ui.message>:last-child{margin-bottom:0}.ui.dropdown .menu>.message{margin:0 -1px}.ui.visible.visible.visible.visible.message{display:block}.ui.icon.visible.visible.visible.visible.message{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ui.hidden.hidden.hidden.hidden.message{display:none}.ui.compact.message{display:inline-block}.ui.attached.message{margin-bottom:-1px;border-radius:.28571429rem .28571429rem 0 0;box-shadow:0 0 0 1px rgba(34,36,38,.15) inset;margin-left:-1px;margin-right:-1px}.ui.attached+.ui.attached.message:not(.top):not(.bottom){margin-top:-1px;border-radius:0}.ui.bottom.attached.message{margin-top:-1px;border-radius:0 0 .28571429rem .28571429rem;box-shadow:0 0 0 1px rgba(34,36,38,.15) inset,0 1px 2px 0 rgba(34,36,38,.15)}.ui.bottom.attached.message:not(:last-child){margin-bottom:1em}.ui.attached.icon.message{display:block;width:auto}.ui.icon.message{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.ui.icon.message>.icon:not(.close){display:block;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;width:auto;line-height:1;vertical-align:middle;font-size:3em;opacity:.8}.ui.icon.message>.content{display:block;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;vertical-align:middle}.ui.icon.message .icon:not(.close)+.content{padding-left:0}.ui.icon.message .circular.icon{width:1em}.ui.floating.message{box-shadow:0 0 0 1px rgba(34,36,38,.22) inset,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.08)}.ui.positive.message{background-color:#fcfff5;color:#2c662d}.ui.attached.positive.message,.ui.positive.message{box-shadow:0 0 0 1px #a3c293 inset,0 0 0 0 transparent}.ui.positive.message .header{color:#1a531b}.ui.negative.message{background-color:#fff6f6;color:#9f3a38}.ui.attached.negative.message,.ui.negative.message{box-shadow:0 0 0 1px #e0b4b4 inset,0 0 0 0 transparent}.ui.negative.message .header{color:#912d2b}.ui.info.message{background-color:#f8ffff;color:#276f86}.ui.attached.info.message,.ui.info.message{box-shadow:0 0 0 1px #a9d5de inset,0 0 0 0 transparent}.ui.info.message .header{color:#0e566c}.ui.warning.message{background-color:#fffaf3;color:#573a08}.ui.attached.warning.message,.ui.warning.message{box-shadow:0 0 0 1px #c9ba9b inset,0 0 0 0 transparent}.ui.warning.message .header{color:#794b02}.ui.error.message{background-color:#fff6f6;color:#9f3a38}.ui.attached.error.message,.ui.error.message{box-shadow:0 0 0 1px #e0b4b4 inset,0 0 0 0 transparent}.ui.error.message .header{color:#912d2b}.ui.success.message{background-color:#fcfff5;color:#2c662d}.ui.attached.success.message,.ui.success.message{box-shadow:0 0 0 1px #a3c293 inset,0 0 0 0 transparent}.ui.success.message .header{color:#1a531b}.ui.black.message,.ui.inverted.message{background-color:#1b1c1d;color:rgba(255,255,255,.9)}.ui.red.message{background-color:#ffe8e6;color:#db2828}.ui.red.message .header{color:#c82121}.ui.orange.message{background-color:#ffedde;color:#f2711c}.ui.orange.message .header{color:#e7640d}.ui.yellow.message{background-color:#fff8db;color:#b58105}.ui.yellow.message .header{color:#9c6f04}.ui.olive.message{background-color:#fbfdef;color:#8abc1e}.ui.olive.message .header{color:#7aa61a}.ui.green.message{background-color:#e5f9e7;color:#1ebc30}.ui.green.message .header{color:#1aa62a}.ui.teal.message{background-color:#e1f7f7;color:#10a3a3}.ui.teal.message .header{color:#0e8c8c}.ui.blue.message{background-color:#dff0ff;color:#2185d0}.ui.blue.message .header{color:#1e77ba}.ui.violet.message{background-color:#eae7ff;color:#6435c9}.ui.violet.message .header{color:#5a30b5}.ui.purple.message{background-color:#f6e7ff;color:#a333c8}.ui.purple.message .header{color:#922eb4}.ui.pink.message{background-color:#ffe3fb;color:#e03997}.ui.pink.message .header{color:#dd238b}.ui.brown.message{background-color:#f1e2d3;color:#a5673f}.ui.brown.message .header{color:#935b38}.ui.small.message{font-size:.92857143em}.ui.message{font-size:1em}.ui.large.message{font-size:1.14285714em}.ui.huge.message{font-size:1.42857143em}.ui.massive.message{font-size:1.71428571em} -------------------------------------------------------------------------------- /public/semantic/components/divider.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Divider 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.divider{margin:1rem 0;line-height:1;height:0;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:rgba(0,0,0,.85);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;font-size:1rem}.ui.divider:not(.vertical):not(.horizontal){border-top:1px solid rgba(34,36,38,.15);border-bottom:1px solid rgba(255,255,255,.1)}.ui.grid>.ui.divider{font-size:1rem}.ui.horizontal.divider{display:table;white-space:nowrap;height:auto;margin:'';overflow:hidden;line-height:1;text-align:center}.ui.horizontal.divider:after,.ui.horizontal.divider:before{content:'';display:table-cell;position:relative;top:50%;width:50%;background-repeat:no-repeat;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC)}.ui.horizontal.divider:before{background-position:right 1em top 50%}.ui.horizontal.divider:after{background-position:left 1em top 50%}.ui.vertical.divider{position:absolute;z-index:2;top:50%;left:50%;margin:0;padding:0;width:auto;height:50%;line-height:0;text-align:center;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ui.vertical.divider:after,.ui.vertical.divider:before{position:absolute;left:50%;content:'';z-index:3;border-left:1px solid rgba(34,36,38,.15);border-right:1px solid rgba(255,255,255,.1);width:0;height:calc(100% - 1rem)}.ui.vertical.divider:before{top:-100%}.ui.vertical.divider:after{top:auto;bottom:0}@media only screen and (max-width:767px){.ui.grid .stackable.row .ui.vertical.divider,.ui.stackable.grid .ui.vertical.divider{display:table;white-space:nowrap;height:auto;margin:'';overflow:hidden;line-height:1;text-align:center;position:static;top:0;left:0;-webkit-transform:none;-ms-transform:none;transform:none}.ui.grid .stackable.row .ui.vertical.divider:after,.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:before{left:0;border-left:none;content:'';display:table-cell;position:relative;top:50%;width:50%;background-repeat:no-repeat}.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:before{background-position:right 1em top 50%}.ui.grid .stackable.row .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:after{background-position:left 1em top 50%}}.ui.divider>.icon{margin:0;font-size:1rem;height:1em;vertical-align:middle}.ui.hidden.divider{border-color:transparent!important}.ui.hidden.divider:after,.ui.hidden.divider:before{display:none}.ui.divider.inverted,.ui.horizontal.inverted.divider,.ui.vertical.inverted.divider{color:#fff}.ui.divider.inverted,.ui.divider.inverted:after,.ui.divider.inverted:before{border-top-color:rgba(34,36,38,.15)!important;border-left-color:rgba(34,36,38,.15)!important;border-bottom-color:rgba(255,255,255,.15)!important;border-right-color:rgba(255,255,255,.15)!important}.ui.fitted.divider{margin:0}.ui.clearing.divider{clear:both}.ui.section.divider{margin-top:2rem;margin-bottom:2rem}@media only screen and (max-width:767px){.ui.grid .stackable.row .ui.vertical.divider:after,.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC)}} -------------------------------------------------------------------------------- /public/semantic/components/video.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Video 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2014 Contributorss 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | !function(e,o,t,n){"use strict";e.fn.video=function(t){{var a,i=e(this),r=i.selector||"",l=(new Date).getTime(),c=[],u=arguments[0],s="string"==typeof u,m=[].slice.call(arguments,1);o.requestAnimationFrame||o.mozRequestAnimationFrame||o.webkitRequestAnimationFrame||o.msRequestAnimationFrame||function(e){setTimeout(e,0)}}return i.each(function(){var d,p=e.isPlainObject(t)?e.extend(!0,{},e.fn.video.settings,t):e.extend({},e.fn.video.settings),f=p.selector,g=p.className,h=p.error,v=p.metadata,b=p.namespace,y=p.templates,w="."+b,x="module-"+b,F=(e(o),e(this)),C=F.find(f.placeholder),E=F.find(f.playButton),T=F.find(f.embed),A=this,P=F.data(x);d={initialize:function(){d.debug("Initializing video"),d.create(),F.on("click"+w,f.placeholder,d.play).on("click"+w,f.playButton,d.play),d.instantiate()},instantiate:function(){d.verbose("Storing instance of module",d),P=d,F.data(x,d)},create:function(){var e=F.data(v.image),o=y.video(e);F.html(o),d.refresh(),e||d.play(),d.debug("Creating html for video element",o)},destroy:function(){d.verbose("Destroying previous instance of video"),d.reset(),F.removeData(x).off(w)},refresh:function(){d.verbose("Refreshing selector cache"),C=F.find(f.placeholder),E=F.find(f.playButton),T=F.find(f.embed)},change:function(e,o,t){d.debug("Changing video to ",e,o,t),F.data(v.source,e).data(v.id,o).data(v.url,t),p.onChange()},reset:function(){d.debug("Clearing video embed and showing placeholder"),F.removeClass(g.active),T.html(" "),C.show(),p.onReset()},play:function(){d.debug("Playing video");var e=F.data(v.source)||!1,o=F.data(v.url)||!1,t=F.data(v.id)||!1;T.html(d.generate.html(e,t,o)),F.addClass(g.active),p.onPlay()},get:{source:function(e){return"string"!=typeof e?!1:-1!==e.search("youtube.com")?"youtube":-1!==e.search("vimeo.com")?"vimeo":!1},id:function(e){return e.match(p.regExp.youtube)?e.match(p.regExp.youtube)[1]:e.match(p.regExp.vimeo)?e.match(p.regExp.vimeo)[2]:!1}},generate:{html:function(e,o,t){d.debug("Generating embed html");var n;return e=e||p.source,o=o||p.id,e&&o||t?(e&&o||(e=d.get.source(t),o=d.get.id(t)),"vimeo"==e?n='':"youtube"==e&&(n='')):d.error(h.noVideo),n},url:function(e){var o=p.api?1:0,t="auto"===p.autoplay?F.data("image")!==n:p.autoplay,a=p.hd?1:0,i=p.showUI?1:0,r=p.showUI?0:1,l="";return"vimeo"==e&&(l="api="+o+"&title="+i+"&byline="+i+"&portrait="+i+"&autoplay="+t,p.color&&(l+="&color="+p.color)),"ustream"==e?(l="autoplay="+t,p.color&&(l+="&color="+p.color)):"youtube"==e&&(l="enablejsapi="+o+"&autoplay="+t+"&autohide="+r+"&hq="+a+"&modestbranding=1",p.color&&(l+="&color="+p.color)),l}},setting:function(o,t){if(d.debug("Changing setting",o,t),e.isPlainObject(o))e.extend(!0,p,o);else{if(t===n)return p[o];p[o]=t}},internal:function(o,t){if(e.isPlainObject(o))e.extend(!0,d,o);else{if(t===n)return d[o];d[o]=t}},debug:function(){p.debug&&(p.performance?d.performance.log(arguments):(d.debug=Function.prototype.bind.call(console.info,console,p.name+":"),d.debug.apply(console,arguments)))},verbose:function(){p.verbose&&p.debug&&(p.performance?d.performance.log(arguments):(d.verbose=Function.prototype.bind.call(console.info,console,p.name+":"),d.verbose.apply(console,arguments)))},error:function(){d.error=Function.prototype.bind.call(console.error,console,p.name+":"),d.error.apply(console,arguments)},performance:{log:function(e){var o,t,n;p.performance&&(o=(new Date).getTime(),n=l||o,t=o-n,l=o,c.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:A,"Execution Time":t})),clearTimeout(d.performance.timer),d.performance.timer=setTimeout(d.performance.display,500)},display:function(){var o=p.name+":",t=0;l=!1,clearTimeout(d.performance.timer),e.each(c,function(e,o){t+=o["Execution Time"]}),o+=" "+t+"ms",r&&(o+=" '"+r+"'"),i.length>1&&(o+=" ("+i.length+")"),(console.group!==n||console.table!==n)&&c.length>0&&(console.groupCollapsed(o),console.table?console.table(c):e.each(c,function(e,o){console.log(o.Name+": "+o["Execution Time"]+"ms")}),console.groupEnd()),c=[]}},invoke:function(o,t,i){var r,l,c,u=P;return t=t||m,i=A||i,"string"==typeof o&&u!==n&&(o=o.split(/[\. ]/),r=o.length-1,e.each(o,function(t,a){var i=t!=r?a+o[t+1].charAt(0).toUpperCase()+o[t+1].slice(1):o;if(e.isPlainObject(u[i])&&t!=r)u=u[i];else{if(u[i]!==n)return l=u[i],!1;if(!e.isPlainObject(u[a])||t==r)return u[a]!==n?(l=u[a],!1):(d.error(h.method,o),!1);u=u[a]}})),e.isFunction(l)?c=l.apply(i,t):l!==n&&(c=l),e.isArray(a)?a.push(c):a!==n?a=[a,c]:c!==n&&(a=c),l}},s?(P===n&&d.initialize(),d.invoke(u)):(P!==n&&P.invoke("destroy"),d.initialize())}),a!==n?a:this},e.fn.video.settings={name:"Video",namespace:"video",debug:!1,verbose:!1,performance:!0,metadata:{id:"id",image:"image",source:"source",url:"url"},source:!1,url:!1,id:!1,aspectRatio:16/9,onPlay:function(){},onReset:function(){},onChange:function(){},onPause:function(){},onStop:function(){},width:"auto",height:"auto",autoplay:"auto",color:"#442359",hd:!0,showUI:!1,api:!0,regExp:{youtube:/^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/,vimeo:/http:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/},error:{noVideo:"No video specified",method:"The method you called is not defined"},className:{active:"active"},selector:{embed:".embed",placeholder:".placeholder",playButton:".play"}},e.fn.video.settings.templates={video:function(e){var o="";return e&&(o+=''),o+='
'}}}(jQuery,window,document); -------------------------------------------------------------------------------- /public/semantic/components/comment.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Comment 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Standard 15 | *******************************/ 16 | 17 | 18 | /*-------------- 19 | Comments 20 | ---------------*/ 21 | 22 | .ui.comments { 23 | margin: 1.5em 0em; 24 | max-width: 650px; 25 | } 26 | .ui.comments:first-child { 27 | margin-top: 0em; 28 | } 29 | .ui.comments:last-child { 30 | margin-bottom: 0em; 31 | } 32 | 33 | /*-------------- 34 | Comment 35 | ---------------*/ 36 | 37 | .ui.comments .comment { 38 | position: relative; 39 | background: none; 40 | margin: 0.5em 0em 0em; 41 | padding: 0.5em 0em 0em; 42 | border: none; 43 | border-top: none; 44 | line-height: 1.2; 45 | } 46 | .ui.comments .comment:first-child { 47 | margin-top: 0em; 48 | padding-top: 0em; 49 | } 50 | 51 | /*-------------------- 52 | Nested Comments 53 | ---------------------*/ 54 | 55 | .ui.comments .comment .comments { 56 | margin: 0em 0em 0.5em 0.5em; 57 | padding: 1em 0em 1em 1em; 58 | } 59 | .ui.comments .comment .comments:before { 60 | position: absolute; 61 | top: 0px; 62 | left: 0px; 63 | } 64 | .ui.comments .comment .comments .comment { 65 | border: none; 66 | border-top: none; 67 | background: none; 68 | } 69 | 70 | /*-------------- 71 | Avatar 72 | ---------------*/ 73 | 74 | .ui.comments .comment .avatar { 75 | display: block; 76 | width: 2.5em; 77 | height: auto; 78 | float: left; 79 | margin: 0.2em 0em 0em; 80 | } 81 | .ui.comments .comment img.avatar, 82 | .ui.comments .comment .avatar img { 83 | display: block; 84 | margin: 0em auto; 85 | width: 100%; 86 | height: 100%; 87 | border-radius: 0.25rem; 88 | } 89 | 90 | /*-------------- 91 | Content 92 | ---------------*/ 93 | 94 | .ui.comments .comment > .content { 95 | display: block; 96 | } 97 | 98 | /* If there is an avatar move content over */ 99 | .ui.comments .comment > .avatar ~ .content { 100 | margin-left: 3.5em; 101 | } 102 | 103 | /*-------------- 104 | Author 105 | ---------------*/ 106 | 107 | .ui.comments .comment .author { 108 | font-size: 1em; 109 | color: rgba(0, 0, 0, 0.87); 110 | font-weight: bold; 111 | } 112 | .ui.comments .comment a.author { 113 | cursor: pointer; 114 | } 115 | .ui.comments .comment a.author:hover { 116 | color: #1e70bf; 117 | } 118 | 119 | /*-------------- 120 | Metadata 121 | ---------------*/ 122 | 123 | .ui.comments .comment .metadata { 124 | display: inline-block; 125 | margin-left: 0.5em; 126 | color: rgba(0, 0, 0, 0.4); 127 | font-size: 0.875em; 128 | } 129 | .ui.comments .comment .metadata > * { 130 | display: inline-block; 131 | margin: 0em 0.5em 0em 0em; 132 | } 133 | .ui.comments .comment .metadata > :last-child { 134 | margin-right: 0em; 135 | } 136 | 137 | /*-------------------- 138 | Comment Text 139 | ---------------------*/ 140 | 141 | .ui.comments .comment .text { 142 | margin: 0.25em 0em 0.5em; 143 | font-size: 1em; 144 | word-wrap: break-word; 145 | color: rgba(0, 0, 0, 0.87); 146 | line-height: 1.3; 147 | } 148 | 149 | /*-------------------- 150 | User Actions 151 | ---------------------*/ 152 | 153 | .ui.comments .comment .actions { 154 | font-size: 0.875em; 155 | } 156 | .ui.comments .comment .actions a { 157 | cursor: pointer; 158 | display: inline-block; 159 | margin: 0em 0.75em 0em 0em; 160 | color: rgba(0, 0, 0, 0.4); 161 | } 162 | .ui.comments .comment .actions a:last-child { 163 | margin-right: 0em; 164 | } 165 | .ui.comments .comment .actions a.active, 166 | .ui.comments .comment .actions a:hover { 167 | color: rgba(0, 0, 0, 0.8); 168 | } 169 | 170 | /*-------------------- 171 | Reply Form 172 | ---------------------*/ 173 | 174 | .ui.comments > .reply.form { 175 | margin-top: 1em; 176 | } 177 | .ui.comments .comment .reply.form { 178 | width: 100%; 179 | margin-top: 1em; 180 | } 181 | .ui.comments .reply.form textarea { 182 | font-size: 1em; 183 | height: 12em; 184 | } 185 | 186 | 187 | /******************************* 188 | State 189 | *******************************/ 190 | 191 | .ui.collapsed.comments, 192 | .ui.comments .collapsed.comments, 193 | .ui.comments .collapsed.comment { 194 | display: none; 195 | } 196 | 197 | 198 | /******************************* 199 | Variations 200 | *******************************/ 201 | 202 | 203 | /*-------------------- 204 | Threaded 205 | ---------------------*/ 206 | 207 | .ui.threaded.comments .comment .comments { 208 | margin: -1.5em 0 -1em 1.25em; 209 | padding: 3em 0em 2em 2.25em; 210 | box-shadow: -1px 0px 0px rgba(34, 36, 38, 0.15); 211 | } 212 | 213 | /*-------------------- 214 | Minimal 215 | ---------------------*/ 216 | 217 | .ui.minimal.comments .comment .actions { 218 | opacity: 0; 219 | position: absolute; 220 | top: 0px; 221 | right: 0px; 222 | left: auto; 223 | -webkit-transition: opacity 0.2s ease; 224 | transition: opacity 0.2s ease; 225 | -webkit-transition-delay: 0.1s; 226 | transition-delay: 0.1s; 227 | } 228 | .ui.minimal.comments .comment > .content:hover > .actions { 229 | opacity: 1; 230 | } 231 | 232 | /*-------------------- 233 | Sizes 234 | ---------------------*/ 235 | 236 | .ui.small.comments { 237 | font-size: 0.9em; 238 | } 239 | .ui.comments { 240 | font-size: 1em; 241 | } 242 | .ui.large.comments { 243 | font-size: 1.1em; 244 | } 245 | .ui.huge.comments { 246 | font-size: 1.2em; 247 | } 248 | 249 | 250 | /******************************* 251 | Theme Overrides 252 | *******************************/ 253 | 254 | 255 | 256 | /******************************* 257 | User Variable Overrides 258 | *******************************/ 259 | 260 | --------------------------------------------------------------------------------