500 lines
19 KiB
Text
500 lines
19 KiB
Text
<% #href %>
|
|
<% param.path %>
|
|
|
|
<% #listItem %>
|
|
<tr>
|
|
<td class='uk-width-6-10'><% site.title | site.link %></td>
|
|
<td class='uk-text-truncate' title='<% site.modified short %>' data-uk-tooltip="{pos: 'top-left'}">
|
|
<% site.modified text %>
|
|
</td>
|
|
<td><% site.modifier %></td>
|
|
</tr>
|
|
|
|
<% #search %>
|
|
<h1><% response.title %></h1>
|
|
<form class='uk-form' method='post' action='<% site.href search %>'>
|
|
<div class='uk-form-controls'>
|
|
<input type='text' class='uk-width-1-2' name='q' value='<% request.q encoding="form" %>' required>
|
|
<button type='submit' name='search' value='1' class='uk-button uk-button-primary'>
|
|
<% gettext Find %>
|
|
</button>
|
|
<a href='<% site.href %>' class='uk-button uk-button-link'><% gettext Cancel %></a>
|
|
</div>
|
|
</form>
|
|
<p>
|
|
<% if <% response.count %> is null then '' else <% ngettext 'Showing {0} result' 'Showing {0} results' <% response.count %> suffix=. %> %>
|
|
</p>
|
|
<dl class='uk-description-list-line'>
|
|
<% response.result %>
|
|
</dl>
|
|
|
|
<% #opensearchdescription %>
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
|
|
<ShortName><% site.title %></ShortName>
|
|
<Description>Search the site <% site.href %></Description>
|
|
<Tags>antville search</Tags>
|
|
<Image height="16" width="16" type="image/vnd.microsoft.icon"><% image /ant-icon.png url %></Image>
|
|
<Url type="text/html" template="<% site.href search %>?q={searchTerms}" />
|
|
<Query role="example" searchTerms="cat" />
|
|
</OpenSearchDescription>
|
|
|
|
<% #header %>
|
|
<header class='av-header'>
|
|
<div class='av-header-bg'>
|
|
<div class='av-header-bg-chaos'></div>
|
|
<div class='av-header-bg-offset'>
|
|
<div class='av-header-bg-dots'></div>
|
|
</div>
|
|
</div>
|
|
<div class='av-title'>
|
|
<% site.title | site.link title=<% site.tagline %> %>
|
|
</div>
|
|
</header>
|
|
|
|
<% #footer %>
|
|
<footer>
|
|
<hr class='uk-margin-large-top'>
|
|
<div class='uk-text-small uk-margin-bottom uk-float-left'>
|
|
<div><% gettext 'Created {0}' <% site.created text %> %>.</div>
|
|
<div><% gettext 'Last modified {0}' <% site.modified text %> %>.</div>
|
|
</div>
|
|
<div class='uk-text-right'>
|
|
<% image /smallchaos.gif | link http://antville.org %> &
|
|
<% image /helma.png | link http://helma.org %>
|
|
</div>
|
|
</footer>
|
|
|
|
<% #referrers %>
|
|
<h1><% response.title %></h1>
|
|
<form class='uk-form' action="<% response.action %>" method="get">
|
|
<div class='uk-form-row'>
|
|
<input class='uk-width-1-2' type="text" name="filter" value="<% request.filter encoding="form" %>">
|
|
<button class='uk-button uk-button-primary' type="submit" name="submit" value="1"><% gettext Search %></button>
|
|
<a class='uk-button' href='<% site.href referrers %>'>
|
|
<% gettext Reset %>
|
|
</a>
|
|
<div class='uk-form-help-block'>
|
|
<label>
|
|
<input type="checkbox" id="includeSpam" name="includeSpam" value="checked" <% request.includeSpam prefix='checked="' suffix='"' encoding="form" %> />
|
|
<% gettext 'Disable spam filter' %>
|
|
<i class='uk-icon uk-icon-info-circle uk-text-muted' data-uk-tooltip="{pos: 'right'}"title='<% gettext "You can edit the spam filter in the site settings." %>'></i>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<% site.skin $Site#referrerTable %>
|
|
</form>
|
|
|
|
<% #referrerTable %>
|
|
<table class='uk-hidden uk-table uk-table-condensed uk-table-striped uk-table-hover av-referrers'>
|
|
<thead>
|
|
<tr>
|
|
<th class='uk-text-right'><i class='uk-icon-bar-chart'></i></th>
|
|
<th><% gettext Referrer %></th>
|
|
<th></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<% site.skin $Site#referrer %>
|
|
<% response.list %>
|
|
</tbody>
|
|
</table>
|
|
<script type="text/javascript">
|
|
scripts.push(function () {
|
|
var query = new Antville.Query();
|
|
var spamFilter = new Antville.Filter([<% site.spamfilter %>]);
|
|
var searchFilter = new Antville.Filter(query.filter);
|
|
var searchEngineFilters = [
|
|
new Antville.Filter("\/\/.*altavista.*\?", "q"),
|
|
new Antville.Filter("\/\/.*bing\..*\?", "q"),
|
|
new Antville.Filter("\/\/.*google\..*\?", "q"),
|
|
new Antville.Filter("\/\/.*search\.yahoo\..*\?", "p"),
|
|
new Antville.Filter("\/\/.*yandex\..*\?", "text")
|
|
];
|
|
var urlShortenerCounter = 0;
|
|
var urlShortenerFilters = [
|
|
new Antville.Filter('\/\/bit\.ly/'),
|
|
new Antville.Filter('\/\/goo\.gl/'),
|
|
new Antville.Filter('\/\/owl\.ly/'),
|
|
new Antville.Filter('\/\/t\.co/'),
|
|
new Antville.Filter('\/\/tinyurl\.com/')
|
|
];
|
|
$('.av-referrer-row').each(function (index) {
|
|
if (index < 1) return;
|
|
var row = $(this);
|
|
var ref = row.find('.av-referrer a');
|
|
var url = ref.attr('href');
|
|
var count = row.find('.av-referrer-count').html();
|
|
var control = row.find('.av-referrer-control a');
|
|
control.on('click', function (event) {
|
|
event.preventDefault();
|
|
var input = prompt("<% gettext 'Are you sure you want to add this URL to the referrer spam filter?'%> <% gettext 'You can edit it before if you only want to filter a pattern.' %>", url);
|
|
if (input) {
|
|
location.href = '<% site.href referrers %>?submit=1&permanent=' + encodeURIComponent(input);
|
|
}
|
|
});
|
|
var referrer = new Antville.Referrer(url, url, count);
|
|
ref.html(referrer.text);
|
|
for (var i = 0, filter; i < urlShortenerFilters.length; i += 1) {
|
|
filter = urlShortenerFilters[i];
|
|
if (filter.test(url)) {
|
|
urlShortenerCounter += parseInt(count, 10);
|
|
row.remove();
|
|
}
|
|
}
|
|
if (spamFilter.test(url)) {
|
|
if (query.includeSpam) {
|
|
ref.addClass('uk-text-muted');
|
|
control.remove();
|
|
} else {
|
|
row.remove();
|
|
}
|
|
}
|
|
if (query.filter && !searchFilter.test(url)) {
|
|
row.remove();
|
|
}
|
|
var re = new RegExp('[:/].*$');
|
|
for (var i = 0, filter; i < searchEngineFilters.length; i += 1) {
|
|
filter = searchEngineFilters[i];
|
|
if (filter.test(url)) {
|
|
var host = referrer.text.replace(re, '');
|
|
ref.html(referrer.compose('<i><% gettext "Search" %> ' + host + ':</i>', filter.key));
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
var firstRow = $('.av-referrer-row:first');
|
|
if (urlShortenerCounter > 0) {
|
|
firstRow.find('.av-referrer-count')
|
|
.html(urlShortenerCounter)
|
|
.end()
|
|
.find('.av-referrer')
|
|
.html('URL Shorteners')
|
|
.end()
|
|
.find('.av-referrer-control a')
|
|
.remove();
|
|
var rows = $('.av-referrer-row');
|
|
for (var i = 1, count; i < rows.length; i += 1) {
|
|
count = parseInt(rows.eq(i).find('.av-referrer-count').html(), 10);
|
|
if (count >= urlShortenerCounter) {
|
|
firstRow.insertAfter(rows.eq(i));
|
|
break;
|
|
}
|
|
}
|
|
} else {
|
|
firstRow.remove();
|
|
}
|
|
if ($('.av-referrers tbody').children().length > 0) {
|
|
$('.av-referrers').removeClass('uk-hidden');
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<% #referrer %>
|
|
<tr class='av-referrer-row'>
|
|
<td class='uk-text-right av-referrer-count'><% param.requests %></td>
|
|
<td class='av-referrer av-overflow uk-width-1-1'>
|
|
<% param.referrer | link %>
|
|
</td>
|
|
<td class='av-referrer-control uk-text-right'>
|
|
<a href='javascript:'><i class='uk-icon uk-icon-filter'></i></a>
|
|
</td>
|
|
</tr>
|
|
|
|
<% #deleted %>
|
|
<% gettext "This site is going to be deleted completely and irreversibly after {0}." <% site.deleted | format long %> %>
|
|
|
|
<% #export %>
|
|
<h1><% gettext "Export Site Data" %></h1>
|
|
<p>
|
|
<% if <% param.status %> is null then <% if <% file.self %> is null then '' else <% gettext "Download the file {0} or klick “Start” to create a new one." <% file.skin File#main %> '<small>' <% file.created | format short %> '</small>' %> %> else <% param.status %> %>
|
|
</p>
|
|
<form action="" method="post">
|
|
<button type="submit" name="submit" value="<% if <% param.status %> is null then start else stop %>" class='uk-button uk-button-primary'>
|
|
<% if <% param.status %> is null then <% gettext Start %> else <% gettext Stop %> %>
|
|
</button>
|
|
<a href='<% site.href %>' class='uk-button uk-link-button'><% gettext Cancel %></a>
|
|
</form>
|
|
|
|
<% #import %>
|
|
<h1><% gettext 'Import Site Data' %></h1>
|
|
<p>
|
|
<% if <% file.self %> is null then '' else <% gettext "The site is scheduled for importing the file {0}. The imported site data will be available within 24 hours." <% file.skin File#main %> '</a>' '<small>' <% file.created | format short %> '</small>' %> %>
|
|
</p>
|
|
<form class='uk-form uk-form-stacked' method="post" enctype="multipart/form-data">
|
|
<div class='uk-form-row'>
|
|
<label class='uk-form-label' for=''>
|
|
<% gettext File %>
|
|
</label>
|
|
<div class='uk-form-controls'>
|
|
<% if <% file.self %> is null then <% site.upload file %> %>
|
|
</div>
|
|
</div>
|
|
<div class='uk-form-row'>
|
|
<button class='uk-button uk-button-primary' type="submit" name="submit" value="<% if <% file.self %> is null then start else stop %>">
|
|
<% if <% file.self %> is null then <% gettext Start %> else <% gettext Stop %> %>
|
|
</button>
|
|
<a href='<% site.href %>' class='uk-button uk-button-link'><% gettext Cancel %></a>
|
|
</div>
|
|
</form>
|
|
|
|
<% #edit %>
|
|
<h1><% response.title %></h1>
|
|
<div class='uk-article-meta'><% site.skin $HopObject#meta %></div>
|
|
<form class='uk-form uk-form-stacked' id="prefs" method="post" action="<% response.action %>">
|
|
<fieldset>
|
|
<div class='uk-form-row uk-margin-top'>
|
|
<label class='uk-form-label' for='mode'>
|
|
<% gettext Mode %>
|
|
</label>
|
|
<div class='uk-form-controls'>
|
|
<% site.select mode %>
|
|
</div>
|
|
</div>
|
|
<div class='uk-form-row'>
|
|
<label class='uk-form-label' for='title'>
|
|
<% gettext Title %>
|
|
</label>
|
|
<div class='uk-form-controls'>
|
|
<% site.input title class='uk-width-1-1' %>
|
|
</div>
|
|
</div>
|
|
<div class='uk-form-row'>
|
|
<label class='uk-form-label' for='tagline'>
|
|
<% gettext Description %>
|
|
</label>
|
|
<div class='uk-form-controls'>
|
|
<% site.input tagline class='uk-width-1-1' %>
|
|
</div>
|
|
</div>
|
|
<div class='uk-form-row'>
|
|
<label class='uk-form-label' for='pageSize'>
|
|
<% gettext Paging %>
|
|
</label>
|
|
<div class='uk-form-controls'>
|
|
<% site.input pageSize class='uk-width-1-6' type=number min=1 max=25 %>
|
|
<% gettext "{0} per page" <% gettext "stories" %> %>
|
|
<% // site.select pageMode %>
|
|
</div>
|
|
</div>
|
|
<div class='uk-form-row'>
|
|
<label class='uk-form-label' for='commentMode'>
|
|
<% gettext Comments %>
|
|
</label>
|
|
<div class='uk-form-controls'>
|
|
<label>
|
|
<% site.checkbox commentMode %>
|
|
enabled
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class='uk-form-row'>
|
|
<label class='uk-form-label'>
|
|
<% gettext Archive %>
|
|
</label>
|
|
<div class='uk-form-controls'>
|
|
<label>
|
|
<% site.checkbox archiveMode %>
|
|
<% gettext enabled %>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class='uk-form-row'>
|
|
<label class='uk-form-label' for='locale'>
|
|
<% gettext Language %>
|
|
</label>
|
|
<div class='uk-form-controls'>
|
|
<% site.select locale %>
|
|
</div>
|
|
</div>
|
|
<div class='uk-form-row'>
|
|
<label class='uk-form-label' for='timeZone'>
|
|
<% gettext 'Time Zone' %>
|
|
</label>
|
|
<div class='uk-form-controls'>
|
|
<% site.select timeZone %>
|
|
</div>
|
|
</div>
|
|
<div class='uk-form-row'>
|
|
<label class='uk-form-label' for='notificationMode'>
|
|
<% gettext Notifications %>
|
|
</label>
|
|
<div class='uk-form-controls'>
|
|
<% site.select notificationMode %>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
<% site.skin $Site#admin restricted=true %>
|
|
<fieldset class='uk-margin-top'>
|
|
<legend><% gettext Advanced %></legend>
|
|
<div class='uk-form-row'>
|
|
<label class='uk-form-label' for='callbackUrl'>
|
|
<% gettext 'Callback URL' %>
|
|
</label>
|
|
<div class='uk-form-controls'>
|
|
<% site.input callbackUrl type=url class='uk-width-1-1' %>
|
|
<label>
|
|
<% site.checkbox callbackMode %>
|
|
<% gettext enabled %>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class='uk-form-row'>
|
|
<label class='uk-form-label'>
|
|
<% gettext 'Disk Space' %>
|
|
</label>
|
|
<div class='uk-form-controls'>
|
|
<% site.diskspace %>
|
|
</div>
|
|
</div>
|
|
<div class='uk-form-row'>
|
|
<label class='uk-form-label'>
|
|
<% gettext Bookmarklet %>
|
|
</label>
|
|
<div class='uk-form-controls'>
|
|
<a class='uk-button' data-uk-tooltip='{pos: "right"}' href="javascript: var siteUrl = '<% site.href %>'; var selection = (window.getSelection) ? window.getSelection() : document.selection.createRange(); selection = selection.text || selection; selection = selection + ''; var url='<% site.static %>../www/formica.html?s=' + encodeURIComponent(siteUrl) + '&l=' + encodeURIComponent(location.href) + '&r=' + encodeURIComponent(document.referrer) + '&w=400&h=400&c=' + encodeURIComponent(selection || document.title); window.open(url, 'formica', 'width=630, height=350'); void 0;" title="<% gettext 'Drag to Bookmarks Bar' %>"><% gettext "Post to {0}" <% site.title %> %></a>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
<a id="spamfilter" name="spamfilter"></a>
|
|
<fieldset class='uk-margin-top'>
|
|
<legend><% gettext "Referrer Spam Filter" %></legend>
|
|
<div class='uk-form-row'>
|
|
<div class='uk-form-controls'>
|
|
<% site.textarea spamfilter rows=5 class='uk-width-1-1' %>
|
|
<p class="uk-form-help-block">
|
|
<% gettext "Enter one filter {0}pattern{1} per line to be applied on every URL in the referrer and backlink lists." '<a href="http://en.wikipedia.org/wiki/Regular_expression">' </a> %>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
<div class='uk-margin-top'>
|
|
<button class='uk-button uk-button-primary' type="submit" id="submit" name="save" value="1">
|
|
<% gettext Save %>
|
|
</button>
|
|
<a href='<% site.href %>' class="uk-button uk-button-link"><% gettext Cancel %></a>
|
|
</div>
|
|
</form>
|
|
<script>
|
|
scripts.push(function () {
|
|
$('input#callbackMode').on('click', function(event) {
|
|
$('input#callbackUrl').prop('disabled', !this.checked);
|
|
});
|
|
$('input#callbackUrl').prop('disabled', !$('input#callbackMode').prop('checked'));
|
|
|
|
// Group related <option> elements by inserting additional <optgroup> elements.
|
|
var groups = [];
|
|
var element = $('form #timeZone');
|
|
element.find('option').each(function(index, item) {
|
|
var zone = $(item);
|
|
var parts = zone.html().split('/'); // E.g. Europe/Vienna
|
|
var group = parts[0];
|
|
if ($.inArray(group, groups) < 0) {
|
|
groups.push(group);
|
|
}
|
|
});
|
|
groups.sort();
|
|
$.each(groups, function(index, group) {
|
|
var key = group + '/'; // E.g. Europe/
|
|
element.find('option:contains(' + key + ')')
|
|
.wrapAll($('<optgroup>').attr('label', group))
|
|
.each(function(index, item) {
|
|
$(item).html($(item).html().replace(key, ''));
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
|
|
<% #admin %>
|
|
<a name='admin' id='admin'></a>
|
|
<fieldset class='uk-margin-top'>
|
|
<legend><% gettext Administration %></legend>
|
|
<div class='uk-form-row'>
|
|
<label class='uk-form-label' for='status'>
|
|
<% gettext Status %>
|
|
</label>
|
|
<div class='uk-form-controls'>
|
|
<% site.select status %>
|
|
</div>
|
|
</div>
|
|
<div class='uk-form-row'>
|
|
<label class='uk-form-label' for='status'>
|
|
<% gettext Information %>
|
|
</label>
|
|
<div><% ngettext "{0} Story" "{0} Stories" <% count <% site.self stories %> %> %></div>
|
|
<div><% ngettext "{0} Comment" "{0} Comments" <% count <% site.self comments %> %> %></div>
|
|
<div><% ngettext "{0} Image" "{0} Images" <% count <% site.self images %> %> %></div>
|
|
<div><% ngettext "{0} File" "{0} Files" <% count <% site.self files %> %> %></div>
|
|
</div>
|
|
<div class='uk-form-row'>
|
|
<label class='uk-form-label' for='notes'>
|
|
<% gettext Notes %>
|
|
</label>
|
|
<div class='uk-form-controls'>
|
|
<% site.textarea notes class='uk-width-1-1' rows=5 %>
|
|
</div>
|
|
</div>
|
|
<div class='uk-form-row'>
|
|
<a href='<% this.href delete %>' class='uk-button uk-button-danger'>
|
|
<i class='uk-icon-trash-o'></i>
|
|
Delete this site
|
|
</a>
|
|
</div>
|
|
</fieldset>
|
|
|
|
<% #delete %>
|
|
<div class='uk-alert uk-alert-danger'>
|
|
<% gettext 'You are about to delete the whole site which currently contains {0}, {1}, {2}, {3} and {4}.'
|
|
<% ngettext '{0} story' '{0} stories' <% count <% site.self stories %> %> %>
|
|
<% ngettext '{0} comment' '{0} comments' <% count <% site.self comments %> %> %>
|
|
<% ngettext '{0} image' '{0} images' <% count <% site.self images %> %> %>
|
|
<% ngettext '{0} file' '{0} files' <% count <% site.self files %> %> %>
|
|
<% ngettext '{0} poll' '{0} polls' <% count <% site.self polls %> %> %> %>
|
|
<strong><% gettext 'All of this will be deleted irreversibly.' %></strong>
|
|
<% gettext 'Are you sure you want to proceed?' %>
|
|
</div>
|
|
|
|
<% #notify_block %>
|
|
<% gettext 'Hello {0}.' <% membership.name %> %>
|
|
|
|
<% gettext 'The site {0} at {1} will be blocked in {2} because it is being
|
|
restricted for too long.' <% site.title %> <%site.href %>
|
|
<% ngettext '{0} day' '{0} days' <% root.phaseOutGracePeriod %> %> %>
|
|
|
|
<% gettext "Best regards." %>
|
|
<% gettext "The Management" %>
|
|
|
|
<% #notify_delete %>
|
|
<% gettext 'Hello {0}.' <% membership.name %> %>
|
|
|
|
<% gettext 'The site {0} at {1} will be deleted in {2} because it has been
|
|
considered as abandoned.' <% site.title %> <% site.href %>
|
|
<% ngettext '{0} day' '{0} days' <% root.phaseOutGracePeriod %> %> %>
|
|
|
|
<% gettext "Best regards." %>
|
|
<% gettext "The Management" %>
|
|
|
|
<% #include %>
|
|
var script = document.createElement('script');
|
|
script.type = 'text/javascript';
|
|
script.src = '<% param.href %>';
|
|
document.head.appendChild(script);
|
|
|
|
<% #noscript %>
|
|
<% gettext "To make spamming referrers and backlinks useless, they are displayed using client-side JavaScript. To see them, your browser needs to permit the execution of JavaScript." %>
|
|
|
|
<% #menuExt %>
|
|
<script type="text/javascript" defer="defer">
|
|
var win = external.menuArguments;
|
|
var url = "<% site.url %>stories/create?text=";
|
|
var link = escape('<a href="' + win.location.href + '">' +
|
|
win.document.title + "</a>: ");
|
|
var text = escape(win.document.selection.createRange().text);
|
|
win.location.href = url + link + text;
|
|
</script>
|
|
|
|
<% #menuExtRegistry %>
|
|
REGEDIT4
|
|
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\Post to <% site.title %>]
|
|
@="<% site.url %>menuext"
|
|
"contexts"=hex:31
|