simplification of buttons and added features
This commit is contained in:
parent
752cd0e35f
commit
6f517b2c6e
|
@ -17,13 +17,17 @@ class OpenTrashmailBackend{
|
||||||
case 'address':
|
case 'address':
|
||||||
return $this->listAccount($_REQUEST['email']?:$this->url[2]);
|
return $this->listAccount($_REQUEST['email']?:$this->url[2]);
|
||||||
case 'read':
|
case 'read':
|
||||||
return $this->readMail($_REQUEST['email'],$_REQUEST['id']);
|
return $this->readMail($_REQUEST['email']?:$this->url[2],$_REQUEST['id']?:$this->url[3]);
|
||||||
case 'raw':
|
case 'raw':
|
||||||
return $this->getRawMail($this->url[2],$this->url[3]);
|
return $this->getRawMail($this->url[2],$this->url[3]);
|
||||||
case 'attachment':
|
case 'attachment':
|
||||||
return $this->getAttachment($this->url[2],$this->url[3]);
|
return $this->getAttachment($this->url[2],$this->url[3]);
|
||||||
case 'delete':
|
case 'delete':
|
||||||
return $this->deleteMail($_REQUEST['email'],$_REQUEST['id']);
|
return $this->deleteMail($_REQUEST['email'],$_REQUEST['id']);
|
||||||
|
case 'random':
|
||||||
|
$addr = generateRandomEmail();
|
||||||
|
//add header HX-Redirect
|
||||||
|
return $this->listAccount($addr);
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -48,6 +52,18 @@ class OpenTrashmailBackend{
|
||||||
else return false;
|
else return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function deleteMail($email,$id)
|
||||||
|
{
|
||||||
|
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
|
||||||
|
return $this->error('Invalid email address');
|
||||||
|
else if(!ctype_digit($id))
|
||||||
|
return $this->error('Invalid id');
|
||||||
|
else if(!emailIDExists($email,$id))
|
||||||
|
return $this->error('Email not found');
|
||||||
|
deleteEmail($email,$id);
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
function getRawMail($email,$id)
|
function getRawMail($email,$id)
|
||||||
{
|
{
|
||||||
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
|
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
|
||||||
|
@ -95,11 +111,12 @@ class OpenTrashmailBackend{
|
||||||
//$email['raw'] = file_get_contents(getDirForEmail($email['email']).DS.$email['id'].'.json');
|
//$email['raw'] = file_get_contents(getDirForEmail($email['email']).DS.$email['id'].'.json');
|
||||||
//$email['parsed'] = json_decode($email['raw'],true);
|
//$email['parsed'] = json_decode($email['raw'],true);
|
||||||
|
|
||||||
var_dump($emaildata);
|
//var_dump($emaildata);
|
||||||
return $this->renderTemplate('email.html',[
|
return $this->renderTemplate('email.html',[
|
||||||
'emaildata'=>$emaildata,
|
'emaildata'=>$emaildata,
|
||||||
'email'=>$email,
|
'email'=>$email,
|
||||||
'mailid'=>$id,
|
'mailid'=>$id,
|
||||||
|
'dateformat'=>$this->settings['DATEFORMAT']
|
||||||
]);
|
]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -109,7 +126,7 @@ class OpenTrashmailBackend{
|
||||||
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
|
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
|
||||||
return $this->error('Invalid email address');
|
return $this->error('Invalid email address');
|
||||||
$emails = getEmailsOfEmail($email);
|
$emails = getEmailsOfEmail($email);
|
||||||
var_dump($emails);
|
//var_dump($emails);
|
||||||
return $this->renderTemplate('email-table.html',[
|
return $this->renderTemplate('email-table.html',[
|
||||||
'email'=>$email,
|
'email'=>$email,
|
||||||
'emails'=>$emails,
|
'emails'=>$emails,
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -13,7 +13,9 @@ if($_SERVER['HTTP_HX_REQUEST']!='true')
|
||||||
{
|
{
|
||||||
if(count($url)==0 || !file_exists(ROOT.DS.implode('/', $url)))
|
if(count($url)==0 || !file_exists(ROOT.DS.implode('/', $url)))
|
||||||
if($url[0]!='api' && $url[0]!='rss')
|
if($url[0]!='api' && $url[0]!='rss')
|
||||||
exit($backend->renderTemplate('index.html'));
|
exit($backend->renderTemplate('index.html',[
|
||||||
|
'url'=>implode('/', $url)
|
||||||
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
<h3>Emails of <?= $email; ?></h3>
|
<nav aria-label="breadcrumb">
|
||||||
|
<ul>
|
||||||
|
<li><?= escape($email) ?></li>
|
||||||
|
<li><a href="/rss/<?= $email ?>">RSS Feed</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
<table role="grid">
|
<table role="grid">
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -38,4 +43,4 @@
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<script>history.pushState({email:"<?= $email ?>"}, "", "/eml/<?= $email ?>");</script>
|
<script>history.pushState({email:"<?= $email ?>"}, "", "/address/<?= $email ?>");</script>
|
|
@ -1,12 +1,22 @@
|
||||||
|
<nav aria-label="breadcrumb">
|
||||||
|
<ul>
|
||||||
|
<li><a href="/address/<?= $email ?>" hx-get="/api/address/<?= $email ?>" hx-target="#main"><?= escape($email) ?></a></li>
|
||||||
|
<li><?= escape($emaildata['parsed']['subject']) ?></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
<article>
|
<article>
|
||||||
<header>Subject: <?= escape($emaildata['parsed']['subject']) ?></header>
|
|
||||||
<header>
|
<header>
|
||||||
|
<p>Subject: <?= escape($emaildata['parsed']['subject']) ?></p>
|
||||||
|
|
||||||
|
<p>Received: <span id="date2-<?= $mailid ?>"><script>document.getElementById('date2-<?= $mailid ?>').innerHTML = moment.unix(parseInt(<?=$mailid?>/1000)).format('<?= $dateformat; ?>');</script></span></p>
|
||||||
|
|
||||||
|
<p>
|
||||||
Reciepients:
|
Reciepients:
|
||||||
<div>
|
|
||||||
<?php foreach ($emaildata['rcpts'] as $to) : ?>
|
<?php foreach ($emaildata['rcpts'] as $to) : ?>
|
||||||
<small class="badge"><?= escape($to) ?></small>
|
<small class="badge"><?= escape($to) ?></small>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</div>
|
</p>
|
||||||
</header>
|
</header>
|
||||||
<?= nl2br(escape($emaildata['parsed']['body'])) ?>
|
<?= nl2br(escape($emaildata['parsed']['body'])) ?>
|
||||||
<footer>
|
<footer>
|
||||||
|
@ -33,4 +43,4 @@
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
|
|
||||||
<script>history.pushState({email:"<?= $email ?>"}, "", "/eml/<?= $email ?>/<?= $mailid ?>");</script>
|
<script>history.pushState({email:"<?= $email ?>",id:"<?= $mailid ?>"}, "", "/read/<?= $email ?>/<?= $mailid ?>");</script>
|
|
@ -5,6 +5,7 @@
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<link rel="stylesheet" href="/css/pico.min.css">
|
<link rel="stylesheet" href="/css/pico.min.css">
|
||||||
|
<link rel="stylesheet" href="/css/fontawesome.min.css">
|
||||||
<link rel="stylesheet" href="/css/opentrashmail.css">
|
<link rel="stylesheet" href="/css/opentrashmail.css">
|
||||||
<title>Open Trashmail</title>
|
<title>Open Trashmail</title>
|
||||||
</head>
|
</head>
|
||||||
|
@ -14,17 +15,15 @@
|
||||||
<nav>
|
<nav>
|
||||||
<ul>
|
<ul>
|
||||||
<li><img src="/imgs/logo_300_light.png" width="50px" /> Open Trashmail</li>
|
<li><img src="/imgs/logo_300_light.png" width="50px" /> Open Trashmail</li>
|
||||||
<li><form id="emailform"><input name="email" type="email" placeholder="email address" aria-label="email address"></form></li>
|
<li><input id="email" hx-post="/api/address" hx-target="#main" name="email" type="email" hx-trigger="input changed delay:500ms" placeholder="email address" aria-label="email address"></li>
|
||||||
<li><button hx-post="/api/address" hx-include="#emailform" hx-target="#main" ><i class="fas fa-arrow-left"></i><i class="fas fa-envelope"></i> Access account</button></li>
|
<li><button hx-get="/api/random" hx-target="#main"><i class="fas fa-random"></i> Generate random</button></li>
|
||||||
<li><button onClick="generateAccount()" id="btn-gen-random" class="btn btn-secondary my-2 my-sm-0"><i class="fas fa-random"></i> Generate random</button></li>
|
|
||||||
<li><button onClick="listAddresses(event)" id="btn-list-addresses" class="btn btn-secondary my-2 my-sm-0" style="display:none;"><i class="fas fa-list"></i> List accounts</button></li>
|
<li><button onClick="listAddresses(event)" id="btn-list-addresses" class="btn btn-secondary my-2 my-sm-0" style="display:none;"><i class="fas fa-list"></i> List accounts</button></li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<main id="main" class="container">
|
<main id="main" class="container" hx-get="/api/<?= $url ?>" hx-trigger="load">
|
||||||
<h1>Welcome to Open Trashmail</h1>
|
|
||||||
<p>Access an email address or generate a new one.</p>
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="/js/htmx.min.js"></script>
|
<script src="/js/htmx.min.js"></script>
|
Loading…
Reference in a new issue