2008-04-21 13:35:50 +00:00
<% #href %>
2010-01-10 14:40:36 +00:00
<% param.path %>
2008-04-21 13:35:50 +00:00
2008-05-05 00:27:43 +00:00
<% #listItem %>
2008-04-21 20:46:29 +00:00
<tr>
2015-01-11 13:18:11 +01:00
<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>
2008-04-21 20:46:29 +00:00
</tr>
2015-02-06 09:59:02 +01:00
<% #edit %>
<h1><% response.title %></h1>
<div class='uk-article-meta'><% site.skin $HopObject#meta %></div>
<form class='uk-form uk-form-stacked' id="edit" 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 %>
<% gettext 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'>
2015-03-22 15:14:49 +01:00
<label class='uk-form-label'>
<% gettext 'Troll Filter' %>
2015-02-06 09:59:02 +01:00
</label>
<div class='uk-form-controls'>
2015-03-22 15:14:49 +01:00
<% site.textarea trollFilter rows=5 class='uk-width-1-1' %>
2015-02-06 09:59:02 +01:00
</div>
</div>
<div class='uk-form-row'>
<label class='uk-form-label'>
2015-03-22 15:14:49 +01:00
<% gettext 'Referrer Filter' %>
2015-02-06 09:59:02 +01:00
</label>
<div class='uk-form-controls'>
2015-03-22 15:14:49 +01:00
<% 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>
2015-02-06 09:59:02 +01:00
</div>
</div>
<div class='uk-form-row'>
<label class='uk-form-label'>
<% gettext Bookmarklet %>
</label>
<div class='uk-form-controls'>
2015-02-22 14:36:00 +01:00
<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='<% root.static %>../../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>
2015-02-06 09:59:02 +01:00
</div>
</div>
<div class='uk-form-row'>
2015-03-22 15:14:49 +01:00
<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>
2015-02-06 09:59:02 +01:00
<div class='uk-form-controls'>
2015-03-22 15:14:49 +01:00
<% site.diskspace %>
2015-02-06 09:59:02 +01:00
</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>
<% site.link delete <% gettext Delete %> class='uk-button' %>
<a href='<% site.href %>' class="uk-button uk-button-link"><% gettext Cancel %></a>
</div>
</form>
<script>
2015-02-28 16:43:57 +01:00
$('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#edit #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, ''));
2015-02-06 09:59:02 +01:00
});
2015-02-28 16:43:57 +01:00
});
2015-02-06 09:59:02 +01:00
</script>
2015-02-28 14:12:34 +01:00
<% #meta %>
<meta name='description' content='<% response.description %>'>
<meta property='og:type' content='<% response.type %>'>
2015-02-28 17:18:18 +01:00
<% // Facebook is very picky with locales (e.g. complains about 'de' and 'en_AU') %>
<% //site.locale prefix="<meta property='og:locale' content='" suffix="'>" %>
2015-02-28 14:12:34 +01:00
<meta property='og:title' content='<% response.title %>'>
<meta property='og:description' content='<% response.description %>'>
<meta property='og:site_name' content='<% site.title %>'>
2015-02-28 22:00:54 +01:00
<% //response.images prefix="<meta property='og:image' content='" suffix="'>" %>
2015-02-28 14:12:34 +01:00
<meta property='og:url' content='<% href %>'>
2015-02-28 22:00:54 +01:00
<meta name='twitter:card' content='summary'>
2015-02-28 14:12:34 +01:00
<meta name='twitter:title' content='<% response.title %>'>
<meta name='twitter:description' content='<% response.description %>'>
2015-02-28 22:00:54 +01:00
<% //response.image prefix="<meta name='twitter:image:src' content='" suffix="'>" %>
2015-02-28 16:43:57 +01:00
<meta itemprop='name' content='<% response.title %>'>
2015-02-28 14:12:34 +01:00
<meta itemprop='description' content='<% response.description %>'>
2015-02-28 22:00:54 +01:00
<% //response.image prefix="<meta itemprop='image' content='" suffix="'>" %>
<% response.images %>
<% response.videos %>
2015-02-28 14:12:34 +01:00
<% #links %>
<link rel='alternate' type='application/rss+xml' title='Stories and comments of <% site.title %>' href='<% site.href rss.xml %>'>
<link rel='alternate' type='application/rss+xml' title='Stories of <% site.title %>' href='<% site.href stories.xml %>'>
<link rel='alternate' type='application/rss+xml' title='Comments of <% site.title %>' href='<% site.href comments.xml %>'>
<link rel='alternate' type='application/rss+xml' title='Sites of <% root.title %>' href='<% root.href updates.xml %>'>
<link rel='search' type='application/opensearchdescription+xml' href='<% site.href search.xml %>' title='<% site.title %>'>
2015-02-06 09:59:02 +01:00
<% #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>
</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>
2015-01-01 21:00:43 +01:00
<% #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>
2015-01-04 13:27:32 +01:00
<a href='<% site.href %>' class='uk-button uk-button-link'><% gettext Cancel %></a>
2015-01-01 21:00:43 +01:00
</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>
2010-05-30 13:39:09 +00:00
<% #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>
2015-02-15 20:25:24 +01:00
<Image height="16" width="16" type="image/vnd.microsoft.icon"><% image /favicon.png url %></Image>
2010-05-30 13:39:09 +00:00
<Url type="text/html" template="<% site.href search %>?q={searchTerms}" />
<Query role="example" searchTerms="cat" />
</OpenSearchDescription>
2015-02-15 20:26:57 +01:00
<% #page %>
<!DOCTYPE html>
<html <% site.locale prefix='lang=' %>>
<head>
<meta charset='utf-8'>
<title><% response.title %></title>
<link rel='icon' type='image/x-icon' href='<% image /favicon.png url %>'>
<link rel='shortcut icon' type='image/x-icon' href='<% image /favicon.png url %>'>
<link rel='search' type='application/opensearchdescription+xml' href='<% site.href search.xml %>' title='<% site.title %>'>
<link rel='alternate' type='application/rss+xml' title='Stories and comments of <% site.title %>' href='<% site.href rss.xml %>'>
<link rel='alternate' type='application/rss+xml' title='Stories of <% site.title %>' href='<% site.href stories.xml %>'>
<link rel='alternate' type='application/rss+xml' title='Comments of <% site.title %>' href='<% site.href comments.xml %>'>
<link rel='alternate' type='application/rss+xml' title='Sites of <% root.title %>' href='<% root.href updates.xml %>'>
<link rel='stylesheet' type='text/css' href='<% root.href main.css %>'>
<script type='text/javascript' src='<% root.href main.js %>'></script>
</head>
<body class='uk-container-center av-page'>
<body class='uk-container-center av-page'>
<% site.skin $Site#header %>
<div class='uk-grid'>
<div class='uk-width-7-10'>
<% response.message prefix="<div class='uk-alert' data-uk-alert>" suffix=</div> %>
<% response.body %>
</div>
<div class='uk-width-3-10'>
<div class='uk-margin-large-left av-border-left'>
<% membership.status %>
<ul class='uk-nav uk-nav-side'>
<li class='uk-nav-divider'/>
<% site.skin Site#navigation %>
<li class='uk-nav-divider'/>
<li class='uk-margin-left'>
<% site.skin Site#search %>
</li>
<li class='uk-nav-header'/>
<li class='uk-margin-left uk-text-small'>
<% site.calendar %>
</li>
</ul>
</div>
</div>
</div>
<% site.skin $Site#footer %>
</body>
</html>
2015-01-11 13:22:37 +01:00
<% #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>
2008-04-21 13:35:50 +00:00
2015-01-11 13:22:37 +01:00
<% #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>
2008-04-21 13:35:50 +00:00
2015-01-24 20:01:25 +01:00
<% #javascript %>
2015-02-21 19:21:35 +01:00
$(function () {
2015-02-21 19:47:06 +01:00
// Unhide hidden links triggering JavaScript
$('a[href="javascript:"]:hidden').css('display', 'inline-block');
2015-02-21 19:21:35 +01:00
2015-01-28 17:03:22 +01:00
// Injecting main.css if necessary for compatibility reasons
2015-01-24 20:01:25 +01:00
if (!document.querySelector('link[href$=main\\.css]')) {
var link = document.createElement('link');
link.href = '<% site.href main.css %>';
link.rel = 'stylesheet';
link.type = 'text/css';
document.head.appendChild(link);
}
2015-01-28 17:03:22 +01:00
});
2015-01-24 20:01:25 +01:00
2015-01-30 15:55:57 +01:00
<% site.skin Site#javascript | script %>
2015-01-24 20:01:25 +01:00
2015-01-28 17:03:22 +01:00
<% #include %>
(function (url) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
2015-01-30 23:59:40 +01:00
document.head.appendChild(script);
2015-01-28 17:03:22 +01:00
})('<% param.href %>');
<% #stylesheet %>
2015-01-30 16:10:11 +01:00
@import '<% root.static ../../styles/main.min.css %>';
2015-01-30 22:22:37 +01:00
// FIXME: compatibility
2015-01-30 21:07:19 +01:00
2015-03-14 16:03:26 +01:00
@base-font: <% value 'base font' default='Helvetica Neue, Helvetica, Arial, sans-serif' %>;
@base-font-size: <% value 'base font size' default="'14px / 20px'" %>;
@base-font-color: <% value 'base font color' default=#444 %>;
@big-font: <% value 'big font' default=@base-font %>;
@big-font-size: <% value 'big font size' default=inherit %>;
@big-font-color: <% value 'big font color' default=@base-font-color %>;
2015-01-30 22:10:39 +01:00
2015-03-14 16:03:26 +01:00
@small-font: <% value 'small font' default=@base-font %>;
@small-font-size: <% value 'small font size' default=inherit %>;
@small-font-color: <% value 'small font color' default=#999 %>;
2015-01-30 21:07:19 +01:00
2015-03-14 16:03:26 +01:00
@active-link-color: <% value 'active link color' default=#d50000 %>;
2015-01-30 21:07:19 +01:00
2015-03-14 16:03:26 +01:00
//
@background: <% value 'background color' default=#fff %>;
@text-color: <% value 'text color' default=@base-font-color %>;
@title-color: <% value 'title color' default=@big-font-color %>;
@link-color: <% value 'link color' default=#ff4040 %>;
@hover-color: <% value 'hover color' default=@active-link-color %>;
@muted-color: <% value 'muted color' default=@small-font-color %>;
2015-03-14 16:30:04 +01:00
@muted-background: fadeout(@muted-color, 90%);
2015-03-17 15:58:57 +01:00
@border-color: fadeout(@muted-color, 75%);
2015-01-31 13:43:11 +01:00
2015-03-14 16:03:26 +01:00
@text-font: normal @base-font-size <% value 'text font' default=@base-font %>;
@title-font: <% value 'title font' default=@big-font %>;
2015-02-01 12:59:37 +01:00
2015-01-30 16:48:09 +01:00
// Overwriting some classes defined by UIKit to go along with Antville’ s layout
2015-03-14 16:03:26 +01:00
html, html.uk-notouch, body {
background-color: @background;
color: @text-color;
font-family: @text-font;
2015-01-30 21:36:35 +01:00
}
2015-01-30 21:07:19 +01:00
h1, h2, h3, h4, h5, h6 {
2015-03-14 16:03:26 +01:00
color: @title-color;
font-family: @title-font;
2015-01-30 16:48:09 +01:00
}
a {
color: @link-color;
&:hover {
color: @hover-color;
}
2015-02-21 19:21:35 +01:00
&[href='javascript:'] {
display: none;
}
2015-01-30 16:48:09 +01:00
}
em {
2015-03-14 16:03:26 +01:00
color: @text-color;
2015-02-01 12:59:37 +01:00
small & {
2015-03-14 16:03:26 +01:00
color: @muted-color;
2015-02-01 12:59:37 +01:00
}
2015-01-30 16:48:09 +01:00
}
img {
2015-01-30 22:10:39 +01:00
max-width: initial; // FIXME: compatibility
2015-02-09 15:46:17 +01:00
&[src$='pixel.gif'] {
width: initial;
height: initial;
}
2015-01-30 16:48:09 +01:00
}
hr {
2015-03-17 15:58:57 +01:00
border-top-color: @border-color;
2015-01-30 16:48:09 +01:00
}
2015-01-30 21:07:19 +01:00
2015-02-01 13:05:48 +01:00
.uk-description-list-line {
overflow: hidden;
}
2015-01-30 21:36:35 +01:00
.uk-text-muted, .uk-article-meta, .uk-description-list-line > dd {
color: @muted-color !important;
2015-01-30 21:07:19 +01:00
}
2015-01-28 17:03:22 +01:00
.uk-table-striped tbody tr:hover, .uk-table-striped tbody tr:nth-of-type(odd) {
background: inherit;
}
.uk-button-group.av-link-group a {
2015-01-30 16:48:09 +01:00
border-right: initial;
2015-01-28 17:03:22 +01:00
}
.uk-nav-divider + .uk-nav-divider,
.uk-nav-header + .uk-nav-header {
display: none;
}
.uk-nav-side .uk-nav-divider {
margin-top: 15px;
border-top: none;
}
2015-03-14 16:03:26 +01:00
.uk-nav-side > li > a {
color: @text-color;
&:hover {
2015-03-14 16:30:04 +01:00
background: @muted-background;
color: @text-color;
2015-03-14 16:03:26 +01:00
text-shadow: none;
}
}
2015-01-28 17:03:22 +01:00
.uk-alert {
2015-01-30 21:36:35 +01:00
background: @muted-background;
border-color: @muted-color;
color: @muted-color;
text-shadow: none;
2015-01-28 17:03:22 +01:00
}
2015-01-30 21:07:19 +01:00
.uk-icon-button {
&:link, &:visited {
2015-03-14 16:03:26 +01:00
background-color: @background;
2015-01-30 21:07:19 +01:00
color: @link-color;
border-color: @link-color;
text-shadow: initial;
}
2015-01-28 17:03:22 +01:00
&:hover {
2015-03-14 16:03:26 +01:00
background-color: @background;
2015-01-30 21:07:19 +01:00
color: @hover-color;
2015-01-28 17:03:22 +01:00
border-color: @hover-color;
2015-01-30 21:07:19 +01:00
text-shadow: initial;
}
}
.uk-button {
2015-03-14 16:03:26 +01:00
text-shadow: initial !important;
2015-01-30 21:07:19 +01:00
&, &:link, &:visited {
2015-03-14 16:03:26 +01:00
background-color: @background;
color: @text-color;
border-color: @text-color;
2015-01-30 21:07:19 +01:00
}
&:hover {
2015-03-14 16:03:26 +01:00
background-color: @background;
2015-01-28 17:03:22 +01:00
color: @hover-color;
2015-01-30 21:07:19 +01:00
border-color: @hover-color;
}
&.uk-button-link {
border: initial;
&:link, &:visited {
color: @link-color;
}
&:hover {
color: @hover-color;
}
}
&.uk-button-primary {
2015-03-14 16:03:26 +01:00
background-color: @background;
2015-01-30 21:07:19 +01:00
border-style: double;
border-color: @link-color;
color: @link-color;
font-weight: bold;
&:hover {
background: inherit;
border-color: @hover-color;
color: @hover-color;
}
2015-01-28 17:03:22 +01:00
}
}
2015-01-30 21:07:19 +01:00
.uk-pagination {
& > li > a {
2015-03-14 16:03:26 +01:00
background: @background;
2015-01-30 21:07:19 +01:00
color: @link-color;
border-color: @link-color;
text-shadow: initial;
&:hover {
2015-03-14 16:03:26 +01:00
background: @background;
2015-01-30 21:07:19 +01:00
color: @hover-color;
border-color: @hover-color;
}
}
& > .uk-active > span {
2015-03-14 16:03:26 +01:00
background: @background;
2015-03-14 16:36:47 +01:00
border-color: @text-color;
color: @text-color;
2015-01-30 21:07:19 +01:00
font-weight: bold;
}
& > .uk-disabled > span {
background: @muted-background;
color: @muted-color;
border-color: @muted-color;
text-shadow: initial;
}
2015-01-28 17:03:22 +01:00
}
2015-01-30 21:07:19 +01:00
.uk-subnav > li > a {
&:link, &:visited {
color: @link-color;
}
2015-01-28 17:03:22 +01:00
&:hover {
color: @hover-color;
}
}
.uk-nav-side > li.uk-active > a {
background: none;
color: @link-color;
box-shadow: none;
font-weight: bold;
}
2015-01-30 16:48:09 +01:00
.uk-thumbnail img {
max-width: 100%;
2015-01-30 15:55:57 +01:00
}
2015-01-30 21:07:19 +01:00
h1 a, .uk-table a {
&:visited {
color: @link-color;
}
&:hover {
color: @hover-color;
}
}
2015-01-30 23:14:11 +01:00
.uk-table th, .uk-table td, {
2015-03-17 15:58:57 +01:00
border-color: @border-color;
2015-01-30 22:10:39 +01:00
}
2015-01-30 23:14:11 +01:00
.uk-form legend:after {
content: '';
display: block;
2015-03-17 15:58:57 +01:00
border-bottom: 1px solid @border-color;
2015-01-30 23:14:11 +01:00
width: 100%;
}
2015-01-31 00:00:30 +01:00
.uk-form select, .uk-form textarea, .uk-form input:not([type]), .uk-form input[type="text"], .uk-form input[type="password"], .uk-form input[type="datetime"], .uk-form input[type="datetime-local"], .uk-form input[type="date"], .uk-form input[type="month"], .uk-form input[type="time"], .uk-form input[type="week"], .uk-form input[type="number"], .uk-form input[type="email"], .uk-form input[type="url"], .uk-form input[type="search"], .uk-form input[type="tel"], .uk-form input[type="color"] {
2015-03-17 15:58:57 +01:00
border-color: @border-color;
2015-01-31 00:00:30 +01:00
}
2015-03-22 15:14:49 +01:00
// Remove the left padding of the first meta subnav item for vertical alignment with the username
h4 + .uk-comment-meta li:first-child {
padding-left: 0;
}
2015-01-28 17:03:22 +01:00
.av-page {
width: 900px; // FIXME: Could we use the `vw` unit already?
}
.av-sprite {
display: inline-block;
vertical-align: middle;
}
2015-02-15 20:25:24 +01:00
.av-ant {
display: inline-block;
margin: 0 0 -2px -2px;
width: 15px;
height: 15px;
background: url(/static/img/ant.svg);
background-size: 15px 15px;
}
2015-01-28 17:03:22 +01:00
.av-border-left {
2015-03-17 15:58:57 +01:00
border-left: 1px solid @border-color;
2015-01-28 17:03:22 +01:00
}
.av-overflow {
// FIXME: Is this cross-browser compatible?
max-width: 0;
overflow: hidden;
}
.av-invisible {
visibility: hidden;
}
.av-upload {
position: relative;
input[type='file'] {
position: relative;
z-index: 1;
visibility: hidden;
}
.av-upload-controls {
position: absolute;
z-index: 2;
top: 0;
left: 0;
}
}
.av-image-box {
display: inline-block;
max-width: 100%;
}
2015-02-21 19:21:35 +01:00
.av-collage {
2015-01-31 13:43:11 +01:00
padding: 0;
2015-01-28 17:03:22 +01:00
.av-tagged-image {
opacity: 0;
img {
2015-01-30 16:48:09 +01:00
max-width: 100%;
2015-01-28 17:03:22 +01:00
display: inline-block;
margin: 0;
padding: 0;
vertical-align: bottom;
opacity: 1;
}
.Caption_Content {
color: #fff;
padding: 10px;
}
}
}
.av-poll-result-bar {
display: inline-block;
height: 0.5rem;
overflow: hidden;
margin-right: 0.5rem;
background-color: @link-color;
}
.av-header {
margin-top: 5px;
.av-header-bg {
position: relative;
}
.av-header-bg-chaos {
float: left;
width: 262px;
height: 53px;
margin-left: -40px;
background: url('<% image /spritesheet.png url %>');
background-position: 5px -139px;
}
.av-header-bg-offset {
height: 53px;
margin-left: 222px;
}
.av-header-bg-dots {
position: relative;
top: 7px;
height: 38px;
background: url('<% image /dot.gif url %>');
background-position-x: 1px;
}
.av-title {
position: relative;
top: -50px;
overflow: visible;
white-space: nowrap;
font-family: Verdana, Helvetica, Arial, sans-serif;
font-size: 25px;
font-weight: bold;
transform: translateY(50%);
}
}
.av-skin-active {
background: #fff;
opacity: .25;
}
2015-01-31 22:11:30 +01:00
.av-locale-needs-translation {
color: @muted-color;
2015-01-28 17:03:22 +01:00
}
.av-layout-sandbox {
height: 22px;
}
.av-layout-sandbox div {
position: fixed;
top: 0;
left: 0;
right: 0;
height: 22px;
padding: 0 20px;
background: url('<% image /sandbox.png url %>');
background-position: 0 23px;
text-align: left;
}
.av-skin-control {
margin: 5px 0;
}
.av-skin-edit-link {
padding: 2px;
text-decoration: none !important;
}
// Overwriting some Helma and Jala classes for debugging and calendar integration
.helma-debug-line /*:has(script)*/ {
border: none !important;
}
.jala-calendar {
width: 100%;
text-align: center;
2015-03-14 16:03:26 +01:00
tbody th {
font-weight: normal;
color: @text-color;
}
2015-01-28 17:03:22 +01:00
2015-03-14 16:03:26 +01:00
.jala-calendar-day {
width: 14.27%;
line-height: 1.2rem;
text-align: center;
a {
font-weight: bold;
}
2015-01-28 17:03:22 +01:00
}
2015-03-14 16:03:26 +01:00
.jala-calendar-selected {
border: 1px solid @muted-color;
border-radius: 4px;
font-weight: bold;
}
2015-01-28 17:03:22 +01:00
2015-03-14 16:03:26 +01:00
.jala-calendar-left {
text-align: center;
vertical-align: baseline;
}
2015-01-28 17:03:22 +01:00
2015-03-14 16:03:26 +01:00
.jala-calendar-right {
border: 0;
text-align: center;
vertical-align: baseline;
}
2015-01-28 17:03:22 +01:00
}
// Overwriting some CSS classes for Google’ s custom search
2015-01-31 16:24:34 +01:00
.gs-webResult.gs-result a.gs-title:link,
.gs-webResult.gs-result a.gs-title:link b,
.gs-imageResult a.gs-title:link,
.gs-imageResult a.gs-title:link b {
color: @link-color !important;
}
.gs-webResult.gs-result a.gs-title:visited,
.gs-webResult.gs-result a.gs-title:visited b,
.gs-imageResult a.gs-title:visited,
.gs-imageResult a.gs-title:visited b {
color: @link-color !important;
}
2015-01-28 17:03:22 +01:00
.gs-result .gs-title, .gs-result .gs-title * {
text-decoration: none !important;
}
a.gs-title:hover {
text-decoration: underline !important;
}
.gsc-results {
2015-01-31 16:24:34 +01:00
border: none !important;
2015-01-28 17:03:22 +01:00
width: auto !important;
}
.cse .gsc-control-cse, .gsc-control-cse, .gsc-result-info, .gcsc-branding, .gsc-table-result, .gsc-thumbnail-inside, .gsc-url-top {
2015-01-31 16:24:34 +01:00
border: none !important;
2015-01-28 17:03:22 +01:00
padding-left: 0 !important;
padding-right: 0 !important;
}
.gsc-results .gsc-cursor-box {
margin: 10px 0 0 0 !important;
}
2015-01-31 16:24:34 +01:00
.gsc-result-info, .gsc-orderby-label, td.gsc-branding-text, td.gcsc-branding-text {
color: @muted-color !important;
}
2015-01-28 17:03:22 +01:00
.gs-no-results-result .gs-snippet, .gs-error-result .gs-snippet {
margin: 0 !important;
2015-01-31 16:24:34 +01:00
border: none !important;
padding: 0 !important;
background-color: inherit !important;
2015-01-28 17:03:22 +01:00
}
.gs-webResult div.gs-visibleUrl, .gs-imageResult div.gs-visibleUrl {
2015-01-31 16:24:34 +01:00
color: @muted-color !important;
}
.gsc-control-cse, .gsc-control-cse-en {
2015-03-14 16:03:26 +01:00
background: @background !important;
2015-01-31 16:24:34 +01:00
}
.gsc-webResult.gsc-result, .gsc-results .gsc-imageResult {
border: none !important;
background: none !important;
}
.gs-webResult .gs-snippet, .gs-imageResult .gs-snippet, .gs-fileFormatType {
2015-03-14 16:03:26 +01:00
color: @text-color !important;
2015-01-31 16:24:34 +01:00
}
.gsc-results .gsc-cursor-box .gsc-cursor-page {
color: @link-color !important;
background: none !important;
2015-01-28 17:03:22 +01:00
}
.gcsc-branding-img-noclear {
width: 51px;
height: 15px;
2015-01-30 16:48:09 +01:00
max-width: initial;
2015-01-28 17:03:22 +01:00
vertical-align: text-bottom;
}
2015-01-31 16:24:34 +01:00
.gsc-above-wrapper-area {
2015-03-17 15:58:57 +01:00
border-bottom-color: @border-color !important;
2015-01-31 16:24:34 +01:00
}
2008-04-21 13:35:50 +00:00
<% #referrers %>
2014-12-21 17:20:22 +01:00
<h1><% response.title %></h1>
2015-01-06 23:13:25 +01:00
<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'>
2015-01-06 23:54:24 +01:00
<label>
<input type="checkbox" id="includeSpam" name="includeSpam" value="checked" <% request.includeSpam prefix='checked="' suffix='"' encoding="form" %> />
2015-01-30 21:42:20 +01:00
<% gettext 'Disable filter' %>
2015-02-28 16:43:57 +01:00
<i class='uk-icon uk-icon-info-circle uk-text-muted' data-uk-tooltip="{pos: 'right'}" title='<% gettext "Edit the filter in the site settings." %>'></i>
2015-01-06 23:54:24 +01:00
</label>
2015-01-06 23:13:25 +01:00
</div>
2014-12-21 17:20:22 +01:00
</div>
2015-01-09 21:02:46 +01:00
<% site.skin $Site#referrerTable %>
2014-12-21 17:20:22 +01:00
</form>
2015-01-09 21:02:46 +01:00
<% #referrerTable %>
2015-02-21 19:21:35 +01:00
<% site.skin $Site#noscript %>
<table class='uk-table uk-table-condensed uk-table-striped uk-table-hover av-referrers'>
2015-01-09 21:02:46 +01:00
<thead>
<tr>
2015-01-11 13:10:46 +01:00
<th class='uk-text-right'><i class='uk-icon-bar-chart'></i></th>
<th><% gettext Referrer %></th>
<th></th>
2015-01-09 21:02:46 +01:00
</tr>
</thead>
<tbody>
<% response.list %>
</tbody>
</table>
2008-05-15 13:02:50 +00:00
<script type="text/javascript">
2015-02-21 19:21:35 +01:00
$('.av-referrers').addClass('uk-hidden');
$('.av-referrer-control a').removeClass('uk-hidden');
2015-01-06 23:13:25 +01:00
var query = new Antville.Query();
var spamFilter = new Antville.Filter([<% site.spamfilter %>]);
var searchFilter = new Antville.Filter(query.filter);
2015-02-21 19:21:35 +01:00
2015-01-06 23:13:25 +01:00
var searchEngineFilters = [
2015-02-21 19:21:35 +01:00
new Antville.Filter("//.*altavista.*/\?", "q"),
new Antville.Filter("//.*bing\..*/\?", "q"),
new Antville.Filter("//.*google\..*/imgres\?", "imgurl"),
new Antville.Filter("//.*google\..*/\?.*q=[^&]", "q"),
new Antville.Filter("//.*search\.yahoo\..*/\?", "p"),
new Antville.Filter("//.*yandex\..*/\?", "text")
2015-01-06 23:13:25 +01:00
];
2015-02-21 19:21:35 +01:00
2015-01-06 23:54:24 +01:00
var urlShortenerCounter = 0;
2015-01-06 23:13:25 +01:00
var urlShortenerFilters = [
2015-02-21 19:21:35 +01:00
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/'),
new Antville.Filter('//.*google\..*/url\?')
2015-01-06 23:13:25 +01:00
];
2015-02-21 19:21:35 +01:00
2015-01-06 23:13:25 +01:00
$('.av-referrer-row').each(function (index) {
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');
2015-02-21 19:21:35 +01:00
2015-01-06 23:13:25 +01:00
control.on('click', function (event) {
event.preventDefault();
2015-01-31 22:11:30 +01:00
var input = prompt("<% gettext 'Are you sure you want to add this URL to the referrer filter? Edit it below to filter a pattern only.' %>", url);
2015-01-06 23:13:25 +01:00
if (input) {
2015-01-09 21:02:46 +01:00
location.href = '<% site.href referrers %>?submit=1&permanent=' + encodeURIComponent(input);
2015-01-06 23:13:25 +01:00
}
});
2015-02-21 19:21:35 +01:00
2015-01-06 23:13:25 +01:00
var referrer = new Antville.Referrer(url, url, count);
ref.html(referrer.text);
2015-02-21 19:21:35 +01:00
2015-01-06 23:13:25 +01:00
if (spamFilter.test(url)) {
if (query.includeSpam) {
ref.addClass('uk-text-muted');
control.remove();
} else {
2015-01-11 13:23:42 +01:00
row.remove();
2015-01-06 23:13:25 +01:00
}
2008-04-21 13:35:50 +00:00
}
2015-02-21 19:21:35 +01:00
2015-01-06 23:13:25 +01:00
if (query.filter && !searchFilter.test(url)) {
2015-01-11 13:23:42 +01:00
row.remove();
2015-01-06 23:13:25 +01:00
}
2015-02-21 19:21:35 +01:00
2015-01-06 23:13:25 +01:00
var re = new RegExp('[:/].*$');
2015-02-21 19:21:35 +01:00
2015-01-06 23:13:25 +01:00
for (var i = 0, filter; i < searchEngineFilters.length; i += 1) {
filter = searchEngineFilters[i];
if (filter.test(url)) {
var host = referrer.text.replace(re, '');
2015-02-21 19:21:35 +01:00
ref.html(referrer.compose('<i><% gettext Search %>:</i>', filter.key));
return;
2015-01-06 23:13:25 +01:00
}
}
2015-02-21 19:21:35 +01:00
for (var i = 0, filter; i < urlShortenerFilters.length; i += 1) {
filter = urlShortenerFilters[i];
if (filter.test(url)) {
urlShortenerCounter += parseInt(count, 10);
var host = referrer.text.replace(re, '');
var url = referrer.url.replace(new RegExp('^(.+//[^/]+).*'), '$1');
ref.attr('href', url).html(host);
return;
2015-01-06 23:54:24 +01:00
}
}
2015-02-21 19:21:35 +01:00
});
$('.av-referrer a').each(function (index) {
var html = $(this).html();
var countElement = $('.av-referrer-count').eq(index);
var count = 0;
$('.av-referrer a').each(function (index2) {
if (index2 <= index) return;
if ($(this).html() === html) {
count += parseInt($('.av-referrer-count').eq(index2).html(), 10);
$(this).parents('.av-referrer-row').addClass('av-delete');
2015-02-28 16:43:57 +01:00
}
2015-02-21 19:21:35 +01:00
});
if (count) {
countElement.html(parseInt(countElement.html(), 10) + count);
}
});
$('.av-referrer-row.av-delete').remove();
var table = $('.av-referrers');
var rows = $('tbody > tr', table);
rows.sort(function (a, b) {
var countA = parseInt($('.av-referrer-count', a).text(), 10);
var countB = parseInt($('.av-referrer-count', b).text(), 10);
return countB - countA;
});
rows.each(function () {
table.append(this);
});
2015-01-11 22:05:05 +01:00
if ($('.av-referrers tbody').children().length > 0) {
$('.av-referrers').removeClass('uk-hidden');
}
2008-05-15 13:02:50 +00:00
</script>
2015-01-11 13:23:42 +01:00
2008-05-15 13:02:50 +00:00
<% #referrer %>
2015-01-06 23:13:25 +01:00
<tr class='av-referrer-row'>
<td class='uk-text-right av-referrer-count'><% param.requests %></td>
2015-01-11 13:06:50 +01:00
<td class='av-referrer av-overflow uk-width-1-1'>
2015-01-06 23:13:25 +01:00
<% param.referrer | link %>
</td>
<td class='av-referrer-control uk-text-right'>
2015-02-21 19:21:35 +01:00
<a href='javascript:' class='uk-hidden'><i class='uk-icon uk-icon-filter'></i></a>
2015-01-06 23:13:25 +01:00
</td>
2014-12-21 17:20:22 +01:00
</tr>
2008-05-15 13:02:50 +00:00
2009-12-13 21:54:58 +00:00
<% #deleted %>
2014-12-21 17:20:22 +01:00
<% gettext "This site is going to be deleted completely and irreversibly after {0}." <% site.deleted | format long %> %>
2009-12-13 21:54:58 +00:00
2008-12-14 19:49:12 +00:00
<% #export %>
2015-01-04 13:27:32 +01:00
<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'>
2010-04-24 12:28:29 +00:00
<% if <% param.status %> is null then <% gettext Start %> else <% gettext Stop %> %>
</button>
2015-01-04 13:27:32 +01:00
<a href='<% site.href %>' class='uk-button uk-link-button'><% gettext Cancel %></a>
</form>
2010-04-10 21:53:53 +00:00
<% #import %>
2015-01-04 13:27:32 +01:00
<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>
2010-04-10 21:53:53 +00:00
2010-05-24 13:32:40 +00:00
<% #notify_block %>
* Refactored Admin prototype by reducing interface, eliminating lenghty help texts and leaving out meaningless features
* Moved SITENOTIFICATIONPERIOD constant, health property as well as getFormOptions(), commitEntries(), commitRequests(), purgeReferrers(), invokeCallbacks(), updateHealth(), exportImport(), updateDomains(), queue() and dequeue() methods from Root to Admin prototype
* Renamed Admin.purgeDatabase() method to Admin.purgeSites() and added code for automatic blocking/deletion of restricted/abandoned sites
* Renamed Root.getScopes() method to Admin.getNotificationScopes()
* Renamed User.getScopes() method to Admin.getCreationScopes()
* Added Admin.getPhaseOutModes() method
* Removed obsolete code
* Fixed and renamed Admin.privateSites to Admin.restrictedSites collection
* Finally added simple and reasonable quota implementation
* Fixed gettext_macro() and ngettext_macro() with check for necessary arguments
* Removed sender argument from global sendMail() method – instead, the root.replyTo property is used
* Fixed some i18n messages
* Moved code setting res.handlers.layout before permission check in HopObject.onRequest() to prevent broken layout in error screen
* Completely rewrote HopObject.notify() method (hopefully fixing issue 49)
* Check free disk space before invoking create_action() of Files and Images prototypes
* Modified output of Membership.toString() method
* Fixed some linebreaks in Membership.skin
* Added option to set session.data.error for additonal information in $Root#error skin
* Slightly modified output of $Root#health skin
* Replaced Root.phaseOutInactiveSites and Root.phaseOutPrivateSites with Root.phaseOutMode
* Removed qualifyingDate property from Root
* Renamed Root.qualifyingPeriod property to Root.probationPeriod
* Removed autoCleanupEnabled and autoCleanupStartTime properties from Root
* Added replyTo property to Root
* Rewrote Root.getCreationPermission() method
* Added #notify_blocking and #notify_deletion skins to $Site.skin
* Replaced Site.notifiedOfBlocking and Site.notifiedOfDeletion properties with Site.notified
* Added Site.diskspace_macro() returning the free disk space in MB
* Fixed bug in Site.main_action() causing erroneous display of deletion warning
2010-01-15 21:32:11 +00:00
<% gettext 'Hello {0}.' <% membership.name %> %>
2014-07-04 15:10:47 +02:00
<% gettext 'The site {0} at {1} will be blocked in {2} because it is being
restricted for too long.' <% site.title %> <%site.href %>
2010-05-24 13:32:40 +00:00
<% ngettext '{0} day' '{0} days' <% root.phaseOutGracePeriod %> %> %>
* Refactored Admin prototype by reducing interface, eliminating lenghty help texts and leaving out meaningless features
* Moved SITENOTIFICATIONPERIOD constant, health property as well as getFormOptions(), commitEntries(), commitRequests(), purgeReferrers(), invokeCallbacks(), updateHealth(), exportImport(), updateDomains(), queue() and dequeue() methods from Root to Admin prototype
* Renamed Admin.purgeDatabase() method to Admin.purgeSites() and added code for automatic blocking/deletion of restricted/abandoned sites
* Renamed Root.getScopes() method to Admin.getNotificationScopes()
* Renamed User.getScopes() method to Admin.getCreationScopes()
* Added Admin.getPhaseOutModes() method
* Removed obsolete code
* Fixed and renamed Admin.privateSites to Admin.restrictedSites collection
* Finally added simple and reasonable quota implementation
* Fixed gettext_macro() and ngettext_macro() with check for necessary arguments
* Removed sender argument from global sendMail() method – instead, the root.replyTo property is used
* Fixed some i18n messages
* Moved code setting res.handlers.layout before permission check in HopObject.onRequest() to prevent broken layout in error screen
* Completely rewrote HopObject.notify() method (hopefully fixing issue 49)
* Check free disk space before invoking create_action() of Files and Images prototypes
* Modified output of Membership.toString() method
* Fixed some linebreaks in Membership.skin
* Added option to set session.data.error for additonal information in $Root#error skin
* Slightly modified output of $Root#health skin
* Replaced Root.phaseOutInactiveSites and Root.phaseOutPrivateSites with Root.phaseOutMode
* Removed qualifyingDate property from Root
* Renamed Root.qualifyingPeriod property to Root.probationPeriod
* Removed autoCleanupEnabled and autoCleanupStartTime properties from Root
* Added replyTo property to Root
* Rewrote Root.getCreationPermission() method
* Added #notify_blocking and #notify_deletion skins to $Site.skin
* Replaced Site.notifiedOfBlocking and Site.notifiedOfDeletion properties with Site.notified
* Added Site.diskspace_macro() returning the free disk space in MB
* Fixed bug in Site.main_action() causing erroneous display of deletion warning
2010-01-15 21:32:11 +00:00
<% gettext "Best regards." %>
<% gettext "The Management" %>
2010-05-24 13:32:40 +00:00
<% #notify_delete %>
* Refactored Admin prototype by reducing interface, eliminating lenghty help texts and leaving out meaningless features
* Moved SITENOTIFICATIONPERIOD constant, health property as well as getFormOptions(), commitEntries(), commitRequests(), purgeReferrers(), invokeCallbacks(), updateHealth(), exportImport(), updateDomains(), queue() and dequeue() methods from Root to Admin prototype
* Renamed Admin.purgeDatabase() method to Admin.purgeSites() and added code for automatic blocking/deletion of restricted/abandoned sites
* Renamed Root.getScopes() method to Admin.getNotificationScopes()
* Renamed User.getScopes() method to Admin.getCreationScopes()
* Added Admin.getPhaseOutModes() method
* Removed obsolete code
* Fixed and renamed Admin.privateSites to Admin.restrictedSites collection
* Finally added simple and reasonable quota implementation
* Fixed gettext_macro() and ngettext_macro() with check for necessary arguments
* Removed sender argument from global sendMail() method – instead, the root.replyTo property is used
* Fixed some i18n messages
* Moved code setting res.handlers.layout before permission check in HopObject.onRequest() to prevent broken layout in error screen
* Completely rewrote HopObject.notify() method (hopefully fixing issue 49)
* Check free disk space before invoking create_action() of Files and Images prototypes
* Modified output of Membership.toString() method
* Fixed some linebreaks in Membership.skin
* Added option to set session.data.error for additonal information in $Root#error skin
* Slightly modified output of $Root#health skin
* Replaced Root.phaseOutInactiveSites and Root.phaseOutPrivateSites with Root.phaseOutMode
* Removed qualifyingDate property from Root
* Renamed Root.qualifyingPeriod property to Root.probationPeriod
* Removed autoCleanupEnabled and autoCleanupStartTime properties from Root
* Added replyTo property to Root
* Rewrote Root.getCreationPermission() method
* Added #notify_blocking and #notify_deletion skins to $Site.skin
* Replaced Site.notifiedOfBlocking and Site.notifiedOfDeletion properties with Site.notified
* Added Site.diskspace_macro() returning the free disk space in MB
* Fixed bug in Site.main_action() causing erroneous display of deletion warning
2010-01-15 21:32:11 +00:00
<% gettext 'Hello {0}.' <% membership.name %> %>
2014-07-04 15:10:47 +02:00
<% gettext 'The site {0} at {1} will be deleted in {2} because it has been
considered as abandoned.' <% site.title %> <% site.href %>
2010-05-24 13:32:40 +00:00
<% ngettext '{0} day' '{0} days' <% root.phaseOutGracePeriod %> %> %>
* Refactored Admin prototype by reducing interface, eliminating lenghty help texts and leaving out meaningless features
* Moved SITENOTIFICATIONPERIOD constant, health property as well as getFormOptions(), commitEntries(), commitRequests(), purgeReferrers(), invokeCallbacks(), updateHealth(), exportImport(), updateDomains(), queue() and dequeue() methods from Root to Admin prototype
* Renamed Admin.purgeDatabase() method to Admin.purgeSites() and added code for automatic blocking/deletion of restricted/abandoned sites
* Renamed Root.getScopes() method to Admin.getNotificationScopes()
* Renamed User.getScopes() method to Admin.getCreationScopes()
* Added Admin.getPhaseOutModes() method
* Removed obsolete code
* Fixed and renamed Admin.privateSites to Admin.restrictedSites collection
* Finally added simple and reasonable quota implementation
* Fixed gettext_macro() and ngettext_macro() with check for necessary arguments
* Removed sender argument from global sendMail() method – instead, the root.replyTo property is used
* Fixed some i18n messages
* Moved code setting res.handlers.layout before permission check in HopObject.onRequest() to prevent broken layout in error screen
* Completely rewrote HopObject.notify() method (hopefully fixing issue 49)
* Check free disk space before invoking create_action() of Files and Images prototypes
* Modified output of Membership.toString() method
* Fixed some linebreaks in Membership.skin
* Added option to set session.data.error for additonal information in $Root#error skin
* Slightly modified output of $Root#health skin
* Replaced Root.phaseOutInactiveSites and Root.phaseOutPrivateSites with Root.phaseOutMode
* Removed qualifyingDate property from Root
* Renamed Root.qualifyingPeriod property to Root.probationPeriod
* Removed autoCleanupEnabled and autoCleanupStartTime properties from Root
* Added replyTo property to Root
* Rewrote Root.getCreationPermission() method
* Added #notify_blocking and #notify_deletion skins to $Site.skin
* Replaced Site.notifiedOfBlocking and Site.notifiedOfDeletion properties with Site.notified
* Added Site.diskspace_macro() returning the free disk space in MB
* Fixed bug in Site.main_action() causing erroneous display of deletion warning
2010-01-15 21:32:11 +00:00
<% gettext "Best regards." %>
<% gettext "The Management" %>
2015-01-01 21:03:26 +01:00
2015-01-11 20:12:01 +01:00
<% #noscript %>
2015-02-21 19:21:35 +01:00
<noscript>
<div class='uk-margin-top'>
<i><% gettext 'Please enable JavaScript in your browser for improved functionality.' %></i>
</div>
</noscript>
2015-01-11 13:22:37 +01:00
<% #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