[CORE] Move public resources to a /public directory

Advantages:
* Increases security by preventing direct access to file/
* We are careful and have a defined('GNUSOCIAL') || die() to prevent
  direct access to GS files, but we may miss one or a vendor/extlib may
  not be as careful
* Improves directory structure - It's more natural to physically
  separate what is public from what are GNU social resources
This commit is contained in:
Diogo Cordeiro 2018-07-20 23:00:18 -06:00
parent 966b00617e
commit 1049080df5
405 changed files with 45 additions and 60907 deletions

325
index.php
View File

@ -1,325 +0,0 @@
<?php
/**
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2008, 2009, StatusNet, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @category StatusNet
* @package StatusNet
* @author Brenda Wallace <shiny@cpan.org>
* @author Brion Vibber <brion@pobox.com>
* @author Christopher Vollick <psycotica0@gmail.com>
* @author CiaranG <ciaran@ciarang.com>
* @author Craig Andrews <candrews@integralblue.com>
* @author Evan Prodromou <evan@controlezvous.ca>
* @author Gina Haeussge <osd@foosel.net>
* @author James Walker <walkah@walkah.net>
* @author Jeffery To <jeffery.to@gmail.com>
* @author Mike Cochrane <mikec@mikenz.geek.nz>
* @author Robin Millette <millette@controlyourself.ca>
* @author Sarven Capadisli <csarven@controlyourself.ca>
* @author Tom Adams <tom@holizz.com>
* @author Zach Copley <zach@status.net>
* @copyright 2009 Free Software Foundation, Inc http://www.fsf.org
*
* @license GNU Affero General Public License http://www.gnu.org/licenses/
*/
$_startTime = microtime(true);
$_perfCounters = array();
// We provide all our dependencies through our own autoload.
// This will probably be configurable for distributing with
// system packages (like with Debian apt etc. where included
// libraries are maintained through repositories)
set_include_path('.'); // mainly fixes an issue where /usr/share/{pear,php*}/DB/DataObject.php is _old_ on various systems...
define('INSTALLDIR', dirname(__FILE__));
define('GNUSOCIAL', true);
define('STATUSNET', true); // compatibility
$user = null;
$action = null;
function getPath($req)
{
$p = null;
if ((common_config('site', 'fancy') || !array_key_exists('PATH_INFO', $_SERVER))
&& array_key_exists('p', $req)
) {
$p = $req['p'];
} else if (array_key_exists('PATH_INFO', $_SERVER)) {
$path = $_SERVER['PATH_INFO'];
$script = $_SERVER['SCRIPT_NAME'];
if (substr($path, 0, mb_strlen($script)) == $script) {
$p = substr($path, mb_strlen($script) + 1);
} else {
$p = $path;
}
} else {
$p = null;
}
// Trim all initial '/'
$p = ltrim($p, '/');
return $p;
}
/**
* logs and then displays error messages
*
* @return void
*/
function handleError($error)
{
try {
if ($error->getCode() == DB_DATAOBJECT_ERROR_NODATA) {
return;
}
$logmsg = "Exception thrown: " . _ve($error->getMessage());
if ($error instanceof PEAR_Exception && common_config('log', 'debugtrace')) {
$logmsg .= " PEAR: ". $error->toText();
}
// DB queries often end up with a lot of newlines; merge to a single line
// for easier grepability...
$logmsg = str_replace("\n", " ", $logmsg);
common_log(LOG_ERR, $logmsg);
// @fixme backtrace output should be consistent with exception handling
if (common_config('log', 'debugtrace')) {
$bt = $error->getTrace();
foreach ($bt as $n => $line) {
common_log(LOG_ERR, formatBacktraceLine($n, $line));
}
}
if ($error instanceof DB_DataObject_Error
|| $error instanceof DB_Error
|| ($error instanceof PEAR_Exception && $error->getCode() == -24)
) {
//If we run into a DB error, assume we can't connect to the DB at all
//so set the current user to null, so we don't try to access the DB
//while rendering the error page.
global $_cur;
$_cur = null;
$msg = sprintf(
// TRANS: Database error message.
_('The database for %1$s is not responding correctly, '.
'so the site will not work properly. '.
'The site admins probably know about the problem, '.
'but you can contact them at %2$s to make sure. '.
'Otherwise, wait a few minutes and try again.'
),
common_config('site', 'name'),
common_config('site', 'email')
);
$erraction = new DBErrorAction($msg, 500);
} elseif ($error instanceof ClientException) {
$erraction = new ClientErrorAction($error->getMessage(), $error->getCode());
} elseif ($error instanceof ServerException) {
$erraction = new ServerErrorAction($error->getMessage(), $error->getCode(), $error);
} else {
// If it wasn't specified more closely which kind of exception it was
$erraction = new ServerErrorAction($error->getMessage(), 500, $error);
}
$erraction->showPage();
} catch (Exception $e) {
// TRANS: Error message.
echo _('An error occurred.');
exit(-1);
}
exit(-1);
}
set_exception_handler('handleError');
// quick check for fancy URL auto-detection support in installer.
if (preg_replace("/\?.+$/", "", $_SERVER['REQUEST_URI']) === preg_replace("/^\/$/", "", (dirname($_SERVER['REQUEST_URI']))) . '/check-fancy') {
die("Fancy URL support detection succeeded. We suggest you enable this to get fancy (pretty) URLs.");
}
require_once INSTALLDIR . '/lib/common.php';
/**
* Format a backtrace line for debug output roughly like debug_print_backtrace() does.
* Exceptions already have this built in, but PEAR error objects just give us the array.
*
* @param int $n line number
* @param array $line per-frame array item from debug_backtrace()
* @return string
*/
function formatBacktraceLine($n, $line)
{
$out = "#$n ";
if (isset($line['class'])) $out .= $line['class'];
if (isset($line['type'])) $out .= $line['type'];
if (isset($line['function'])) $out .= $line['function'];
$out .= '(';
if (isset($line['args'])) {
$args = array();
foreach ($line['args'] as $arg) {
// debug_print_backtrace seems to use var_export
// but this gets *very* verbose!
$args[] = gettype($arg);
}
$out .= implode(',', $args);
}
$out .= ')';
$out .= ' called at [';
if (isset($line['file'])) $out .= $line['file'];
if (isset($line['line'])) $out .= ':' . $line['line'];
$out .= ']';
return $out;
}
function setupRW()
{
global $config;
static $alwaysRW = array('session', 'remember_me');
$rwdb = $config['db']['database'];
if (Event::handle('StartReadWriteTables', array(&$alwaysRW, &$rwdb))) {
// We ensure that these tables always are used
// on the master DB
$config['db']['database_rw'] = $rwdb;
$config['db']['ini_rw'] = INSTALLDIR.'/classes/statusnet.ini';
foreach ($alwaysRW as $table) {
$config['db']['table_'.$table] = 'rw';
}
Event::handle('EndReadWriteTables', array($alwaysRW, $rwdb));
}
return;
}
function isLoginAction($action)
{
static $loginActions = array('login', 'recoverpassword', 'api', 'doc', 'register', 'publicxrds', 'otp', 'opensearch', 'rsd');
$login = null;
if (Event::handle('LoginAction', array($action, &$login))) {
$login = in_array($action, $loginActions);
}
return $login;
}
function main()
{
global $user, $action;
if (!_have_config()) {
$msg = sprintf(
// TRANS: Error message displayed when there is no StatusNet configuration file.
_("No configuration file found. Try running ".
"the installation program first."
)
);
$sac = new ServerErrorAction($msg);
$sac->showPage();
return;
}
// Make sure RW database is setup
setupRW();
// XXX: we need a little more structure in this script
// get and cache current user (may hit RW!)
$user = common_current_user();
// initialize language env
common_init_language();
$path = getPath($_REQUEST);
$r = Router::get();
$args = $r->map($path);
// If the request is HTTP and it should be HTTPS...
if (GNUsocial::useHTTPS() && !GNUsocial::isHTTPS()) {
common_redirect(common_local_url($args['action'], $args));
}
$args = array_merge($args, $_REQUEST ?: []);
Event::handle('ArgsInitialize', array(&$args));
$action = basename($args['action']);
if (!$action || !preg_match('/^[a-zA-Z0-9_-]*$/', $action)) {
common_redirect(common_local_url('public'));
}
// If the site is private, and they're not on one of the "public"
// parts of the site, redirect to login
if (!$user && common_config('site', 'private')
&& !isLoginAction($action)
&& !preg_match('/rss$/', $action)
&& $action != 'robotstxt'
&& !preg_match('/^Api/', $action)) {
// set returnto
$rargs =& common_copy_args($args);
unset($rargs['action']);
if (common_config('site', 'fancy')) {
unset($rargs['p']);
}
if (array_key_exists('submit', $rargs)) {
unset($rargs['submit']);
}
foreach (array_keys($_COOKIE) as $cookie) {
unset($rargs[$cookie]);
}
common_set_returnto(common_local_url($action, $rargs));
common_redirect(common_local_url('login'));
}
$action_class = ucfirst($action).'Action';
if (!class_exists($action_class)) {
// TRANS: Error message displayed when trying to perform an undefined action.
throw new ClientException(_('Unknown action'), 404);
}
call_user_func("$action_class::run", $args);
}
main();
// XXX: cleanup exit() calls or add an exit handler so
// this always gets called
Event::handle('CleanupPlugin');

View File

