Continue fleshing out project management system

This commit is contained in:
Alex Cabal 2024-12-16 14:56:10 -06:00
parent 657ecc68d4
commit 051e286a6d
19 changed files with 420 additions and 108 deletions

View file

@ -1,17 +1,24 @@
<div class="footer">
<p>
<a href="<?= SITE_URL ?>/donate">Donate</a> &bull; <a href="<?= SITE_URL ?>/contribute">Get involved</a> &bull; <a href="<?= SITE_URL ?>/feeds">Ebook feeds</a>
</p>
<?
$includeLinks = $includeLinks ?? true;
?>
<div class="footer<? if(!$includeLinks){ ?> no-links<? } ?>">
<? if($includeLinks){ ?>
<p>
<a href="<?= SITE_URL ?>/donate">Donate</a> &bull; <a href="<?= SITE_URL ?>/contribute">Get involved</a> &bull; <a href="<?= SITE_URL ?>/feeds">Ebook feeds</a>
</p>
<? } ?>
<p>
<a href="<?= SITE_URL ?>">
<img src="https://standardebooks.org/images/logo-small.png" alt="The Standard Ebooks logo."/>
</a>
</p>
<address>
<p>Standard Ebooks L<sup>3</sup>C</p>
<p>2027 W. Division St. Unit 106</p>
<p>Chicago, IL 60622</p>
</address>
<? if($includeLinks){ ?>
<address>
<p>Standard Ebooks L<sup>3</sup>C</p>
<p>2027 W. Division St. Unit 106</p>
<p>Chicago, IL 60622</p>
</address>
<? } ?>
</div>
</div>
</body>

View file

@ -1,6 +1,7 @@
<?
$preheader = $preheader ?? null;
$letterhead = $letterhead ?? false;
$hasDataTable = $hasDataTable ?? false;
?><!DOCTYPE html>
<html lang="en">
<head>
@ -38,30 +39,30 @@ $letterhead = $letterhead ?? false;
}
<? if($letterhead){ ?>
div.body.letterhead{
background-image: url("https://standardebooks.org/images/logo-email.png");
background-position: top 2em right 2em;
background-repeat: no-repeat;
background-size: 210px 49px;
padding-top: 5em;
}
div.body.letterhead{
background-image: url("https://standardebooks.org/images/logo-email.png");
background-position: top 2em center;
background-repeat: no-repeat;
background-size: 210px 49px;
padding-top: 6em;
}
<? } ?>
<? if($preheader){ ?>
.preheader{
display: none !important;
color: #ffffff;
font-size: 1px;
height: 0;
line-height: 1px;
mso-hide: all;
opacity: 0;
overflow: hidden;
position: absolute;
top: -9999px;
visibility: hidden;
width: 0;
}
.preheader{
display: none !important;
color: #ffffff;
font-size: 1px;
height: 0;
line-height: 1px;
mso-hide: all;
opacity: 0;
overflow: hidden;
position: absolute;
top: -9999px;
visibility: hidden;
width: 0;
}
<? } ?>
img.logo{
@ -140,6 +141,11 @@ $letterhead = $letterhead ?? false;
max-width: 55px;
}
.footer.no-links{
font-size: 1em;
padding-top: 0;
}
footer{
margin-right: 4em;
margin-top: 2em;
@ -184,9 +190,17 @@ $letterhead = $letterhead ?? false;
text-align: center;
}
.letterhead{
text-align: right;
}
<? if($hasDataTable){ ?>
table.data-table td:first-child{
font-weight: bold;
text-align: right;
}
table.data-table td{
padding: .25em;
border: none;
}
<? } ?>
</style>
</head>
<body>

View file

