1
0
Fork 0

initial commit

This commit is contained in:
fanir 2015-11-13 23:51:46 +01:00
commit 1cc4bf3572
254 changed files with 63622 additions and 0 deletions

View 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}}

View 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 &copy; {{$smarty.now|date_format:'%Y'}} by Fanir</li>
</ul>
</div>
</footer>
</body>
</html>

View 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&ndash; 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}}

View 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}}

View 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}}

View file

@ -0,0 +1,14 @@
{{extends file="base.html"}}
{{block name=content}}
<div class='row'>
<div class='columns small-12'>
<h2>What is &quot;Feedizer&quot;?</h2>
<p>
Stuff needs to be written here…<br>
&quot;Coming soon&quot;&trade;
</p>
<p>Current version: {{$smarty.const.VERSION}}</p>
</div>
</div>
{{/block}}

View 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>
&quot;Coming soon&quot;&trade;
</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}}

View 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
View 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}}