initial commit
This commit is contained in:
commit
1cc4bf3572
254 changed files with 63622 additions and 0 deletions
htdocs/templates
11
htdocs/templates/announcement.html
Normal file
11
htdocs/templates/announcement.html
Normal file
|
@ -0,0 +1,11 @@
|
|||
{{extends file="base.html"}}
|
||||
|
||||
{{block name=content}}
|
||||
<div class='row'>
|
||||
<div class='columns small-12'>
|
||||
<h2>{{$announcement.title}}</h2>
|
||||
<p>{{$announcement.content}}</p>
|
||||
<div class='text-right announce-foot'>{{$announcement.publication_date|date_format:'%A, %Y-%m-%d %H:%M'}}</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/block}}
|
77
htdocs/templates/base.html
Normal file
77
htdocs/templates/base.html
Normal file
|
@ -0,0 +1,77 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang='en'>
|
||||
<head>
|
||||
<title>{{$title|default:'Feedizer'}}</title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<link rel='stylesheet' type="text/css" href="/static/lib/foundation/css/normalize.css">
|
||||
<link rel='stylesheet' type="text/css" href="/static/lib/foundation/css/foundation.min.css">
|
||||
|
||||
<style type='text/css'>
|
||||
body {
|
||||
background-color: #fafafa;
|
||||
}
|
||||
.announce-foot {
|
||||
color: #6F6F6F;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
label small {
|
||||
font-size: 66% !important;
|
||||
text-transform: none !important;
|
||||
}
|
||||
|
||||
.gray-out {
|
||||
opacity: 0.6;
|
||||
transition: opacity 300ms ease-out 0s;
|
||||
}
|
||||
|
||||
.gray-out:active,
|
||||
.gray-out:focus,
|
||||
.gray-out:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
</style>
|
||||
|
||||
{{block name=head}}{{/block}}
|
||||
</head>
|
||||
<body>
|
||||
<header class='row'>
|
||||
<div class='columns small-12'>
|
||||
<a href='/' class='text-center'><h1><span style='color: #E3702D;'>Feedizer</span></h1></a>
|
||||
<hr>
|
||||
</div>
|
||||
</header>
|
||||
{{if isset($globalAnnouncement) and $globalAnnouncement.is_important}}
|
||||
<div class='row'>
|
||||
<div class='columns small-12'>
|
||||
<div class='alert-box warning text-center'>
|
||||
<h3>{{$globalAnnouncement.title}}</h3>
|
||||
{{if $globalAnnouncement.abstract}}
|
||||
<p>{{$globalAnnouncement.abstract}}</p>
|
||||
<p><a href='/announcement/{{$globalAnnouncement.id}}/{{$globalAnnouncement.title}}'>Read more…</a></p>
|
||||
{{else}}
|
||||
<p>{{$globalAnnouncement.content}}</p>
|
||||
{{/if}}
|
||||
<div class='text-right announce-foot'>{{$globalAnnouncement.date|date_format:'%A, %Y-%m-%d %H:%M'}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{block name=content}}No content set.{{/block}}
|
||||
<footer class='row'>
|
||||
<div class='columns small-12'>
|
||||
<hr>
|
||||
<ul class='inline-list'>
|
||||
<li><a href='/'>Home</a></li>
|
||||
<li><a href='/page/about'>About Feedizer</a></li>
|
||||
<li><a href='/page/bot'>FeedizerBot</a></li>
|
||||
<li><a href='/page/tos'>Terms of Service</a></li>
|
||||
<li><a href='/page/imprint'>Impressum</a></li>
|
||||
<li class='right'>Copyright © {{$smarty.now|date_format:'%Y'}} by Fanir</li>
|
||||
</ul>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
73
htdocs/templates/created.html
Normal file
73
htdocs/templates/created.html
Normal file
|
@ -0,0 +1,73 @@
|
|||
{{extends file="base.html"}}
|
||||
|
||||
{{block name=content}}
|
||||
<div class='row text-center'>
|
||||
<div class='columns small-12'>
|
||||
<p>
|
||||
Here's your food– err, feed! Enjoy :)<br>
|
||||
A first entry will be generated within the next five minutes.
|
||||
</p>
|
||||
<div class='show-for-small-only'>
|
||||
<dl>
|
||||
<dt>Info page</dt>
|
||||
<dd><a href="/feed/{{$feed.slug}}/info">/feed/{{$feed.slug}}/info</a></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>Full page</dt>
|
||||
<dd><a href="/feed/{{$feed.slug}}/page/atom">/feed/{{$feed.slug}}/page/atom</a></dd>
|
||||
<dd><a href="/feed/{{$feed.slug}}/page/rss">/feed/{{$feed.slug}}/page/rss</a></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>Diff</dt>
|
||||
<dd><a href="/feed/{{$feed.slug}}/diff/atom">/feed/{{$feed.slug}}/diff/atom</a></dd>
|
||||
<dd><a href="/feed/{{$feed.slug}}/diff/rss">/feed/{{$feed.slug}}/diff/rss</a></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class='show-for-medium-up'>
|
||||
<table style='margin-left: auto; margin-right: auto;'>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Info page</td>
|
||||
<td colspan=2><a href="/feed/{{$feed.slug}}/info">/feed/{{$feed.slug}}/info</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Type</th>
|
||||
<th>Atom</th>
|
||||
<th>RSS</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Full page</td>
|
||||
<td><a href="/feed/{{$feed.slug}}/page/atom">/feed/{{$feed.slug}}/page/atom</a></td>
|
||||
<td><a href="/feed/{{$feed.slug}}/page/rss">/feed/{{$feed.slug}}/page/rss</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Diff</td>
|
||||
<td><a href="/feed/{{$feed.slug}}/diff/atom">/feed/{{$feed.slug}}/diff/atom</a></td>
|
||||
<td><a href="/feed/{{$feed.slug}}/diff/rss">/feed/{{$feed.slug}}/diff/rss</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p>
|
||||
<i>{{$feed.uri}}</i> will be queried
|
||||
{{if $feed.auto_refresh}}
|
||||
every {{$interval_hms}}{{else}}
|
||||
every time the feed is queried{{/if}}{{if $feed.expire}}
|
||||
and expires on {{$feed.expire_date|date_format:'%A, %Y-%m-%d at %H:%M'}}{{/if}}.
|
||||
</p>
|
||||
{{if $feed.description}}
|
||||
<p>
|
||||
You entered the following description:
|
||||
</p>
|
||||
<p>
|
||||
{{$feed.description|escape|replace:"\n":'<br>'}}
|
||||
</p>
|
||||
{{/if}}
|
||||
{{if $feed.password}}
|
||||
<p>
|
||||
You can delete your feed or change its preferences, except the name, by entering the password at the bottom of the info page.
|
||||
</p>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{/block}}
|
17
htdocs/templates/error404.html
Normal file
17
htdocs/templates/error404.html
Normal file
|
@ -0,0 +1,17 @@
|
|||
{{extends file="base.html"}}
|
||||
|
||||
{{block name=content}}
|
||||
<div class='row'>
|
||||
<div class='columns small-12'>
|
||||
<h2>Oops!</h2>
|
||||
<p>
|
||||
The {{$type|default:page}} you tried to open does not
|
||||
exist. You can <a href="javascript:history.back();">
|
||||
go back</a> or <a href="/">go home</a>.
|
||||
</p>
|
||||
<p>
|
||||
I am an Error 404 (Not Found). Retrying is futile.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{{/block}}
|
86
htdocs/templates/feedInfo.html
Normal file
86
htdocs/templates/feedInfo.html
Normal file
|
@ -0,0 +1,86 @@
|
|||
{{extends file="base.html"}}
|
||||
|
||||
{{block name=content}}
|
||||
<div class='row text-center'>
|
||||
<div class='columns small-12'>
|
||||
<h2><small>The Feed</small> {{$feed.slug}}</h2>
|
||||
<p>
|
||||
… fetches <i>{{$feed.uri}}</i>
|
||||
{{if $feed.auto_refresh}}
|
||||
every {{$interval_hms}}{{else}}
|
||||
every time the feed is queried, but not before {{$feed.next_refresh|date_format:'%A, %Y-%m-%d %H:%M'}}{{/if}}{{if $feed.expire}}
|
||||
and expires on {{$feed.expire_date|date_format:'%A, %Y-%m-%d at %H:%M'}}{{/if}}.<br>
|
||||
{{if $feed.auto_refresh}}The next update will be within 5 minutes after {{$feed.next_refresh|date_format:'%A, %Y-%m-%d %H:%M'}}.{{/if}}
|
||||
</p>
|
||||
{{if $feed.description}}
|
||||
<p>Description:</p>
|
||||
<p>
|
||||
{{$feed.description|escape|replace:"\n":'<br>'}}
|
||||
</p>
|
||||
{{/if}}
|
||||
<div class='show-for-small-only'>
|
||||
<dl>
|
||||
<dt>This page</dt>
|
||||
<dd><a href="/feed/{{$feed.slug}}/info">/feed/{{$feed.slug}}/info</a></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>Full page</dt>
|
||||
<dd><a href="/feed/{{$feed.slug}}/page/atom">/feed/{{$feed.slug}}/page/atom</a></dd>
|
||||
<dd><a href="/feed/{{$feed.slug}}/page/rss">/feed/{{$feed.slug}}/page/rss</a></dd>
|
||||
</dl>
|
||||
<dl>
|
||||
<dt>Diff</dt>
|
||||
<dd><a href="/feed/{{$feed.slug}}/diff/atom">/feed/{{$feed.slug}}/diff/atom</a></dd>
|
||||
<dd><a href="/feed/{{$feed.slug}}/diff/rss">/feed/{{$feed.slug}}/diff/rss</a></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class='show-for-medium-up'>
|
||||
<table style='margin-left: auto; margin-right: auto;'>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>This page</td>
|
||||
<td colspan=2><a href="/feed/{{$feed.slug}}/info">/feed/{{$feed.slug}}/info</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Type</th>
|
||||
<th>Atom</th>
|
||||
<th>RSS</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Full page</td>
|
||||
<td><a href="/feed/{{$feed.slug}}/page/atom">/feed/{{$feed.slug}}/page/atom</a></td>
|
||||
<td><a href="/feed/{{$feed.slug}}/page/rss">/feed/{{$feed.slug}}/page/rss</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Diff</td>
|
||||
<td><a href="/feed/{{$feed.slug}}/diff/atom">/feed/{{$feed.slug}}/diff/atom</a></td>
|
||||
<td><a href="/feed/{{$feed.slug}}/diff/rss">/feed/{{$feed.slug}}/diff/rss</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{if $feed.password}}
|
||||
<div class='row gray-out'>
|
||||
<div class='columns medium-8 large-6 small-centered'>
|
||||
<form action='/edit' method=post>
|
||||
<div class='row collapse'>
|
||||
<div class='columns small-4 medium-2'>
|
||||
<label for=password class='prefix'>Password</label>
|
||||
</div>
|
||||
<div class='columns small-8 medium-6'>
|
||||
<input type=password id=password name=password>
|
||||
</div>
|
||||
<div class='columns small-6 medium-2'>
|
||||
<input type=submit class='button tiny postfix' name=submit-edit value="Edit">
|
||||
</div>
|
||||
<div class='columns small-6 medium-2'>
|
||||
<input type=submit class='button alert tiny postfix' name=submit-delete value="Delete">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/block}}
|
14
htdocs/templates/flatpages/about.html
Normal file
14
htdocs/templates/flatpages/about.html
Normal file
|
@ -0,0 +1,14 @@
|
|||
{{extends file="base.html"}}
|
||||
|
||||
{{block name=content}}
|
||||
<div class='row'>
|
||||
<div class='columns small-12'>
|
||||
<h2>What is "Feedizer"?</h2>
|
||||
<p>
|
||||
Stuff needs to be written here…<br>
|
||||
"Coming soon"™
|
||||
</p>
|
||||
<p>Current version: {{$smarty.const.VERSION}}</p>
|
||||
</div>
|
||||
</div>
|
||||
{{/block}}
|
18
htdocs/templates/flatpages/bot.html
Normal file
18
htdocs/templates/flatpages/bot.html
Normal file
|
@ -0,0 +1,18 @@
|
|||
{{extends file="base.html"}}
|
||||
|
||||
{{block name=content}}
|
||||
<div class='row'>
|
||||
<div class='columns small-12'>
|
||||
<h2>About the FeedizerBot</h2>
|
||||
<p>Current version: {{$smarty.const.CRAWLER_VERSION}}, updated on {{$smarty.const.CRAWLER_LAST_UPDATED|date_format:'%A, %Y-%m-%d'}}.</p>
|
||||
<p>
|
||||
More stuff needs to be written…<br>
|
||||
"Coming soon"™
|
||||
</p>
|
||||
<h3>Don't want your site to be feedized?</h3>
|
||||
<p>
|
||||
Support for <code>robots.txt</code> will be added by no later than version 1.0 of the crawler.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{{/block}}
|
12
htdocs/templates/flatpages/tos.html
Normal file
12
htdocs/templates/flatpages/tos.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
{{extends file="base.html"}}
|
||||
|
||||
{{block name=content}}
|
||||
<div class='row'>
|
||||
<div class='columns small-12'>
|
||||
<h2>Terms of Service</h2>
|
||||
<p>
|
||||
By using this service, you understand and acknowledge the following terms of service:
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{{/block}}
|
130
htdocs/templates/home.html
Normal file
130
htdocs/templates/home.html
Normal file
|
@ -0,0 +1,130 @@
|
|||
{{extends file="base.html"}}
|
||||
|
||||
{{block name=head}}
|
||||
<script type='text/javascript'>
|
||||
function updateDescriptionCharCount() {
|
||||
var desclen = document.getElementById('description').value.length;
|
||||
document.getElementById('descriptionCharCount').innerHTML = desclen;
|
||||
if (desclen < 1000)
|
||||
document.getElementById('descriptionContainer').setAttribute('class', 'columns small-12');
|
||||
else
|
||||
document.getElementById('descriptionContainer').setAttribute('class', 'columns small-12 error');
|
||||
}
|
||||
</script>
|
||||
{{/block}}
|
||||
|
||||
{{block name=content}}
|
||||
<div class='row'>
|
||||
<div class='columns small-12 medium-5 large-6'>
|
||||
{{if isset($announcement) and !$announcement.is_important}}
|
||||
<div class='row'>
|
||||
<div class='columns small-12'>
|
||||
<div class='panel callout'>
|
||||
<h3>{{$announcement.title}}</h3>
|
||||
{{if $announcement.abstract}}
|
||||
<p>{{$announcement.abstract}}</p>
|
||||
<p><a href='/announcement/{{$announcement.id}}/{{$announcement.title}}'>Read more…</a></p>
|
||||
{{else}}
|
||||
<p>{{$announcement.content}}</p>
|
||||
{{/if}}
|
||||
<div class='text-right announce-foot'>{{$announcement.date|date_format:'%A, %Y-%m-%d %H:%M'}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<p>
|
||||
Make a feed of almost anything!*<br>
|
||||
<span style='font-size: small;'>* Currently, everything means only HTTP(S)</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class='columns small-12 medium-7 large-6'>
|
||||
<form action='/create/' method='post'>
|
||||
<div class='row'>
|
||||
<div class='columns small-12{{if $form.name.has_error}} error{{/if}}'>
|
||||
<label for=slug>Name <small>Required; Allowed Chars: a-z A-Z 0-9 _ . -</small></label>
|
||||
<input type=text name=slug id=slug required pattern='^[a-zA-Z0-9_\.\+-]+$' placeholder='Name' autofocus value='{{$form.name.value}}'>
|
||||
{{if $form.name.has_error}}<small class='error'>{{$form.name.error_message}}</small>{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='row'>
|
||||
<div class='columns small-12{{if $form.uri.has_error}} error{{/if}}'>
|
||||
<label for=uri>URI <small>Required</small></label>
|
||||
<input type=text name=uri id=uri required pattern='^https?://[a-zA-Z0-9_\.-]+\.[a-zA-Z0-9]{2,}(/.*)?$' placeholder='https://example.com/news/' value='{{$form.uri.value}}'>
|
||||
{{if $form.uri.has_error}}<small class='error'>{{$form.uri.error_message}}</small>{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='row'>
|
||||
<div class='columns small-7 medium-6 large-4{{if $form.interval.has_error}} error{{/if}}'>
|
||||
<input type=radio name=refresh id=refresh_interval value=interval{{if !$form.refresh_on_request.checked}} checked{{/if}}>
|
||||
<label for=refresh_interval class='inline'>Refresh iterval</label>
|
||||
</div>
|
||||
<div class='columns small-5 medium-6 large-3{{if $form.interval.has_error}} error{{/if}}'>
|
||||
<select name=interval id=interval required>
|
||||
<option value='900'{{if $form.interval.value == 900}} selected{{/if}}>15 minutes</option>
|
||||
<option value='1800'{{if $form.interval.value == 1800}} selected{{/if}}>30 minutes</option>
|
||||
<option value='3600'{{if $form.interval.value == 3600 or !isset($form.interval.value)}} selected{{/if}}>1 hour</option>
|
||||
<option value='7200'{{if $form.interval.value == 7200}} selected{{/if}}>2 hours</option>
|
||||
<option value='10800'{{if $form.interval.value == 10800}} selected{{/if}}>3 hours</option>
|
||||
<option value='21600'{{if $form.interval.value == 21600}} selected{{/if}}>6 hours</option>
|
||||
<option value='43200'{{if $form.interval.value == 43200}} selected{{/if}}>12 hours</option>
|
||||
<option value='86400'{{if $form.interval.value == 86400}} selected{{/if}}>24 hours</option>
|
||||
</select>
|
||||
{{if $form.interval.has_error}}<small class='error'>{{$form.interval.error_message}}</small>{{/if}}
|
||||
</div>
|
||||
<div class='columns small-12 medium-12 large-5'>
|
||||
<input type=radio name=refresh id=refresh_on_request value=request {{if $form.refresh_on_request.checked}} checked{{/if}}>
|
||||
<label for=refresh_on_request class='inline'>Refresh on request</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class='row{{if $form.expire.has_error}} error{{/if}}'>
|
||||
<div class='columns small-5 medium-6 large-4'>
|
||||
<input type=checkbox name=expire id=expire{{if $form.expire.checked}} checked{{/if}}>
|
||||
<label for=expire class='inline'>Expire in</label>
|
||||
</div>
|
||||
<div class='columns small-7 medium-6 large-8'>
|
||||
<div class='row collapse'>
|
||||
<div class='columns small-4 medium-5 large-5'>
|
||||
<input type=text name=expire_value id=expire_value value='{{$form.expire.value}}'>
|
||||
</div>
|
||||
<div class='columns small-8 medium-7 large-7'>
|
||||
<select name=expire_unit id=expire_unit class='text-left postfix'>
|
||||
<option value='h'{{if $form.expire.unit == 'h'}} selected{{/if}}>hours</option>
|
||||
<option value='d'{{if $form.expire.unit == 'd'}} selected{{/if}}>days</option>
|
||||
<option value='w'{{if $form.expire.unit == 'w'}} selected{{/if}}>weeks</option>
|
||||
<option value='m'{{if $form.expire.unit == 'm'}} selected{{/if}}>months</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{{if $form.expire.has_error}}<small class='error'>{{$form.expire.error_message}}</small>{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='row'>
|
||||
<div class='columns small-12{{if $form.description.has_error}} error{{/if}}' id='descriptionContainer'>
|
||||
<label for=description>Description <small>No HTML Allowed. <span id='descriptionCharCount'>0</span> of 1000 Characters Used.</small></label>
|
||||
<textarea name=description id=description rows=2 oninput='updateDescriptionCharCount()'>{{$form.description.value}}</textarea>
|
||||
{{if $form.description.has_error}}<small class='error'>{{$form.description.error_message}}</small>{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='row'>
|
||||
<div class='columns small-12{{if $form.password.has_error}} error{{/if}}'>
|
||||
<label for=password>Password <small>for Editing and Deleting</small></label>
|
||||
<input type=password name=password id=password oninput='passwordChanged()'>
|
||||
{{if $form.password.has_error}}<small class='error'>{{$form.password.error_message}}</small>{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='row' id='password_verificationContainer'>
|
||||
<div class='columns small-12{{if $form.password.has_error}} error{{/if}}'>
|
||||
<label for=password_verification>Password verification</label>
|
||||
<input type=password name=password_verification id=password_verification>
|
||||
{{if $form.password_verification.has_error}}<small class='error'>{{$form.password_verification.error_message}}</small>{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='row'>
|
||||
<div class='columns small-12'>
|
||||
<input type=submit class='button' value='Feedize it!'>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{{/block}}
|
Loading…
Add table
Add a link
Reference in a new issue