@ -1,417 +0,0 @@
<?php
/**
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2009-2010, StatusNet, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @category Installation
* @package Installation
*
* @author Adrian Lang <mail@adrianlang.de>
* @author Brenda Wallace <shiny@cpan.org>
* @author Brett Taylor <brett@webfroot.co.nz>
* @author Brion Vibber <brion@pobox.com>
* @author CiaranG <ciaran@ciarang.com>
* @author Craig Andrews <candrews@integralblue.com>
* @author Eric Helgeson <helfire@Erics-MBP.local>
* @author Evan Prodromou <evan@status.net>
* @author Mikael Nordfeldth <mmn@hethane.se>
* @author Robin Millette <millette@controlyourself.ca>
* @author Sarven Capadisli <csarven@status.net>
* @author Tom Adams <tom@holizz.com>
* @author Zach Copley <zach@status.net>
* @copyright 2009 Free Software Foundation, Inc http://www.fsf.org
* @license GNU Affero General Public License http://www.gnu.org/licenses/
* @version 0.9.x
* @link http://status.net
*/
define('INSTALLDIR', __DIR__);
require INSTALLDIR . '/lib/installer.php';
/**
* Helper class for building form
*/
class Posted {
/**
* HTML-friendly escaped string for the POST param of given name, or empty.
* @param string $name
* @return string
*/
function value($name)
{
return htmlspecialchars($this->string($name));
}
/**
* The given POST parameter value, forced to a string.
* Missing value will give ''.
*
* @param string $name
* @return string
*/
function string($name)
{
return strval($this->raw($name));
}
/**
* The given POST parameter value, in its original form.
* Magic quotes are stripped, if provided.
* Missing value will give null.
*
* @param string $name
* @return mixed
*/
function raw($name)
{
if (isset($_POST[$name])) {
return $this->dequote($_POST[$name]);
} else {
return null;
}
}
/**
* If necessary, strip magic quotes from the given value.
*
* @param mixed $val
* @return mixed
*/
function dequote($val)
{
if (get_magic_quotes_gpc()) {
if (is_string($val)) {
return stripslashes($val);
} else if (is_array($val)) {
return array_map(array($this, 'dequote'), $val);
}
}
return $val;
}
}
/**
* Web-based installer: provides a form and such.
*/
class WebInstaller extends Installer
{
/**
* the actual installation.
* If call libraries are present, then install
*
* @return void
*/
function main()
{
if (!$this->checkPrereqs()) {
$this->warning(_('Please fix the above stated problems and refresh this page to continue installing.'));
return;
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$this->handlePost();
} else {
$this->showForm();
}
}
/**
* Web implementation of warning output
*/
function warning($message, $submessage='')
{
print "<p class=\"error\">$message</p>\n";
if ($submessage != '') {
print "<p>$submessage</p>\n";
}
}
/**
* Web implementation of status output
*/
function updateStatus($status, $error=false)
{
echo '<li' . ($error ? ' class="error"': '' ) . ">$status</li>";
}
/**
* Show the web form!
*/
function showForm()
{
global $dbModules;
$post = new Posted();
$dbRadios = '';
$dbtype = $post->raw('dbtype');
foreach (self::$dbModules as $type => $info) {
if ($this->checkExtension($info['check_module'])) {
if ($dbtype == null || $dbtype == $type) {
$checked = 'checked="checked" ';
$dbtype = $type; // if we didn't have one checked, hit the first
} else {
$checked = '';
}
$dbRadios .= sprintf('<input type="radio" name="dbtype" id="dbtype-%1$s" value="%1$s" %2$s/>%3$s<br />',
htmlspecialchars($type), $checked,
htmlspecialchars($info['name']));
}
}
$ssl = array('always'=>null, 'never'=>null);
if (!empty($_SERVER['HTTPS'])) {
$ssl['always'] = 'checked="checked"';
} else {
$ssl['never'] = 'checked="checked"';
}
echo<<<E_O_T
<form method="post" action="install.php" class="form_settings" id="form_install">
<fieldset>
<fieldset id="settings_site">
<legend>Site settings</legend>
<ul class="form_data">
<li>
<label for="sitename">Site name</label>
<input type="text" id="sitename" name="sitename" value="{$post->value('sitename')}" />
<p class="form_guide">The name of your site</p>
</li>
<li>
<label for="fancy-enable">Fancy URLs</label>
<input type="radio" name="fancy" id="fancy-enable" value="enable" checked='checked' /> enable<br />
<input type="radio" name="fancy" id="fancy-disable" value="" /> disable<br />
<p class="form_guide" id='fancy-form_guide'>Enable fancy (pretty) URLs. Auto-detection failed, it depends on Javascript.</p>
</li>
<li>
<label for="ssl">Server SSL</label>
<input type="radio" name="ssl" id="ssl-always" value="always" {$ssl['always']} /> enable<br />
<input type="radio" name="ssl" id="ssl-never" value="never" {$ssl['never']} /> disable<br />
<p class="form_guide" id="ssl-form_guide">Enabling SSL (https://) requires extra webserver configuration and certificate generation not offered by this installation.</p>
</li>
</ul>
</fieldset>
<fieldset id="settings_db">
<legend>Database settings</legend>
<ul class="form_data">
<li>
<label for="host">Hostname</label>
<input type="text" id="host" name="host" value="{$post->value('host')}" />
<p class="form_guide">Database hostname</p>
</li>
<li>
<label for="dbtype">Type</label>
{$dbRadios}
<p class="form_guide">Database type</p>
</li>
<li>
<label for="database">Name</label>
<input type="text" id="database" name="database" value="{$post->value('database')}" />
<p class="form_guide">Database name</p>
</li>
<li>
<label for="dbusername">DB username</label>
<input type="text" id="dbusername" name="dbusername" value="{$post->value('dbusername')}" />
<p class="form_guide">Database username</p>
</li>
<li>
<label for="dbpassword">DB password</label>
<input type="password" id="dbpassword" name="dbpassword" value="{$post->value('dbpassword')}" />
<p class="form_guide">Database password (optional)</p>
</li>
</ul>
</fieldset>
<fieldset id="settings_admin">
<legend>Administrator settings</legend>
<ul class="form_data">
<li>
<label for="admin_nickname">Administrator nickname</label>
<input type="text" id="admin_nickname" name="admin_nickname" value="{$post->value('admin_nickname')}" />
<p class="form_guide">Nickname for the initial user (administrator)</p>
</li>
<li>
<label for="admin_password">Administrator password</label>
<input type="password" id="admin_password" name="admin_password" value="{$post->value('admin_password')}" />
<p class="form_guide">Password for the initial user (administrator)</p>
</li>
<li>
<label for="admin_password2">Confirm password</label>
<input type="password" id="admin_password2" name="admin_password2" value="{$post->value('admin_password2')}" />
</li>
<li>
<label for="admin_email">Administrator e-mail</label>
<input id="admin_email" name="admin_email" value="{$post->value('admin_email')}" />
<p class="form_guide">Optional email address for the initial user (administrator)</p>
</li>
</ul>
</fieldset>
<fieldset id="settings_profile">
<legend>Site profile</legend>
<ul class="form_data">
<li>
<label for="site_profile">Type of site</label>
<select id="site_profile" name="site_profile">
<option value="community">Community</option>
<option value="public">Public (open registration)</option>
<option value="singleuser">Single User</option>
<option value="private">Private (no federation)</option>
</select>
<p class="form_guide">Initial access settings for your site</p>
</li>
</ul>
</fieldset>
<input type="submit" name="submit" class="submit" value="Submit" />
</fieldset>
</form>
E_O_T;
}
/**
* Handle a POST submission... if we have valid input, start the install!
* Otherwise shows the form along with any error messages.
*/
function handlePost()
{
echo <<<STR
<dl class="system_notice">
<dt>Page notice</dt>
<dd>
<ul>
STR;
$this->validated = $this->prepare();
if ($this->validated) {
$this->doInstall();
}
echo <<<STR
</ul>
</dd>
</dl>
STR;
if (!$this->validated) {
$this->showForm();
}
}
/**
* Read and validate input data.
* May output side effects.
*
* @return boolean success
*/
function prepare()
{
$post = new Posted();
$this->host = $post->string('host');
$this->dbtype = $post->string('dbtype');
$this->database = $post->string('database');
$this->username = $post->string('dbusername');
$this->password = $post->string('dbpassword');
$this->sitename = $post->string('sitename');
$this->fancy = (bool)$post->string('fancy');
$this->adminNick = strtolower($post->string('admin_nickname'));
$this->adminPass = $post->string('admin_password');
$adminPass2 = $post->string('admin_password2');
$this->adminEmail = $post->string('admin_email');
$this->siteProfile = $post->string('site_profile');
$this->ssl = $post->string('ssl');
$this->server = $_SERVER['HTTP_HOST'];
$this->path = substr(dirname($_SERVER['PHP_SELF']), 1);
$fail = false;
if (!$this->validateDb()) {
$fail = true;
}
if (!$this->validateAdmin()) {
$fail = true;
}
if ($this->adminPass != $adminPass2) {
$this->updateStatus("Administrator passwords do not match. Did you mistype?", true);
$fail = true;
}
if (!in_array($this->ssl, array('never', 'always'))) {
$this->updateStatus("Bad value for server SSL enabling.");
$fail = true;
}
if (!$this->validateSiteProfile()) {
$fail = true;
}
return !$fail;
}
}
?>
<?php echo"<?"; ?> xml version="1.0" encoding="UTF-8" <?php echo "?>"; ?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en_US" lang="en_US">
<head>
<title>Install GNU social</title>
<link rel="shortcut icon" href="favicon.ico"/>
<link rel="stylesheet" type="text/css" href="theme/base/css/display.css" media="screen, projection, tv"/>
<link rel="stylesheet" type="text/css" href="theme/neo/css/display.css" media="screen, projection, tv"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script src="js/extlib/jquery.js"></script>
<script src="js/install.js"></script>
</head>
<body id="install">
<div id="wrap">
<div id="header">
<address id="site_contact" class="h-card">
<a class="u-url p-name home bookmark org" href=".">
<img class="logo u-photo" src="theme/neo/logo.png" alt="GNU social"/>
GNU social
</a>
</address>
<div id="site_nav_global_primary"></div>
</div>
<div id="core">
<div id="aside_primary_wrapper">
<div id="content_wrapper">
<div id="site_nav_local_views_wrapper">
<div id="site_nav_local_views"></div>
<div id="content">
<div id="content_inner">
<h1>Install GNU social</h1>
<?php
$installer = new WebInstaller();
$installer->main();
?>
</div>
</div>
<div id="aside_primary" class="aside"></div>
</div>
</div>
</div>
</div>
<div id="footer"></div>
</div>
</body>
</html>

View File

@ -1,23 +0,0 @@
$(function() {
function toggleIncomingOptions() {
var enabled = $('#emailpost').prop('checked', true);
if (enabled) {
// Note: button style currently does not respond to disabled in our main themes.
// Graying out the whole section with a 50% transparency will do for now. :)
// @todo: add a general 'disabled' class style to the base themes.
$('#emailincoming').css('opacity', '')
.find('input').prop('disabled', false);
} else {
$('#emailincoming').css('opacity', '0.5')
.find('input').prop('disabled', true);
}
}
toggleIncomingOptions();
$('#emailpost').click(function() {
toggleIncomingOptions();
});
});

View File

@ -1 +0,0 @@
<html><body>You are being <a href="https://raw.github.com/tapmodo/Jcrop/master/css/Jcrop.gif">redirected</a>.</body></html>

View File

@ -1,167 +0,0 @@
/* jquery.Jcrop.css v0.9.12 - MIT License */
/*
The outer-most container in a typical Jcrop instance
If you are having difficulty with formatting related to styles
on a parent element, place any fixes here or in a like selector
You can also style this element if you want to add a border, etc
A better method for styling can be seen below with .jcrop-light
(Add a class to the holder and style elements for that extended class)
*/
.jcrop-holder {
direction: ltr;
text-align: left;
/* IE10 touch compatibility */
-ms-touch-action: none;
}
/* Selection Border */
.jcrop-vline,
.jcrop-hline {
background: #ffffff url("Jcrop.gif");
font-size: 0;
position: absolute;
}
.jcrop-vline {
height: 100%;
width: 1px !important;
}
.jcrop-vline.right {
right: 0;
}
.jcrop-hline {
height: 1px !important;
width: 100%;
}
.jcrop-hline.bottom {
bottom: 0;
}
/* Invisible click targets */
.jcrop-tracker {
height: 100%;
width: 100%;
/* "turn off" link highlight */
-webkit-tap-highlight-color: transparent;
/* disable callout, image save panel */
-webkit-touch-callout: none;
/* disable cut copy paste */
-webkit-user-select: none;
}
/* Selection Handles */
.jcrop-handle {
background-color: #333333;
border: 1px #eeeeee solid;
width: 7px;
height: 7px;
font-size: 1px;
}
.jcrop-handle.ord-n {
left: 50%;
margin-left: -4px;
margin-top: -4px;
top: 0;
}
.jcrop-handle.ord-s {
bottom: 0;
left: 50%;
margin-bottom: -4px;
margin-left: -4px;
}
.jcrop-handle.ord-e {
margin-right: -4px;
margin-top: -4px;
right: 0;
top: 50%;
}
.jcrop-handle.ord-w {
left: 0;
margin-left: -4px;
margin-top: -4px;
top: 50%;
}
.jcrop-handle.ord-nw {
left: 0;
margin-left: -4px;
margin-top: -4px;
top: 0;
}
.jcrop-handle.ord-ne {
margin-right: -4px;
margin-top: -4px;
right: 0;
top: 0;
}
.jcrop-handle.ord-se {
bottom: 0;
margin-bottom: -4px;
margin-right: -4px;
right: 0;
}
.jcrop-handle.ord-sw {
bottom: 0;
left: 0;
margin-bottom: -4px;
margin-left: -4px;
}
/* Dragbars */
.jcrop-dragbar.ord-n,
.jcrop-dragbar.ord-s {
height: 7px;
width: 100%;
}
.jcrop-dragbar.ord-e,
.jcrop-dragbar.ord-w {
height: 100%;
width: 7px;
}
.jcrop-dragbar.ord-n {
margin-top: -4px;
}
.jcrop-dragbar.ord-s {
bottom: 0;
margin-bottom: -4px;
}
.jcrop-dragbar.ord-e {
margin-right: -4px;
right: 0;
}
.jcrop-dragbar.ord-w {
margin-left: -4px;
}
/* The "jcrop-light" class/extension */
.jcrop-light .jcrop-vline,
.jcrop-light .jcrop-hline {
background: #ffffff;
filter: alpha(opacity=70) !important;
opacity: .70!important;
}
.jcrop-light .jcrop-handle {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
background-color: #000000;
border-color: #ffffff;
border-radius: 3px;
}
/* The "jcrop-dark" class/extension */
.jcrop-dark .jcrop-vline,
.jcrop-dark .jcrop-hline {
background: #000000;
filter: alpha(opacity=70) !important;
opacity: 0.7 !important;
}
.jcrop-dark .jcrop-handle {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
background-color: #ffffff;
border-color: #000000;
border-radius: 3px;
}
/* Simple macro to turn off the antlines */
.solid-line .jcrop-vline,
.solid-line .jcrop-hline {
background: #ffffff;
}
/* Fix for twitter bootstrap et al. */
.jcrop-holder img,
img.jcrop-preview {
max-width: none;
}

View File

@ -1,29 +0,0 @@
/* jquery.Jcrop.min.css v0.9.12 (build:20130521) */
.jcrop-holder{-ms-touch-action:none;direction:ltr;text-align:left;}
.jcrop-vline,.jcrop-hline{background:#FFF url(Jcrop.gif);font-size:0;position:absolute;}
.jcrop-vline{height:100%;width:1px!important;}
.jcrop-vline.right{right:0;}
.jcrop-hline{height:1px!important;width:100%;}
.jcrop-hline.bottom{bottom:0;}
.jcrop-tracker{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;height:100%;width:100%;}
.jcrop-handle{background-color:#333;border:1px #EEE solid;font-size:1px;height:7px;width:7px;}
.jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0;}
.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px;}
.jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%;}
.jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%;}
.jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0;}
.jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0;}
.jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0;}
.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px;}
.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%;}
.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px;}
.jcrop-dragbar.ord-n{margin-top:-4px;}
.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px;}
.jcrop-dragbar.ord-e{margin-right:-4px;right:0;}
.jcrop-dragbar.ord-w{margin-left:-4px;}
.jcrop-light .jcrop-vline,.jcrop-light .jcrop-hline{background:#FFF;filter:alpha(opacity=70)!important;opacity:.70!important;}
.jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#FFF;border-radius:3px;}
.jcrop-dark .jcrop-vline,.jcrop-dark .jcrop-hline{background:#000;filter:alpha(opacity=70)!important;opacity:.7!important;}
.jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#FFF;border-color:#000;border-radius:3px;}
.solid-line .jcrop-vline,.solid-line .jcrop-hline{background:#FFF;}
.jcrop-holder img,img.jcrop-preview{max-width:none;}

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 335 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,117 +0,0 @@
/*!
* jQuery Cookie Plugin v1.4.1
* https://github.com/carhartl/jquery-cookie
*
* Copyright 2013 Klaus Hartl
* Released under the MIT license
*/
(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// CommonJS
factory(require('jquery'));
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {
var pluses = /\+/g;
function encode(s) {
return config.raw ? s : encodeURIComponent(s);
}
function decode(s) {
return config.raw ? s : decodeURIComponent(s);
}
function stringifyCookieValue(value) {
return encode(config.json ? JSON.stringify(value) : String(value));
}
function parseCookieValue(s) {
if (s.indexOf('"') === 0) {
// This is a quoted cookie as according to RFC2068, unescape...
s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
}
try {
// Replace server-side written pluses with spaces.
// If we can't decode the cookie, ignore it, it's unusable.
// If we can't parse the cookie, ignore it, it's unusable.
s = decodeURIComponent(s.replace(pluses, ' '));
return config.json ? JSON.parse(s) : s;
} catch(e) {}
}
function read(s, converter) {
var value = config.raw ? s : parseCookieValue(s);
return $.isFunction(converter) ? converter(value) : value;
}
var config = $.cookie = function (key, value, options) {
// Write
if (value !== undefined && !$.isFunction(value)) {
options = $.extend({}, config.defaults, options);
if (typeof options.expires === 'number') {
var days = options.expires, t = options.expires = new Date();
t.setTime(+t + days * 864e+5);
}
return (document.cookie = [
encode(key), '=', stringifyCookieValue(value),
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
options.path ? '; path=' + options.path : '',
options.domain ? '; domain=' + options.domain : '',
options.secure ? '; secure' : ''
].join(''));
}
// Read
var result = key ? undefined : {};
// To prevent the for loop in the first place assign an empty array
// in case there are no cookies at all. Also prevents odd result when
// calling $.cookie().
var cookies = document.cookie ? document.cookie.split('; ') : [];
for (var i = 0, l = cookies.length; i < l; i++) {
var parts = cookies[i].split('=');
var name = decode(parts.shift());
var cookie = parts.join('=');
if (key && key === name) {
// If second argument (value) is a function it's a converter...
result = read(cookie, value);
break;
}
// Prevent storing a cookie that we couldn't decode.
if (!key && (cookie = read(cookie)) !== undefined) {
result[name] = cookie;
}
}
return result;
};
config.defaults = {};
$.removeCookie = function (key, options) {
if ($.cookie(key) === undefined) {
return false;
}
// Must not alter options, thus extending a fresh object...
$.cookie(key, '', $.extend({}, options, { expires: -1 }));
return !$.cookie(key);
};
}));

File diff suppressed because it is too large Load Diff

9209
js/extlib/jquery.js vendored

File diff suppressed because it is too large Load Diff

View File

@ -1,367 +0,0 @@
// identica badge -- updated to work with the native API, 12-4-2008
// Modified to point to Identi.ca, 2-20-2009 by Zach
// Modified for XHTML, 27-9-2009 by Will Daniels
// (see http://willdaniels.co.uk/blog/tech-stuff/26-identica-badge-xhtml)
// copyright Kent Brewster 2008
// see http://kentbrewster.com/identica-badge for info
function createHTMLElement(tagName) {
if(document.createElementNS)
var elem = document.createElementNS("http://www.w3.org/1999/xhtml", tagName);
else
var elem = document.createElement(tagName);
return elem;
}
function isNumeric(value) {
if (value == null || !value.toString().match(/^[-]?\d*\.?\d*$/)) return false;
return true;
}
function markupPost(raw, server) {
var start = 0; var p = createHTMLElement('p');
raw.replace(/((http|https):\/\/|\!|@|#)(([\w_]+)?[^\s]*)/g,
function(sub, type, scheme, url, word, offset, full)
{
if(!scheme && !word) return; // just punctuation
var label = ''; var href = '';
var pretext = full.substr(start, offset - start);
moniker = word.split('_'); // behaviour with underscores differs
if(type == '#') moniker = moniker.join('');
else word = moniker = moniker[0].toLowerCase();
switch(type) {
case 'http://': case 'https://': // html links
href = scheme + '://' + url; break;
case '@': // link users
href = 'http://' + server + '/' + moniker; break;
case '!': // link groups
href = 'http://' + server + '/group/' + moniker; break;
case '#': // link tags
href = 'http://' + server + '/tag/' + moniker; break;
default: // bad call (just reset position for text)
start = offset;
}
if(scheme) { // only urls will have scheme
label = sub; start = offset + sub.length;
} else {
label = word; pretext += type;
start = offset + word.length + type.length;
}
p.appendChild(document.createTextNode(pretext));
var link = createHTMLElement('a');
link.appendChild(document.createTextNode(label));
link.href = href; link.target = '_statusnet';
p.appendChild(link);
});
if(start != raw.length) {
endtext = raw.substr(start);
p.appendChild(document.createTextNode(endtext));
}
return p;
}
(function() {
var trueName = '';
for (var i = 0; i < 16; i++) {
trueName += String.fromCharCode(Math.floor(Math.random() * 26) + 97);
}
window[trueName] = {};
var $ = window[trueName];
$.f = function() {
return {
runFunction : [],
init : function(target) {
var theScripts = document.getElementsByTagName('script');
for (var i = 0; i < theScripts.length; i++) {
if (theScripts[i].src.match(target)) {
$.a = {};
if (theScripts[i].innerHTML) {
$.a = $.f.parseJson(theScripts[i].innerHTML);
}
if ($.a.err) {
alert('bad json!');
}
$.f.loadDefaults();
$.f.buildStructure();
$.f.buildPresentation();
theScripts[i].parentNode.insertBefore($.s, theScripts[i]);
theScripts[i].parentNode.removeChild(theScripts[i]);
break;
}
}
},
parseJson : function(json) {
this.parseJson.data = json;
if ( typeof json !== 'string') {
return {"err":"trying to parse a non-string JSON object"};
}
try {
var f = Function(['var document,top,self,window,parent,Number,Date,Object,Function,',
'Array,String,Math,RegExp,Image,ActiveXObject;',
'return (' , json.replace(/<\!--.+-->/gim,'').replace(/\bfunction\b/g,'function&shy;') , ');'].join(''));
return f();
} catch (e) {
return {"err":"trouble parsing JSON object"};
}
},
loadDefaults : function() {
$.d = {
"user":"7000",
"headerText" : "",
"height" : 350,
"width" : 300,
"background" : "#193441",
"border" : "1px solid black",
"userFontSize" : "inherit",
"userColor" : "inherit",
"headerBackground" : "transparent",
"headerColor" : "white",
"evenBackground" : "#fff",
"oddBackground" : "#eee",
"thumbnailBorder" : "1px solid black",
"thumbnailSize" : 24,
"padding" : 3,
"server" : "identi.ca"
};
for (var k in $.d) { if ($.a[k] === undefined) { $.a[k] = $.d[k]; } }
// fix inout units
if(isNumeric($.a.width)) {
$.a.innerWidth = ($.a.width - 22) + 'px'; $.a.width += 'px';
} else {
$.a.innerWidth = 'auto';
}
if(isNumeric($.a.height)) $.a.height += 'px';
},
buildPresentation : function () {
var setZoom = ''; if(navigator.appName == 'Microsoft Internet Explorer') setZoom = 'zoom:1;';
var ns = createHTMLElement('style');
document.getElementsByTagName('head')[0].appendChild(ns);
if (!window.createPopup) {
ns.appendChild(document.createTextNode(''));
ns.setAttribute("type", "text/css");
}
var s = document.styleSheets[document.styleSheets.length - 1];
var rules = {
"" : "{margin:0px;padding:0px;width:" + $.a.width + ";background:" + $.a.background + ";border:" + $.a.border + ";font:87%/1.2em tahoma, veranda, arial, helvetica, clean, sans-serif;}",
"a" : "{cursor:pointer;text-decoration:none;}",
"a:hover" : "{text-decoration:underline;}",
".cite" : "{" + setZoom + "font-weight:bold;margin:0px 0px 0px 4px;padding:0px;display:block;font-style:normal;line-height:" + ($.a.thumbnailSize/2) + "px;vertical-align:middle;}",
".cite a" : "{color:#C15D42;}",
".date":"{margin:0px 0px 0px 4px;padding:0px;display:block;font-style:normal;line-height:" + ($.a.thumbnailSize/2) + "px;vertical-align:middle;}",
".date:after" : "{clear:both;content:\".\"; display:block;height:0px;visibility:hidden;}",
".date a" : "{color:#676;}",
"h3" : "{margin:0px;padding:" + $.a.padding + "px;font-weight:bold;background:" + $.a.headerBackground + " url('http://" + $.a.server + "/favicon.ico') " + $.a.padding + "px 50% no-repeat;padding-left:" + ($.a.padding + 20) + "px;}",
"h3.loading" : "{background-image:url('http://l.yimg.com/us.yimg.com/i/us/my/mw/anim_loading_sm.gif');}",
"h3 a" : "{font-size:92%; color:" + $.a.headerColor + ";}",
"h4" : "{font-weight:normal;background:" + $.a.headerBackground + ";text-align:right;margin:0px;padding:" + $.a.padding + "px;}",
"h4 a" : "{font-size:92%; color:" + $.a.headerColor + ";}",
"img":"{float:left;height:" + $.a.thumbnailSize + "px;width:" + $.a.thumbnailSize + "px;border:" + $.a.thumbnailBorder + ";margin-right:" + $.a.padding + "px;}",
"p" : "{margin:2px 0px 0px 0px;padding:0px;width:" + $.a.innerWidth + ";overflow:hidden;line-height:normal;}",
"p a" : "{color:#C15D42;}",
"ul":"{margin:0px; padding:0px; height:" + $.a.height + ";width:" + $.a.innerWidth + ";overflow:auto;}",
"ul li":"{background:" + $.a.evenBackground + ";margin:0px;padding:" + $.a.padding + "px;list-style:none;width:auto;overflow:hidden;border-bottom:1px solid #D8E2D7;}",
"ul li:hover":"{background:#f3f8ea;}"
};
var ieRules = "";
// brute-force each and every style rule here to !important
// sometimes you have to take off and nuke the site from orbit; it's the only way to be sure
for (var z in rules) {
if(z.charAt(0)=='.') var selector = '.' + trueName + '-' + z.substring(1);
else var selector = '.' + trueName + ' ' + z;
var rule = rules[z];
if (typeof rule === 'string') {
var important = rule.replace(/;/gi, '!important;');
if (!window.createPopup) {
var theRule = document.createTextNode(selector + important + '\n');
ns.appendChild(theRule);
} else {
ieRules += selector + important;
}
}
}
if (window.createPopup) { s.cssText = ieRules; }
},
buildStructure : function() {
$.s = createHTMLElement('div');
$.s.className = trueName;
$.s.h = createHTMLElement('h3');
$.s.h.a = createHTMLElement('a');
$.s.h.a.target = '_statusnet';
$.s.h.appendChild($.s.h.a);
$.s.appendChild($.s.h);
$.s.r = createHTMLElement('ul');
$.s.appendChild($.s.r);
$.s.f = createHTMLElement('h4');
var a = createHTMLElement('a');
a.innerHTML = 'get this';
a.target = '_blank';
a.href = 'http://identi.ca/doc/badge';
$.s.f.appendChild(a);
$.s.appendChild($.s.f);
$.f.getUser();
},
getUser : function() {
if (!$.f.runFunction) { $.f.runFunction = []; }
var n = $.f.runFunction.length;
var id = trueName + '.f.runFunction[' + n + ']';
$.f.runFunction[n] = function(r) {
delete($.f.runFunction[n]);
var a = createHTMLElement('a');
a.rel = $.a.user;
a.rev = r.name;
a.id = r.screen_name;
$.f.removeScript(id);
$.f.changeUserTo(a);
};
var url = 'http://' + $.a.server + '/api/users/show/' + $.a.user + '.json?callback=' + id;
$.f.runScript(url, id);
},
changeUserTo : function(el) {
$.a.user = el.rel;
$.s.h.a.appendChild(document.createTextNode(el.rev + $.a.headerText));
$.s.h.a.href = 'http://' + $.a.server + '/' + el.id;
$.f.runSearch();
},
runSearch : function() {
$.s.h.className = 'loading';
$.s.r.innerHTML = '';
if (!$.f.runFunction) { $.f.runFunction = []; }
var n = $.f.runFunction.length;
var id = trueName + '.f.runFunction[' + n + ']';
$.f.runFunction[n] = function(r) {
delete($.f.runFunction[n]);
$.f.removeScript(id);
$.f.renderResult(r);
};
var url = 'http://' + $.a.server + '/api/statuses/friends/' + $.a.user + '.json?callback=' + id;
$.f.runScript(url, id);
},
renderResult: function(r) {
for (var i = 0; i < r.length; i++) {
if (!r[i].status) {
r.splice(i, 1);
} else {
r[i].status_id = parseInt(r[i].status.id);
}
}
r = $.f.sortArray(r, "status_id", true);
$.s.h.className = ''; // for IE6
$.s.h.removeAttribute('class');
for (var i = 0; i < r.length; i++) {
var li = createHTMLElement('li');
var icon = createHTMLElement('a');
if (r[i] && r[i].url) {
icon.href = r[i].url;
icon.target = '_statusnet';
icon.title = 'Visit ' + r[i].screen_name + ' at ' + r[i].url;
} else {
icon.href = 'http://' + $.a.server + '/' + r[i].screen_name;
icon.target = '_statusnet';
icon.title = 'Visit ' + r[i].screen_name + ' at http://' + $.a.server + '/' + r[i].screen_name;
}
var img = createHTMLElement('img');
img.alt = 'profile image for ' + r[i].screen_name;
img.src = r[i].profile_image_url;
icon.appendChild(img);
li.appendChild(icon);
var user = createHTMLElement('span');
user.className = trueName + '-cite';
var a = createHTMLElement('a');
a.rel = r[i].id;
a.rev = r[i].name;
a.id = r[i].screen_name;
a.innerHTML = r[i].name;
a.href = 'http://' + $.a.server + '/' + r[i].screen_name;
a.onclick = function() {
$.f.changeUserTo(this);
return false;
};
user.appendChild(a);
li.appendChild(user);
var updated = createHTMLElement('span');
updated.className = trueName + '-date';
if (r[i].status && r[i].status.created_at) {
var date_link = createHTMLElement('a');
date_link.innerHTML = r[i].status.created_at.split(/\+/)[0];
date_link.href = 'http://' + $.a.server + '/notice/' + r[i].status.id;
date_link.target = '_statusnet';
updated.appendChild(date_link);
if (r[i].status.in_reply_to_status_id) {
updated.appendChild(document.createTextNode(' in reply to '));
var in_reply_to = createHTMLElement('a');
in_reply_to.innerHTML = r[i].status.in_reply_to_status_id;
in_reply_to.href = 'http://' + $.a.server + '/notice/' + r[i].status.in_reply_to_status_id;
in_reply_to.target = '_statusnet';
updated.appendChild(in_reply_to);
}
} else {
updated.innerHTML = 'has not updated yet';
}
li.appendChild(updated);
var p = createHTMLElement('p');
if (r[i].status && r[i].status.text) {
var raw = r[i].status.text;
p = markupPost(raw, $.a.server);
}
li.appendChild(p);
var a = p.getElementsByTagName('a');
for (var j = 0; j < a.length; j++) {
if (a[j].className == 'changeUserTo') {
a[j].removeAttribute('class');
a[j].href = 'http://' + $.a.server + '/' + a[j].innerHTML;
a[j].rel = a[j].innerHTML;
a[j].onclick = function() {
$.f.changeUserTo(this);
return false;
}
}
}
$.s.r.appendChild(li);
}
},
sortArray : function(r, k, x) {
if (window.createPopup) {
return r;
}
function s(a, b) {
if (x === true) {
return b[k] - a[k];
} else {
return a[k] - b[k];
}
}
r = r.sort(s);
return r;
},
runScript : function(url, id) {
var s = createHTMLElement('script');
s.id = id;
s.type ='text/javascript';
s.src = url;
document.getElementsByTagName('body')[0].appendChild(s);
},
removeScript : function(id) {
if (document.getElementById(id)) {
var s = document.getElementById(id);
s.parentNode.removeChild(s);
}
}
};
}();
// var thisScript = /^https?:\/\/[^\/]*r8ar.com\/identica-badge.js$/;
var thisScript = /identica-badge.js$/;
if(typeof window.addEventListener !== 'undefined') {
window.addEventListener('load', function() { $.f.init(thisScript); }, false);
} else if(typeof window.attachEvent !== 'undefined') {
window.attachEvent('onload', function() { $.f.init(thisScript); });
}
} )();

View File

@ -1,18 +0,0 @@
$(function() {
$.ajax({url:'check-fancy',
type:'GET',
success:function(data, textStatus) {
$('#fancy-enable').prop('checked', true);
$('#fancy-disable').prop('checked', false);
$('#fancy-form_guide').text(data);
},
error:function(XMLHttpRequest, textStatus, errorThrown) {
$('#fancy-enable').prop('checked', false);
$('#fancy-disable').prop('checked', true);
$('#fancy-enable').prop('disabled', true);
$('#fancy-disable').prop('disabled', true);
$('#fancy-form_guide').text("Fancy URL support detection failed, disabling this option. Make sure you renamed htaccess.sample to .htaccess.");
}
});
});

View File

@ -1,50 +0,0 @@
/** Init for Jcrop library and page setup
*
* @package StatusNet
* @author Sarven Capadisli <csarven@status.net>
* @author Mikael Nordfeldth <mmn@hethane.se>
* @copyright 2009 StatusNet, Inc.
* @copyright 2013 Free Software Foundation, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
$(function(){
var x = ($('#avatar_crop_x').val()) ? $('#avatar_crop_x').val() : 0;
var y = ($('#avatar_crop_y').val()) ? $('#avatar_crop_y').val() : 0;
var w = ($('#avatar_crop_w').val()) ? $('#avatar_crop_w').val() : $("#avatar_original img").attr("width");
var h = ($('#avatar_crop_h').val()) ? $('#avatar_crop_h').val() : $("#avatar_original img").attr("height");
$("#avatar_original img").Jcrop({
onChange: showPreview,
setSelect: [ x, y, w, h ],
onSelect: updateCoords,
aspectRatio: 1,
boxWidth: 480,
boxHeight: 480,
bgColor: '#000',
bgOpacity: .4
});
});
function showPreview(coords) {
var rx = 96 / coords.w;
var ry = 96 / coords.h;
var img_width = $("#avatar_original img").attr("width");
var img_height = $("#avatar_original img").attr("height");
$('#avatar_preview img').css({
width: Math.round(rx *img_width) + 'px',
height: Math.round(ry * img_height) + 'px',
marginLeft: '-' + Math.round(rx * coords.x) + 'px',
marginTop: '-' + Math.round(ry * coords.y) + 'px'
});
};
function updateCoords(c) {
$('#avatar_crop_x').val(c.x);
$('#avatar_crop_y').val(c.y);
$('#avatar_crop_w').val(c.w);
$('#avatar_crop_h').val(c.h);
};

1691
js/util.js

File diff suppressed because it is too large Load Diff

View File

@ -1,47 +0,0 @@
/* is this stuff defined? */
if (!document.ELEMENT_NODE) {
document.ELEMENT_NODE = 1;
document.ATTRIBUTE_NODE = 2;
document.TEXT_NODE = 3;
document.CDATA_SECTION_NODE = 4;
document.ENTITY_REFERENCE_NODE = 5;
document.ENTITY_NODE = 6;
document.PROCESSING_INSTRUCTION_NODE = 7;
document.COMMENT_NODE = 8;
document.DOCUMENT_NODE = 9;
document.DOCUMENT_TYPE_NODE = 10;
document.DOCUMENT_FRAGMENT_NODE = 11;
document.NOTATION_NODE = 12;
}
document._importNode = function(node, allChildren) {
/* find the node type to import */
switch (node.nodeType) {
case document.ELEMENT_NODE:
/* create a new element */
var newNode = document.createElement(node.nodeName);
/* does the node have any attributes to add? */
if (node.attributes && node.attributes.length > 0)
/* add all of the attributes */
for (var i = 0, il = node.attributes.length; i < il;) {
if (node.attributes[i].nodeName == 'class') {
newNode.className = node.getAttribute(node.attributes[i++].nodeName);
} else {
newNode.setAttribute(node.attributes[i].nodeName, node.getAttribute(node.attributes[i++].nodeName));
}
}
/* are we going after children too, and does the node have any? */
if (allChildren && node.childNodes && node.childNodes.length > 0)
/* recursively get all of the child nodes */
for (var i = 0, il = node.childNodes.length; i < il;)
newNode.appendChild(document._importNode(node.childNodes[i++], allChildren));
return newNode;
break;
case document.TEXT_NODE:
case document.CDATA_SECTION_NODE:
case document.COMMENT_NODE:
return document.createTextNode(node.nodeValue);
break;
}
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 701 B

View File

@ -1,137 +0,0 @@
/** Init for Autocomplete (requires jquery-ui)
*
* @package Plugin
* @author Mikael Nordfeldth <mmn@hethane.se>
* @copyright 2013 Free Software Foundation, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
var origInit = SN.Init.NoticeFormSetup;
SN.Init.NoticeFormSetup = function(form) {
origInit(form);
// Only attach to traditional-style forms
var textarea = form.find('.notice_data-text:first');
if (textarea.length === 0) {
return;
}
function termSplit(val) {
return val.split(/ \s*/);
}
function extractLast( term ) {
return termSplit(term).pop();
}
var apiUrl = $('#autocomplete-api').attr('data-url');
// migrated "multiple" and "multipleSeparator" from
// http://www.learningjquery.com/2010/06/autocomplete-migration-guide
textarea
.bind('keydown', function( event ) {
if ( event.keyCode === $.ui.keyCode.TAB &&
$( this ).data( "ui-autocomplete" ).menu.active ) {
event.preventDefault();
}
})
.autocomplete({
minLength: 1, // 1 is default
source: function (request, response) {
$.getJSON( apiUrl, {
term: extractLast(request.term)
}, response );
},
search: function () {
// custom minLength, we though we match the 1 below
var term = extractLast(this.value);
if (term.length <= 1) {
return false;
}
},
focus: function () {
// prevent value inserted on focus
return false;
},
select: function (event, ui) {
var terms = termSplit(this.value);
terms.pop(); // remove latest term
terms.push(ui.item.value); // insert
terms.push(''); // empty element, for the join()
this.value = terms.join(' ');
return false;
},
})
.data('ui-autocomplete')._renderItem = function (ul, item) {
return $('<li></li>')
.data('ui-autocomplete-item', item)
.append('<a><img style="display:inline; vertical-align: middle"><span /></a>')
.find('img').attr('src', item.avatar).end()
.find('span').text(item.label).end()
.appendTo(ul);
};
};
/**
* Called when a people tag edit box is shown in the interface
*
* - loads the jQuery UI autocomplete plugin
* - sets event handlers for tag completion
*
*/
SN.Init.PeopletagAutocomplete = function(txtBox) {
var split,
extractLast;
split = function(val) {
return val.split( /\s+/ );
};
extractLast = function(term) {
return split(term).pop();
};
// don't navigate away from the field on tab when selecting an item
txtBox
.on('keydown', function(event) {
if (event.keyCode === $.ui.keyCode.TAB &&
$(this).data('ui-autocomplete').menu.active) {
event.preventDefault();
}
})
.autocomplete({
minLength: 0,
source: function(request, response) {
// delegate back to autocomplete, but extract the last term
response($.ui.autocomplete.filter(
SN.C.PtagACData, extractLast(request.term)));
},
focus: function () {
return false;
},
select: function(event, ui) {
var terms = split(this.value);
terms.pop();
terms.push(ui.item.value);
terms.push('');
this.value = terms.join(' ');
return false;
}
})
.data('ui-autocomplete')
._renderItem = function (ul, item) {
// FIXME: with jQuery UI you cannot have it highlight the match
var _l = '<a class="ptag-ac-line-tag">' + item.tag +
' <em class="privacy_mode">' + item.mode + '</em>' +
'<span class="freq">' + item.freq + '</span></a>';
return $('<li/>')
.addClass('mode-' + item.mode)
.addClass('ptag-ac-line')
.data('item.autocomplete', item)
.append(_l)
.appendTo(ul);
};
};
$(document).on('click', '.peopletags_edit_button', function () {
SN.Init.PeopletagAutocomplete($(this).closest('dd').find('[name="tags"]'));
});

View File

@ -1,9 +0,0 @@
<!-- Copyright 2008-2010 StatusNet Inc. and contributors. -->
<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See -->
<!-- http://creativecommons.org/licenses/by/3.0/ for details. -->
A bookmarklet is a small piece of javascript code used as a bookmark. This one will let you post to %%site.name%% simply by selecting some text on a page and pressing the bookmarklet.
Drag-and-drop the following link to your bookmarks bar or right-click it and add it to your browser favorites to keep it handy.
<a href="javascript:(function(){var%20d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),f='http://%%site.server%%/%%site.path%%/index.php?action=bookmarkpopup',l=d.location,e=encodeURIComponent,g=f+'&title='+((e(s))?e(s):e(document.title))+'&url='+e(l.href);function%20a(){if(!w.open(g,'t','toolbar=0,resizable=0,scrollbars=1,status=1,width=650,height=520')){l.href=g;}}a();})()">Bookmark on %%site.name%%</a>

View File

@ -1,30 +0,0 @@
$(document).ready(
function() {
var form = $('#form_new_bookmark');
form.append('<input type="hidden" name="ajax" value="1"/>');
function doClose() {
self.close();
// If in popup blocker situation, we'll have to redirect back.
setTimeout(function() {
window.location = $('#url').val();
}, 100);
}
form.ajaxForm({dataType: 'xml',
timeout: '60000',
beforeSend: function(formData) {
form.addClass('processing');
form.find('#submit').addClass('disabled');
},
error: function (xhr, textStatus, errorThrown) {
form.removeClass('processing');
form.find('#submit').removeClass('disabled');
doClose();
},
success: function(data, textStatus) {
form.removeClass('processing');
form.find('#submit').removeClass('disabled');
doClose();
}});
}
);

View File

@ -1,134 +0,0 @@
/* Bookmark specific styles */
.bookmark-tags li { display: inline; }
.bookmark h3 {
margin: 4px 0px 8px 0px;
}
.bookmark-notice-count {
border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
padding: 1px 6px;
font-size: 1.2em;
line-height: 1.2em;
background: #fff;
border: 1px solid #7b8dbb;
color: #3e3e8c !important;
position: relative;
right: 4px;
margin-left: 10px;
}
.bookmark-notice-count:hover {
text-decoration: none;
background: #f2f2f2;
border: 1px solid #7b8dbb;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
}
.notice .bookmark-description {
clear: both;
margin-left: 0px;
margin-bottom: 0px;
}
.notice .bookmark-author {
margin-left: 0px;
float: left;
}
.bookmark-tags {
clear: both;
margin-bottom: 4px;
line-height: 1.6em;
}
ul.bookmark-tags a {
border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
padding: 1px 6px;
background: #f2f2f2;
color: #3e3e8c !important;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
font-size: 0.88em;
}
ul.bookmark-tags a:hover {
background-color: #cdd1dd;
text-decoration: none;
}
.bookmark-avatar {
float: none !important;
position: relative;
top: 2px;
}
.bookmark div.e-content {
font-size: 0.88em;
line-height: 1.2em;
margin-top: 6px;
opacity: 0.6;
margin-bottom: 0px;
}
.bookmark:hover div.e-content {
opacity: 1;
}
#bookmarkpopup {
min-width: 600px;
margin-top: 0px;
height: 100%;
border: 10px solid #364A84;
background: #364A84;
}
#bookmarkpopup #wrap {
width: auto;
min-width: 560px;
padding: 40px 0px 25px 0px;
margin-right: 2px;
background: #fff url(../mobilelogo.png) no-repeat 6px 6px;
}
#bookmarkpopup #header {
width: auto;
padding: 0px 10px;
}
#bookmarkpopup .form_settings label {
margin-top: 2px;
text-align: right;
width: 24%;
font-size: 1.2em;
}
#bookmarkpopup .form_settings .form_data input {
width: 60%;
}
#bookmarkpopup .form_guide {
color: #777;
}
#bookmarkpopup #bookmark-submit {
min-width: 100px;
}
#bookmarkpopup fieldset fieldset {
margin-bottom: 10px;
}
#form_initial_bookmark.form_settings .form_data li {
margin-bottom: 0px;
}
#form_new_bookmark.form_settings .bookmarkform-thumbnail {
position: absolute;
top: 50px;
right: 0px;
}

