Merge pull request 'Update hub layout to match the new HPR website' (#99) from newsite into main

Reviewed-on: #99
This commit is contained in:
2025-10-18 03:33:13 +00:00
24 changed files with 1134 additions and 231 deletions

View File

@@ -10,7 +10,7 @@ if ( ! $pos === false) {
$body="give";
//$body="index_full";
include 'header.html';
include 'header.php';
// --------------------------------------------
// Clean up stale reservations
@@ -249,8 +249,6 @@ $next_show_date = date('Y-m-d', strtotime($show_array[$next_show_num - 1 ]["date
$days_to_wait = floor((strtotime($next_show_date) - strtotime(gmdate('Y-m-d')))/(60*60*24));
?>
<main id="maincontent">
<h1>Upload Your Show</h1>
<p>
@@ -258,10 +256,10 @@ The HPR Schedule is entirely community driven and we recommend that <strong>you<
</p>
<p>
There are only <strong><?php echo "${days_to_wait}"; ?></strong> days to wait until next free slot. Please consider <a aria-label="Help on Recording a podcast" href="<?php echo "${baseurl}about.html#recording_a_podcast"; ?>">recording</a> a show for us.
There are only <strong><?php echo "${days_to_wait}"; ?></strong> days to wait until next free slot. Please consider <a aria-label="Help on Recording a podcast" href="<?php echo "${referrerurl}about.html#recording_a_podcast"; ?>">recording</a> a show for us.
</p>
<ol>
<li>Review the updated <em><a aria-label="Learn the Stuff you need to know" href="<?php echo "${baseurl}about.html#agreement"; ?>">Stuff you need to know</a></em> page.</li>
<li>Review the updated <em><a aria-label="Learn the Stuff you need to know" href="<?php echo "${referrerurl}about.html#agreement"; ?>">Stuff you need to know</a></em> page.</li>
<li>Select a date, or post to the reserve queue.</li>
<li>Click the link in the confirmation email</li>
<li>Then <a aria-label="Help on Adding an episode" href="<?php echo "${baseurl}about.html#adding_an_episode"; ?>">fill in a form</a>.</li>
@@ -275,22 +273,22 @@ There are only <strong><?php echo "${days_to_wait}"; ?></strong> days to wait un
<li>When the queue is filling up then leave some slots free for new contributors.</li>
<li>Post non urgent shows into the first empty week.</li>
<li>If you are uploading a series of shows then post them one every two weeks.</li>
<li>If you have a non urgent show that is timeless, then add it to the <a href="https://hackerpublicradio.org/about.html#reserve_queue">Reserve Queue</a>.</li>
<li>If you have a non urgent show that is timeless, then add it to the <a href="<?php echo $referrerurl ?>about.html#reserve_queue">Reserve Queue</a>.</li>
</ol>
<h2 id="reserve_queue">Add to the Reserve Queue ?</h2>
<p>
<a aria-label="Post to the reserve queue" href="<?php echo "${hubBaseurl}"; ?>request.php?id=9999">Post your show to the <strong>reserve queue</strong></a> if you don't care when it will be released. <small><a aria-label="Help on the reserve queue" href="<?php echo "${baseurl}about.html#reserve_queue"; ?>">&#9432;</a></small>
<a aria-label="Post to the reserve queue" href="<?php echo "${hubBaseurl}"; ?>request.php?id=9999">Post your show to the <strong>reserve queue</strong></a> if you don't care when it will be released. <small><a aria-label="Help on the reserve queue" href="<?php echo "${referrerurl}"; ?>about.html#reserve_queue";">&#9432;</a></small>
</p>
<h2 id="current_schedule">Select a date in the current schedule ?</h2>
<p>
<strong>Schedule</strong> the release</a> day your show will be aired. <small><a aria-label="Help on the scheduling guidelines" href="<?php echo "${baseurl}about.html#scheduling_guidelines"; ?>">&#9432;</a></small>
<strong>Schedule</strong> the release</a> day your show will be aired. <small><a aria-label="Help on the scheduling guidelines" href="<?php echo "${referrerurl}"; ?>about.html#scheduling_guidelines">&#9432;</a></small>
</p>
<h3>Next Two Months <small><a aria-label="Help on the HPR processing workflow" href="<?php echo "${baseurl}about.html#workflow"; ?>">&#9432;</a></small></h3>
<h3>Next Two Months <small><a aria-label="Help on the HPR processing workflow" href="<?php echo "${referrerurl}"; ?>about.html#workflow">&#9432;</a></small></h3>
@@ -312,7 +310,7 @@ for ( $slot = $current_episode_number; $slot < ( $current_episode_number + 60 );
$sizeof_show_array--;
}
elseif ( empty( $show_array[$slot] ) ) {
echo "<span style=\"font-family:monospace;\">${this_episode_date}: <a aria-label=\"Upload to the slot hpr${slot}\" href=\"${hubBaseurl}/request.php?id=${slot}\">hpr${slot}</span> is available - upload now</a>.<br />\n";
echo "<span style=\"font-family:monospace;\">${this_episode_date}: <a aria-label=\"Upload to the slot hpr${slot}\" href=\"${hubBaseurl}request.php?id=${slot}\">hpr${slot}</span> is available - upload now</a>.<br />\n";
}
elseif ( $show_array[$slot]["valid"] == 0 ) {
echo "<span style=\"font-family:monospace;\">${this_episode_date}: hpr${slot}</span> <strong>Unavailable</strong>.<br />\n";
@@ -360,9 +358,6 @@ If you wish to pick an available slot in the next 12 months then go directly to
<h3 id="workflow">Workflow</h3>
<p>
The HPR statistics are regenerated every 15 minutes and are available in <a aria-label="Go to the stats json page" href="<?php echo "${hubBaseurl}"; ?>stats.json">json format</a>. Note the format is liable to change without notice.</p>
</main>
<?php
include 'footer.html';
include 'footer.php';
?>

View File

@@ -338,12 +338,9 @@ if (!$mailer->send()) {
$body="give";
//$body="index_full";
include 'header.html';
include 'header.php';
?>
<main id="maincontent">
<hr />
<article>
<header>
<h1>Thank you</h1>
@@ -360,11 +357,9 @@ include 'header.html';
<?php echo date('Y-m-d\TH:i:s') . "\n" . getUserIP() . "\n" . $_SERVER["HTTP_USER_AGENT"]; ?>
</pre>
</article>
</main>
<?php
include 'footer.html';
include 'footer.php';
logextra( "Finished comment_confirm.php");

BIN
hub/css/bebas/BebasNeue.otf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

93
hub/css/bebas/OFL.txt Normal file
View File

@@ -0,0 +1,93 @@
Copyright (c) 2010-2012 Patrick Wagesreiter (mail@patrickwagesreiter.at)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://openfontlicense.org
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

830
hub/css/hpr.css Normal file
View File

@@ -0,0 +1,830 @@
@charset "utf-8";
/* Website design Copyright Ken Fallon - Released into the public domain/
https://creativecommons.org/publicdomain/
*/
/*
* See the following for the modern CSS responsive design techniques used in this file:
* - MDN web docs: Responsive design
* -- https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Responsive_Design
* - Matthew James Tayler: Responsive Font Size (Optimal Text at Every Breakpoint)
* -- https://matthewjamestaylor.com/responsive-font-size
* - CSS-Tricks: Linearly Scale font-size with CSS c
* #welcome > p {
* font-size: 1.25rem;
* font-weight: 450;
* }lamp() Based on the Viewport
* -- https://css-tricks.com/linearly-scale-font-size-with-css-clamp-based-on-the-viewport/
*/
@font-face {
font-family: "BebasNeue";
src:
local("BEBAS NEUE"),
url("/css/bebas/BebasNeue.woff2") format("woff2"),
url("/css/bebas/BebasNeue.woff") format("woff"),
url("/css/bebas/BebasNeue.otf") format("opentype");
}
@font-face {
font-family: "PatrickHand";
src:
local("Patrick Hand"),
url("/css/patrickhand/PatrickHand-Regular.woff2") format("woff2"),
url("/css/patrickhand/PatrickHand-Regular.woff") format("woff"),
url("/css/patrickhand/PatrickHand-Regular.ttf") format("truetype");
}
:root {
--background-primary: #fffff7/*#fafafa#fbfbee #dfdfdf */;
--text-primary: #4d4d4d; /* HPR Grey */
--banner-text-primary: #000000;
--banner-background-color: #40a5b9;
/* --background-secondary: #4d4d4d; */
--background-secondary: #00003e;
--text-secondary: #dfdfdf;
--link-primary: #004852 /*#154a60*/;
--link-primary-hover: #b54c08/*#f8961e*/;
--link-secondary: #a8f8ff;
--link-secondary-hover: #f9e9c2;
--link-title-color: #00003e;
--primary-content-line-height: 1.45;
--font-family-hpr: Verdana, Arial, Helvetica, sans-serif; /* 1em/1.5 OpenDyslexic, */;
--font-size-default: clamp(1rem, 15px + 0.3vw, 1.07rem);
--font-size-emphasis: clamp(1.1rem, 15px + 0.3vw, 1.25rem);
--logo-font-family: var(--font-family-hpr);
--logo-font-weight: bolder;
--logo-font-size: 7.5rem;
--logo-letter-spacing: -0.65rem;
--logo-line-height: 0.75;
--logo-margin: 0 0 0.25rem 0;
--tagline-font-family:"BebasNeue", sans-serif;
--lane-button-font-family: "PatrickHand", var(--font-family-hpr);
--lane-button-border: #80b4c0;
--input-border-primary: #4d4d4d;
--link-spacing-horizontal: clamp(0.5rem, -0.25rem + 3vw, 2.5rem);
--shadow-main-header-color: hsl(190deg 48% 49% / 0.2);
--shadow-secondary-color: hsl(0, 0%, 30.2%);
--shadow-cards: var(--shadow-secondary-color);
--content-max-width: 1080pt;
/* screen breakpoints */
--for-phone-only: 599px;
--for-tablet-portrait-up: 600px;
--for-tablet-landscape-up: 900px;
--for-desktop-up: 1200px;
--for-big-desktop-up: 1800px;
--default-header-x-font-weight: bold;
--default-header-x-margin: 1.25rem 0 0.75rem 0;
--default-header-1-font-size: 1.5rem;
--default-header-2-font-size: 1.45rem;
--default-header-3-font-size: 1.25rem;
--default-header-4-font-size: 1.15rem;
}
html {
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
}
body {
display: flex;
flex-direction: column;
justify-content: flex-start;
background-color: var(--background-primary);
color: var(--text-primary);
font-size: 1rem; /* fallback for browsers that don't support the clamp function) */
font-size: var(--font-size-default);
font-family: var(--font-family-hpr);
margin: 0;
padding: 0;
min-height: 100vh;
}
#top_navigation {
display: flex;
flex-direction: row-reverse;
justify-content: space-between;
background-color: var(--background-secondary);
color: var(--text-secondary);
padding: 0.5rem;
}
#top_navigation > nav a {
color: var(--link-secondary);
}
#top_navigation > nav a:hover {
color: var(--link-secondary-hover);
}
#top_navigation > nav menu {
background-color: inherit;
color: inherit;
margin: 0;
padding: 0.25rem;
}
#top_navigation > nav menu li {
display: inline-block;
background-color: inherit;
color: inherit;
line-height: 1.0;
margin: 0;
padding: 0;
padding-right: var(--link-spacing-horizontal);
}
#top_navigation > nav menu li a {
padding: 0.25rem 0;
}
body > header {
padding: clamp(0.5rem, -0.25rem + 3vw, 1rem) 0.25rem;
background-color: var(--banner-background-color);
background-image: url("/images/main-header-background.png");
background-size: cover;
background-repeat: no-repeat;
background-position: left top;
color: var(--banner-text-primary);
align-items: center;
border-top: var(--background-secondary) solid 1rem;
}
body > header .bounding-box {
background: none;
display: flex;
flex-direction: row;
flex-flow: wrap;
justify-content: space-between;
max-width: var(--content-max-width);
margin: 0 auto;
}
body > header .bounding-box > * {
margin: 0;
padding: 0;
flex: 1 1 auto;
padding: 0.5rem;
background-image: none;
}
body > main {
flex: 1 0 auto;
padding: 0.25rem;
max-width: var(--content-max-width);
margin-left: auto;
margin-right: auto;
}
body > footer {
flex: 0 1 auto;
background-color: var(--background-secondary);
color: var(--text-secondary);
padding: clamp(0.25rem, calc(100vw - var(--for-tablet-portrait-up) + 0.5rem), 0.5rem);
margin-top: 0.5rem;
text-align: center;
line-height: 1.25;
}
body > footer #copyright {
max-width: var(--content-max-width);
margin: 0 auto;
}
body > footer a {
color: var(--link-secondary);
}
body > footer a:hover {
color: var(--link-secondary-hover);
}
div,
h1,
h2,
h3,
h4,
h5,
h6,
p,
ul,
ol,
li,
dl,
dt,
dd,
img,
form,
fieldset,
input,
textarea,
blockquote {
font-family: inherit;
color: inherit;
background: inherit;
}
h1 {
font-size: var(--default-header-1-font-size);
margin: var(--default-header-x-margin);
}
h2,
article * h1,
section > header:first-child {
font-size: var(--default-header-2-font-size);
margin: var(--default-header-x-margin);
}
h3,
article * h2 {
font-size: var(--default-header-3-font-size);
margin: var(--default-header-x-margin);
}
h4,
article * h3 {
font-size: var(--default-header-4-font-size);
margin: var(--default-header-x-margin);
}
img {
max-width: 100%;
height: auto;
}
dl, ul {
padding-left: 1.15rem;
}
li {
line-height: 1.25;
margin-bottom: 0.25rem;
}
li:last-child {
margin-bottom: 0.25rem;
}
dt, dd {
line-height: 1.25;
}
dt {
display: list-item;
list-style-type: disc;
margin-bottom: 0.15rem;
}
dd {
margin-bottom: 0.35rem;
margin-left: 1rem;
}
a {
color: var(--link-primary);
text-decoration-style: dotted;
text-decoration-color: inherit;
text-decoration-thickness: .125rem;
text-underline-offset: 0.2rem;
}
a:hover {
cursor: pointer;
color: var(--link-primary-hover);
}
hr {
background: #4D4D4D;
border: 0;
height: 0.25em;
}
audio {
padding: 0.7em 0em 0.5em 0em;
clear: both;
position: relative;
z-index: auto;
}
.audcredit {
font-size: 75%;
margin-bottom: 1em;
}
p.meta {
line-height: 1.25;
}
p.meta span label {
font-weight: bold;
}
article > p,
#main_content > p,
#main_content > section > p {
line-height: var(--primary-content-line-height);
}
.lane {
display: flex;
flex-direction: row;
flex-wrap: wrap;
gap: 1.0rem;
justify-content: space-around;
}
.lane.stack {
flex-direction: column;
justify-content: flex-start;
}
.lane.stack > * {
flex: 1 0 100%;
}
#podcast_lane > .lane,
#project_lane > .lane,
#latest_lane.lane {
justify-content: space-around;
}
.lane > article,
#welcome > p {
font-size: var(--font-size-emphasis);
font-weight: 450;
}
#hosts tr {
/* Add shadows to create the "card" effect */
border-top: thin solid var(--shadow-cards);
border-left: thin solid var(--shadow-cards);
border-radius: 0.5rem;
box-shadow:
1px 2px 2px var(--shadow-cards),
2px 4px 4px var(--shadow-cards);
transition: 0.3s;
flex: 1 0 100%;
overflow-x: scroll;
padding-bottom: 1rem;
}
.lane > article:hover,
#hosts tr:hover {
box-shadow:
4px 8px 8px var(--shadow-cards),
8px 16px 16px var(--shadow-cards);
}
.lane > article > * {
margin-left: 1rem;
margin-right: 1rem;
}
.lane > article > header,
.lane > article > h3 {
background: var(--background-secondary);
padding: 1.5rem 1rem 1rem 1rem;
margin: 0;
font-weight: bold;
font-size: 1.45rem;
color: var(--background-primary);
}
.lane > article > header a,
.lane > article > h3 a {
color: var(--link-secondary);
}
.lane > article > header a:hover,
.lane > article > h3:hover {
color: var(--link-secondary-hover);
}
.lane.stack> * > header * {
margin-top: 0;
margin-bottom: 0;
}
.lane.stack > * > header p {
font-size: var(--default-header-4-font-size);
margin-left: 22px;
}
a.lane-button {
display: flex;
flex-direction: column;
justify-content: center;
margin: 0.5rem var(--link-spacing-horizontal);
padding: 0.5rem 0.25rem;
border-width: 3.5px;
border-color: var(--lane-button-border);
border-style: solid;
border-radius: 10px;
text-align: center;
background-image: url("../images/lane-button-background.png");
}
a.lane-button p {
font-family: var(--lane-button-font-family);
text-transform: lowercase;
font-size: 1.4em;
mask-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.1)), url("../images/charcoal.png");
mask-repeat: repeat;
mask-size: 10%;
background-clip: text;
margin: -0.25rem;
letter-spacing: 1px;
padding: 0.25rem;
}
a.lane-button:hover {
box-shadow:
1px 2px 2px var(--link-primary-hover),
2px 4px 4px var(--link-primary-hover);
}
a.lane-button img {
height: clamp(100px, calc(100vw - var(--for-tablet-portrait-up)), 110px);
transform: scaleX(0.9);
mask-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.1)), url("../images/charcoal.png");
mask-repeat: repeat;
mask-size: 70%;
padding: 0.5rem;
box-sizing: border-box;
}
#podcast_lane a.lane-button:first-of-type img {
mask-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.1)), url("../images/charcoal.png");
mask-repeat: repeat;
mask-size: 60%;
padding: 0.1rem;
}
#podcast_lane a.lane-button:first-of-type p {
font-size: 1.5rem;
}
section:nth-of-type(odd) .lane a:nth-of-type(1) {
border-radius: 20px 15px 25px 15px;
}
section:nth-of-type(odd) .lane a:nth-of-type(2) {
border-radius: 20px 15px 25px 15px;
}
section:nth-of-type(odd) .lane a:nth-of-type(3) {
border-radius: 10px 25px 15px 20px;
}
section:nth-of-type(odd) .lane a:nth-of-type(4) {
border-radius: 15px 15px 10px 20px;
}
section:nth-of-type(even) .lane a:nth-of-type(1) {
border-radius: 25px 10px 15px 15px;
}
section:nth-of-type(even) .lane a:nth-of-type(2) {
border-radius: 20px 10px 15px 10px;
}
section:nth-of-type(even) .lane a:nth-of-type(3) {
border-radius: 10px 20px 10px 15px;
}
section:nth-of-type(even) .lane a:nth-of-type(4) {
border-radius: 15px 10px 25px 30px;
}
#tag_line,
#title {
text-transform: uppercase;
}
#tag_line {
line-height: 1.1;
}
#tag_line *,
#title * {
margin: 0;
padding: 0;
flex: 1 1 auto;
background: none;
}
#title {
background-image: url("/images/hpr-splatter-logo.svg");
background-repeat: no-repeat;
background-size: 15rem;
background-position: left 8.5em top -2em;
}
#title a {
color: var(--link-title-color);
}
#title a:hover {
color: var(--link-primary-hover);
}
#title #site_acronym {
font-family: var(--logo-font-family);
font-size: var(--logo-font-size);
font-weight: var(--logo-font-weight);
letter-spacing: var(--logo-letter-spacing);
line-height: var(--logo-line-height);
margin: var(--logo-margin);
color: transparent;
}
#title #site_acronym a {
text-decoration: none;
text-shadow: 0 1px var(--link-secondary);
}
#title #site_name {
font-size: var(--default-header-2-font-size);
font-weight: bold;
}
#tag_line {
text-align: center;
}
#tag_line #tag1,
#tag_line #tag2 {
text-transform: uppercase;
font-family: var(--tagline-font-family);
font-size: clamp(1.03rem, -0.25rem + 3vw, var(--default-header-4-font-size));
font-weight: var(--default-header-x-font-weight);
letter-spacing: 0.05rem;
}
#tag_line #tag1 {
font-size: clamp(2.1rem, calc(100vw - 360px + 1rem), 2.3rem);;
}
#tag_line #tag3 {
text-align: center;
text-transform: capitalize;
font-weight: var(--default-header-x-font-weight);
}
#site_url {
font-family: "GNUTypewriter", monospace;
text-transform: none;
}
fieldset {
border: thin solid var(--input-border-primary);
border-radius: 0.2rem;
}
fieldset > table,
fieldset > table thead,
fieldset > table tbody,
fieldset > table tr,
fieldset > table th,
fieldset > table td,
fieldset > table td input,
fieldset > table td textarea,
fieldset > table td select {
display: block;
font-size: 1rem;
}
fieldset > table {
width: calc(100vw + -16vw + -1rem);
max-width: 100%;
}
input {
border: thin solid var(--input-border-primary);
border-radius: 0.2rem;
margin-bottom: 0.5rem;
padding: 0.5rem;
}
input[type="submit"] {
background-color: var(--background-secondary);
color: var(--text-secondary);
font-weight: 400;
width: fit-content;
}
input[type="submit"]:hover {
background-color: var(--link-primary-hover);
color: var(--background-primary);
}
select {
appearance: auto;
background: var(--background-primary);
color: var(--text-primary);
border: 1px solid var(--input-border-primary);
border-radius: 0.25rem;
cursor: pointer;
margin-bottom: 0.5rem;
padding: 0.5rem;
}
select:focus{
background: var(--background-secondary);
color: var(--text-secondary);
}select:active {
background: var(--background-secondary);
color: var(--text-primary);
}
fieldset > input,
fieldset > table td input,
fieldset > table td textarea {
width: calc(100vw + -16vw + -1.5rem);
max-width: 100%;
}
fieldset > table td select {
width: calc(100vw + -16vw + -0.40rem);
}
fieldset > table td input[type="radio"] {
display: initial;
width: initial;
margin-bottom: 0.5rem;
}
#youtube {
--video-ratio: calc(390 / 640);
width: min(calc(95vw + 0px), 640px);
height: min(calc(calc(95vw + 0px) * var(--video-ratio)), 320px);
}
#upload_method pre {
max-width: 80vw;
overflow-x: scroll;
}
#search form {
flex: 1 1 100%;
}
#search fieldset {
padding-top: 1rem;
}
#search fieldset > legend {
font-weight: var(--default-header-x-font-weight);
}
#search fieldset > input {
width: 94%;
}
#search fieldset > input[type="submit"] {
width: 100%;
}
#search fieldset > p {
margin-top: 0.5rem;
margin-bottom: 0.5rem;
}
.no-css {
display: none;
}
#tags .date {
margin:0;
font-size: 1rem;
}
#tags #tag_initial_letter_index {
columns: 3 auto;
}
#tags #tag_initial_letter_index li {
font-weight: bold;
list-style: none;
}
#tags .tag-index {
columns: 3 calc(var(--for-tablet-landscape-up) /3 );
column-gap: 1rem;
}
#tags .index-link {
text-align: right;
}
#comments > article > .show-meta {
font-size: smaller;
}
#hosts tr {
gap: 0;
justify-content: flex-start;
}
#hosts td {
display: inline-block;
}
#hosts td:nth-child(-n+2) {
background: var(--background-secondary);
color: var(--background-primary);
}
#hosts td:nth-child(-n+2) a {
color: var(--link-secondary);
}
#hosts td:nth-child(-n+2) a:hover {
color: var(--link-secondary-hover);
}
#hosts td:nth-child(2) {
padding: 0.25rem 0 0 8px;
width: calc(100% - 90px);
}
#hosts td:nth-last-child(-n+2) {
padding: 0.5rem 0 0 95px;
}
#hosts td:nth-last-child(2)::before {
content: ;
content: "License: ";
}
#hosts td:nth-last-child(1)::before {
content: "Last Show: ";
}
#hosts td > img {
border-radius: 0.25rem;
}
#host {
justify-content: flex-start;
align-items: end;
gap: 0;
}
#host_id img {
border-radius: 0.25rem;
}
#host_meta {
flex: 1;
padding: 0 0 0.75rem 0;
}
#host_meta > div,
#host_meta > p {
margin: 0.25rem 0;
line-height: var(--primary-content-line-height);
}
#host_meta > div > p {
display: inline-block;
margin: 0;
padding: 0;
}
.series-description {
margin: 0;
padding: 0;
font-style: italic;
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
border: 0;
}
@media (min-width: 600px) {
body > header .bounding-box {
justify-content: space-between;
}
#tag_line {
line-height: 1;
}
#title #tag1 {
font-size: 7.5rem;
letter-spacing: -0.65rem;
line-height: 0.75;
}
#tag_line #tag2 {
font-size: 1.82rem;
letter-spacing: 0.05rem;
}
#tag_line #tag1 {
font-size: 4rem;
}
#tag_line #tag3 {
font-size: 1.85rem;
letter-spacing: 0.05rem;
margin-left: 5rem;
}
#qr_code {
text-align: center;
max-width: 195px;
}
fieldset>table,
fieldset>table thead,
fieldset>table tbody,
fieldset>table tr,
fieldset>table th,
fieldset>table td,
fieldset>table td input,
fieldset>table td textarea,
fieldset>table td select {
display: revert;
width: revert;
}
fieldset>table tr {
vertical-align: baseline;
}
fieldset>table tr:nth-child(3) {
vertical-align: top;
}
fieldset>table tr:nth-child(3) td:first-child {
padding-top: 0.5rem;
}
fieldset>table tr:nth-last-child(3) td:first-child {
padding-top: 1rem;
}
fieldset>table tr:nth-last-child(2) {
vertical-align: top;
}
fieldset>table tr:nth-last-child(2) td:first-child {
padding-top: 0.75rem;
}
fieldset>table td input[type="radio"] {
margin-top: 1.5rem;
}
fieldset>table td select {
margin-bottom: 1.0rem;
width: 100%;
}
#search fieldset > input {
width: 55%;
}
#search fieldset > input[type="submit"] {
width: 40%;
}
body > main {
padding: 0.25rem 2rem;
}
#latest_lane.lane section > ul {
margin: 0.5rem 3rem 0 1rem;
}
#hosts tbody.lane.stack {
flex-direction: row;
justify-content: space-between;
gap: 1rem
}
#hosts tr {
flex: 1 1 45%;
max-width: 45%;
}
#host {
gap: 1rem;
}
}
@media (min-width: 900px) {
#podcast_lane > .lane,
#project_lane > .lane {
justify-content: flex-start;
gap: 2rem;
}
#latest_lane.lane section {
flex: 1;
}
#hosts tr {
flex: 1 1 30%;
max-width: 30%;
}
}

