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'>
2015-03-27 15:49:25 +01:00
<% gettext Pagination %>
2015-02-06 09:59:02 +01:00
</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'>
2015-03-27 15:49:25 +01:00
<label class='uk-form-label' for='archiveMode'>
2015-02-06 09:59:02 +01:00
<% 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>
<fieldset class='uk-margin-top'>
<legend><% gettext Advanced %></legend>
<div class='uk-form-row'>
2015-03-27 15:48:35 +01:00
<label class='uk-form-label' for='maxImageWidth'>
2015-03-27 15:55:05 +01:00
<% gettext 'Image Dimension Limits' %>
2015-03-27 15:48:35 +01:00
<i class='uk-icon-info-circle uk-text-muted' title='<% gettext "If you want to resize the image please specify your desired maximum width and/or maximum height in pixels. If you specify both the image will be resized to match both criterias, but the image ratio will be preserved. If the width or height of your image exceeds 100 pixels Antville automatically creates a thumbnail of it, too." %> ' data-uk-tooltip='{pos: "right"}'></i>
</label>
<div class='uk-form-controls'>
<% site.input maxImageWidth type='number' min=1 class='uk-form-width-small' %>
×
<% site.input maxImageHeight type='number' min=1 class='uk-form-width-small' %> <% gettext Pixels %>
</div>
</div>
<div class='uk-form-row'>
<label class='uk-form-label' for='trollFilter'>
2015-03-22 15:14:49 +01:00
<% 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'>
2015-03-27 15:49:25 +01:00
<label class='uk-form-label' for='spamfilter' >
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'>
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>
2015-03-27 15:49:25 +01:00
<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='<% 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>
</div>
</div>
2015-03-22 15:14:49 +01:00
<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>
2015-03-27 15:49:25 +01:00
<% site.skin $Site#admin restricted=true %>
2015-02-06 09:59:02 +01:00
<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 %>
2015-03-27 22:02:27 +01:00
<header class='av-header <% if <% site.id %> is <% root.id %> then 'av-root-site' %>'>
2015-03-29 19:18:04 +02:00
<div class='av-header-bg-chaos'></div>
<div class='av-header-bg-dots'></div>
2015-01-11 13:22:37 +01:00
<div class='av-title'>
2015-03-29 16:30:09 +02:00
<% if <% site.id %> is <% root.id %> then
<% image /big.gif | site.link title=<% site.tagline %> %>
else
<% site.title | site.link title=<% site.tagline %> %>
%>
2015-01-11 13:22:37 +01:00
</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 %> &
2015-03-27 15:49:25 +01:00
<% image /helma.png | link http://helma.org %>
2015-01-11 13:22:37 +01:00
</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-03-27 18:53:26 +01:00
if (!document.querySelector('link[href="<% site.href main.css %>"]')) {
2015-01-24 20:01:25 +01:00
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-25 19:27:20 +01:00
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;
}
}
2015-03-27 11:50:14 +01:00
.uk-button:not(.uk-button-success) {
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;
2015-03-25 19:27:20 +01:00
}
2015-01-28 17:03:22 +01:00
.av-upload-controls {
position: absolute;
z-index: 2;
top: 0;
left: 0;
}
}
2015-03-25 19:27:20 +01:00
.av-upload-drop {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.8);
z-index: 10;
i {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 20em;
&.av-upload-glow {
animation-name: av-upload-glow;
animation-duration: 3s;
animation-direction: alternate;
animation-iteration-count: infinte;
-webkit-animation-name: av-upload-glow;
-webkit-animation-duration: 0.5s;
-webkit-animation-direction: alternate;
-webkit-animation-iteration-count: infinite;
}
@keyframes av-upload-glow {
0% {color: inherit;}
100% {color: @link-color;}
}
@-webkit-keyframes av-upload-glow {
0% {color: inherit;}
100% {color: @link-color;}
}
}
}
2015-01-28 17:03:22 +01:00
.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 {
2015-03-29 19:18:04 +02:00
position: relative;
2015-04-04 14:59:19 +02:00
height: 73px;
2015-01-28 17:03:22 +01:00
margin-top: 5px;
.av-header-bg-chaos {
2015-03-29 16:30:09 +02:00
width: 274px;
2015-01-28 17:03:22 +01:00
height: 53px;
2015-03-29 19:18:04 +02:00
margin-left: -54px;
2015-01-28 17:03:22 +01:00
background: url('<% image /spritesheet.png url %>');
2015-03-29 16:30:09 +02:00
background-position: -9px -139px;
2015-03-27 22:02:27 +01:00
background-repeat: no-repeat;
2015-01-28 17:03:22 +01:00
}
.av-header-bg-dots {
2015-03-29 19:18:04 +02:00
margin-left: 222px;
2015-01-28 17:03:22 +01:00
position: relative;
2015-03-29 19:18:04 +02:00
top: -46px;
width: 900px - 274px + 54px;
2015-01-28 17:03:22 +01:00
height: 38px;
background: url('<% image /dot.gif url %>');
}
.av-title {
2015-03-29 19:18:04 +02:00
position: absolute;
top: 13px;
2015-01-28 17:03:22 +01:00
overflow: visible;
white-space: nowrap;
font-family: Verdana, Helvetica, Arial, sans-serif;
font-size: 25px;
font-weight: bold;
}
2015-03-27 22:02:27 +01:00
2015-03-29 16:30:09 +02:00
// The root site gets the beautiful logo with ant animation
2015-03-27 22:02:27 +01:00
&.av-root-site {
.av-title {
2015-03-29 19:18:04 +02:00
top: 0px;
left: -55px;
2015-03-27 22:02:27 +01:00
}
}
2015-01-28 17:03:22 +01:00
}
.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 %>
2015-04-18 09:42:20 +02:00
<p><% gettext "This site is going to be deleted completely and irreversibly after {0}." <% site.deleted | format long %> %></p>
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