View File

@ -1,36 +0,0 @@
var Bookmark = {
// Special XHR that sends in some code to be run
// when the full bookmark form gets loaded
BookmarkXHR: function(form)
{
SN.U.FormXHR(form, Bookmark.InitBookmarkForm);
return false;
},
// Special initialization function just for the
// second step in the bookmarking workflow
InitBookmarkForm: function() {
SN.Init.CheckBoxes();
$('fieldset fieldset label').inFieldLabels({ fadeOpacity:0 });
SN.Init.NoticeFormSetup($('#form_new_bookmark'));
}
}
$(document).ready(function() {
// Stop normal live event stuff
$(document).off("submit", "form.ajax");
$(document).off("click", "form.ajax input[type=submit]");
// Make the bookmark submit super special
$(document).on('submit', '#form_initial_bookmark', function (e) {
Bookmark.BookmarkXHR($(this));
e.stopPropagation();
return false;
});
// Restore live event stuff to other forms & submit buttons
SN.Init.AjaxForms();
});

View File

@ -1,77 +0,0 @@
//wrap everything in a self-executing anonymous function to avoid conflicts
(function(){
// smart(x) from Paul Irish
// http://paulirish.com/2009/throttled-smartresize-jquery-event-handler/
(function($,sr){
// debouncing function from John Hann
// http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
var debounce = function (func, threshold, execAsap) {
var timeout;
return function debounced () {
var obj = this, args = arguments;
function delayed () {
if (!execAsap)
func.apply(obj, args);
timeout = null;
};
if (timeout)
clearTimeout(timeout);
else if (execAsap)
func.apply(obj, args);
timeout = setTimeout(delayed, threshold || 100);
};
}
jQuery.fn[sr] = function(fn){ return fn ? this.bind('keypress', debounce(fn, 1000)) : this.trigger(sr); };
})(jQuery,'smartkeypress');
function longestWordInString(string)
{
var words = string.split(/\s/);
var longestWord = 0;
for(var i=0;i<words.length;i++)
if(words[i].length > longestWord) longestWord = words[i].length;
return longestWord;
}
function shorten()
{
var $noticeDataText = $('#'+SN.C.S.NoticeDataText);
var noticeText = $noticeDataText.val();
if(noticeText.length > maxNoticeLength || longestWordInString(noticeText) > maxUrlLength) {
var original = $noticeDataText.val();
shortenAjax = $.ajax({
url: $('address .url')[0].href+'/plugins/ClientSideShorten/shorten',
data: { text: $noticeDataText.val() },
dataType: 'text',
success: function(data) {
if(original == $noticeDataText.val()) {
$noticeDataText.val(data).keyup();
}
}
});
}
}
$(document).ready(function(){
$noticeDataText = $('#'+SN.C.S.NoticeDataText);
$noticeDataText.smartkeypress(function(e){
//if(typeof(shortenAjax) !== 'undefined') shortenAjax.abort();
if(e.charCode == '32') {
shorten();
}
});
$noticeDataText.bind('paste', function() {
//if(typeof(shortenAjax) !== 'undefined') shortenAjax.abort();
setTimeout(shorten,1);
});
});
})();