@ -0,0 +1,67 @@
<?
/**
* @var Project $project
* @var string $role
*/
?><?= Template::EmailHeader(['hasDataTable' => true, 'letterhead' => true]) ?>
<p>Youve been assigned a new ebook project to <strong><?= $role ?></strong>:</p>
<table class="data-table">
<tbody>
<tr>
<td>Title:</td>
<td><a href="<?= SITE_URL ?><?= $project->Ebook->Url ?>"><?= Formatter::EscapeHtml($project->Ebook->Title) ?></a></td>
</tr>
<tr>
<td>Producer:</td>
<td>
<? if($project->ProducerEmail !== null){ ?>
<a href="mailto:<?= Formatter::EscapeHtml($project->ProducerEmail) ?>"><?= Formatter::EscapeHtml($project->ProducerName) ?></a>
<? }elseif($project->DiscussionUrl !== null){ ?>
<a href="<?= Formatter::EscapeHtml($project->DiscussionUrl) ?>"><?= Formatter::EscapeHtml($project->ProducerName) ?></a>
<? }else{ ?>
<?= Formatter::EscapeHtml($project->ProducerName) ?>
<? } ?>
</td>
</tr>
<tr>
<td>Manager:</td>
<td>
<a href="<?= SITE_URL ?><?= $project->Manager->Url ?>/projects"><?= Formatter::EscapeHtml($project->Manager->DisplayName) ?></a>
</td>
</tr>
<tr>
<td>Reviewer:</td>
<td>
<a href="<?= SITE_URL ?><?= $project->Reviewer->Url ?>/projects"><?= Formatter::EscapeHtml($project->Reviewer->DisplayName) ?></a>
</td>
</tr>
<tr>
<td>Repository:</td>
<td>
<a href="<?= Formatter::EscapeHtml($project->VcsUrl) ?>">GitHub</a>
</td>
</tr>
<? if($project->DiscussionUrl !== null){ ?>
<tr>
<td>Discussion:</td>
<td>
<a href="<?= Formatter::EscapeHtml($project->DiscussionUrl) ?>">Google Groups</a>
</td>
</tr>
<? } ?>
</tbody>
</table>
<p>If youre unable to <?= $role ?> this ebook project, <a href="mailto:<?= EDITOR_IN_CHIEF_EMAIL_ADDRESS ?>">email the Editor-in-Chief</a> and well reassign it.</p>
<ul>
<li>
<p>
<a href="<?= SITE_URL ?><?= $project->Manager->Url ?>/projects">See all of the ebook projects youre currently assigned to.</a>
</p>
</li>
<li>
<p>
<a href="<?= SITE_URL ?>/projects">See all ebook projects.</a>
</p>
</li>
</ul>
<?= Template::EmailFooter(['includeLinks' => false]) ?>

View file

@ -0,0 +1,28 @@
<?
/**
* @var Project $project
* @var string $role
*/
?>
Youve been assigned a new ebook project to **<?= $role ?>**:
- Title: [<?= Formatter::EscapeMarkdown($project->Ebook->Title) ?>](<?= Formatter::EscapeMarkdown(SITE_URL . $project->Ebook->Url) ?>)
- Producer: <? if($project->ProducerEmail !== null){ ?>[<?= Formatter::EscapeMarkdown($project->ProducerName) ?>](mailto:<?= Formatter::EscapeMarkdown($project->ProducerEmail) ?>)<? }elseif($project->DiscussionUrl !== null){ ?>[<?= Formatter::EscapeMarkdown($project->ProducerName) ?>](<?= Formatter::EscapeMarkdown($project->DiscussionUrl) ?>)<? }else{ ?><?= Formatter::EscapeMarkdown($project->ProducerName) ?><? } ?>
- Manager: [<?= Formatter::EscapeMarkdown($project->Manager->DisplayName) ?>](<?= Formatter::EscapeMarkdown(SITE_URL . $project->Manager->Url . '/projects') ?>)
- Reviewer: [<?= Formatter::EscapeMarkdown($project->Reviewer->DisplayName) ?>](<?= Formatter::EscapeMarkdown(SITE_URL . $project->Reviewer->Url . '/projects') ?>)
- Repository: [GitHub](<?= Formatter::EscapeMarkdown($project->VcsUrl) ?>)
<? if($project->DiscussionUrl !== null){ ?>
- Discussion: [Google Groups](<?= Formatter::EscapeMarkdown($project->DiscussionUrl) ?>)
<? } ?>
If youre unable to <?= $role ?> this ebook project, [email the Editor-in-Chief](mailto:<?= Formatter::EscapeMarkdown(EDITOR_IN_CHIEF_EMAIL_ADDRESS) ?>) and well reassign it.
- [See all of the ebook projects youre currently assigned to.](<?= SITE_URL ?><?= $project->Manager->Url ?>/projects)
- [See all ebook projects.](<?= SITE_URL ?>/projects)