Binary file not shown.

View File

@@ -0,0 +1,93 @@
Copyright (c) 2010-2012 Patrick Wagesreiter (mail@patrickwagesreiter.at)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://openfontlicense.org
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,89 +0,0 @@
<footer id="footer_page">
<h1 class="thick_bar"><span style="padding-left: 1em;">More Information...</span></h1>
<div id="more_info">
<nav class="column">
<h2>Ancestry</h2>
<ul>
<li><a href="http://audio.textfiles.com/shows/radiofreekamerica/">Radio Freek America</a></li>
<li><a href="http://audio.textfiles.com/shows/binrev/">BinRev Radio</a></li>
<li><a href="http://audio.textfiles.com/shows/infonomicon/">Infonomicon</a></li>
<li><a href="http://audio.textfiles.com/shows/twat/">Talk With a Techie</a></li>
</ul>
</nav>
<nav class="column">
<h2>Social</h2>
<ul>
<li><a href="https://lists.hackerpublicradio.com/mailman/listinfo/hpr" >Mailing list</a></li>
<li><a href="https://botsin.space/@hpr" >Mastodon</a></li>
<li><a href="https://matrix.to/#/#hpr:matrix.org" >Matrix</a></li>
<li><a href="mumble://chatter.skyehaven.net:64738/Hacker%20Public%20Radio?version=1.2.0" >Mumble</a></li>
<li><a href="https://web.libera.chat/gamja/?channels=oggcastplanet" target="_blank">#oggcastplanet</a></li>
<li><a href="https://t.me/+6fEhQrf5IEc4ZGU8">Telegram</a></li>
<li><a href="https://twitter.com/HPR">Twitter.com</a></li>
<li><a href="https://www.facebook.com/HenryPartickReilly" target="_blank">Facebook</a></li>
<li><a href="https://www.linkedin.com/company/hackerpublicradio/" target="_blank">Linked-In</a></li>
</ul>
</nav>
<nav class="column">
<h2>Unaffiliates</h2>
<ul>
<li><a href="https://archive.org/details/hackerpublicradio">Archive.org</a></li>
<li><a href="https://music.amazon.fr/podcasts/9d9e6211-ff78-4501-93b6-6a9e560c4dbd/hacker-public-radio">Amazon Music</a></li>
<li><a href="https://podcasts.google.com/feed/aHR0cDovL2hhY2tlcnB1YmxpY3JhZGlvLm9yZy9ocHJfcnNzLnBocA">Google Podcasts</a></li>
<li><a href="https://www.iheart.com/podcast/256-hacker-public-radio-30994513/" target="_blank">iHeart Radio</a></li>
<li><a href="https://podcasts.apple.com/us/podcast/hacker-public-radio/id281699640">iTunes</a></li>
<li><a href="https://www.listennotes.com/de/podcasts/hacker-public-radio-hacker-public-radio-mNH-jsI7LcJ/">Listen Notes</a></li>
<li><a href="https://www.mixcloud.com/hackerpublicradio/">MixCloud</a></li>
<li><a href="https://player.fm/series/hacker-public-radio">PlayerFM</a></li>
<li><a href="https://www.podchaser.com/podcasts/hacker-public-radio-76781">Podchaser</a></li>
<li><a href="https://nl.radio.net/podcast/hacker-public-radio">Radio.net</a></li>
<li><a href="https://open.spotify.com/show/7e2hYcnHj9vKgUzsIOf4r3">Spotify</a></li>
<li><a href="https://toppodcast.com/podcast_feeds/hacker-public-radio/">Top Podcasts</a></li>
</ul>
</nav>
<nav class="column">
<h2>Commons</h2>
<ul>
<li><a href="https://freeculturepodcasts.org/">Free Culture Podcasts</a></li>
<li><a href="https://archive.org/details/hackerpublicradio">archive.org</a></li>
<li><a href="https://repo.anhonesthost.net/HPR/">HPR Source Code</a></li>
<li><a href="https://cchits.net/">cchits.net</a></li>
<li><a href="https://freesound.org/">freesound.org</a></li>
<li><a href="https://librivox.org/">librivox.org</a></li>
<li><a href="https://openclipart.org/">openclipart.org</a></li>
<li><a href="https://openfontlibrary.org/">openfontlibrary.org</a></li>
<li><a href="https://www.openrouteservice.org/">openrouteservice.org/</a></li>
<li><a href="https://pixabay.com/">pixabay.com/</a></li>
</ul>
</nav>
<nav class="column">
<h2>Patrons</h2>
<ul>
<li><a href="https://anhonesthost.com/hosting/shared-hosting">AnHonestHost.com</a></li>
<li><a href="https://archive.org/donate/">Archive.org</a></li>
<li><a href="https://rsync.net/">rsync.net</a></li>
</ul>
</nav>
</div><!-- more_info -->
<h1 class="thick_bar"><span style="padding-left: 1em;">Copyright Information</span></h1>
<div id="copyright">
<p>
Unless otherwise stated, our shows are released under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</a> license.</p>
<p>
The <span property="dct:title">HPR Website Design</span> is released to the <a rel="license" href="https://creativecommons.org/publicdomain/mark/1.0/">Public Domain</a>.
</p>
<hr />
</div><!-- copyright -->
<hr />
</footer>
</div>
<!-- shadow -->
<?php
if ( $connection ) {
mysqli_close($connection);
}
?>
</body>
</html>