View File

@ -1,27 +0,0 @@
// update the local timeline from a Comet server
var CometUpdate = function()
{
var _server;
var _timeline;
var _userid;
var _replyurl;
var _favorurl;
var _deleteurl;
var _cometd;
return {
init: function(server, timeline, userid, replyurl, favorurl, deleteurl)
{
_cometd = $.cometd; // Uses the default Comet object
_cometd.init(server);
_server = server;
_timeline = timeline;
_userid = userid;
_favorurl = favorurl;
_replyurl = replyurl;
_deleteurl = deleteurl;
_cometd.subscribe(timeline, function(message) { RealtimeUpdate.receive(message.data) });
$(window).unload(function() { _cometd.disconnect(); } );
}
}
}();

File diff suppressed because it is too large Load Diff

View File

@ -1,72 +0,0 @@
/**
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @category Plugin
* @package StatusNet
* @author Behrooz shabani (everplays) - <behrooz@rock.com>
* @copyright 2009-2010 Behrooz shabani
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
*
*/
(function($){
$.fn.isRTL = function(str){
if(typeof str != typeof "" || str.length<1)
return false;
var cc = str.charCodeAt(0);
if(cc>=1536 && cc<=1791) // arabic, persian, ...
return true;
if(cc>=65136 && cc<=65279) // arabic peresent 2
return true;
if(cc>=64336 && cc<=65023) // arabic peresent 1
return true;
if(cc>=1424 && cc<=1535) // hebrew
return true;
if(cc>=64256 && cc<=64335) // hebrew peresent
return true;
if(cc>=1792 && cc<=1871) // Syriac
return true;
if(cc>=1920 && cc<=1983) // Thaana
return true;
if(cc>=1984 && cc<=2047) // NKo
return true;
if(cc>=11568 && cc<=11647) // Tifinagh
return true;
return false;
};
var origInit = SN.Init.NoticeFormSetup;
SN.Init.NoticeFormSetup = function(form) {
origInit(form);
var tArea = form.find(".notice_data-text:first");
if (tArea.length > 0) {
var tCleaner = new RegExp('@[^ ]+|![^ ]+|#[^ ]+|^RT[: ]{1}| RT | RT: |^RD[: ]{1}| RD | RD: |[♺♻:]+', 'g')
var ping = function(){
var cleaned = tArea.val().replace(tCleaner, '').replace(/^[ ]+/, '');
if($().isRTL(cleaned))
tArea.css('direction', 'rtl');
else
tArea.css('direction', 'ltr');
};
tArea.bind('keyup cut paste', function() {
// cut/paste trigger before the change
window.setTimeout(ping, 0);
});
form.bind('reset', function() {
tArea.css('direction', 'ltr');
});
}
};
})(jQuery);

