| #!/usr/bin/env ruby |
| PAGETITLE = "Apache Related Talks Listing" # Wvisible:events |
| |
| $LOAD_PATH.unshift '/srv/whimsy/lib' |
| require 'json' |
| require 'whimsy/asf' |
| require 'wunderbar' |
| require 'wunderbar/bootstrap' |
| require 'wunderbar/jquery' |
| require "../../tools/comdevtalks.rb" |
| |
| talks = {} |
| submitters = {} |
| TOPICMAP = { |
| 'apacheway' => "The Apache Way of Project Governance And Behaviors", |
| 'community' => "Community Health And Maintenance", |
| 'developers' => "Focus On Developers In Apache Projects", |
| 'incubator' => "About The Apache Incubator And Joining The ASF", |
| 'contributors' => "Focus On Non-Technical Project Contributors" |
| } |
| |
| def _talk(talk, submitters, parent, n) |
| _div.panel.panel_info id: talk[0] do |
| talk = talk[1] # originally an array of ['Apache_Way_2017', {...} ] |
| _div.panel_heading role: "tab", id: "#{parent}#{n}" do |
| _h3.panel_title do |
| _a.collapsed role: "button", data_toggle: "collapse", aria_expanded: "false", data_parent: "##{parent}", href: "##{parent}-c#{n}", aria_controls: "#{parent}-c#{n}" do |
| _ talk['title'] |
| _ ' ' |
| _span.caret |
| end |
| _br |
| _span.small talk['teaser'] |
| end |
| end |
| _div.panel_collapse.collapse id: "#{parent}-c#{n}", role: "tabpanel", aria_labelledby: "#{parent}#{n}" do |
| # TODO fix to display both submitter and/or speaker(s) |
| submitter = submitters[talk['submitter']] |
| submitter = talk['submitter'] unless submitter |
| _table.table.table_condensed do |
| _thead do |
| _tr do |
| _th do |
| _ "#{submitter['name']}" |
| end |
| end |
| end |
| _tbody do |
| _tr do |
| _td do |
| # TODO allow markdown styles |
| talk['abstract'].split(/\n+/).each do |line| |
| _p line |
| end |
| end |
| end |
| if talk['slides'] |
| _tr do |
| _td do |
| _a! href: "#{talk['slides']}" do |
| _span!.glyphicon class: 'glyphicon-file' |
| _! ' Session Slides' |
| end |
| end |
| end |
| end |
| if talk['video'] |
| _tr do |
| _td do |
| _a! href: "#{talk['video']}" do |
| _span!.glyphicon class: 'glyphicon-facetime-video' |
| _! ' Watch The Video' |
| end |
| end |
| end |
| end |
| if submitter['bio'] |
| _tr do |
| _td do |
| _h4 do |
| _span.glyphicon class: 'glyphicon-user' |
| _ ' Speaker Bio' |
| end |
| _ "#{submitter['bio']}" |
| end |
| end |
| end |
| end |
| end |
| end |
| end |
| end |
| |
| _html do |
| _body? do |
| _whimsy_body( |
| title: PAGETITLE, |
| subtitle: 'Great Conference Talks About Apache Community', |
| related: { |
| "https://community.apache.org/" => "Apache Community Development", |
| "https://community.apache.org/speakers/" => "Apache Speaker Resources", |
| "https://community.apache.org/speakers/slides.html" => "More Apache-related Slides", |
| "https://apachecon.com/" => "ApacheCon Conferences" |
| }, |
| helpblock: -> { |
| _p do |
| _ 'Curated listing of selected Apache ' |
| _em 'non-technical' |
| _ %{ |
| talks - about the Apache Way, licenses, brands, governance, and ASF history. |
| This is just a small sample of the many great talks on open source communities from our many experienced Apache speakers. |
| } |
| end |
| _p do |
| _ 'To be included here, talks must have gotten good feedback at an ApacheCon, and must include slides and preferably video/audio. ' |
| _a 'See the source data.', href: COMDEVTALKS |
| _ 'Many more Apache-related slides are on the ' |
| _a 'ComDev Slides page.', href: 'https://community.apache.org/speakers/slides.html' |
| end |
| } |
| ) do |
| talks, submitters = get_talks_submitters() |
| alltalks = talks.group_by { |t| t[1]['topics'][0]} |
| _p do |
| _ 'All talks by topics: ' |
| alltalks.keys.each do | topic | |
| _a "#{topic}", href: "##{topic}" |
| _ ' | ' unless topic == alltalks.keys.last |
| end |
| end |
| alltalks.each do | topic, all_by_cat | |
| _h2 do |
| _ "#{TOPICMAP[topic]} " |
| _span.small "(#{topic})" |
| end |
| _div.panel_group id: topic, role: "tablist", aria_multiselectable: "true" do |
| all_by_cat.each_with_index do |talk, num| |
| _talk(talk, submitters, topic, num) |
| end |
| end |
| end |
| end |
| end |
| end |