15
hub/footer.php Normal file
View File

@@ -0,0 +1,15 @@
</main>
<footer role="contentinfo">
<hr class="no-css">
<div id="copyright">
<span>Unless otherwise stated, our shows are released under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</a> license.</span>
<span>
The <span property="dct:title">HPR Website Design</span> is released to the <a rel="license" href="https://creativecommons.org/publicdomain/mark/1.0/">Public Domain</a>.
</span>
</div>
<div id="generated_by">This page was <a href="https://repo.anhonesthost.net/HPR/hpr_hub">generated</a> by <a href="mailto:<?php echo $generator_email ?>"><?php echo $generator_name ?></a> at <time dateTime="<?php echo date(DATE_ISO8601, strtotime(date("Y-m-d h:i:s a"))) ?>"><?php echo date("r") ?></time></em>
</div>
</footer>
</body>
</html>

View File

@@ -1,77 +0,0 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>Hacker Public Radio ~ The Technology Community Podcast</title>
<base href="https://hub.hackerpublicradio.org/">
<meta charset="utf-8" />
<meta http-equiv="X-Clacks-Overhead" content="GNU Terry Pratchett" />
<meta http-equiv="last-modified" content="Thu, 28 Dec 2023 17:36:30 +0000">
<meta name="keywords" content="Technology, Tech News, Education, Training" />
<meta name="description" content="Hacker Public Radio is a podcast that releases shows every weekday Monday through Friday. Our shows are produced by the community (you) and can be on any topic that is of interest to hackers and hobbyists." />
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Internal CSS -->
<style type="text/css">
article, aside, dialog, figure, footer, header, hgroup, menu, nav, section {
display: block;
}
#list1, #list2, #list3 {
display:none;
}
table.upload {
border-collapse: separate;
border-spacing: 0 0.75rem;
}
table.upload td {
vertical-align: top;
}
</style>
<link rel="shortcut icon" href="https://hackerpublicradio.org/hpr.ico" >
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio Opus RSS" href="https://hackerpublicradio.org/hpr_opus_rss.php" />
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio Ogg Vorbis RSS" href="https://hackerpublicradio.org/hpr_ogg_rss.php" />
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio MP3 RSS" href="https://hackerpublicradio.org/hpr_mp3_rss.php" />
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio Comments RSS" href="https://hackerpublicradio.org/comments.rss" />
<link rel="license" title="CC BY-SA 4.0" href="https://creativecommons.org/licenses/by-sa/4.0/" />
<link href="https://hackerpublicradio.org/css/hpr.css" rel="stylesheet" />
<!--[if IE]>
<link rel="stylesheet" href="https://hackerpublicradio.org/css/hpr.css" media="screen" type="text/css" />
<script src="/JavaScript/html5.js"></script>
<![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.5, user-scalable=yes"/>
</head>
<body id="give">
<div id="container" class="shadow">
<header>
<a href="https://hackerpublicradio.org/"><img id="hprlogo" src="https://hackerpublicradio.org/images/hpr_logo.png" alt="hprlogo"></a>
<div id="hpr_banner">
<p id="accessible_menu">
<a href="https://hackerpublicradio.org/sitemap.html">Site Map</a>
- <a href="#maincontent">skip to main content</a>
</p>
<h1 id="sitename">
<a href="https://hackerpublicradio.org/correspondents/index.html">H</a>acker
<a href="https://hackerpublicradio.org/comments_viewer.html">P</a>ublic
<a href="https://hackerpublicradio.org/syndication.html">R</a>adio
</h1>
<h2>Your ideas, projects, opinions - podcasted.</h2>
<h3>New episodes every weekday Monday through Friday.<br />
</div>
<hr />
<nav class="menu" role="navigation"> <ul>
<li><a href="https://hub.hackerpublicradio.org/calendar.php"><strong>⇧Upload⇧</strong></a></li>
<li><a href="https://hackerpublicradio.org/index.html"><strong>Home »</strong></a></li>
<li><a href="https://hackerpublicradio.org/syndication.html">Get Shows</a></li>
<li><a href="https://hackerpublicradio.org/about.html#so_you_want_to_record_a_podcast">Give Shows</a></li>
<li><a href="https://hackerpublicradio.org/about.html#how_to_help">Contribute</a></li>
<li><a href="https://hackerpublicradio.org/tags.html">Tags</a></li>
<li><a href="https://hackerpublicradio.org/about.html">About</a></li>
<li><a href="https://hackerpublicradio.org/search.html">Search</a></li>
</ul>
</nav>
</header>
<main id="maincontent">

49
hub/header.php Normal file
View File

@@ -0,0 +1,49 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>Hacker Public Radio ~ The Technology Community Podcast</title>
<base href="<?php echo $hubBaseurl ?>">
<meta charset="utf-8" />
<meta http-equiv="X-Clacks-Overhead" content="GNU Terry Pratchett" />
<meta http-equiv="last-modified" content="Thu, 2 Oct 2025 20:45 +0000">
<meta name="keywords" content="Technology, Tech News, Education, Training" />
<meta name="description" content="Hacker Public Radio is a podcast that releases shows every weekday Monday through Friday. Our shows are produced by the community (you) and can be on any topic that is of interest to hackers and hobbyists." />
<link rel="shortcut icon" href="<?php echo $baseurl ?>hpr.ico" >
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio Opus RSS" href="<?php echo $baseurl ?>hpr_opus_rss.php" />
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio Ogg Vorbis RSS" href="<?php echo $baseurl ?>hpr_ogg_rss.php" />
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio MP3 RSS" href="<?php echo $baseurl ?>hpr_mp3_rss.php" />
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio Comments RSS" href="<?php echo $baseurl ?>comments.rss" />
<link rel="license" title="CC BY-SA 4.0" href="https://creativecommons.org/licenses/by-sa/4.0/" />
<link href="/css/hpr.css" rel="stylesheet" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"/>
</head>
<body>
<div id="top_navigation" class="sr-only">
<nav id="accessible_menu">
<menu>
<li><a href="#main_content">Skip to Main Content</a></li>
<li><a href="<?php echo $referrerurl ?>sitemap.html#main_content">Site Map</a></li>
</menu>
</nav>
<hr class="no-css">
</div>
<header role="banner">
<div class="bounding-box">
<hgroup id="title">
<h1 id="site_acronym"><a href="<?php echo $referrerurl ?>index.html">HPR</a></h1>
<p id="site_name">
<a href="<?php echo $referrerurl ?>correspondents/index.html">H</a>acker
<a href="<?php echo $referrerurl ?>comments_viewer.html">P</a>ublic
<a href="<?php echo $referrerurl ?>syndication.html">R</a>adio
</p>
</hgroup>
<hgroup id="tag_line">
<h2 id="tag1">The Community Podcast</h2>
<p id="tag2">Sharing your ideas, projects, opinions since 2005</p>
<p id="tag3">New episodes every weekday </p>
</hgroup>
</div>
</header>
<main id="maincontent" role="main">

View File

@@ -1,3 +1,5 @@
<?php
header('location:https://hub.hackerpublicradio.org/calendar.php');
header("location:${hubBaseurl}calendar.php");
?>
<meta name="referrer" content="<?php ${referrerurl} ?>">

View File

@@ -3,5 +3,5 @@
#require "/home/hpr/php/include.php";
?>
<?php
header('location:https://hub.hackerpublicradio.org/calendar.php');
header("location:${hubBaseurl}calendar.php");
?>

View File

@@ -26,6 +26,7 @@ if( !isset($row_dupe) or $num_from_this_ip != 0 ) {
header('Cache-Control: no-cache');
header('Pragma: no-cache');
header("Status: 412 Precondition Failed");
include("header.php");
echo "<h1>Existing request detected: ";
$timestamp = time()+date("Z");
echo gmdate("Y-m-d\TH:i:s\Z",$timestamp);
@@ -63,6 +64,7 @@ if( !isset($row_dupe) or $num_from_this_ip != 0 ) {
echo "</pre>\n";
echo "<hr />\n";
file_put_contents($naughtyfile, date('Y-m-d\TH:i:s\Z') . "\t" . getUserIPAdress() . "\tExisting Request\t" . $_SERVER['REQUEST_URI'] . "\t" . $_SERVER["HTTP_USER_AGENT"] . "\n" , FILE_APPEND | LOCK_EX );
include("footer.php");
exit;
}
@@ -150,14 +152,12 @@ $next_show_num = $next_show_num_array[0] + 1;
$next_show_date = date('Y-m-d', strtotime($next_show_num_array[1] . ' + 1 weekday'));
$body="give";
//$body="index_full";
include 'header.html';
include 'header.php';
?>
<main id="maincontent">
<h1>Requesting a slot for your show.</h1>
<p>Please select your desired slot, and enter a valid email address.<br />
See our <a aria-label="Help on adding an episode" href="<?php echo "${baseurl}about.html#adding_an_episode"; ?>">help page</a> for more information</a>
See our <a aria-label="Help on adding an episode" href="<?php echo "${referrerurl}about.html#adding_an_episode"; ?>">help page</a> for more information</a>
</p>
<form method="POST" action="request_confirm.php">
<table>
@@ -196,14 +196,12 @@ include 'header.html';
<td><input required type="email" name="email" placeholder="To send you the upload link"></td>
</tr>
</table>
<p><em>You must have your audio recording ready to upload <a aria-label="Help on the reserving a slot" href="<?php echo "${baseurl}about.html#reserving"; ?>"><strong>before</strong> you pick a slot</a>.</em></p>
<p><em>You must have your audio recording ready to upload <a aria-label="Help on the reserving a slot" href="<?php echo "${referrerurl}about.html#reserving"; ?>"><strong>before</strong> you pick a slot</a>.</em></p>
<input type="submit" value="Next">
</form>
<p>
We will send you an email with a link to where you can upload your show.
</p>
</main>
<?php
include 'footer.html';
include 'footer.php';
?>

View File

@@ -294,12 +294,9 @@ if (!$mailer->send()) {
$body="give";
//$body="index_full";
include 'header.html';
include 'header.php';
?>
<main id="maincontent">
<hr />
<article>
<header>
<h1>Thank you</h1>
@@ -324,8 +321,6 @@ include 'header.html';
<?php print date('Y-m-d\TH:i:s') . "\t" . getUserIP() . "\t" . $db_key . "\t" . $_SERVER["HTTP_USER_AGENT"]; ?>
</pre>
</article>
</main>
<?php
include 'footer.html';
include 'footer.php';
?>

View File

@@ -51,7 +51,7 @@ if ( isset( $_GET['delete'] ) ) {
call412("35a7f4e80ecba8284049e9d6261ae523");
}
else {
header( "Location: https://" . $_SERVER['SERVER_NAME'] . "/calendar.php" ) ;
header( "Location: ${hubBaseurl}calendar.php" ) ;
$dir_structure = "/home/hpr/upload/" . strtotime($db_timestamp) . "_${ep_num}_${ep_date}_${db_key}/";
rrmdir("$dir_structure");
exit;
@@ -106,15 +106,13 @@ if ( !file_exists( $image_url )) {
// $body="give";
//$body="index_full";
include 'header.html';
include 'header.php';
?>
<body>
<link href="quill.snow.css" rel="stylesheet">
<script src="quill.js"></script>
<main id="maincontent">
<hr />
<?php
if ( $ep_num == 9999 ) {
echo "<h2>Uploading to the Reserve Queue.</h2>\n";
@@ -130,11 +128,11 @@ include 'header.html';
<form method="POST" action="upload_confirm.php" enctype="multipart/form-data">
<table class="upload">
<tr>
<td>Host Email (<a href="<?php echo "${baseurl}about.html#email"; ?>" target="_blank">?</a>):</td>
<td>Host Email (<a href="<?php echo "${referrerurl}about.html#email"; ?>" target="_blank">?</a>):</td>
<td><?php echo $email;?></td>
</tr>
<tr>
<td>Image: (<a href="<?php echo "${baseurl}about.html#image"; ?>" target="_blank">?</a>)</td>
<td>Image: (<a href="<?php echo "${referrerurl}about.html#image"; ?>" target="_blank">?</a>)</td>
<td>
<?php
echo "<img src=\"$image_url\" alt=\"host image\" /><br /><small><em>";
@@ -180,15 +178,15 @@ include 'header.html';
<h2>Please fill in some information about this episode</h2>
<table class="upload">
<tr>
<td><strong>Title(*) (<a href="<?php echo "${baseurl}about.html#Title"; ?>" target="_blank">?</a>):</strong></td>
<td><strong>Title(*) (<a href="<?php echo "${referrerurl}about.html#Title"; ?>" target="_blank">?</a>):</strong></td>
<td><input required type="text" name="title" size="50" maxlength="100" placeholder="Enter a short descriptive title for your show."></td>
</tr>
<tr>
<td><strong>Summary(*) (<a href="<?php echo "${baseurl}about.html#Short_Summary"; ?>" target="_blank">?</a>):</strong></td>
<td><strong>Summary(*) (<a href="<?php echo "${referrerurl}about.html#Short_Summary"; ?>" target="_blank">?</a>):</strong></td>
<td><input required type="text" name="summary" size="70" maxlength="100" placeholder="This is a short 100 character summary of what your show is about."></td>
</tr>
<tr>
<td><strong>Explicit: (<a href="<?php echo "${baseurl}about.html#Explicit"; ?>" target="_blank">?</a>)</strong></td>
<td><strong>Explicit: (<a href="<?php echo "${referrerurl}about.html#Explicit"; ?>" target="_blank">?</a>)</strong></td>
<td>
Is the show <em>Explicit</em> ?:
<input required type="radio" name="explicit" value="Yes">Yes
@@ -197,7 +195,7 @@ include 'header.html';
</td>
</tr>
<tr>
<td><strong>License: (<a href="<?php echo "${baseurl}about.html#License"; ?>" target="_blank">?</a>)</strong></td>
<td><strong>License: (<a href="<?php echo "${referrerurl}about.html#License"; ?>" target="_blank">?</a>)</strong></td>
<td>
<select name="license">
<option value="CC-BY-SA" selected>CC-BY-SA</option>
@@ -212,7 +210,7 @@ include 'header.html';
</td>
</tr>
<tr>
<td><strong>Notes(*) (<a href="<?php echo "${baseurl}about.html#show_notes"; ?>" target="_blank">?</a>):</strong></td>
<td><strong>Notes(*) (<a href="<?php echo "${referrerurl}about.html#show_notes"; ?>" target="_blank">?</a>):</strong></td>
<td>
<noscript>
<textarea required name="notes" maxlength="40000" rows="20" cols="70" placeholder="Please add your show notes here." ></textarea>
@@ -222,7 +220,7 @@ include 'header.html';
</tr>
<noscript>
<tr>
<td>Format: (<a href="<?php echo "${baseurl}about.html#shownotes_format"; ?>" target="_blank">?</a>)</td>
<td>Format: (<a href="<?php echo "${referrerurl}about.html#shownotes_format"; ?>" target="_blank">?</a>)</td>
<td>
<small>What format if any did you just use in the show notes above ?</small><br />
<select name="shownotes_format">
@@ -237,7 +235,7 @@ include 'header.html';
</tr>
</noscript>
<tr>
<td>Series: (<a href="<?php echo "${baseurl}about.html#series"; ?>" target="_blank">?</a>)</td>
<td>Series: (<a href="<?php echo "${referrerurl}about.html#series"; ?>" target="_blank">?</a>)</td>
<td>
<?php
$result = mysqli_query($connection, "SELECT id, name FROM miniseries WHERE private=0 ORDER BY name ASC");
@@ -251,22 +249,22 @@ include 'header.html';
</td>
</tr>
<tr>
<td>Tags: (<a href="<?php echo "${baseurl}about.html#tags"; ?>" target="_blank">?</a>)</td>
<td>Tags: (<a href="<?php echo "${referrerurl}about.html#tags"; ?>" target="_blank">?</a>)</td>
<td><input required type="text" name="tags" size="70" maxlength="100" placeholder="Add a list of comma separated tags." /><br />
Add a list of <strong>comma separated</strong> tags.<br />
If you can provide tags for your show that would be appreciated; you are certainly the best judge of what makes good tags, but if not then a volunteer will add them later.
</td>
</tr>
<tr>
<td><strong>Upload Method: (<a href="<?php echo "${baseurl}about.html#upload_method"; ?>" target="_blank">?</a>)</strong></td>
<td><strong>Upload Method: (<a href="<?php echo "${referrerurl}about.html#upload_method"; ?>" target="_blank">?</a>)</strong></td>
<td>
<em>You have the choice of the following upload options:</em> <br />
<p>
<strong>1. Upload now</strong> via this browser: (<a href="<?php echo "${baseurl}about.html#browser"; ?>" target="_blank">?</a>)<br />
<strong>1. Upload now</strong> via this browser: (<a href="<?php echo "${referrerurl}about.html#browser"; ?>" target="_blank">?</a>)<br />
<input type="file" multiple="multiple" name="media_files[]" title="select if using the http upload option" />
</p>
<p>
<strong>2. Provide a url</strong> we we can directly download it from: (<a href="<?php echo "${baseurl}about.html#url"; ?>" target="_blank">?</a>)<br />
<strong>2. Provide a url</strong> we we can directly download it from: (<a href="<?php echo "${referrerurl}about.html#url"; ?>" target="_blank">?</a>)<br />
This must be accessable using a curl or wget command.<br />
Please avoid services that require login or downloading via a browser.<br />
<input type="url" size="30" name="url" placeholder="https://example.com/hpr9999.flac">
@@ -334,7 +332,6 @@ include 'header.html';
});
</script>
</form>
</main>
<?php
include 'footer.html';
include 'footer.php';
?>

View File

@@ -405,12 +405,9 @@ if (!isset($result)) {
$body="give";
//$body="index_full";
include 'header.html';
include 'header.php';
?>
<main id="maincontent">
<hr />
<article>
<header>
<h1>Thank you</h1>
@@ -430,8 +427,6 @@ include 'header.html';
HPR Bot
</p>
</article>
</main>
<?php
logextra( "Sending email" );
@@ -509,7 +504,7 @@ if (!$mailer->send()) {
}
include 'footer.html';
include 'footer.php';
logextra( "Finished upload_confirm.php");

View File

@@ -11,13 +11,25 @@ $mailerHost = "smtp.example.com";
$mailerUsername = 'robot@example.com';
$mailerPassword = 'THE_SMTP_MAIL_PASSWORD_HERE';
$generator_name = 'The HPR Robot';
$generator_email = 'robot.nospam@nospam.hackerpublicradio.org';
$hubBaseurl = "https://hub.hackerpublicradio.org/";
$baseurl = "https://hackerpublicradio.org/";
$comment_directory = "/path/to/comments";
$naughtyfile = '/path/to/naughty.txt';
$naughty_stings_file = '/path/to/strings.txt';
$justification_file = '/path/to/justification.txt';
# Read more: http://vidiame.com/php/how-to-block-multiple-ip-addresses-using-php
# The $referrerurl is used for links to pages from the orginating HPR site.
$referrerurl = $baseurl;
session_start();
if ($_SESSION['referrerurl']) {
$referrerurl = $_SESSION['referrerurl'];
}
else if ($_SERVER["HTTP_REFERER"] && !str_starts_with($_SERVER["HTTP_REFERER"], $hubBaseurl)) {
$_SESSION['referrerurl'] = $_SERVER["HTTP_REFERER"];
$referrerurl = $_SERVER["HTTP_REFERER"];
}
?>