View File

@ -1,60 +0,0 @@
/* CSS file for the Directory plugin */
div#profile_directory div.alpha_nav {
overflow: hidden;
width: 100%;
text-align: center;
}
/* XXX: this needs serious CSS foo */
div#profile_directory div.alpha_nav > a {
border-left: 1px solid #000;
padding-left: 2px;
}
div#profile_directory div.alpha_nav > a.first {
border-left: none;
}
div#profile_directory div.alpha_nav a:link {
text-decoration: none;
}
div#profile_directory div.alpha_nav a:visited {
text-decoration: none;
}
div#profile_directory div.alpha_nav a:active {
text-decoration: none;
}
div#profile_directory div.alpha_nav a:hover {
text-decoration: underline; color: blue;
}
div#profile_directory div.alpha_nav a.current {
background-color:#9BB43E;
}
table.profile_list {
width: 100%;
}
table.profile_list tr {
float: none;
}
table.profie_list td {
width: 100%;
padding: 0;
}
th.current {
background-image: url(../images/control_arrow_down.gif);
background-repeat: no-repeat;
background-position: 60% 2px;
}
th.current.reverse {
background-image: url(../images/control_arrow_up.gif);
background-repeat: no-repeat;
background-position: 60% 2px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 B

View File

@ -1,72 +0,0 @@
// XXX: Should I do crazy SN.X.Y.Z.A namespace instead?
var SN_WHITELIST = SN_WHITELIST || {};
SN_WHITELIST.updateButtons = function () {
$("ul > li > a.remove_row").show();
$("ul > li > a.add_row").hide();
var lis = $('ul > li > input[name^="username[]"]');
if (lis.length === 1) {
$("ul > li > a.remove_row").hide();
} else {
$("ul > li > a.remove_row:first").show();
}
$("ul > li > a.add_row:last").show();
};
SN_WHITELIST.resetRow = function (row) {
$("input", row).val('');
// Make sure the default domain is the first selection
$("select option:first", row).val();
$("a.remove_row", row).show();
};
SN_WHITELIST.addRow = function () {
var row = $(this).closest("li");
var newRow = row.clone();
$(row).find('a.add_row').hide();
SN_WHITELIST.resetRow(newRow);
$(newRow).insertAfter(row).show("blind", "fast", function () {
SN_WHITELIST.updateButtons();
});
};
SN_WHITELIST.removeRow = function () {
var that = this;
$("#confirm-dialog").dialog({
buttons : {
"Confirm" : function () {
$(this).dialog("close");
$(that).closest("li").hide("blind", "fast", function () {
$(this).remove();
SN_WHITELIST.updateButtons();
});
},
"Cancel" : function () {
$(this).dialog("close");
}
}
});
if ($(this).closest('li').find(':input[name^=username]').val()) {
$("#confirm-dialog").dialog("open");
} else {
$(that).closest("li").hide("blind", "fast", function () {
$(this).remove();
SN_WHITELIST.updateButtons();
});
}
};
$(document).ready(function () {
$("#confirm-dialog").dialog({
autoOpen: false,
modal: true
});
$(document).on('click', '.add_row', SN_WHITELIST.addRow);
$(document).on('click', '.remove_row', SN_WHITELIST.removeRow);
SN_WHITELIST.updateButtons();
});

View File

@ -1,126 +0,0 @@
/* Event specific styles */
.event-tags li { display: inline; }
.event-mentions li { display: inline; }
.event-avatar { float: left; }
.event-notice-count { float: right; }
.event-info { float: left; }
.event-title { margin-left: 0px; }
.ui-autocomplete {
max-height: 100px;
overflow-y: auto;
/* prevent horizontal scrollbar */
overflow-x: hidden;
/* add padding to account for vertical scrollbar */
padding-right: 20px;
}
.attending-list { list-style-type: none; float: left; width: 100%; }
#form_event_rsvp { clear: left; }
li.rsvp-list { float: left; clear: left; }
li.rsvp-list ul.entities {
display:inline;
}
li.rsvp-list .entities li {
list-style-type: none;
margin-right: 3px;
margin-bottom: 8px;
display: inline;
}
li.rsvp-list .entities li .u-photo {
margin: 0 !important;
float: none !important;
}
.notice .h-event div {
margin-bottom: 8px;
}
.event-info {
margin-left: 0px !important;
margin-top: 2px !important;
}
.notice .event-info + .notice-options {
margin-top: 14px;
}
.notice .threaded-replies .event-info + .notice-options {
margin-top: 20px;
}
#form_event_rsvp #new_rsvp_data {
display: inline;
margin: 10px 0px;
}
#form_event_rsvp input.submit {
height: auto;
padding: 0px 10px;
margin-left: 10px;
color:#fff;
font-weight: bold;
text-transform: uppercase;
font-size: 1.1em;
text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.2);
border: 1px solid #d7621c;
border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
background: #FB6104;
background: -moz-linear-gradient(top, #ff9d63 0%, #fb6104 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ff9d63), color-stop(100%,#fb6104));
background: -webkit-linear-gradient(top, #ff9d63 0%,#fb6104 100%);
background: -o-linear-gradient(top, #ff9d63 0%,#fb6104 100%);
background: -ms-linear-gradient(top, #ff9d63 0%,#fb6104 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff9d63', endColorstr='#fb6104',GradientType=0 );
background: linear-gradient(top, #ff9d63 0%,#fb6104 100%);
}
#form_event_rsvp input.submit:hover {
text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.6);
background: #ff9d63;
background: -moz-linear-gradient(top, #fb6104 0%, #fc8035 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fb6104), color-stop(100%,#fc8035));
background: -webkit-linear-gradient(top, #fb6104 0%,#fc8035 100%);
background: -o-linear-gradient(top, #fb6104 0%,#fc8035 100%);
background: -ms-linear-gradient(top, #fb6104 0%,#fc8035 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fb6104', endColorstr='#fc8035',GradientType=0 );
background: linear-gradient(top, #fb6104 0%,#fc8035 100%);
}
#wrap .h-event form.processing input.submit {
text-indent: 0;
background: #ff9d63;
}
#input_form_event .form_settings .form_data {
float: left;
}
#input_form_event .form_settings .form_data li {
float: left;
width: auto;
}
#input_form_event .form_settings .form_data label {
width: auto;
}
label[for=event-starttime], label[for=event-endtime] {
display: none !important;
}
#event-starttime, #event-endtime {
margin-top: -1px;
margin-bottom: -1px;
height: 2em;
}
#event-startdate, #event-enddate {
margin-right: 20px;
width: 120px;
}

View File

@ -1,144 +0,0 @@
$(document).ready(function() {
// get current time from server
var today = new Date($('now').val());
$("#event-startdate").datepicker({
// Don't let the user set a start date < before today
minDate: today,
onClose: onStartDateSelected
});
$("#event-enddate").datepicker({
minDate: today,
onClose: onEndDateSelected
});
$("#event-starttime").change(function(e) {
var tz = $("#tz").val();
var startDate = $("#event-startdate").val();
var startTime = $("#event-starttime option:selected").val().replace(/(pm|am)/, ' $1');
var startStr = startDate + ' ' + startTime + ' ' + tz;
var endDate = $("#event-enddate").val();
var endTime = $("#event-endtime option:selected").val();
var endStr = endDate + ' ' + endTime.replace(/(pm|am)/, ' $1') + ' ' + tz;
// just need to compare hours
var start = new Date(startStr);
var end = new Date(endStr);
updateTimes(startStr, (startDate === endDate), function (data) {
var times = [];
$.each(data, function(key, val) {
times.push('<option value="' + key + '">' + val + '</option>');
});
$("#event-endtime").html(times.join(''));
if (start > end) {
$("#event-endtime").val(startTime).attr("selected", "selected");
} else {
$("#event-endtime").val(endTime).attr("selected", "selected");
}
});
});
$("#event-endtime").change(function(e) {
var HOUR = 60 * 60 * 1000;
var tz = $("#tz").val();
var startDate = $("#event-startdate").val();
var endDate = $("#event-enddate").val();
var starttime = $("#event-starttime option:selected").val();
var endtime = $("#event-endtime option:selected").val();
var endtimeText = $("#event-endtime option:selected").text();
// If the end time is in the next day then update the start date
if (startDate === endDate) {
var startstr = startDate + ' ' + starttime.replace(/(pm|am)/, ' $1') + ' ' + tz;
var start = new Date(startstr);
var matches = endtimeText.match(/\(.*\)/);
var hours;
if (matches) {
hours = matches[0].substr(1).split(' ')[0]; // get x from (x hours)
if (hours) {
if (hours == 30) {
hours = .5; // special case: x == 30 from (30 mins)
}
var end = new Date(start.getTime() + (hours * HOUR));
if (end.getDate() > start.getDate()) {
$("#event-enddate").datepicker('setDate', end);
var endstr = endDate + ' 12:00 am ' + tz;
updateTimes(endstr, false, function(data) {
var times = [];
$.each(data, function(key, val) {
times.push('<option value="' + key + '">' + val + '</option>');
});
$("#event-endtime").html(times.join(''));
if (start > end) {
$("#event-endtime").val(starttime).attr("selected", "selected");
} else {
$("#event-endtime").val(endtime).attr("selected", "selected");
}
});
}
}
}
}
});
function onStartDateSelected(dateText, inst) {
var tz = $("#tz").val();
var startTime = $("#event-starttime option:selected").val();
var startDateTime = new Date(dateText + ' ' + startTime.replace(/(pm|am)/, ' $1') + ' ' + tz);
// When we update the start date and time, we need to update the end date and time
// to make sure they are equal or in the future
$("#event-enddate").datepicker('option', 'minDate', startDateTime);
recalculateTimes();
}
function onEndDateSelected(dateText, inst) {
recalculateTimes();
}
function recalculateTimes(showDuration) {
var tz = $("#tz").val();
var startDate = $("#event-startdate").val();
var startTime = $("#event-starttime option:selected").val();
var startStr = startDate + ' ' + startTime.replace(/(pm|am)/, ' $1') + ' ' + tz;
var startDateTime = new Date(startStr);
var endDate = $("#event-enddate").val();
var endTime = $("#event-endtime option:selected").val();
var endDateTime = new Date(endDate + ' ' + endTime.replace(/(pm|am)/, ' $1') + ' ' + tz);
var showDuration = true;
if (endDateTime.getDate() !== startDateTime.getDate()) {
starStr = endDate + ' 12:00 am ' + tz;
showDuration = false;
}
updateTimes(startStr, showDuration, function(data) {
var times = [];
$.each(data, function(key, val) {
times.push('<option value="' + key + '">' + val + '</option>');
});
$("#event-endtime").html(times.join(''));
if (startDateTime > endDateTime) {
$("#event-endtime").val(startTime).attr("selected", "selected");
} else {
$("#event-endtime").val(endTime).attr("selected", "selected");
}
});
}
function updateTimes(start, duration, onSuccess) {
$.getJSON($('#timelist_action_url').val(), {start: start, ajax: true, duration: duration}, onSuccess);
}
});

View File

@ -1,165 +0,0 @@
/* Note the #content is only needed to override weird crap in default styles */
#profiledetail .entity_actions {
margin-top: 0px;
margin-bottom: 0px;
}
#profiledetail #content h3 {
margin-bottom: 5px;
}
#content table.extended-profile {
width: 100%;
border-collapse: separate;
border-spacing: 0px 8px;
margin-bottom: 10px;
}
#content table.extended-profile th {
color: #777;
background-color: #ECECF2;
width: 150px;
text-align: right;
padding: 2px 8px 2px 0px;
}
#content table.extended-profile th.employer, #content table.extended-profile th.institution {
display: none;
}
#content table.extended-profile td {
padding: 2px 0px 2px 8px;
}
.experience-item, .education-item {
float: left;
padding-bottom: 4px;
}
.experience-item .label, .education-item .label {
float: left;
clear: left;
position: relative;
left: -8px;
margin-right: 2px;
margin-bottom: 8px;
color: #777;
background-color: #ECECF2;
width: 150px;
text-align: right;
padding: 2px 8px 2px 0px;
}
.experience-item .field, .education-item .field {
float: left;
padding-top: 2px;
padding-bottom: 2px;
max-width: 350px;
}
#profiledetailsettings #content table.extended-profile td {
padding: 0px 0px 0px 8px;
}
#profiledetailsettings input {
margin-right: 8px;
}
.form_settings .extended-profile label {
display: none;
}
.extended-profile textarea {
width: 280px;
}
.extended-profile input[type=text] {
width: 280px;
}
.extended-profile .phone-item input[type=text], .extended-profile .im-item input[type=text], .extended-profile .website-item input[type=text] {
width: 175px;
}
.extended-profile input.hasDatepicker {
width: 100px;
}
.experience-item input[type=text], .education-item input[type=text] {
float: left;
}
.extended-profile .current-checkbox {
float: left;
position: relative;
top: 2px;
}
.form_settings .extended-profile input.checkbox {
margin-left: 0px;
left: 0px;
top: 2px;
}
.form_settings .extended-profile label.checkbox {
max-width: 100%;
float: none;
display: inline;
left: -20px;
}
.extended-profile select {
padding-right: 2px;
font-size: 0.88em;
}
.extended-profile a.add_row, .extended-profile a.remove_row {
display: block;
height: 16px;
width: 16px;
overflow: hidden;
background-image: url('../../../theme/base/images/icons/icons-01.gif');
background-repeat: no-repeat;
}
.extended-profile a.remove_row {
background-position: 0px -1252px;
float: right;
position: relative;
top: 6px;
line-height: 4em;
}
.extended-profile a.add_row {
clear: both;
position: relative;
top: 6px;
left: 2px;
background-position: 0px -1186px;
width: 120px;
padding-left: 20px;
line-height: 1.2em;
}
#content table.extended-profile .supersizeme th {
border-bottom: 28px solid #fff;
}
#profiledetailsettings .experience-item, #profiledetailsettings .education-item {
margin-bottom: 10px;
width: 100%;
}
#profiledetailsettings .education-item textarea {
float: left;
margin-bottom: 8px;
}
#profiledetailsettings tr:last-child .experience-item, #profiledetailsettings tr:last-child .education-item {
margin-bottom: 0px;
}
#profiledetailsettings .experience-item a.add_row, #profiledetailsettings .education-item a.add_row {
left: 160px;
}

