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-04-28 12:19:20 +00:00
<% #include %>
2014-07-04 21:14:00 +02:00
document.writeln('<script type="text/javascript" src="<% param.href %>"><\/script>');
<% // This does not work because the asynchronous loading causes nasty side-effects
"var script = document.createElement('script');
script.type = 'text/javascript';
script.src = '<% param.href %>';
document.head.appendChild(script);"
%>
2008-04-28 12:19:20 +00:00
2008-05-05 00:27:43 +00:00
<% #listItem %>
2008-04-21 20:46:29 +00:00
<tr>
2014-11-09 20:22:42 +01:00
<td class="small" title="<% site.modified %>" style="text-align: right; vertical-align: baseline; white-space: nowrap;">
<% site.modified text %>
</td>
<td style="vertical-align: baseline; padding-left: 10px;">
<% site.title | site.link %>
</td>
2008-04-21 20:46:29 +00:00
</tr>
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>
<Image height="16" width="16" type="image/vnd.microsoft.icon"><% image /ant-icon.png url %></Image>
<Url type="text/html" template="<% site.href search %>?q={searchTerms}" />
<Query role="example" searchTerms="cat" />
</OpenSearchDescription>
2008-04-21 13:35:50 +00:00
<% #menuExt %>
<script type="text/javascript" defer="defer">
<!--
var win = external.menuArguments;
var url = "<% site.url %>stories/create?content_text=";
2014-07-04 15:10:47 +02:00
var link = escape('<a href="' + win.location.href + '">' +
2008-04-21 13:35:50 +00:00
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
<% #referrers %>
2009-12-13 21:54:58 +00:00
<p class="storyTitle"><% response.title %></p>
<br />
2008-05-15 13:47:58 +00:00
<form action="<% response.action %>" method="get">
2014-07-04 15:10:47 +02:00
<input type="text" name="filter" value="<% request.filter encoding="form" %>"
size="30" />
<button type="submit" name="submit" value="1"><% gettext Filter %></button>
2010-01-10 14:40:36 +00:00
<button onclick="document.location='<% site.href referrers %>'; return false;">
<% gettext Reset %></button>
2008-04-21 13:35:50 +00:00
<div class="small">
2014-07-04 15:10:47 +02:00
<input type="checkbox" id="includeSpam" name="includeSpam" value="checked"
<% request.includeSpam prefix='checked="' suffix='"' encoding="form" %> />
2010-05-03 12:24:05 +00:00
<label for="includeSpam"><% gettext 'Display the referrers unfiltered' %></label>
2008-04-21 13:35:50 +00:00
</div>
<br />
<table border="0" cellspacing="0" cellpadding="2">
<tr>
2010-01-10 14:40:36 +00:00
<td align="right" class="small"><% gettext Hits %></td>
2008-04-21 13:35:50 +00:00
<td width="10" nowrap="nowrap" rowspan="999"> </td>
<td></td>
2010-01-10 14:40:36 +00:00
<td class="small"><% gettext Referrer %></td>
2008-04-21 13:35:50 +00:00
</tr>
2008-05-15 13:02:50 +00:00
<script type="text/javascript">
2008-04-21 13:35:50 +00:00
var referrers = [];
<% site.referrers %>
var query = new Antville.Query();
var spamFilter = new Antville.Filter([<% site.spamfilter %>]);
var searchFilter = new Antville.Filter(query.filter);
var searchEngineFilters = [
new Antville.Filter("http:\/\/.*google.*\?", "q"),
2010-05-03 22:27:20 +00:00
new Antville.Filter("http:\/\/.*bing.*\?", "q"),
2008-04-21 13:35:50 +00:00
new Antville.Filter("http:\/\/.*altavista.*\?", "q"),
2010-05-03 22:27:20 +00:00
new Antville.Filter("http:\/\/.*search\.yahoo.*\?", "p")
2008-12-14 19:49:12 +00:00
];
2008-04-21 13:35:50 +00:00
for (var i in referrers) {
var ref = referrers[i];
var text = ref.text;
var isSpam = spamFilter.test(ref.url);
if (isSpam && !query.includeSpam)
continue;
if (query.filter && !searchFilter.test(ref.url))
continue;
var done = false;
for (var e in searchEngineFilters) {
var filter = searchEngineFilters[e];
if (!done && filter.test(ref.url)) {
text = ref.compose(filter.key, "<em>Search request:</em> ");
done = true;
}
}
document.writeln('<tr>');
document.writeln('<td align="right" valign="top">', ref.count, '</td>');
2014-07-04 15:10:47 +02:00
document.write('<td valign="top">');
2008-05-15 13:02:50 +00:00
if ("<% membership.role %>" === "Owner") {
2014-07-04 15:10:47 +02:00
document.write('<input type="checkbox" name="permanent" value="',
2008-05-15 13:02:50 +00:00
ref.url, '" />');
}
document.writeln('</td>');
2014-07-04 15:10:47 +02:00
document.writeln('<td><a href="', ref.url, '"', (isSpam ?
2008-05-15 13:47:58 +00:00
' style="<% value "Small font color" prefix="color: " %>"' : ''),
2008-05-15 13:02:50 +00:00
'>', text, '</a></td>');
2008-04-21 13:35:50 +00:00
document.writeln('</tr>');
}
2008-05-15 13:02:50 +00:00
</script>
2008-04-21 13:35:50 +00:00
<noscript>
<tr>
<td colspan="3">
2008-05-15 13:02:50 +00:00
<% site.skin $Site#noscript %>
2008-04-21 13:35:50 +00:00
</td>
</tr>
</noscript>
</table>
</form>
2008-05-15 13:02:50 +00:00
<% #referrer %>
2014-07-04 15:10:47 +02:00
referrers.push(new Antville.Referrer("<% param.referrer %>",
2008-05-15 13:02:50 +00:00
"<% param.text %>", <% param.requests %>));
2008-04-21 13:35:50 +00:00
<% #noscript %>
2010-04-03 00:56:02 +00:00
<% gettext "To make spamming referrers and backlinks useless, they are displayed using client-side JavaScript. To see them, your browser needs to be set to permit the execution of JavaScript." %>
2008-04-21 13:35:50 +00:00
2009-12-13 21:54:58 +00:00
<% #deleted %>
2014-07-04 15:10:47 +02:00
<% gettext "This site is going to be deleted completely and irreversibly after {0}."
2010-01-10 14:40:36 +00:00
<% site.deleted | format long %> %>
2009-12-13 21:54:58 +00:00
2008-12-14 19:49:12 +00:00
<% #export %>
2010-04-10 21:53:53 +00:00
<p class="storyTitle"><% gettext "Export Site Data" %></p>
<div class="ample">
2014-07-04 15:10:47 +02:00
<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>'
2010-04-24 12:28:29 +00:00
<% file.created | format short %> '</small>' %> %> else <% param.status %> %></p>
2010-04-10 21:53:53 +00:00
<form action="" method="post">
2010-04-24 12:28:29 +00:00
<button type="submit" name="submit" value="<% if <% param.status %> is null then start else stop %>">
<% if <% param.status %> is null then <% gettext Start %> else <% gettext Stop %> %>
</button>
2010-04-10 21:53:53 +00:00
<a href="" class="cancel"><% gettext Cancel %></a>
</form>
</div>
<% #import %>
<p class="storyTitle"><% gettext 'Import Site Data' %></p>
<div class="ample">
2014-07-04 15:10:47 +02:00
<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>
2010-04-23 19:51:40 +00:00
<form method="post" enctype="multipart/form-data">
2014-07-04 15:10:47 +02:00
2010-04-25 20:19:32 +00:00
<% if <% file.self %> is null then <% site.upload file prefix=<p> suffix=</p> %> %>
2010-04-24 12:28:29 +00:00
<button 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>
2010-04-10 21:53:53 +00:00
<a href="" class="cancel"><% gettext Cancel %></a>
</form>
</div>
2008-04-21 13:35:50 +00:00
<% #edit %>
2014-11-09 20:22:42 +01:00
<h1><% response.title %></h1>
<form class='uk-form uk-form-stacked' id="prefs" method="post" action="<% response.action %>">
<fieldset>
<div class='uk-form-row'>
<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'>
2014-12-08 20:17:46 +01:00
<% gettext Description %>
2014-11-09 20:22:42 +01:00
</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'>
2014-12-14 10:20:04 +01:00
<% site.input pageSize class='uk-width-1-6' type=number min=1 max=25 %>
2014-11-09 20:22:42 +01:00
<% gettext "{0} per page" <% gettext "stories" %> %>
<% // site.select pageMode %>
</div>
</div>
<div class='uk-form-row'>
<label class='uk-form-label' for='commentMode'>
<% gettext Comments %>
</label>
<div class='uk-form-controls'>
<label>
<% site.checkbox commentMode %>
enabled
</label>
</div>
</div>
<div class='uk-form-row'>
<label class='uk-form-label'>
<% gettext Archive %>
</label>
<div class='uk-form-controls'>
<label>
<% site.checkbox archiveMode %>
<% gettext enabled %>
</label>
</div>
</div>
<div class='uk-form-row'>
<label class='uk-form-label' for='locale'>
<% gettext Language %>
</label>
<div class='uk-form-controls'>
<% site.select locale %>
</div>
</div>
<div class='uk-form-row'>
<label class='uk-form-label' for='timeZone'>
<% gettext 'Time Zone' %>
</label>
<div class='uk-form-controls'>
<% site.select timeZone %>
</div>
</div>
<div class='uk-form-row'>
<label class='uk-form-label' for='notificationMode'>
<% gettext Notifications %>
</label>
<div class='uk-form-controls'>
<% site.select notificationMode %>
</div>
</div>
</fieldset>
2014-12-17 23:56:06 +01:00
<fieldset class='uk-margin-top'>
2014-11-09 20:22:42 +01:00
<legend><% gettext Advanced %></legend>
<div class='uk-form-row'>
<label class='uk-form-label' for='callbackUrl'>
<% gettext 'Callback URL' %>
</label>
<div class='uk-form-controls'>
2014-12-14 10:20:04 +01:00
<% site.input callbackUrl type=url class='uk-width-1-1' %>
2014-11-09 20:22:42 +01:00
<label>
<% site.checkbox callbackMode %>
<% gettext enabled %>
</label>
</div>
</div>
<div class='uk-form-row'>
<label class='uk-form-label'>
<% gettext 'Disk Space' %>
</label>
<div class='uk-form-controls'>
<% site.diskspace %>
</div>
</div>
<div class='uk-form-row'>
<label class='uk-form-label'>
<% gettext Bookmarklet %>
</label>
<div class='uk-form-controls'>
<a class='uk-button' data-uk-tooltip='{pos: "right"}' href="javascript: var siteUrl = '<% site.href %>'; var selection = (window.getSelection) ? window.getSelection() : document.selection.createRange(); selection = selection.text || selection; selection = selection + ''; var url='<% site.static %>../www/formica.html?s=' + encodeURIComponent(siteUrl) + '&l=' + encodeURIComponent(location.href) + '&r=' + encodeURIComponent(document.referrer) + '&w=400&h=400&c=' + encodeURIComponent(selection || document.title); window.open(url, 'formica', 'width=630, height=350'); void 0;" title="<% gettext 'Drag to Bookmarks Bar' %>"><% gettext "Post to {0}" <% site.title %> %></a>
</div>
</div>
</fieldset>
<a id="spamfilter" name="spamfilter"></a>
2014-12-17 23:56:06 +01:00
<fieldset class='uk-margin-top'>
2014-11-09 20:22:42 +01:00
<legend><% gettext "Referrer Spam Filter" %></legend>
<div class='uk-form-row'>
<div class='uk-form-controls'>
<% site.textarea spamfilter rows=5 class='uk-width-1-1' %>
<p class="uk-form-help-block">
<% gettext "Enter one filter {0}pattern{1} per line to be applied on every URL in the referrer and backlink lists." '<a href="http://en.wikipedia.org/wiki/Regular_expression">' </a> %>
</p>
</div>
</div>
</fieldset>
2014-12-10 16:50:16 +01:00
<a name='admin' id='admin'></a>
2014-12-17 23:56:06 +01:00
<fieldset class='uk-margin-top'>
2014-12-14 10:20:04 +01:00
<legend><% gettext Administration %></legend>
2014-12-08 20:17:46 +01:00
<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>
2014-12-12 14:50:50 +01:00
<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>
2014-12-08 20:17:46 +01:00
<div class='uk-form-row'>
<a style='color: #fff;' href='<% this.href delete %>' class='uk-button uk-button-danger'>
2014-12-16 23:03:58 +01:00
<i class='uk-icon-trash-o'></i>
2014-12-08 20:17:46 +01:00
Delete this site
</a>
</div>
</fieldset>
2014-12-17 23:56:06 +01:00
<div class='uk-margin-top'>
2014-11-09 20:22:42 +01:00
<button class='uk-button uk-button-primary' type="submit" id="submit" name="save" value="1">
<% gettext Save %>
</button>
<a href="" class="uk-button uk-button-link cancel"><% gettext Cancel %></a>
</div>
</form>
2013-04-06 21:55:25 +00:00
<script>
$(function() {
$('input#callbackMode').on('click', function(event) {
$('input#callbackUrl').prop('disabled', !this.checked);
});
$('input#callbackUrl').prop('disabled', !$('input#callbackMode').prop('checked'));
});
</script>
2014-11-09 20:22:42 +01:00
2014-12-10 16:50:16 +01:00
<% #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>
* 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
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" %>