View file

@ -0,0 +1,11 @@
<!doctype html>
<html>
<head>
<title></title>
</head>
<body>
<p>Hi there, I haven't heard from you in a while, and your ebook's Github repo hasn't had any activity for a while either. So, I'm assuming production is either stalled or abandoned, and I'm putting your ebook back on our wanted list so someone else can work on it.</p>
<p>If you're still actively making timely progress on your ebook, please let me know and I'm happy to put your ebook back in the "in production" list for as long as you need. Otherwise, there's nothing else you need to do.</p>
<p>Have a good one!</p>
</body>
</html>

View file

@ -0,0 +1,5 @@
Hi there, I haven't heard from you in a while, and your ebook's Github repo hasn't had any activity for a while either. So, I'm assuming production is either stalled or abandoned, and I'm putting your ebook back on our wanted list so someone else can work on it.
If you're still actively making timely progress on your ebook, please let me know and I'm happy to put your ebook back in the "in production" list for as long as you need. Otherwise, there's nothing else you need to do.
Have a good one!

View file

@ -0,0 +1,11 @@
<!doctype html>
<html>
<head>
<title></title>
</head>
<body>
<p>Hi there, just wanted to check in to see how your ebook production was going. I noticed there hasn't been much activity in the Github repo lately. Are you continuing to make progress?</p>
<p>The toolset has had several updates recently. You can update it by running `pipx upgrade standardebooks`.</p>
<p>Let me know how things are coming along!</p>
</body>
</html>

View file

@ -0,0 +1,5 @@
Hi there, just wanted to check in to see how your ebook production was going. I noticed there hasn't been much activity in the Github repo lately. Are you continuing to make progress?
The toolset has had several updates recently. You can update it by running `pipx upgrade standardebooks`.
Let me know how things are coming along!

View file

@ -55,6 +55,16 @@ $reviewers = User::GetAllByCanReviewProjects();
</span>
</label>
<label>
<span>Automatically update status?</span>
<input type="hidden" name="project-is-status-automatically-updated" value="false" />
<input
type="checkbox"
name="project-is-status-automatically-updated"
<? if($project->IsStatusAutomaticallyUpdated){ ?>checked="checked"<? } ?>
/>
</label>
<label>
<span>VCS URL</span>
<input

View file

@ -16,7 +16,6 @@ $includeStatus = $includeStatus ?? true;
<th scope="col">Producer</th>
<th scope="col">Manager</th>
<th scope="col">Reviewer</th>
<th scope="col">Started</th>
<th scope="col">Last activity</th>
<? if($includeStatus){ ?>
<th scope="col">Status</th>
@ -43,13 +42,10 @@ $includeStatus = $includeStatus ?? true;
<? } ?>
</td>
<td>
<a href="<?= $project->ManagerUser->Url ?>/projects"><?= Formatter::EscapeHtml($project->ManagerUser->DisplayName) ?></a>
<a href="<?= $project->Manager->Url ?>/projects"><?= Formatter::EscapeHtml($project->Manager->DisplayName) ?></a>
</td>
<td>
<a href="<?= $project->ReviewerUser->Url ?>/projects"><?= Formatter::EscapeHtml($project->ReviewerUser->DisplayName) ?></a>
</td>
<td>
<?= $project->Started->format(Enums\DateTimeFormat::ShortDate->value) ?>
<a href="<?= $project->Reviewer->Url ?>/projects"><?= Formatter::EscapeHtml($project->Reviewer->DisplayName) ?></a>
</td>
<td>
<?= $project->LastActivityTimestamp->format(Enums\DateTimeFormat::ShortDate->value) ?>
@ -60,7 +56,7 @@ $includeStatus = $includeStatus ?? true;
</td>
<? } ?>
<td>
<a href="<?= Formatter::EscapeHtml($project->VcsUrl) ?>">GitHub</a>
<a href="<?= Formatter::EscapeHtml($project->VcsUrl) ?>">Respository</a>
</td>
<td>
<? if($project->DiscussionUrl !== null){ ?>