View File

@ -1,144 +0,0 @@
var SN_EXTENDED = SN_EXTENDED || {};
SN_EXTENDED.reorder = function (cls) {
var divs = $('div[class=' + cls + ']');
$(divs).each(function (i, div) {
$(div).find('a.add_row').hide();
$(div).find('a.remove_row').show();
SN_EXTENDED.replaceIndex(SN_EXTENDED.rowIndex(div), i);
});
var lastDiv = $(divs).last().closest('tr');
lastDiv.addClass('supersizeme');
$(divs).last().find('a.add_row').show();
if (divs.length == 1) {
$(divs).find('a.remove_row').fadeOut("slow");
}
};
SN_EXTENDED.rowIndex = function (div) {
var idstr = $(div).attr('id');
var id = idstr.match(/\d+/);
return id;
};
SN_EXTENDED.rowCount = function (cls) {
var divs = $.find('div[class=' + cls + ']');
return divs.length;
};
SN_EXTENDED.replaceIndex = function (elem, oldIndex, newIndex) {
$(elem).find('*').each(function () {
$.each(this.attributes, function (i, attrib) {
var regexp = /extprofile-.*-\d.*/;
var value = attrib.value;
var match = value.match(regexp);
if (match !== null) {
attrib.value = value.replace("-" + oldIndex, "-" + newIndex);
}
});
});
}
SN_EXTENDED.resetRow = function (elem) {
$(elem).find('input, textarea').attr('value', '');
$(elem).find('input').removeAttr('disabled');
$(elem).find("select option[value='office']").attr("selected", true);
$(elem).find("input:checkbox").attr('checked', false);
$(elem).find("input[name$=-start], input[name$=-end]").each(function () {
$(this).removeClass('hasDatepicker');
$(this).datepicker({ dateFormat: 'd M yy' });
});
};
SN_EXTENDED.addRow = function () {
var div = $(this).closest('div');
var id = div.attr('id');
var cls = div.attr('class');
var index = id.match(/\d+/);
var newIndex = parseInt(index) + 1;
var newtr = $(div).closest('tr').removeClass('supersizeme').clone();
SN_EXTENDED.replaceIndex(newtr, index, newIndex);
SN_EXTENDED.resetRow(newtr);
$(div).closest('tr').after(newtr);
SN_EXTENDED.reorder(cls);
};
SN_EXTENDED.removeRow = function () {
var div = $(this).closest('div');
var id = $(div).attr('id');
var cls = $(div).attr('class');
var that = this;
$("#confirm-dialog").dialog({
buttons : {
"Confirm" : function () {
$(this).dialog("close");
var target = $(that).closest('tr');
target.fadeOut("slow", function () {
$(target).remove();
SN_EXTENDED.reorder(cls);
});
},
"Cancel" : function () {
$(this).dialog("close");
}
}
});
var cnt = SN_EXTENDED.rowCount(cls);
if (cnt > 1) {
$("#confirm-dialog").dialog("open");
}
};
$(document).ready(function () {
$("#confirm-dialog").dialog({
autoOpen: false,
modal: true
});
$("input#extprofile-manager").autocomplete({
source: 'finduser',
minLength: 2 });
$("input[name$=-start], input[name$=-end], #extprofile-birthday").datepicker({ dateFormat: 'd M yy' });
var multifields = ["phone-item", "experience-item", "education-item", "im-item", 'website-item'];
for (f in multifields) {
SN_EXTENDED.reorder(multifields[f]);
}
$("input#extprofile-manager").autocomplete({
source: 'finduser',
minLength: 2 });
$(document).on('click', '.add_row', SN_EXTENDED.addRow);
$(document).on('click', '.remove_row', SN_EXTENDED.removeRow);
$('input:checkbox[name$=current]').each(function () {
var input = $(this).parent().siblings('input[id$=-end]');
if ($(this).is(':checked')) {
$(input).attr('disabled', 'true');
}
});
$(document).on('click', 'input:checkbox[name$=current]', function () {
var input = $(this).parent().siblings('input[id$=-end]');
if ($(this).is(':checked')) {
$(input).val('');
$(input).attr('disabled', 'true');
} else {
$(input).removeAttr('disabled');
}
});
});

View File

@ -1,29 +0,0 @@
function increasePhotoSize() {
$('.photoingallery, .albumingallery').each(function(index) {
this.height *= 1.1;
this.width *= 1.1;
});
return false;
}
function decreasePhotoSize() {
$('.photoingallery, .albumingallery').each(function(index) {
this.height /= 1.1;
this.width /= 1.1;
});
return false;
}
function scalePhotosToSize(size) {
$('.photoingallery, .albumingallery').each(function(index) {
if(this.height > this.width) {
this.width = this.width*size/this.height;
this.height = size;
}
else {
this.height = this.height*size/this.width;
this.width = size;
}
});
return false;
}

View File

@ -1,14 +0,0 @@
.photocontainer, .albumcontainer {
display: block;
background-color: yellow;
float: left;
padding: 20px;
margin: 15px;
}
.photodescription {
display: block;
background-color: #dddddd;
padding: 20px;
margin: 15px;
}

View File

@ -1,4 +0,0 @@
SN.U.NoticeReplySet = function(nick,id) {
$('div.replyform').hide();
$('div#form'+id).show();
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 B

View File

@ -1,23 +0,0 @@
.biotitle {
font-weight: bold;
}
.biovalue {
font-style: italic;
}
#showstream ol.notices ol.notices {
background-image: url(/plugins/GNUsocialProfileExtensions/res/bgstripe.gif);
background-repeat: repeat-y;
background-position: left top;
padding-left: 15px;
color: #333333;
}
#showstream ol.notices ol.notices ol.notices {
padding-left: 5px;
}
div.replyform {
display: none;
padding-left: 15px;
}
.replyform .form_notice {
width: 75%;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,161 +0,0 @@
// notices
jQuery(document).ready(function($){
$('notices_primary').infinitescroll({
debug: false,
infiniteScroll : !infinite_scroll_on_next_only,
nextSelector : 'body#public li.nav_next a,'+
'body#all li.nav_next a,'+
'body#showstream li.nav_next a,'+
'body#replies li.nav_next a,'+
'body#showfavorites li.nav_next a,'+
'body#showgroup li.nav_next a,'+
'body#favorited li.nav_next a',
loadingImg : ajax_loader_url,
text : "<em>Loading the next set of posts...</em>",
donetext : "<em>Congratulations, you\'ve reached the end of the Internet.</em>",
navSelector : "#pagination",
contentSelector : "#notices_primary ol.notices",
itemSelector : "#notices_primary ol.notices > li"
},function(){
// Reply button and attachment magic need to be set up
// for each new notice.
// DO NOT run SN.Init.Notices() which will duplicate stuff.
$(this).find('.notice').each(function() {
SN.U.NoticeReplyTo($(this));
SN.U.NoticeWithAttachment($(this));
});
// moving the loaded notices out of their container
$('#infscr-loading').remove();
var ids_to_append = Array(); var i=0;
$.each($('.infscr-pages').children('.notice'),function(){
// remove dupes
if($('.threaded-notices > #' + $(this).attr('id')).length > 0) {
$(this).remove();
}
// keep new unique notices
else {
ids_to_append[i] = $(this).attr('id');
i++;
}
});
var loaded_html = $('.infscr-pages').html();
$('.infscr-pages').remove();
// no results
if(loaded_html == '') {
}
// append
else {
$('#notices_primary ol.notices').append(loaded_html);
}
});
});
// users
jQuery(document).ready(function($){
$('profile_list').infinitescroll({
debug: false,
infiniteScroll : !infinite_scroll_on_next_only,
nextSelector : 'body#subscribers li.nav_next a, body#subscriptions li.nav_next a',
loadingImg : ajax_loader_url,
text : "<em>Loading the next set of users...</em>",
donetext : "<em>Congratulations, you\'ve reached the end of the Internet.</em>",
navSelector : "#pagination",
contentSelector : "#content_inner ul.profile_list",
itemSelector : "#content_inner ul.profile_list > li"
},function(){
// Reply button and attachment magic need to be set up
// for each new notice.
// DO NOT run SN.Init.Notices() which will duplicate stuff.
$(this).find('.profile').each(function() {
SN.U.NoticeReplyTo($(this));
SN.U.NoticeWithAttachment($(this));
});
// moving the loaded notices out of their container
$('#infscr-loading').remove();
var ids_to_append = Array(); var i=0;
$.each($('.infscr-pages').children('.profile'),function(){
// remove dupes
if($('.profile_list > #' + $(this).attr('id')).length > 0) {
$(this).remove();
}
// keep new unique notices
else {
ids_to_append[i] = $(this).attr('id');
i++;
}
});
var loaded_html = $('.infscr-pages').html();
$('.infscr-pages').remove();
// no results
if(loaded_html == '') {
}
// append
else {
$('#content_inner ul.profile_list').append(loaded_html);
}
});
});
// user directory
jQuery(document).ready(function($){
$('profile_list').infinitescroll({
debug: false,
infiniteScroll : !infinite_scroll_on_next_only,
nextSelector : 'body#userdirectory li.nav_next a',
loadingImg : ajax_loader_url,
text : "<em>Loading the next set of users...</em>",
donetext : "<em>Congratulations, you\'ve reached the end of the Internet.</em>",
navSelector : "#pagination",
contentSelector : "#profile_directory table.profile_list tbody",
itemSelector : "#profile_directory table.profile_list tbody tr"
},function(){
// Reply button and attachment magic need to be set up
// for each new notice.
// DO NOT run SN.Init.Notices() which will duplicate stuff.
$(this).find('.profile').each(function() {
SN.U.NoticeReplyTo($(this));
SN.U.NoticeWithAttachment($(this));
});
// moving the loaded notices out of their container
$('#infscr-loading').remove();
var ids_to_append = Array(); var i=0;
$.each($('.infscr-pages').children('.profile'),function(){
// remove dupes
if($('.profile_list > #' + $(this).attr('id')).length > 0) {
$(this).remove();
}
// keep new unique notices
else {
ids_to_append[i] = $(this).attr('id');
i++;
}
});
var loaded_html = $('.infscr-pages').html();
$('.infscr-pages').remove();
// no results
if(loaded_html == '') {
}
// append
else {
$('#profile_directory table.profile_list tbody').append(loaded_html);
}
});
});

View File

@ -1,261 +0,0 @@
/*!
// Infinite Scroll jQuery plugin
// copyright Paul Irish, licensed GPL & MIT
// version 1.2.090804
// home and docs: http://www.infinite-scroll.com
*/
// todo: add preloading option.
;(function($){
$.fn.infinitescroll = function(options,callback){
// console log wrapper.
function debug(){
if (opts.debug) { window.console && console.log.call(console,arguments)}
}
// grab each selector option and see if any fail.
function areSelectorsValid(opts){
for (var key in opts){
if (key.indexOf && (key.indexOf('Selector') != -1) && $(opts[key]).length === 0){
debug('Your ' + key + ' found no elements.');
return false;
}
return true;
}
}
// find the number to increment in the path.
function determinePath(path){
path.match(relurl) ? path.match(relurl)[2] : path;
// there is a 2 in the url surrounded by slashes, e.g. /page/2/
if ( path.match(/^(.*?)\b2\b(.*?$)/) ){
path = path.match(/^(.*?)\b2\b(.*?$)/).slice(1);
} else
// if there is any 2 in the url at all.
if (path.match(/^(.*?)2(.*?$)/)){
debug('Trying backup next selector parse technique. Treacherous waters here, matey.');
path = path.match(/^(.*?)2(.*?$)/).slice(1);
} else {
debug('Sorry, we couldn\'t parse your Next (Previous Posts) URL. Verify your the css selector points to the correct A tag. If you still get this error: yell, scream, and kindly ask for help at infinite-scroll.com.');
props.isInvalidPage = true; //prevent it from running on this page.
}
return path;
}
// 'document' means the full document usually, but sometimes the content of the overflow'd div in local mode
function getDocumentHeight(){
// weird doubletouch of scrollheight because http://soulpass.com/2006/07/24/ie-and-scrollheight/
return opts.localMode ? ($(props.container)[0].scrollHeight && $(props.container)[0].scrollHeight)
// needs to be document's height. (not props.container's) html's height is wrong in IE.
: $(document).height()
}
function isNearBottom(opts,props){
// distance remaining in the scroll
// computed as: document height - distance already scroll - viewport height - buffer
var pixelsFromWindowBottomToBottom = getDocumentHeight() -
(opts.localMode ? $(props.container).scrollTop() :
// have to do this bs because safari doesnt report a scrollTop on the html element
($(props.container).scrollTop() || $(props.container.ownerDocument.body).scrollTop())) -
$(opts.localMode ? props.container : window).height();
debug('math:',pixelsFromWindowBottomToBottom, props.pixelsFromNavToBottom);
// if distance remaining in the scroll (including buffer) is less than the orignal nav to bottom....
return (pixelsFromWindowBottomToBottom - opts.bufferPx < props.pixelsFromNavToBottom);
}
function showDoneMsg(){
props.loadingMsg
.find('img').hide()
.parent()
.find('div').html(opts.donetext).animate({opacity: 1},2000).fadeOut('normal');
// user provided callback when done
opts.errorCallback();
}
function infscrSetup(path,opts,props,callback){
if (props.isDuringAjax || props.isInvalidPage || props.isDone) return;
if ( opts.infiniteScroll && !isNearBottom(opts,props) ) return;
// we dont want to fire the ajax multiple times
props.isDuringAjax = true;
// show the loading message and hide the previous/next links
props.loadingMsg.appendTo( opts.contentSelector ).show();
if(opts.infiniteScroll) $( opts.navSelector ).hide();
// increment the URL bit. e.g. /page/3/
props.currPage++;
debug('heading into ajax',path);
// if we're dealing with a table we can't use DIVs
var box = $(opts.contentSelector).is('table') ? $('<tbody/>') : $('<div/>');
box
.attr('id','infscr-page-'+props.currPage)
.addClass('infscr-pages')
.appendTo( opts.contentSelector )
.load( path.join( props.currPage ) + ' ' + opts.itemSelector,null,function(){
// if we've hit the last page...
if (props.isDone){
showDoneMsg();
return false;
} else {
// if it didn't return anything
if (box.children().length == 0){
// fake an ajaxError so we can quit.
$.event.trigger( "ajaxError", [{status:404}] );
}
// fadeout currently makes the <em>'d text ugly in IE6
props.loadingMsg.fadeOut('normal' );
// smooth scroll to ease in the new content
if (opts.animate){
var scrollTo = $(window).scrollTop() + $('#infscr-loading').height() + opts.extraScrollPx + 'px';
$('html,body').animate({scrollTop: scrollTo}, 800,function(){ props.isDuringAjax = false; });
}
// pass in the new DOM element as context for the callback
callback.call( box[0] );
if (!opts.animate) props.isDuringAjax = false; // once the call is done, we can allow it again.
}
}); // end of load()
} // end of infscrSetup()
// lets get started.
var opts = $.extend({}, $.infinitescroll.defaults, options);
var props = $.infinitescroll; // shorthand
callback = callback || function(){};
if (!areSelectorsValid(opts)){ return false; }
// we doing this on an overflow:auto div?
props.container = opts.localMode ? this : document.documentElement;
// contentSelector we'll use for our .load()
opts.contentSelector = opts.contentSelector || this;
// get the relative URL - everything past the domain name.
var relurl = /(.*?\/\/).*?(\/.*)/;
var path = $(opts.nextSelector).attr('href');
if (!path) { debug('Navigation selector not found'); return; }
// set the path to be a relative URL from root.
path = determinePath(path);
// reset scrollTop in case of page refresh:
if (opts.localMode) $(props.container)[0].scrollTop = 0;
// distance from nav links to bottom
// computed as: height of the document + top offset of container - top offset of nav link
props.pixelsFromNavToBottom = getDocumentHeight() +
$(props.container).offset().top -
$(opts.navSelector).offset().top;
// define loading msg
props.loadingMsg = $('<div id="infscr-loading" style="text-align: center;"><img alt="Loading..." src="'+
opts.loadingImg+'" /><div>'+opts.loadingText+'</div></div>');
// preload the image
(new Image()).src = opts.loadingImg;
// set up our bindings
$(document).ajaxError(function(e,xhr,opt){
debug('Page not found. Self-destructing...');
// die if we're out of pages.
if (xhr.status == 404){
showDoneMsg();
props.isDone = true;
$(opts.localMode ? this : window).unbind('scroll.infscr');
}
});
if(opts.infiniteScroll){
// bind scroll handler to element (if its a local scroll) or window
$(opts.localMode ? this : window)
.bind('scroll.infscr', function(){ infscrSetup(path,opts,props,callback); } )
.trigger('scroll.infscr'); // trigger the event, in case it's a short page
}else{
$(opts.nextSelector).click(
function(){
infscrSetup(path,opts,props,callback);
return false;
}
);
}
return this;
} // end of $.fn.infinitescroll()
// options and read-only properties object
$.infinitescroll = {
defaults : {
debug : false,
infiniteScroll : true,
preload : false,
nextSelector : "div.navigation a:first",
loadingImg : "http://www.infinite-scroll.com/loading.gif",
loadingText : "<em>Loading the next set of posts...</em>",
donetext : "<em>Congratulations, you've reached the end of the internet.</em>",
navSelector : "div.navigation",
contentSelector : null, // not really a selector. :) it's whatever the method was called on..
extraScrollPx : 150,
itemSelector : "div.post",
animate : false,
localMode : false,
bufferPx : 40,
errorCallback : function(){}
},
loadingImg : undefined,
loadingMsg : undefined,
container : undefined,
currPage : 1,
currDOMChunk : null, // defined in setup()'s load()
isDuringAjax : false,
isInvalidPage : false,
isDone : false // for when it goes all the way through the archive.
};
})(jQuery);

View File

@ -1,8 +0,0 @@
/*
// Infinite Scroll jQuery plugin
// copyright Paul Irish, licensed GPL & MIT
// version 1.2.090804
// home and docs: http://www.infinite-scroll.com
*/
(function(A){A.fn.infinitescroll=function(N,L){function E(){if(B.debug){window.console&&console.log.call(console,arguments)}}function G(P){for(var O in P){if(O.indexOf&&O.indexOf("Selector")&&A(P[O]).length===0){E("Your "+O+" found no elements.");return false}return true}}function K(O){O.match(C)?O.match(C)[2]:O;if(O.match(/^(.*?)\b2\b(.*?$)/)){O=O.match(/^(.*?)\b2\b(.*?$)/).slice(1)}else{if(O.match(/^(.*?)2(.*?$)/)){E("Trying backup next selector parse technique. Treacherous waters here, matey.");O=O.match(/^(.*?)2(.*?$)/).slice(1)}else{E("Sorry, we couldn't parse your Next (Previous Posts) URL. Verify your the css selector points to the correct A tag. If you still get this error: yell, scream, and kindly ask for help at infinite-scroll.com.");H.isInvalidPage=true}}return O}function I(){return B.localMode?(A(H.container)[0].scrollHeight&&A(H.container)[0].scrollHeight):A(document).height()}function F(Q,P){var O=I()-(Q.localMode?A(P.container).scrollTop():(A(P.container).scrollTop()||A(P.container.ownerDocument.body).scrollTop()))-A(Q.localMode?P.container:window).height();E("math:",O,P.pixelsFromNavToBottom);return(O-Q.bufferPx<P.pixelsFromNavToBottom)}function J(){H.loadingMsg.find("img").hide().parent().find("div").html(B.donetext).animate({opacity:1},2000).fadeOut("normal");B.errorCallback()}function D(R,Q,O,S){if(O.isDuringAjax||O.isInvalidPage||O.isDone){return }if(!F(Q,O)){return }O.isDuringAjax=true;O.loadingMsg.appendTo(Q.contentSelector).show();A(Q.navSelector).hide();O.currPage++;E("heading into ajax",R);var P=A(Q.contentSelector).is("table")?A("<tbody/>"):A("<div/>");P.attr("id","infscr-page-"+O.currPage).addClass("infscr-pages").appendTo(Q.contentSelector).load(R.join(O.currPage)+" "+Q.itemSelector,null,function(){if(O.isDone){J();return false}else{if(P.children().length==0){A.event.trigger("ajaxError",[{status:404}])}O.loadingMsg.fadeOut("normal");if(Q.animate){var T=A(window).scrollTop()+A("#infscr-loading").height()+Q.extraScrollPx+"px";A("html,body").animate({scrollTop:T},800,function(){O.isDuringAjax=false})}S.call(P[0]);if(!Q.animate){O.isDuringAjax=false}}})}var B=A.extend({},A.infinitescroll.defaults,N);var H=A.infinitescroll;L=L||function(){};if(!G(B)){return false}H.container=B.localMode?this:document.documentElement;B.contentSelector=B.contentSelector||this;var C=/(.*?\/\/).*?(\/.*)/;var M=A(B.nextSelector).attr("href");if(!M){E("Navigation selector not found");return }M=K(M);if(B.localMode){A(H.container)[0].scrollTop=0}H.pixelsFromNavToBottom=I()+A(H.container).offset().top-A(B.navSelector).offset().top;H.loadingMsg=A('<div id="infscr-loading" style="text-align: center;"><img alt="Loading..." src="'+B.loadingImg+'" /><div>'+B.loadingText+"</div></div>");(new Image()).src=B.loadingImg;A(document).ajaxError(function(P,Q,O){E("Page not found. Self-destructing...");if(Q.status==404){J();H.isDone=true;A(B.localMode?this:window).unbind("scroll.infscr")}});A(B.localMode?this:window).bind("scroll.infscr",function(){D(M,B,H,L)}).trigger("scroll.infscr");return this};A.infinitescroll={defaults:{debug:false,preload:false,nextSelector:"div.navigation a:first",loadingImg:"http://www.infinite-scroll.com/loading.gif",loadingText:"<em>Loading the next set of posts...</em>",donetext:"<em>Congratulations, you've reached the end of the internet.</em>",navSelector:"div.navigation",contentSelector:null,extraScrollPx:150,itemSelector:"div.post",animate:false,localMode:false,bufferPx:40,errorCallback:function(){}},loadingImg:undefined,loadingMsg:undefined,container:undefined,currPage:1,currDOMChunk:null,isDuringAjax:false,isInvalidPage:false,isDone:false}})(jQuery);

View File

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-06-08 18:20+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:54
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Afrikaans (http://www.transifex.com/gnu-social/gnu-social/language/af/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: af\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic (http://www.transifex.com/gnu-social/gnu-social/language/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ar\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic (Egypt) (http://www.transifex.com/gnu-social/gnu-social/language/ar_EG/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ar_EG\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Asturian (http://www.transifex.com/gnu-social/gnu-social/language/ast/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ast\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Belarusian (Tarask) (http://www.transifex.com/gnu-social/gnu-social/language/be@tarask/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: be@tarask\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bulgarian (http://www.transifex.com/gnu-social/gnu-social/language/bg/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: bg\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bengali (India) (http://www.transifex.com/gnu-social/gnu-social/language/bn_IN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: bn_IN\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Breton (http://www.transifex.com/gnu-social/gnu-social/language/br/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: br\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Catalan (http://www.transifex.com/gnu-social/gnu-social/language/ca/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ca\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Czech (http://www.transifex.com/gnu-social/gnu-social/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: cs\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Danish (http://www.transifex.com/gnu-social/gnu-social/language/da/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2010 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:43+0000\n"
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
"Language-Team: German (http://www.transifex.com/gnu-social/gnu-social/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr "Infinite Scroll fügt die folgende Funktionalität zu deiner StatusNet-Installation hinzu: Wenn ein Benutzer Richtung Seitenende scrollt, wird die nächste Nachrichtenseite automatisch geladen und angefügt. Das bedeutet, dass du nie „Nächste Seite“ klicken musst, was die Attraktivität dramatisch erhöht."

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Greek (http://www.transifex.com/gnu-social/gnu-social/language/el/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: el\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,28 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
# Luke Hollins <luke@farcry.ca>, 2015
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-03-07 19:41+0000\n"
"Last-Translator: Luke Hollins <luke@farcry.ca>\n"
"Language-Team: English (United Kingdom) (http://www.transifex.com/gnu-social/gnu-social/language/en_GB/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: en_GB\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr "Infinite Scroll adds the following functionality to your StatusNet installation: When a user scrolls towards the bottom of the page, the next page of notices is automatically retrieved and appended. This means they never need to click \"Next Page\", which dramatically increases stickiness."

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Esperanto (http://www.transifex.com/gnu-social/gnu-social/language/eo/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: eo\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,28 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2010 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
# Juan Riquelme González <soulchainer@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-27 14:21+0000\n"
"Last-Translator: Juan Riquelme González <soulchainer@gmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/gnu-social/gnu-social/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr "Infinite Scroll añade la función «Desplazamiento infinito» a tu instalación GNU social. Con ella activada, cuando un usuario alcanza el final de la página actual, se carga y añade inmediatamente la página siguiente (de existir). Así, no se fuerza al usuario a clicar continuamente en un botón si quiere cargar más contenido, lo que mejora la navegabilidad e incrementa la capacidad del sitio para retener su atención."

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2011 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:43+0000\n"
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
"Language-Team: Basque (http://www.transifex.com/gnu-social/gnu-social/language/eu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: eu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr "Infinite Scroll pluginak scrollarekin behera egin einean orria luzatzen du ohar zaharrak azpikaldean gehituz, \"Hurrengo Orria\" linka ezabatzen du aldi berean."

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Persian (http://www.transifex.com/gnu-social/gnu-social/language/fa/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fa\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish (http://www.transifex.com/gnu-social/gnu-social/language/fi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fi\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2010 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:43+0000\n"
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
"Language-Team: French (http://www.transifex.com/gnu-social/gnu-social/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr "InfiniteScroll ajoute la fonctionnalité suivante à votre installation StatusNet : lorsquun utilisateur fait défiler la page jusquà la fin, la page davis suivante est automatiquement téléchargée et ajoutée à la suite. Ceci signifie que lutilisateur na plus besoin de cliquer sur le bouton « Page suivante », ce qui augmente considérablement ladhérence de lutilisateur."

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Friulian (http://www.transifex.com/gnu-social/gnu-social/language/fur/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fur\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2011 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:43+0000\n"
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
"Language-Team: Galician (http://www.transifex.com/gnu-social/gnu-social/language/gl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: gl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr "Infinite Scroll engade a seguinte funcionalizade á súa instalación de StatusNet: Cando un usuario se despraza ata o pé da páxina, recupérase e engádese a seguinte páxina de notas. Isto significa que non é necesario premer en \"Páxina seguinte\", algo que aumenta considerablemente a capacidade de retención."

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2010 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:43+0000\n"
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
"Language-Team: Hebrew (http://www.transifex.com/gnu-social/gnu-social/language/he/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: he\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr "Infinite Scroll (גלילה אינסופית) מוסיפה את התכונות הבאות להתקנת ה־StatusNet שלך: כאשר משתמש גולל אל עבר תחתית הדף, דף העדכונים הבא נטען ונוסף אוטומטית. משמעות הדבר היא שאין על המשתמשים ללחוץ על \"הדף הבא\", מה שמגביר את תחושת הדבקות בצורה דרמטית."

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Upper Sorbian (http://www.transifex.com/gnu-social/gnu-social/language/hsb/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hsb\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hungarian (http://www.transifex.com/gnu-social/gnu-social/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Armenian (Armenia) (http://www.transifex.com/gnu-social/gnu-social/language/hy_AM/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hy_AM\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2010 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:43+0000\n"
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
"Language-Team: Interlingua (http://www.transifex.com/gnu-social/gnu-social/language/ia/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ia\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr "Infinite Scroll adde le sequente functionalitate a tu installation de StatusNet: Quando un usator face rolar le pagina verso le fundo, le sequente pagina de notas es automaticamente recuperate e adjungite. Isto significa que ille nunquam ha besonio de cliccar super \"Pagina sequente\", lo que augmenta dramaticamente le adherentia."

View File

@ -1,28 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2010 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
# zk <zamani.karmana@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-05-28 15:50+0000\n"
"Last-Translator: zk <zamani.karmana@gmail.com>\n"
"Language-Team: Indonesian (http://www.transifex.com/gnu-social/gnu-social/language/id/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: id\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr "Infinite Scroll menambahkan fungsi berikut ke pemasangan StatusNet anda: Ketika seorang pengguna menggulir ke bawah halaman, halaman pemberitahuan selanjutnya secara otomatis diambil dan ditambahkan. Ini berarti mereka tidak perlu menekan \"Halaman Selanjutnya\", yang akan meningkatkan kelekatan."

View File

@ -1,29 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
# Ciencisto Dementa <maliktunga@users.noreply.github.com>, 2015
# William <fxinkeo@mail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-06-16 22:00+0000\n"
"Last-Translator: Ciencisto Dementa <maliktunga@users.noreply.github.com>\n"
"Language-Team: Ido (http://www.transifex.com/gnu-social/gnu-social/language/io/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: io\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr "Infinite Scroll adjuntas la sequanta funciono a vua instaluro GNU social: Kande uzanto iras vers la fundo di la pagino, la sequanta pagino di avizi esas automatale riganis ed adjuntis. Ico signifikas ke li nulatempe mustas pulsar \"Sequanta pagino\", quo ya augmentas adheremeso."

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Icelandic (http://www.transifex.com/gnu-social/gnu-social/language/is/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: is\n"
"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2012 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:43+0000\n"
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
"Language-Team: Italian (http://www.transifex.com/gnu-social/gnu-social/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr "InfiniteScroll aggiunge le seguenti funzionalità alla vostra installazione di StatusNet: quando un utente scorre verso il fondo della pagina, la pagina delle comunicazioni seguenti è automaticamente recuperata e messa di seguito. Questo significa che gli utenti non necessitano di cliccare su \"Pagina seguente\", che aumenta considerevolmente la concentrazione dell'utilizzatore"

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2010 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:43+0000\n"
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
"Language-Team: Japanese (http://www.transifex.com/gnu-social/gnu-social/language/ja/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ja\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr "無限スクロールは、StatusNetのインストールに次の機能を追加しますユーザーがページの最後までスクロースしたとき、次のページの通知が自動的に取得され追加されます。これはつまり、「次のページ」をクリックする必要がなく、手間を劇的に改善します。"

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Georgian (http://www.transifex.com/gnu-social/gnu-social/language/ka/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ka\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Korean (http://www.transifex.com/gnu-social/gnu-social/language/ko/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ko\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Colognian (http://www.transifex.com/gnu-social/gnu-social/language/ksh/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ksh\n"
"Plural-Forms: nplurals=3; plural=(n==0) ? 0 : (n==1) ? 1 : 2;\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Luxembourgish (http://www.transifex.com/gnu-social/gnu-social/language/lb/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: lb\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Lithuanian (http://www.transifex.com/gnu-social/gnu-social/language/lt/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: lt\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-07 09:39+0000\n"
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
"Language-Team: Latvian (http://www.transifex.com/gnu-social/gnu-social/language/lv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: lv\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Malagasy (http://www.transifex.com/gnu-social/gnu-social/language/mg/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: mg\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2010 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:43+0000\n"
"Last-Translator: digitaldreamer <digitaldreamer@email.cz>\n"
"Language-Team: Macedonian (http://www.transifex.com/gnu-social/gnu-social/language/mk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: mk\n"
"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr "„Бесконечно лизгање“ ја додава следнава функција во Вашата инсталација на StatusNet: Кога еден корисник лизга кон дното на страницата, следната страница автоматски се појавува во продолжение. Со ова се отстранува потребата од стискање на „Следна страница“, што значително ја зголемува лепливоста."

View File

@ -1,27 +0,0 @@
# Translation file for GNU social - the free software social networking platform
# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org
# This file is under https://www.gnu.org/licenses/agpl v3 or later
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: GNU social\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-02 17:47+0100\n"
"PO-Revision-Date: 2015-02-06 16:29+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Malayalam (http://www.transifex.com/gnu-social/gnu-social/language/ml/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ml\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. TRANS: Plugin dscription.
#: InfiniteScrollPlugin.php:60
msgid ""
"Infinite Scroll adds the following functionality to your StatusNet "
"installation: When a user scrolls towards the bottom of the page, the next "
"page of notices is automatically retrieved and appended. This means they "
"never need to click \"Next Page\", which dramatically increases stickiness."
msgstr ""

Some files were not shown because too many files have changed in this diff Show More