Merge remote-tracking branch 'upstream/2021.06-rc' into http-input-data

This commit is contained in:
Michael 2021-05-22 20:26:32 +00:00
commit 6f44476c56
158 changed files with 760 additions and 633 deletions

View File

@ -1 +1 @@
2021.06-dev 2021.06-rc

View File

@ -38,7 +38,7 @@ use Friendica\Util\DateTimeFormat;
define('FRIENDICA_PLATFORM', 'Friendica'); define('FRIENDICA_PLATFORM', 'Friendica');
define('FRIENDICA_CODENAME', 'Siberian Iris'); define('FRIENDICA_CODENAME', 'Siberian Iris');
define('FRIENDICA_VERSION', '2021.06-dev'); define('FRIENDICA_VERSION', '2021.06-rc');
define('DFRN_PROTOCOL_VERSION', '2.23'); define('DFRN_PROTOCOL_VERSION', '2.23');
define('NEW_TABLE_STRUCTURE_VERSION', 1288); define('NEW_TABLE_STRUCTURE_VERSION', 1288);

View File

@ -1,6 +1,6 @@
-- ------------------------------------------ -- ------------------------------------------
-- Friendica 2021.06-dev (Siberian Iris) -- Friendica 2021.06-rc (Siberian Iris)
-- DB_UPDATE_VERSION 1418 -- DB_UPDATE_VERSION 1419
-- ------------------------------------------ -- ------------------------------------------
@ -751,6 +751,7 @@ CREATE TABLE IF NOT EXISTS `mail` (
`from-photo` varchar(255) NOT NULL DEFAULT '' COMMENT 'contact photo link of the sender', `from-photo` varchar(255) NOT NULL DEFAULT '' COMMENT 'contact photo link of the sender',
`from-url` varchar(255) NOT NULL DEFAULT '' COMMENT 'profile linke of the sender', `from-url` varchar(255) NOT NULL DEFAULT '' COMMENT 'profile linke of the sender',
`contact-id` varchar(255) COMMENT 'contact.id', `contact-id` varchar(255) COMMENT 'contact.id',
`author-id` int unsigned COMMENT 'Link to the contact table with uid=0 of the author of the mail',
`convid` int unsigned COMMENT 'conv.id', `convid` int unsigned COMMENT 'conv.id',
`title` varchar(255) NOT NULL DEFAULT '' COMMENT '', `title` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`body` mediumtext COMMENT '', `body` mediumtext COMMENT '',
@ -759,7 +760,11 @@ CREATE TABLE IF NOT EXISTS `mail` (
`replied` boolean NOT NULL DEFAULT '0' COMMENT '', `replied` boolean NOT NULL DEFAULT '0' COMMENT '',
`unknown` boolean NOT NULL DEFAULT '0' COMMENT 'if sender not in the contact table this is 1', `unknown` boolean NOT NULL DEFAULT '0' COMMENT 'if sender not in the contact table this is 1',
`uri` varchar(255) NOT NULL DEFAULT '' COMMENT '', `uri` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`uri-id` int unsigned COMMENT 'Item-uri id of the related mail',
`parent-uri` varchar(255) NOT NULL DEFAULT '' COMMENT '', `parent-uri` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`parent-uri-id` int unsigned COMMENT 'Item-uri id of the parent of the related mail',
`thr-parent` varchar(255) COMMENT '',
`thr-parent-id` int unsigned COMMENT 'Id of the item-uri table that contains the thread parent uri',
`created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'creation time of the private message', `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'creation time of the private message',
PRIMARY KEY(`id`), PRIMARY KEY(`id`),
INDEX `uid_seen` (`uid`,`seen`), INDEX `uid_seen` (`uid`,`seen`),
@ -767,7 +772,15 @@ CREATE TABLE IF NOT EXISTS `mail` (
INDEX `uri` (`uri`(64)), INDEX `uri` (`uri`(64)),
INDEX `parent-uri` (`parent-uri`(64)), INDEX `parent-uri` (`parent-uri`(64)),
INDEX `contactid` (`contact-id`(32)), INDEX `contactid` (`contact-id`(32)),
FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE INDEX `author-id` (`author-id`),
INDEX `uri-id` (`uri-id`),
INDEX `parent-uri-id` (`parent-uri-id`),
INDEX `thr-parent-id` (`thr-parent-id`),
FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`author-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT,
FOREIGN KEY (`uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`parent-uri-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`thr-parent-id`) REFERENCES `item-uri` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE
) DEFAULT COLLATE utf8mb4_general_ci COMMENT='private messages'; ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='private messages';
-- --

View File

@ -119,17 +119,29 @@ These endpoints use the [Mastodon API entities](https://docs.joinmastodon.org/en
## Currently unimplemented endpoints ## Currently unimplemented endpoints
These emdpoints are planned to be implemented These emdpoints are planned to be implemented somewhere in the future.
- [`PATCH /api/v1/accounts/update_credentials`](https://docs.joinmastodon.org/methods/accounts/) - [`PATCH /api/v1/accounts/update_credentials`](https://docs.joinmastodon.org/methods/accounts/)
- [`GET /api/v1/instance/activity`](https://docs.joinmastodon.org/methods/instance#weekly-activity) - [`GET /api/v1/instance/activity`](https://docs.joinmastodon.org/methods/instance#weekly-activity)
## Dummy endpoints
These endpoints are returning empty data to avoid error messages when using third party clients.
They refer to features that don't exist in Friendica yet.
- [`GET /api/v1/accounts/:id/identity_proofs`](https://docs.joinmastodon.org/methods/accounts/)
- [`GET /api/v1/announcements`](https://docs.joinmastodon.org/methods/announcements/)
- [`GET /api/v1/endorsements`](https://docs.joinmastodon.org/methods/accounts/endorsements/)
- [`GET /api/v1/filters`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`GET /api/v1/markers`](https://docs.joinmastodon.org/methods/timelines/markers/)
- [`GET /api/v1/scheduled_statuses`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/)
## Non supportable endpoints ## Non supportable endpoints
These endpoints won't be implemented, since they refer to functionality that doesn't exist in Friendica These endpoints won't be implemented at the moment.
They refer to features that don't exist in Friendica yet.
- [`POST /api/v1/accounts`](https://docs.joinmastodon.org/methods/accounts/) - [`POST /api/v1/accounts`](https://docs.joinmastodon.org/methods/accounts/)
- [`GET /api/v1/accounts/:id/identity_proofs`](https://docs.joinmastodon.org/methods/accounts/)
- [`POST /api/v1/accounts/:id/pin`](https://docs.joinmastodon.org/methods/accounts/) - [`POST /api/v1/accounts/:id/pin`](https://docs.joinmastodon.org/methods/accounts/)
- [`POST /api/v1/accounts/:id/unpin`](https://docs.joinmastodon.org/methods/accounts/) - [`POST /api/v1/accounts/:id/unpin`](https://docs.joinmastodon.org/methods/accounts/)
- [`GET /api/v1/admin/accounts`](https://docs.joinmastodon.org/methods/admin/) - [`GET /api/v1/admin/accounts`](https://docs.joinmastodon.org/methods/admin/)
@ -138,29 +150,24 @@ These endpoints won't be implemented, since they refer to functionality that doe
- [`GET /api/v1/admin/reports`](https://docs.joinmastodon.org/methods/admin/) - [`GET /api/v1/admin/reports`](https://docs.joinmastodon.org/methods/admin/)
- [`GET /api/v1/admin/reports/:id`](https://docs.joinmastodon.org/methods/admin/) - [`GET /api/v1/admin/reports/:id`](https://docs.joinmastodon.org/methods/admin/)
- [`POST /api/v1/admin/reports/:id/{action}`](https://docs.joinmastodon.org/methods/admin/) - [`POST /api/v1/admin/reports/:id/{action}`](https://docs.joinmastodon.org/methods/admin/)
- [`GET /api/v1/announcements`](https://docs.joinmastodon.org/methods/announcements/)
- [`POST /api/v1/announcements/:id/dismiss`](https://docs.joinmastodon.org/methods/announcements/) - [`POST /api/v1/announcements/:id/dismiss`](https://docs.joinmastodon.org/methods/announcements/)
- [`PUT /api/v1/announcements/:id/reactions/{name}`](https://docs.joinmastodon.org/methods/announcements/) - [`PUT /api/v1/announcements/:id/reactions/{name}`](https://docs.joinmastodon.org/methods/announcements/)
- [`DELETE /api/v1/announcements/:id/reactions/{name}`](https://docs.joinmastodon.org/methods/announcements/) - [`DELETE /api/v1/announcements/:id/reactions/{name}`](https://docs.joinmastodon.org/methods/announcements/)
- [`GET /api/v1/domain_blocks`](https://docs.joinmastodon.org/methods/accounts/domain_blocks/) - [`GET /api/v1/domain_blocks`](https://docs.joinmastodon.org/methods/accounts/domain_blocks/)
- [`POST /api/v1/domain_blocks`](https://docs.joinmastodon.org/methods/accounts/domain_blocks/) - [`POST /api/v1/domain_blocks`](https://docs.joinmastodon.org/methods/accounts/domain_blocks/)
- [`DELETE /api/v1/domain_blocks`](https://docs.joinmastodon.org/methods/accounts/domain_blocks/) - [`DELETE /api/v1/domain_blocks`](https://docs.joinmastodon.org/methods/accounts/domain_blocks/)
- [`GET /api/v1/endorsements`](https://docs.joinmastodon.org/methods/accounts/endorsements/)
- [`GET /api/v1/featured_tags`](https://docs.joinmastodon.org/methods/accounts/featured_tags/) - [`GET /api/v1/featured_tags`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
- [`POST /api/v1/featured_tags`](https://docs.joinmastodon.org/methods/accounts/featured_tags/) - [`POST /api/v1/featured_tags`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
- [`DELETE /api/v1/featured_tags/:id`](https://docs.joinmastodon.org/methods/accounts/featured_tags/) - [`DELETE /api/v1/featured_tags/:id`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
- [`GET /api/v1/featured_tags/suggestions`](https://docs.joinmastodon.org/methods/accounts/featured_tags/) - [`GET /api/v1/featured_tags/suggestions`](https://docs.joinmastodon.org/methods/accounts/featured_tags/)
- [`GET /api/v1/filters`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`GET /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/) - [`GET /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`POST /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/) - [`POST /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`PUT /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/) - [`PUT /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`DELETE /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/) - [`DELETE /api/v1/filters/:id`](https://docs.joinmastodon.org/methods/accounts/filters/)
- [`GET /api/v1/markers`](https://docs.joinmastodon.org/methods/timelines/markers/)
- [`POST /api/v1/markers`](https://docs.joinmastodon.org/methods/timelines/markers/) - [`POST /api/v1/markers`](https://docs.joinmastodon.org/methods/timelines/markers/)
- [`GET /api/v1/polls/:id`](https://docs.joinmastodon.org/methods/statuses/polls/) - [`GET /api/v1/polls/:id`](https://docs.joinmastodon.org/methods/statuses/polls/)
- [`POST /api/v1/polls/:id/votes`](https://docs.joinmastodon.org/methods/statuses/polls/) - [`POST /api/v1/polls/:id/votes`](https://docs.joinmastodon.org/methods/statuses/polls/)
- [`POST /api/v1/reports`](https://docs.joinmastodon.org/methods/accounts/reports/) - [`POST /api/v1/reports`](https://docs.joinmastodon.org/methods/accounts/reports/)
- [`GET /api/v1/scheduled_statuses`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/)
- [`GET /api/v1/scheduled_statuses/:id`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/) - [`GET /api/v1/scheduled_statuses/:id`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/)
- [`PUT /api/v1/scheduled_statuses/:id`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/) - [`PUT /api/v1/scheduled_statuses/:id`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/)
- [`DELETE /api/v1/scheduled_statuses/:id`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/) - [`DELETE /api/v1/scheduled_statuses/:id`](https://docs.joinmastodon.org/methods/statuses/scheduled_statuses/)

View File

@ -50,7 +50,7 @@ use Friendica\Util\XML;
class BBCode class BBCode
{ {
// Update this value to the current date whenever changes are made to BBCode::convert // Update this value to the current date whenever changes are made to BBCode::convert
const VERSION = '2021-05-01'; const VERSION = '2021-05-21';
const INTERNAL = 0; const INTERNAL = 0;
const EXTERNAL = 1; const EXTERNAL = 1;
@ -1039,7 +1039,9 @@ class BBCode
switch ($simplehtml) { switch ($simplehtml) {
case self::API: case self::API:
$text = ($is_quote_share? '<br>' : '') . '<p>' . html_entity_decode('&#x2672; ', ENT_QUOTES, 'UTF-8') . ' ' . $author_contact['addr'] . ': </p>' . "\n" . $content; $text = ($is_quote_share? '<br>' : '') .
'<p><b><a href="' . $attributes['link'] . '">' . html_entity_decode('&#x2672; ', ENT_QUOTES, 'UTF-8') . ' ' . $author_contact['addr'] . "</a>:</b> </p>\n" .
'<blockquote class="shared_content">' . $content . '</blockquote>';
break; break;
case self::DIASPORA: case self::DIASPORA:
if (stripos(Strings::normaliseLink($attributes['link']), 'http://twitter.com/') === 0) { if (stripos(Strings::normaliseLink($attributes['link']), 'http://twitter.com/') === 0) {
@ -1721,7 +1723,7 @@ class BBCode
$text); $text);
} elseif (!$simple_html) { } elseif (!$simple_html) {
$text = preg_replace("/([@!])\[url\=(.*?)\](.*?)\[\/url\]/ism", $text = preg_replace("/([@!])\[url\=(.*?)\](.*?)\[\/url\]/ism",
'$1<a href="$2" class="userinfo mention" title="$3"><bdi>$3</bdi></a>', '<bdi>$1<a href="$2" class="userinfo mention" title="$3">$3</a></bdi>',
$text); $text);
} }

View File

@ -136,7 +136,9 @@ class Status extends BaseFactory
$account = DI::mstdnAccount()->createFromContactId($item['author-id']); $account = DI::mstdnAccount()->createFromContactId($item['author-id']);
$counts = new \Friendica\Object\Api\Mastodon\Status\Counts(0, 0, 0); $replies = DBA::count('mail', ['thr-parent-id' => $item['uri-id'], 'reply' => true]);
$counts = new \Friendica\Object\Api\Mastodon\Status\Counts($replies, 0, 0);
$userAttributes = new \Friendica\Object\Api\Mastodon\Status\UserAttributes(false, false, false, false, false); $userAttributes = new \Friendica\Object\Api\Mastodon\Status\UserAttributes(false, false, false, false, false);

View File

@ -1941,6 +1941,11 @@ class Contact
return false; return false;
} }
if (Contact::isLocal($ret['url'])) {
Logger::info('Local contacts are not updated here.');
return true;
}
if (!empty($ret['account-type']) && $ret['account-type'] == User::ACCOUNT_TYPE_DELETED) { if (!empty($ret['account-type']) && $ret['account-type'] == User::ACCOUNT_TYPE_DELETED) {
Logger::info('Deleted account', ['id' => $id, 'url' => $ret['url'], 'ret' => $ret]); Logger::info('Deleted account', ['id' => $id, 'url' => $ret['url'], 'ret' => $ret]);
self::remove($id); self::remove($id);

View File

@ -71,6 +71,20 @@ class Mail
return false; return false;
} }
$msg['author-id'] = Contact::getIdForURL($msg['from-url'], 0, false);
$msg['uri-id'] = ItemURI::insert(['uri' => $msg['uri'], 'guid' => $msg['guid']]);
$msg['parent-uri-id'] = ItemURI::getIdByURI($msg['parent-uri']);
if ($msg['reply']) {
$reply = DBA::selectFirst('mail', ['uri', 'uri-id'], ['parent-uri' => $mail['parent-uri'], 'reply' => false]);
$msg['thr-parent'] = $reply['uri'];
$msg['thr-parent-id'] = $reply['uri-id'];
} else {
$msg['thr-parent'] = $msg['uri'];
$msg['thr-parent-id'] = $msg['uri-id'];
}
DBA::insert('mail', $msg); DBA::insert('mail', $msg);
$msg['id'] = DBA::lastInsertId(); $msg['id'] = DBA::lastInsertId();

View File

@ -145,7 +145,7 @@ class Profile
*/ */
public static function load(App $a, $nickname, array $profiledata = [], $show_connect = true) public static function load(App $a, $nickname, array $profiledata = [], $show_connect = true)
{ {
$user = DBA::selectFirst('user', ['uid'], ['nickname' => $nickname, 'account_removed' => false]); $user = User::getByNickname($nickname);
if (!DBA::isResult($user) && empty($profiledata)) { if (!DBA::isResult($user) && empty($profiledata)) {
Logger::log('profile error: ' . DI::args()->getQueryString(), Logger::DEBUG); Logger::log('profile error: ' . DI::args()->getQueryString(), Logger::DEBUG);

View File

@ -425,8 +425,8 @@ class Tag
$item['body'] = str_replace($orig_tag, $tag['url'], $item['body']); $item['body'] = str_replace($orig_tag, $tag['url'], $item['body']);
} }
$return['hashtags'][] = $prefix . '<a href="' . $tag['url'] . '" target="_blank" rel="noopener noreferrer">' . htmlspecialchars($tag['name']) . '</a>'; $return['hashtags'][] = '<bdi>' . $prefix . '<a href="' . $tag['url'] . '" target="_blank" rel="noopener noreferrer">' . htmlspecialchars($tag['name']) . '</a></bdi>';
$return['tags'][] = $prefix . '<a href="' . $tag['url'] . '" target="_blank" rel="noopener noreferrer">' . htmlspecialchars($tag['name']) . '</a>'; $return['tags'][] = '<bdi>' . $prefix . '<a href="' . $tag['url'] . '" target="_blank" rel="noopener noreferrer">' . htmlspecialchars($tag['name']) . '</a></bdi>';
break; break;
case self::MENTION: case self::MENTION:
case self::EXCLUSIVE_MENTION: case self::EXCLUSIVE_MENTION:
@ -435,8 +435,8 @@ class Tag
} else { } else {
$tag['url'] = Contact::magicLink($tag['url']); $tag['url'] = Contact::magicLink($tag['url']);
} }
$return['mentions'][] = $prefix . '<a href="' . $tag['url'] . '" target="_blank" rel="noopener noreferrer">' . htmlspecialchars($tag['name']) . '</a>'; $return['mentions'][] = '<bdi>' . $prefix . '<a href="' . $tag['url'] . '" target="_blank" rel="noopener noreferrer">' . htmlspecialchars($tag['name']) . '</a></bdi>';
$return['tags'][] = $prefix . '<a href="' . $tag['url'] . '" target="_blank" rel="noopener noreferrer">' . htmlspecialchars($tag['name']) . '</a>'; $return['tags'][] = '<bdi>' . $prefix . '<a href="' . $tag['url'] . '" target="_blank" rel="noopener noreferrer">' . htmlspecialchars($tag['name']) . '</a></bdi>';
break; break;
case self::IMPLICIT_MENTION: case self::IMPLICIT_MENTION:
$return['implicit_mentions'][] = $prefix . $tag['name']; $return['implicit_mentions'][] = $prefix . $tag['name'];

View File

@ -515,7 +515,27 @@ class User
*/ */
public static function getIdFromPasswordAuthentication($user_info, $password, $third_party = false) public static function getIdFromPasswordAuthentication($user_info, $password, $third_party = false)
{ {
// Addons registered with the "authenticate" hook may create the user on the
// fly. `getAuthenticationInfo` will fail if the user doesn't exist yet. If
// the user doesn't exist, we should give the addons a chance to create the
// user in our database, if applicable, before re-throwing the exception if
// they fail.
try {
$user = self::getAuthenticationInfo($user_info); $user = self::getAuthenticationInfo($user_info);
} catch (Exception $e) {
$username = (is_string($user_info) ? $user_info : $user_info['nickname'] ?? '');
// Addons can create users, and since this 'catch' branch should only
// execute if getAuthenticationInfo can't find an existing user, that's
// exactly what will happen here. Creating a numeric username would create
// abiguity with user IDs, possibly opening up an attack vector.
// So let's be very careful about that.
if (empty($username) || is_numeric($username)) {
throw $e;
}
return self::getIdFromAuthenticateHooks($username, $password);
}
if ($third_party && DI::pConfig()->get($user['uid'], '2fa', 'verified')) { if ($third_party && DI::pConfig()->get($user['uid'], '2fa', 'verified')) {
// Third-party apps can't verify two-factor authentication, we use app-specific passwords instead // Third-party apps can't verify two-factor authentication, we use app-specific passwords instead
@ -545,8 +565,26 @@ class User
return $user['uid']; return $user['uid'];
} else { } else {
return self::getIdFromAuthenticateHooks($user['nickname'], $password); // throws
}
throw new HTTPException\ForbiddenException(DI::l10n()->t('Login failed'));
}
/**
* Try to obtain a user ID via "authenticate" hook addons
*
* Returns the user id associated with a successful password authentication
*
* @param string $username
* @param string $password
* @return int User Id if authentication is successful
* @throws HTTPException\ForbiddenException
*/
public static function getIdFromAuthenticateHooks($username, $password)
{
$addon_auth = [ $addon_auth = [
'username' => $user['nickname'], 'username' => $username,
'password' => $password, 'password' => $password,
'authenticated' => 0, 'authenticated' => 0,
'user_record' => null 'user_record' => null
@ -560,8 +598,7 @@ class User
Hook::callAll('authenticate', $addon_auth); Hook::callAll('authenticate', $addon_auth);
if ($addon_auth['authenticated'] && $addon_auth['user_record']) { if ($addon_auth['authenticated'] && $addon_auth['user_record']) {
return $user['uid']; return $addon_auth['user_record']['uid'];
}
} }
throw new HTTPException\ForbiddenException(DI::l10n()->t('Login failed')); throw new HTTPException\ForbiddenException(DI::l10n()->t('Login failed'));

View File

@ -29,7 +29,7 @@ use Friendica\Module\BaseApi;
/** /**
* @see https://docs.joinmastodon.org/methods/timelines/conversations/ * @see https://docs.joinmastodon.org/methods/timelines/conversations/
*/ */
class Conversation extends BaseApi class Conversations extends BaseApi
{ {
public static function delete(array $parameters = []) public static function delete(array $parameters = [])
{ {

View File

@ -19,7 +19,7 @@
* *
*/ */
namespace Friendica\Module\Api\Mastodon\Conversation; namespace Friendica\Module\Api\Mastodon\Conversations;
use Friendica\Core\System; use Friendica\Core\System;
use Friendica\Database\DBA; use Friendica\Database\DBA;

View File

@ -48,22 +48,22 @@ class Direct extends BaseApi
'limit' => 20, // Maximum number of results to return. Defaults to 20. 'limit' => 20, // Maximum number of results to return. Defaults to 20.
]); ]);
$params = ['order' => ['id' => true], 'limit' => $request['limit']]; $params = ['order' => ['uri-id' => true], 'limit' => $request['limit']];
$condition = ['uid' => $uid]; $condition = ['uid' => $uid];
if (!empty($request['max_id'])) { if (!empty($request['max_id'])) {
$condition = DBA::mergeConditions($condition, ["`id` < ?", $request['max_id']]); $condition = DBA::mergeConditions($condition, ["`uri-id` < ?", $request['max_id']]);
} }
if (!empty($request['since_id'])) { if (!empty($request['since_id'])) {
$condition = DBA::mergeConditions($condition, ["`id` > ?", $request['since_id']]); $condition = DBA::mergeConditions($condition, ["`uri-id` > ?", $request['since_id']]);
} }
if (!empty($request['min_id'])) { if (!empty($request['min_id'])) {
$condition = DBA::mergeConditions($condition, ["`id` > ?", $request['min_id']]); $condition = DBA::mergeConditions($condition, ["`uri-id` > ?", $request['min_id']]);
$params['order'] = ['id']; $params['order'] = ['uri-id'];
} }
$mails = DBA::select('mail', ['id'], $condition, $params); $mails = DBA::select('mail', ['id'], $condition, $params);

View File

@ -50,20 +50,20 @@ class NoScrape extends BaseModule
System::jsonError(403, 'Authentication required'); System::jsonError(403, 'Authentication required');
} }
Profile::load($a, $which); $profile = Profile::getByNickname($which, local_user());
if (empty($a->profile['uid'])) { if (empty($profile['uid'])) {
System::jsonError(404, 'Profile not found'); System::jsonError(404, 'Profile not found');
} }
$json_info = [ $json_info = [
'addr' => $a->profile['addr'], 'addr' => $profile['addr'],
'nick' => $which, 'nick' => $which,
'guid' => $a->profile['guid'], 'guid' => $profile['guid'],
'key' => $a->profile['upubkey'], 'key' => $profile['upubkey'],
'homepage' => DI::baseUrl() . "/profile/{$which}", 'homepage' => DI::baseUrl() . "/profile/{$which}",
'comm' => ($a->profile['account-type'] == User::ACCOUNT_TYPE_COMMUNITY), 'comm' => ($profile['account-type'] == User::ACCOUNT_TYPE_COMMUNITY),
'account-type' => $a->profile['account-type'], 'account-type' => $profile['account-type'],
]; ];
$dfrn_pages = ['request', 'confirm', 'notify', 'poll']; $dfrn_pages = ['request', 'confirm', 'notify', 'poll'];
@ -71,30 +71,30 @@ class NoScrape extends BaseModule
$json_info["dfrn-{$dfrn}"] = DI::baseUrl() . "/dfrn_{$dfrn}/{$which}"; $json_info["dfrn-{$dfrn}"] = DI::baseUrl() . "/dfrn_{$dfrn}/{$which}";
} }
if (!$a->profile['net-publish']) { if (!$profile['net-publish']) {
$json_info['hide'] = true; $json_info['hide'] = true;
System::jsonExit($json_info); System::jsonExit($json_info);
} }
$keywords = $a->profile['pub_keywords'] ?? ''; $keywords = $profile['pub_keywords'] ?? '';
$keywords = str_replace(['#', ',', ' ', ',,'], ['', ' ', ',', ','], $keywords); $keywords = str_replace(['#', ',', ' ', ',,'], ['', ' ', ',', ','], $keywords);
$keywords = explode(',', $keywords); $keywords = explode(',', $keywords);
$contactPhoto = DBA::selectFirst('contact', ['photo'], ['self' => true, 'uid' => $a->profile['uid']]); $contactPhoto = DBA::selectFirst('contact', ['photo'], ['self' => true, 'uid' => $profile['uid']]);
$json_info['fn'] = $a->profile['name']; $json_info['fn'] = $profile['name'];
$json_info['photo'] = $contactPhoto["photo"]; $json_info['photo'] = $contactPhoto["photo"];
$json_info['tags'] = $keywords; $json_info['tags'] = $keywords;
$json_info['language'] = $a->profile['language']; $json_info['language'] = $profile['language'];
if (!empty($a->profile['last-item'])) { if (!empty($profile['last-item'])) {
$json_info['updated'] = date("c", strtotime($a->profile['last-item'])); $json_info['updated'] = date("c", strtotime($profile['last-item']));
} }
if (!($a->profile['hide-friends'] ?? false)) { if (!($profile['hide-friends'] ?? false)) {
$json_info['contacts'] = DBA::count('contact', $json_info['contacts'] = DBA::count('contact',
[ [
'uid' => $a->profile['uid'], 'uid' => $profile['uid'],
'self' => 0, 'self' => 0,
'blocked' => 0, 'blocked' => 0,
'pending' => 0, 'pending' => 0,
@ -106,13 +106,13 @@ class NoScrape extends BaseModule
// We display the last activity (post or login), reduced to year and week number // We display the last activity (post or login), reduced to year and week number
$last_active = 0; $last_active = 0;
$condition = ['uid' => $a->profile['uid'], 'self' => true]; $condition = ['uid' => $profile['uid'], 'self' => true];
$contact = DBA::selectFirst('contact', ['last-item'], $condition); $contact = DBA::selectFirst('contact', ['last-item'], $condition);
if (DBA::isResult($contact)) { if (DBA::isResult($contact)) {
$last_active = strtotime($contact['last-item']); $last_active = strtotime($contact['last-item']);
} }
$condition = ['uid' => $a->profile['uid']]; $condition = ['uid' => $profile['uid']];
$user = DBA::selectFirst('user', ['login_date'], $condition); $user = DBA::selectFirst('user', ['login_date'], $condition);
if (DBA::isResult($user)) { if (DBA::isResult($user)) {
if ($last_active < strtotime($user['login_date'])) { if ($last_active < strtotime($user['login_date'])) {
@ -124,8 +124,8 @@ class NoScrape extends BaseModule
//These are optional fields. //These are optional fields.
$profile_fields = ['about', 'locality', 'region', 'postal-code', 'country-name']; $profile_fields = ['about', 'locality', 'region', 'postal-code', 'country-name'];
foreach ($profile_fields as $field) { foreach ($profile_fields as $field) {
if (!empty($a->profile[$field])) { if (!empty($profile[$field])) {
$json_info["$field"] = $a->profile[$field]; $json_info["$field"] = $profile[$field];
} }
} }

View File

@ -63,9 +63,9 @@ class Authorize extends BaseApi
// @todo Compare the application scope and requested scope // @todo Compare the application scope and requested scope
$request = $_REQUEST; $redirect_request = $_REQUEST;
unset($request['pagename']); unset($redirect_request['pagename']);
$redirect = 'oauth/authorize?' . http_build_query($request); $redirect = 'oauth/authorize?' . http_build_query($redirect_request);
$uid = local_user(); $uid = local_user();
if (empty($uid)) { if (empty($uid)) {

View File

@ -868,24 +868,19 @@ class Transmitter
return []; return [];
} }
$mail['uri-id'] = ItemURI::insert(['uri' => $mail['uri'], 'guid' => $mail['guid']]); $reply = DBA::selectFirst('mail', ['uri', 'uri-id', 'from-url'], ['parent-uri' => $mail['parent-uri'], 'reply' => false]);
$reply = DBA::selectFirst('mail', ['uri', 'from-url', 'guid'], ['parent-uri' => $mail['parent-uri'], 'reply' => false]);
// Making the post more compatible for Mastodon by: // Making the post more compatible for Mastodon by:
// - Making it a note and not an article (no title) // - Making it a note and not an article (no title)
// - Moving the title into the "summary" field that is used as a "content warning" // - Moving the title into the "summary" field that is used as a "content warning"
if ($use_title) { if (!$use_title) {
$mail['body'] = $mail['body'];
$mail['title'] = $mail['title'];
} else {
$mail['body'] = '[abstract]' . $mail['title'] . "[/abstract]\n" . $mail['body']; $mail['body'] = '[abstract]' . $mail['title'] . "[/abstract]\n" . $mail['body'];
$mail['title'] = ''; $mail['title'] = '';
} }
$mail['author-link'] = $mail['owner-link'] = $mail['from-url']; $mail['author-link'] = $mail['owner-link'] = $mail['from-url'];
$mail['author-id'] = Contact::getIdForURL($mail['author-link'], 0, false); $mail['owner-id'] = $mail['author-id'];
$mail['allow_cid'] = '<'.$mail['contact-id'].'>'; $mail['allow_cid'] = '<'.$mail['contact-id'].'>';
$mail['allow_gid'] = ''; $mail['allow_gid'] = '';
$mail['deny_cid'] = ''; $mail['deny_cid'] = '';
@ -893,9 +888,9 @@ class Transmitter
$mail['private'] = Item::PRIVATE; $mail['private'] = Item::PRIVATE;
$mail['deleted'] = false; $mail['deleted'] = false;
$mail['edited'] = $mail['created']; $mail['edited'] = $mail['created'];
$mail['plink'] = $mail['uri']; $mail['plink'] = DI::baseUrl() . '/message/' . $mail['id'];
$mail['thr-parent'] = $reply['uri']; $mail['parent-uri'] = $reply['uri'];
$mail['thr-parent-id'] = ItemURI::insert(['uri' => $reply['uri'], 'guid' => $reply['guid']]); $mail['parent-uri-id'] = $reply['uri-id'];
$mail['parent-author-id'] = Contact::getIdForURL($reply['from-url'], 0, false); $mail['parent-author-id'] = Contact::getIdForURL($reply['from-url'], 0, false);
$mail['gravity'] = ($mail['reply'] ? GRAVITY_COMMENT: GRAVITY_PARENT); $mail['gravity'] = ($mail['reply'] ? GRAVITY_COMMENT: GRAVITY_PARENT);
$mail['event-type'] = ''; $mail['event-type'] = '';
@ -1530,12 +1525,21 @@ class Transmitter
if ($type == 'Note') { if ($type == 'Note') {
$body = $item['raw-body'] ?? self::removePictures($body); $body = $item['raw-body'] ?? self::removePictures($body);
} elseif (($type == 'Article') && empty($data['summary'])) {
$regexp = "/[@!]\[url\=([^\[\]]*)\].*?\[\/url\]/ism";
$summary = preg_replace_callback($regexp, ['self', 'mentionAddrCallback'], $body);
$data['summary'] = BBCode::toPlaintext(Plaintext::shorten(self::removePictures($summary), 1000));
} }
/**
* @todo Improve the automated summary
* This part is currently deactivated. The automated summary seems to be more
* confusing than helping. But possibly we will find a better way.
* So the code is left here for now as a reminder
*
* } elseif (($type == 'Article') && empty($data['summary'])) {
* $regexp = "/[@!]\[url\=([^\[\]]*)\].*?\[\/url\]/ism";
* $summary = preg_replace_callback($regexp, ['self', 'mentionAddrCallback'], $body);
* $data['summary'] = BBCode::toPlaintext(Plaintext::shorten(self::removePictures($summary), 1000));
* }
*/
if (empty($item['uid']) || !Feature::isEnabled($item['uid'], 'explicit_mentions')) { if (empty($item['uid']) || !Feature::isEnabled($item['uid'], 'explicit_mentions')) {
$body = self::prependMentions($body, $item['uri-id'], $item['author-link']); $body = self::prependMentions($body, $item['uri-id'], $item['author-link']);
} }

View File

@ -558,8 +558,10 @@ class HTTPSignature
if (!empty($key['url']) && !empty($key['type']) && ($key['type'] == 'Tombstone')) { if (!empty($key['url']) && !empty($key['type']) && ($key['type'] == 'Tombstone')) {
Logger::info('Actor is a tombstone', ['key' => $key]); Logger::info('Actor is a tombstone', ['key' => $key]);
if (!Contact::isLocal($key['url'])) {
// We now delete everything that we possibly knew from this actor // We now delete everything that we possibly knew from this actor
Contact::deleteContactByUrl($key['url']); Contact::deleteContactByUrl($key['url']);
}
return null; return null;
} }

View File

@ -181,7 +181,10 @@ class ExpirePosts
AND NOT EXISTS(SELECT `uri-id` FROM `post-user` WHERE `uri-id` = `item-uri`.`id`) AND NOT EXISTS(SELECT `uri-id` FROM `post-user` WHERE `uri-id` = `item-uri`.`id`)
AND NOT EXISTS(SELECT `parent-uri-id` FROM `post-user` WHERE `parent-uri-id` = `item-uri`.`id`) AND NOT EXISTS(SELECT `parent-uri-id` FROM `post-user` WHERE `parent-uri-id` = `item-uri`.`id`)
AND NOT EXISTS(SELECT `thr-parent-id` FROM `post-user` WHERE `thr-parent-id` = `item-uri`.`id`) AND NOT EXISTS(SELECT `thr-parent-id` FROM `post-user` WHERE `thr-parent-id` = `item-uri`.`id`)
AND NOT EXISTS(SELECT `external-id` FROM `post-user` WHERE `external-id` = `item-uri`.`id`)", $item['uri-id']]); AND NOT EXISTS(SELECT `external-id` FROM `post-user` WHERE `external-id` = `item-uri`.`id`)
AND NOT EXISTS(SELECT `uri-id` FROM `mail` WHERE `uri-id` = `item-uri`.`id`)
AND NOT EXISTS(SELECT `parent-uri-id` FROM `mail` WHERE `parent-uri-id` = `item-uri`.`id`)
AND NOT EXISTS(SELECT `thr-parent-id` FROM `mail` WHERE `thr-parent-id` = `item-uri`.`id`)", $item['uri-id']]);
Logger::notice('Start deleting orphaned URI-ID', ['last-id' => $item['uri-id']]); Logger::notice('Start deleting orphaned URI-ID', ['last-id' => $item['uri-id']]);
$affected_count = 0; $affected_count = 0;

View File

@ -55,6 +55,7 @@ class RemoveContact {
} }
DBA::delete('mail', ['contact-id' => $id]); DBA::delete('mail', ['contact-id' => $id]);
DBA::delete('mail', ['author-id' => $id]);
Post\ThreadUser::delete(['author-id' => $id]); Post\ThreadUser::delete(['author-id' => $id]);
Post\ThreadUser::delete(['owner-id' => $id]); Post\ThreadUser::delete(['owner-id' => $id]);

View File

@ -55,7 +55,7 @@
use Friendica\Database\DBA; use Friendica\Database\DBA;
if (!defined('DB_UPDATE_VERSION')) { if (!defined('DB_UPDATE_VERSION')) {
define('DB_UPDATE_VERSION', 1418); define('DB_UPDATE_VERSION', 1419);
} }
return [ return [
@ -818,6 +818,7 @@ return [
"from-photo" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "contact photo link of the sender"], "from-photo" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "contact photo link of the sender"],
"from-url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "profile linke of the sender"], "from-url" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "profile linke of the sender"],
"contact-id" => ["type" => "varchar(255)", "relation" => ["contact" => "id"], "comment" => "contact.id"], "contact-id" => ["type" => "varchar(255)", "relation" => ["contact" => "id"], "comment" => "contact.id"],
"author-id" => ["type" => "int unsigned", "foreign" => ["contact" => "id", "on delete" => "restrict"], "comment" => "Link to the contact table with uid=0 of the author of the mail"],
"convid" => ["type" => "int unsigned", "relation" => ["conv" => "id"], "comment" => "conv.id"], "convid" => ["type" => "int unsigned", "relation" => ["conv" => "id"], "comment" => "conv.id"],
"title" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "title" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
"body" => ["type" => "mediumtext", "comment" => ""], "body" => ["type" => "mediumtext", "comment" => ""],
@ -826,7 +827,11 @@ return [
"replied" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "replied" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""],
"unknown" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "if sender not in the contact table this is 1"], "unknown" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "if sender not in the contact table this is 1"],
"uri" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "uri" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
"uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Item-uri id of the related mail"],
"parent-uri" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "parent-uri" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""],
"parent-uri-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Item-uri id of the parent of the related mail"],
"thr-parent" => ["type" => "varchar(255)", "comment" => ""],
"thr-parent-id" => ["type" => "int unsigned", "foreign" => ["item-uri" => "id"], "comment" => "Id of the item-uri table that contains the thread parent uri"],
"created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "creation time of the private message"], "created" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "creation time of the private message"],
], ],
"indexes" => [ "indexes" => [
@ -836,6 +841,10 @@ return [
"uri" => ["uri(64)"], "uri" => ["uri(64)"],
"parent-uri" => ["parent-uri(64)"], "parent-uri" => ["parent-uri(64)"],
"contactid" => ["contact-id(32)"], "contactid" => ["contact-id(32)"],
"author-id" => ["author-id"],
"uri-id" => ["uri-id"],
"parent-uri-id" => ["parent-uri-id"],
"thr-parent-id" => ["thr-parent-id"],
] ]
], ],
"mailacct" => [ "mailacct" => [

View File

@ -90,9 +90,9 @@ return [
'/apps/verify_credentials' => [Module\Api\Mastodon\Apps\VerifyCredentials::class, [R::GET ]], '/apps/verify_credentials' => [Module\Api\Mastodon\Apps\VerifyCredentials::class, [R::GET ]],
'/blocks' => [Module\Api\Mastodon\Blocks::class, [R::GET ]], '/blocks' => [Module\Api\Mastodon\Blocks::class, [R::GET ]],
'/bookmarks' => [Module\Api\Mastodon\Bookmarks::class, [R::GET ]], '/bookmarks' => [Module\Api\Mastodon\Bookmarks::class, [R::GET ]],
'/conversations' => [Module\Api\Mastodon\Conversation::class, [R::GET ]], '/conversations' => [Module\Api\Mastodon\Conversations::class, [R::GET ]],
'/conversations/{id:\d+}' => [Module\Api\Mastodon\Conversation::class, [R::DELETE ]], '/conversations/{id:\d+}' => [Module\Api\Mastodon\Conversations::class, [R::DELETE ]],
'/conversations/{id:\d+}/read' => [Module\Api\Mastodon\Conversation\Read::class, [R::POST ]], '/conversations/{id:\d+}/read' => [Module\Api\Mastodon\Conversations\Read::class, [R::POST ]],
'/custom_emojis' => [Module\Api\Mastodon\CustomEmojis::class, [R::GET ]], '/custom_emojis' => [Module\Api\Mastodon\CustomEmojis::class, [R::GET ]],
'/domain_blocks' => [Module\Api\Mastodon\Unimplemented::class, [R::GET, R::POST, R::DELETE]], // not supported '/domain_blocks' => [Module\Api\Mastodon\Unimplemented::class, [R::GET, R::POST, R::DELETE]], // not supported
'/directory' => [Module\Api\Mastodon\Directory::class, [R::GET ]], '/directory' => [Module\Api\Mastodon\Directory::class, [R::GET ]],

View File

@ -49,6 +49,7 @@ use Friendica\Database\DBStructure;
use Friendica\DI; use Friendica\DI;
use Friendica\Model\Contact; use Friendica\Model\Contact;
use Friendica\Model\Item; use Friendica\Model\Item;
use Friendica\Model\ItemURI;
use Friendica\Model\Notification; use Friendica\Model\Notification;
use Friendica\Model\Photo; use Friendica\Model\Photo;
use Friendica\Model\Post; use Friendica\Model\Post;
@ -912,3 +913,31 @@ function update_1413()
return Update::FAILED; return Update::FAILED;
} }
} }
function update_1419()
{
$mails = DBA::select('mail', ['id', 'from-url', 'uri', 'parent-uri', 'guid'], [], ['order' => ['id']]);
while ($mail = DBA::fetch($mails)) {
$fields = [];
$fields['author-id'] = Contact::getIdForURL($mail['from-url'], 0, false);
if (empty($fields['author-id'])) {
continue;
}
$fields['uri-id'] = ItemURI::insert(['uri' => $mail['uri'], 'guid' => $mail['guid']]);
$fields['parent-uri-id'] = ItemURI::getIdByURI($mail['parent-uri']);
$reply = DBA::selectFirst('mail', ['uri', 'uri-id', 'guid'], ['parent-uri' => $mail['parent-uri'], 'reply' => false]);
if (!empty($reply)) {
$fields['thr-parent'] = $reply['uri'];
if (!empty($reply['uri-id'])) {
$fields['thr-parent-id'] = $reply['uri-id'];
} else {
$fields['thr-parent-id'] = ItemURI::insert(['uri' => $reply['uri'], 'guid' => $reply['guid']]);
}
}
DBA::update('mail', $fields, ['id' => $mail['id']]);
}
return Update::SUCCESS;
}

View File

@ -6,9 +6,9 @@
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 2021.06-dev\n" "Project-Id-Version: 2021.06-rc\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-16 07:41+0000\n" "POT-Creation-Date: 2021-05-21 18:18+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -39,8 +39,8 @@ msgstr ""
#: include/api.php:4528 mod/photos.php:107 mod/photos.php:211 #: include/api.php:4528 mod/photos.php:107 mod/photos.php:211
#: mod/photos.php:639 mod/photos.php:1043 mod/photos.php:1060 #: mod/photos.php:639 mod/photos.php:1043 mod/photos.php:1060
#: mod/photos.php:1609 src/Model/User.php:1045 src/Model/User.php:1053 #: mod/photos.php:1609 src/Model/User.php:1100 src/Model/User.php:1108
#: src/Model/User.php:1061 src/Module/Settings/Profile/Photo/Crop.php:97 #: src/Model/User.php:1116 src/Module/Settings/Profile/Photo/Crop.php:97
#: src/Module/Settings/Profile/Photo/Crop.php:113 #: src/Module/Settings/Profile/Photo/Crop.php:113
#: src/Module/Settings/Profile/Photo/Crop.php:129 #: src/Module/Settings/Profile/Photo/Crop.php:129
#: src/Module/Settings/Profile/Photo/Crop.php:178 #: src/Module/Settings/Profile/Photo/Crop.php:178
@ -54,7 +54,7 @@ msgstr ""
msgid "%1$s poked %2$s" msgid "%1$s poked %2$s"
msgstr "" msgstr ""
#: include/conversation.php:227 src/Model/Item.php:2523 #: include/conversation.php:227 src/Model/Item.php:2534
msgid "event" msgid "event"
msgstr "" msgstr ""
@ -62,7 +62,7 @@ msgstr ""
msgid "status" msgid "status"
msgstr "" msgstr ""
#: include/conversation.php:235 mod/tagger.php:90 src/Model/Item.php:2525 #: include/conversation.php:235 mod/tagger.php:90 src/Model/Item.php:2536
msgid "photo" msgid "photo"
msgstr "" msgstr ""
@ -951,7 +951,7 @@ msgstr ""
msgid "list" msgid "list"
msgstr "" msgstr ""
#: mod/cal.php:297 src/Console/User.php:182 src/Model/User.php:607 #: mod/cal.php:297 src/Console/User.php:182 src/Model/User.php:662
#: src/Module/Admin/Users/Active.php:73 src/Module/Admin/Users/Blocked.php:74 #: src/Module/Admin/Users/Active.php:73 src/Module/Admin/Users/Blocked.php:74
#: src/Module/Admin/Users/Index.php:80 src/Module/Admin/Users/Pending.php:71 #: src/Module/Admin/Users/Index.php:80 src/Module/Admin/Users/Pending.php:71
#: src/Module/Api/Twitter/ContactEndpoint.php:73 #: src/Module/Api/Twitter/ContactEndpoint.php:73
@ -2966,7 +2966,7 @@ msgstr ""
msgid "File upload failed." msgid "File upload failed."
msgstr "" msgstr ""
#: mod/wall_upload.php:233 #: mod/wall_upload.php:233 src/Model/Photo.php:953
msgid "Wall Photos" msgid "Wall Photos"
msgstr "" msgstr ""
@ -3636,39 +3636,39 @@ msgstr ""
msgid "last" msgid "last"
msgstr "" msgstr ""
#: src/Content/Text/BBCode.php:942 src/Content/Text/BBCode.php:1605 #: src/Content/Text/BBCode.php:942 src/Content/Text/BBCode.php:1607
#: src/Content/Text/BBCode.php:1606 #: src/Content/Text/BBCode.php:1608
msgid "Image/photo" msgid "Image/photo"
msgstr "" msgstr ""
#: src/Content/Text/BBCode.php:1064 #: src/Content/Text/BBCode.php:1066
#, php-format #, php-format
msgid "" msgid ""
"<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s" "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
msgstr "" msgstr ""
#: src/Content/Text/BBCode.php:1089 src/Model/Item.php:3024 #: src/Content/Text/BBCode.php:1091 src/Model/Item.php:3035
#: src/Model/Item.php:3030 src/Model/Item.php:3031 #: src/Model/Item.php:3041 src/Model/Item.php:3042
msgid "Link to source" msgid "Link to source"
msgstr "" msgstr ""
#: src/Content/Text/BBCode.php:1523 src/Content/Text/HTML.php:951 #: src/Content/Text/BBCode.php:1525 src/Content/Text/HTML.php:951
msgid "Click to open/close" msgid "Click to open/close"
msgstr "" msgstr ""
#: src/Content/Text/BBCode.php:1554 #: src/Content/Text/BBCode.php:1556
msgid "$1 wrote:" msgid "$1 wrote:"
msgstr "" msgstr ""
#: src/Content/Text/BBCode.php:1608 src/Content/Text/BBCode.php:1609 #: src/Content/Text/BBCode.php:1610 src/Content/Text/BBCode.php:1611
msgid "Encrypted content" msgid "Encrypted content"
msgstr "" msgstr ""
#: src/Content/Text/BBCode.php:1822 #: src/Content/Text/BBCode.php:1824
msgid "Invalid source protocol" msgid "Invalid source protocol"
msgstr "" msgstr ""
#: src/Content/Text/BBCode.php:1837 #: src/Content/Text/BBCode.php:1839
msgid "Invalid link protocol" msgid "Invalid link protocol"
msgstr "" msgstr ""
@ -4542,25 +4542,25 @@ msgstr ""
msgid "%s: updating %s table." msgid "%s: updating %s table."
msgstr "" msgstr ""
#: src/Factory/Api/Mastodon/Error.php:32 #: src/Factory/Api/Mastodon/Error.php:38
msgid "Record not found" msgid "Record not found"
msgstr "" msgstr ""
#: src/Factory/Api/Mastodon/Error.php:41 #: src/Factory/Api/Mastodon/Error.php:48
msgid "Unprocessable Entity" msgid "Unprocessable Entity"
msgstr "" msgstr ""
#: src/Factory/Api/Mastodon/Error.php:50 #: src/Factory/Api/Mastodon/Error.php:58
#: src/Module/Special/HTTPException.php:50 #: src/Module/Special/HTTPException.php:50
msgid "Unauthorized" msgid "Unauthorized"
msgstr "" msgstr ""
#: src/Factory/Api/Mastodon/Error.php:59 #: src/Factory/Api/Mastodon/Error.php:68
msgid "" msgid ""
"Token is not authorized with a valid user or is missing a required scope" "Token is not authorized with a valid user or is missing a required scope"
msgstr "" msgstr ""
#: src/Factory/Api/Mastodon/Error.php:68 #: src/Factory/Api/Mastodon/Error.php:78
#: src/Module/Special/HTTPException.php:53 #: src/Module/Special/HTTPException.php:53
msgid "Internal Server Error" msgid "Internal Server Error"
msgstr "" msgstr ""
@ -4815,33 +4815,33 @@ msgstr ""
msgid "Edit groups" msgid "Edit groups"
msgstr "" msgstr ""
#: src/Model/Item.php:1582 #: src/Model/Item.php:1600
#, php-format #, php-format
msgid "Detected languages in this post:\\n%s" msgid "Detected languages in this post:\\n%s"
msgstr "" msgstr ""
#: src/Model/Item.php:2527 #: src/Model/Item.php:2538
msgid "activity" msgid "activity"
msgstr "" msgstr ""
#: src/Model/Item.php:2529 #: src/Model/Item.php:2540
msgid "comment" msgid "comment"
msgstr "" msgstr ""
#: src/Model/Item.php:2532 #: src/Model/Item.php:2543
msgid "post" msgid "post"
msgstr "" msgstr ""
#: src/Model/Item.php:2646 #: src/Model/Item.php:2657
#, php-format #, php-format
msgid "Content warning: %s" msgid "Content warning: %s"
msgstr "" msgstr ""
#: src/Model/Item.php:2989 #: src/Model/Item.php:3000
msgid "bytes" msgid "bytes"
msgstr "" msgstr ""
#: src/Model/Item.php:3018 src/Model/Item.php:3019 #: src/Model/Item.php:3029 src/Model/Item.php:3030
msgid "View on separate page" msgid "View on separate page"
msgstr "" msgstr ""
@ -4959,138 +4959,138 @@ msgstr ""
msgid "Enter a valid existing folder" msgid "Enter a valid existing folder"
msgstr "" msgstr ""
#: src/Model/User.php:186 src/Model/User.php:931 #: src/Model/User.php:186 src/Model/User.php:986
msgid "SERIOUS ERROR: Generation of security keys failed." msgid "SERIOUS ERROR: Generation of security keys failed."
msgstr "" msgstr ""
#: src/Model/User.php:549 #: src/Model/User.php:571 src/Model/User.php:604
msgid "Login failed" msgid "Login failed"
msgstr "" msgstr ""
#: src/Model/User.php:581 #: src/Model/User.php:636
msgid "Not enough information to authenticate" msgid "Not enough information to authenticate"
msgstr "" msgstr ""
#: src/Model/User.php:676 #: src/Model/User.php:731
msgid "Password can't be empty" msgid "Password can't be empty"
msgstr "" msgstr ""
#: src/Model/User.php:695 #: src/Model/User.php:750
msgid "Empty passwords are not allowed." msgid "Empty passwords are not allowed."
msgstr "" msgstr ""
#: src/Model/User.php:699 #: src/Model/User.php:754
msgid "" msgid ""
"The new password has been exposed in a public data dump, please choose " "The new password has been exposed in a public data dump, please choose "
"another." "another."
msgstr "" msgstr ""
#: src/Model/User.php:705 #: src/Model/User.php:760
msgid "" msgid ""
"The password can't contain accentuated letters, white spaces or colons (:)" "The password can't contain accentuated letters, white spaces or colons (:)"
msgstr "" msgstr ""
#: src/Model/User.php:811 #: src/Model/User.php:866
msgid "Passwords do not match. Password unchanged." msgid "Passwords do not match. Password unchanged."
msgstr "" msgstr ""
#: src/Model/User.php:818 #: src/Model/User.php:873
msgid "An invitation is required." msgid "An invitation is required."
msgstr "" msgstr ""
#: src/Model/User.php:822 #: src/Model/User.php:877
msgid "Invitation could not be verified." msgid "Invitation could not be verified."
msgstr "" msgstr ""
#: src/Model/User.php:830 #: src/Model/User.php:885
msgid "Invalid OpenID url" msgid "Invalid OpenID url"
msgstr "" msgstr ""
#: src/Model/User.php:843 src/Security/Authentication.php:224 #: src/Model/User.php:898 src/Security/Authentication.php:224
msgid "" msgid ""
"We encountered a problem while logging in with the OpenID you provided. " "We encountered a problem while logging in with the OpenID you provided. "
"Please check the correct spelling of the ID." "Please check the correct spelling of the ID."
msgstr "" msgstr ""
#: src/Model/User.php:843 src/Security/Authentication.php:224 #: src/Model/User.php:898 src/Security/Authentication.php:224
msgid "The error message was:" msgid "The error message was:"
msgstr "" msgstr ""
#: src/Model/User.php:849 #: src/Model/User.php:904
msgid "Please enter the required information." msgid "Please enter the required information."
msgstr "" msgstr ""
#: src/Model/User.php:863 #: src/Model/User.php:918
#, php-format #, php-format
msgid "" msgid ""
"system.username_min_length (%s) and system.username_max_length (%s) are " "system.username_min_length (%s) and system.username_max_length (%s) are "
"excluding each other, swapping values." "excluding each other, swapping values."
msgstr "" msgstr ""
#: src/Model/User.php:870 #: src/Model/User.php:925
#, php-format #, php-format
msgid "Username should be at least %s character." msgid "Username should be at least %s character."
msgid_plural "Username should be at least %s characters." msgid_plural "Username should be at least %s characters."
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: src/Model/User.php:874 #: src/Model/User.php:929
#, php-format #, php-format
msgid "Username should be at most %s character." msgid "Username should be at most %s character."
msgid_plural "Username should be at most %s characters." msgid_plural "Username should be at most %s characters."
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: src/Model/User.php:882 #: src/Model/User.php:937
msgid "That doesn't appear to be your full (First Last) name." msgid "That doesn't appear to be your full (First Last) name."
msgstr "" msgstr ""
#: src/Model/User.php:887 #: src/Model/User.php:942
msgid "Your email domain is not among those allowed on this site." msgid "Your email domain is not among those allowed on this site."
msgstr "" msgstr ""
#: src/Model/User.php:891 #: src/Model/User.php:946
msgid "Not a valid email address." msgid "Not a valid email address."
msgstr "" msgstr ""
#: src/Model/User.php:894 #: src/Model/User.php:949
msgid "The nickname was blocked from registration by the nodes admin." msgid "The nickname was blocked from registration by the nodes admin."
msgstr "" msgstr ""
#: src/Model/User.php:898 src/Model/User.php:906 #: src/Model/User.php:953 src/Model/User.php:961
msgid "Cannot use that email." msgid "Cannot use that email."
msgstr "" msgstr ""
#: src/Model/User.php:913 #: src/Model/User.php:968
msgid "Your nickname can only contain a-z, 0-9 and _." msgid "Your nickname can only contain a-z, 0-9 and _."
msgstr "" msgstr ""
#: src/Model/User.php:921 src/Model/User.php:978 #: src/Model/User.php:976 src/Model/User.php:1033
msgid "Nickname is already registered. Please choose another." msgid "Nickname is already registered. Please choose another."
msgstr "" msgstr ""
#: src/Model/User.php:965 src/Model/User.php:969 #: src/Model/User.php:1020 src/Model/User.php:1024
msgid "An error occurred during registration. Please try again." msgid "An error occurred during registration. Please try again."
msgstr "" msgstr ""
#: src/Model/User.php:992 #: src/Model/User.php:1047
msgid "An error occurred creating your default profile. Please try again." msgid "An error occurred creating your default profile. Please try again."
msgstr "" msgstr ""
#: src/Model/User.php:999 #: src/Model/User.php:1054
msgid "An error occurred creating your self contact. Please try again." msgid "An error occurred creating your self contact. Please try again."
msgstr "" msgstr ""
#: src/Model/User.php:1004 #: src/Model/User.php:1059
msgid "Friends" msgid "Friends"
msgstr "" msgstr ""
#: src/Model/User.php:1008 #: src/Model/User.php:1063
msgid "" msgid ""
"An error occurred creating your default contact group. Please try again." "An error occurred creating your default contact group. Please try again."
msgstr "" msgstr ""
#: src/Model/User.php:1199 #: src/Model/User.php:1254
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -5098,7 +5098,7 @@ msgid ""
"\t\t\tthe administrator of %2$s has set up an account for you." "\t\t\tthe administrator of %2$s has set up an account for you."
msgstr "" msgstr ""
#: src/Model/User.php:1202 #: src/Model/User.php:1257
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -5135,12 +5135,12 @@ msgid ""
"\t\tThank you and welcome to %4$s." "\t\tThank you and welcome to %4$s."
msgstr "" msgstr ""
#: src/Model/User.php:1235 src/Model/User.php:1342 #: src/Model/User.php:1290 src/Model/User.php:1397
#, php-format #, php-format
msgid "Registration details for %s" msgid "Registration details for %s"
msgstr "" msgstr ""
#: src/Model/User.php:1255 #: src/Model/User.php:1310
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -5156,12 +5156,12 @@ msgid ""
"\t\t" "\t\t"
msgstr "" msgstr ""
#: src/Model/User.php:1274 #: src/Model/User.php:1329
#, php-format #, php-format
msgid "Registration at %s" msgid "Registration at %s"
msgstr "" msgstr ""
#: src/Model/User.php:1298 #: src/Model/User.php:1353
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -5170,7 +5170,7 @@ msgid ""
"\t\t\t" "\t\t\t"
msgstr "" msgstr ""
#: src/Model/User.php:1306 #: src/Model/User.php:1361
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -7201,7 +7201,7 @@ msgstr ""
msgid "Deny" msgid "Deny"
msgstr "" msgstr ""
#: src/Module/Api/Mastodon/Apps.php:47 src/Module/Api/Mastodon/Apps.php:58 #: src/Module/Api/Mastodon/Apps.php:58
msgid "Missing parameters" msgid "Missing parameters"
msgstr "" msgstr ""
@ -8882,15 +8882,15 @@ msgstr ""
msgid "Show all" msgid "Show all"
msgstr "" msgstr ""
#: src/Module/OAuth/Authorize.php:49 #: src/Module/OAuth/Authorize.php:51
msgid "Unsupported or missing response type" msgid "Unsupported or missing response type"
msgstr "" msgstr ""
#: src/Module/OAuth/Authorize.php:54 src/Module/OAuth/Token.php:55 #: src/Module/OAuth/Authorize.php:56 src/Module/OAuth/Token.php:57
msgid "Incomplete request data" msgid "Incomplete request data"
msgstr "" msgstr ""
#: src/Module/OAuth/Token.php:79 #: src/Module/OAuth/Token.php:81
msgid "Unsupported or missing grant type" msgid "Unsupported or missing grant type"
msgstr "" msgstr ""
@ -10585,20 +10585,20 @@ msgstr ""
msgid "Contact information and Social Networks" msgid "Contact information and Social Networks"
msgstr "" msgstr ""
#: src/Security/Authentication.php:210 src/Security/Authentication.php:262 #: src/Security/Authentication.php:210
msgid "Login failed." msgid "Login failed."
msgstr "" msgstr ""
#: src/Security/Authentication.php:273 #: src/Security/Authentication.php:251
msgid "Login failed. Please check your credentials." msgid "Login failed. Please check your credentials."
msgstr "" msgstr ""
#: src/Security/Authentication.php:392 #: src/Security/Authentication.php:370
#, php-format #, php-format
msgid "Welcome %s" msgid "Welcome %s"
msgstr "" msgstr ""
#: src/Security/Authentication.php:393 #: src/Security/Authentication.php:371
msgid "Please upload a profile photo." msgid "Please upload a profile photo."
msgstr "" msgstr ""

View File

@ -15,7 +15,7 @@
</div> </div>
{{/foreach}} {{/foreach}}
<div class="settings-submit-wrapper" > <div class="settings-submit-wrapper">
<input type="submit" name="submit" class="settings-features-submit" value="{{$submit}}" /> <input type="submit" name="submit" class="settings-features-submit" value="{{$submit}}" />
</div> </div>
</div> </div>

View File

@ -1,10 +1,10 @@
<div id="photo-album-edit-wrapper"> <div id="photo-album-edit-wrapper">
<form name="photo-album-edit-form" id="photo-album-edit-form" action="photos/{{$nickname}}/album/{{$hexalbum}}" method="post" > <form name="photo-album-edit-form" id="photo-album-edit-form" action="photos/{{$nickname}}/album/{{$hexalbum}}" method="post">
<label id="photo-album-edit-name-label" for="photo-album-edit-name" >{{$nametext}}</label> <label id="photo-album-edit-name-label" for="photo-album-edit-name">{{$nametext}}</label>
<input type="text" size="64" name="albumname" value="{{$album}}" > <input type="text" size="64" name="albumname" value="{{$album}}">
<div id="photo-album-edit-name-end"></div> <div id="photo-album-edit-name-end"></div>
@ -12,4 +12,4 @@
</form> </form>
</div> </div>
<div id="photo-album-edit-end" ></div> <div id="photo-album-edit-end"></div>

View File

@ -1,7 +1,7 @@
{{if $count}} {{if $count}}
<div id="birthday-notice" class="birthday-notice fakelink {{$classtoday}}" onclick="openClose('birthday-wrapper');">{{$event_reminders}} ({{$count}})</div> <div id="birthday-notice" class="birthday-notice fakelink {{$classtoday}}" onclick="openClose('birthday-wrapper');">{{$event_reminders}} ({{$count}})</div>
<div id="birthday-wrapper" style="display: none;" ><div id="birthday-title">{{$event_title}}</div> <div id="birthday-wrapper" style="display: none;"><div id="birthday-title">{{$event_title}}</div>
<div id="birthday-title-end"></div> <div id="birthday-title-end"></div>
{{foreach $events as $event}} {{foreach $events as $event}}
<div class="birthday-list" id="birthday-{{$event.id}}"> <a href="{{$event.link}}">{{$event.title}}</a> {{$event.date}} </div> <div class="birthday-list" id="birthday-{{$event.id}}"> <a href="{{$event.link}}">{{$event.title}}</a> {{$event.date}} </div>

View File

@ -11,13 +11,13 @@
<input type="hidden" name="jsreload" value="{{$jsreload}}" /> <input type="hidden" name="jsreload" value="{{$jsreload}}" />
<input type="hidden" name="post_id_random" value="{{$rand_num}}" /> <input type="hidden" name="post_id_random" value="{{$rand_num}}" />
<div class="comment-edit-photo" id="comment-edit-photo-{{$id}}" > <div class="comment-edit-photo" id="comment-edit-photo-{{$id}}">
<a class="comment-edit-photo-link" href="{{$mylink}}" title="{{$mytitle}}"><img class="my-comment-photo" src="{{$myphoto}}" alt="{{$mytitle}}" title="{{$mytitle}}" /></a> <a class="comment-edit-photo-link" href="{{$mylink}}" title="{{$mytitle}}"><img class="my-comment-photo" src="{{$myphoto}}" alt="{{$mytitle}}" title="{{$mytitle}}" /></a>
</div> </div>
<div class="comment-edit-photo-end"></div> <div class="comment-edit-photo-end"></div>
<textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty" name="body" placeholder="{{$comment}}" onFocus="commentOpen(this,{{$id}});" onBlur="commentClose(this,{{$id}});">{{if $threaded != false}}{{$default}}{{/if}}</textarea> <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty" name="body" placeholder="{{$comment}}" onFocus="commentOpen(this,{{$id}});" onBlur="commentClose(this,{{$id}});" dir="auto">{{if $threaded != false}}{{$default}}{{/if}}</textarea>
{{if $qcomment}} {{if $qcomment}}
<select id="qcomment-select-{{$id}}" name="qcomment-{{$id}}" class="qcomment" onchange="qCommentInsert(this,{{$id}});" > <select id="qcomment-select-{{$id}}" name="qcomment-{{$id}}" class="qcomment" onchange="qCommentInsert(this,{{$id}});">
<option value=""></option> <option value=""></option>
{{foreach $qcomment as $qc}} {{foreach $qcomment as $qc}}
<option value="{{$qc}}">{{$qc}}</option> <option value="{{$qc}}">{{$qc}}</option>
@ -26,7 +26,7 @@
{{/if}} {{/if}}
<div class="comment-edit-text-end"></div> <div class="comment-edit-text-end"></div>
<div class="comment-edit-submit-wrapper" id="comment-edit-submit-wrapper-{{$id}}" style="display: none;" > <div class="comment-edit-submit-wrapper" id="comment-edit-submit-wrapper-{{$id}}" style="display: none;">
<input type="submit" onclick="post_comment({{$id}}); return false;" id="comment-edit-submit-{{$id}}" class="comment-edit-submit" name="submit" value="{{$submit}}" /> <input type="submit" onclick="post_comment({{$id}}); return false;" id="comment-edit-submit-{{$id}}" class="comment-edit-submit" name="submit" value="{{$submit}}" />
{{if $preview}}<span onclick="preview_comment({{$id}});" id="comment-edit-preview-link-{{$id}}" class="fakelink">{{$preview}}</span>{{/if}} {{if $preview}}<span onclick="preview_comment({{$id}});" id="comment-edit-preview-link-{{$id}}" class="fakelink">{{$preview}}</span>{{/if}}
<div id="comment-edit-preview-{{$id}}" class="comment-edit-preview" style="display:none;"></div> <div id="comment-edit-preview-{{$id}}" class="comment-edit-preview" style="display:none;"></div>

View File

@ -9,7 +9,7 @@
</div> </div>
<br /> <br />
<form id="contact-advanced-form" action="contact/{{$contact_id}}/advanced" method="post" > <form id="contact-advanced-form" action="contact/{{$contact_id}}/advanced" method="post">
<!-- <h4>{{$contact_name}}</h4> --> <!-- <h4>{{$contact_name}}</h4> -->

View File

@ -1,11 +1,11 @@
<div id="contact-edit-wrapper" > <div id="contact-edit-wrapper">
{{* Insert Tab-Nav *}} {{* Insert Tab-Nav *}}
{{$tab_str nofilter}} {{$tab_str nofilter}}
<div id="contact-edit-nav-wrapper" > <div id="contact-edit-nav-wrapper">
<form action="contact/{{$contact_id}}" method="post" > <form action="contact/{{$contact_id}}" method="post">
<div id="contact-edit-links"> <div id="contact-edit-links">
<div id="contact-edit-status-wrapper"> <div id="contact-edit-status-wrapper">
<span id="contact-edit-contact-status">{{$contact_status}}</span> <span id="contact-edit-contact-status">{{$contact_status}}</span>
@ -14,7 +14,7 @@
<div id="contact-edit-actions"> <div id="contact-edit-actions">
<a class="btn" rel="#contact-actions-menu" href="#" id="contact-edit-actions-button">{{$contact_action_button}}</a> <a class="btn" rel="#contact-actions-menu" href="#" id="contact-edit-actions-button">{{$contact_action_button}}</a>
<ul role="menu" aria-haspopup="true" id="contact-actions-menu" class="menu-popup" > <ul role="menu" aria-haspopup="true" id="contact-actions-menu" class="menu-popup">
{{if $lblsuggest}}<li role="menuitem"><a href="#" title="{{$contact_actions.suggest.title}}" onclick="window.location.href='{{$contact_actions.suggest.url}}'; return false;">{{$contact_actions.suggest.label}}</a></li>{{/if}} {{if $lblsuggest}}<li role="menuitem"><a href="#" title="{{$contact_actions.suggest.title}}" onclick="window.location.href='{{$contact_actions.suggest.url}}'; return false;">{{$contact_actions.suggest.label}}</a></li>{{/if}}
{{if $poll_enabled}}<li role="menuitem"><a href="#" title="{{$contact_actions.update.title}}" onclick="window.location.href='{{$contact_actions.update.url}}'; return false;">{{$contact_actions.update.label}}</a></li>{{/if}} {{if $poll_enabled}}<li role="menuitem"><a href="#" title="{{$contact_actions.update.title}}" onclick="window.location.href='{{$contact_actions.update.url}}'; return false;">{{$contact_actions.update.label}}</a></li>{{/if}}
{{if $contact_actions.updateprofile}}<li role="menuitem"><a href="{{$contact_actions.updateprofile.url}}" title="{{$contact_actions.updateprofile.title}}">{{$contact_actions.updateprofile.label}}</a></li>{{/if}} {{if $contact_actions.updateprofile}}<li role="menuitem"><a href="{{$contact_actions.updateprofile.url}}" title="{{$contact_actions.updateprofile.title}}">{{$contact_actions.updateprofile.label}}</a></li>{{/if}}
@ -64,7 +64,7 @@
<div id="contact-edit-settings"> <div id="contact-edit-settings">
<input type="hidden" name="contact_id" value="{{$contact_id}}"> <input type="hidden" name="contact_id" value="{{$contact_id}}">
<div id="contact-edit-end" ></div> <div id="contact-edit-end"></div>
{{include file="field_checkbox.tpl" field=$notify}} {{include file="field_checkbox.tpl" field=$notify}}
{{if $fetch_further_information}} {{if $fetch_further_information}}
{{include file="field_select.tpl" field=$fetch_further_information}} {{include file="field_select.tpl" field=$fetch_further_information}}

View File

@ -1,9 +1,9 @@
<div class="contact-entry-wrapper" id="contact-entry-wrapper-{{$contact.id}}" > <div class="contact-entry-wrapper" id="contact-entry-wrapper-{{$contact.id}}">
<div class="contact-entry-photo-wrapper" > <div class="contact-entry-photo-wrapper">
<div class="contact-entry-photo mframe" id="contact-entry-photo-{{$contact.id}}" <div class="contact-entry-photo mframe" id="contact-entry-photo-{{$contact.id}}"
onmouseover="if (typeof t{{$contact.id}} != 'undefined') clearTimeout(t{{$contact.id}}); openMenu('contact-photo-menu-button-{{$contact.id}}')" onmouseover="if (typeof t{{$contact.id}} != 'undefined') clearTimeout(t{{$contact.id}}); openMenu('contact-photo-menu-button-{{$contact.id}}')"
onmouseout="t{{$contact.id}}=setTimeout('closeMenu(\'contact-photo-menu-button-{{$contact.id}}\'); closeMenu(\'contact-photo-menu-{{$contact.id}}\');',200)" > onmouseout="t{{$contact.id}}=setTimeout('closeMenu(\'contact-photo-menu-button-{{$contact.id}}\'); closeMenu(\'contact-photo-menu-{{$contact.id}}\');',200)">
<a href="{{$contact.url}}" title="{{$contact.img_hover}}" /><img src="{{$contact.thumb}}" {{$contact.sparkle}} alt="{{$contact.name}}" /></a> <a href="{{$contact.url}}" title="{{$contact.img_hover}}" /><img src="{{$contact.thumb}}" {{$contact.sparkle}} alt="{{$contact.name}}" /></a>
@ -30,17 +30,17 @@
</div> </div>
<div class="contact-entry-desc"> <div class="contact-entry-desc">
<div class="contact-entry-name" id="contact-entry-name-{{$contact.id}}" > <div class="contact-entry-name" id="contact-entry-name-{{$contact.id}}">
{{$contact.name}} {{$contact.name}}
{{if $contact.account_type}} <span class="contact-entry-details" id="contact-entry-accounttype-{{$contact.id}}">({{$contact.account_type}})</span>{{/if}} {{if $contact.account_type}} <span class="contact-entry-details" id="contact-entry-accounttype-{{$contact.id}}">({{$contact.account_type}})</span>{{/if}}
</div> </div>
{{if $contact.alt_text}}<div class="contact-entry-details" id="contact-entry-rel-{{$contact.id}}" >{{$contact.alt_text}}</div>{{/if}} {{if $contact.alt_text}}<div class="contact-entry-details" id="contact-entry-rel-{{$contact.id}}">{{$contact.alt_text}}</div>{{/if}}
{{if $contact.itemurl}}<div class="contact-entry-details" id="contact-entry-url-{{$contact.id}}" >{{$contact.itemurl}}</div>{{/if}} {{if $contact.itemurl}}<div class="contact-entry-details" id="contact-entry-url-{{$contact.id}}">{{$contact.itemurl}}</div>{{/if}}
{{if $contact.tags}}<div class="contact-entry-details" id="contact-entry-tags-{{$contact.id}}" >{{$contact.tags}}</div>{{/if}} {{if $contact.tags}}<div class="contact-entry-details" id="contact-entry-tags-{{$contact.id}}">{{$contact.tags}}</div>{{/if}}
{{if $contact.details}}<div class="contact-entry-details" id="contact-entry-details-{{$contact.id}}" >{{$contact.details}}</div>{{/if}} {{if $contact.details}}<div class="contact-entry-details" id="contact-entry-details-{{$contact.id}}">{{$contact.details}}</div>{{/if}}
{{if $contact.network}}<div class="contact-entry-details" id="contact-entry-network-{{$contact.id}}" >{{$contact.network}}</div>{{/if}} {{if $contact.network}}<div class="contact-entry-details" id="contact-entry-network-{{$contact.id}}">{{$contact.network}}</div>{{/if}}
</div> </div>
<div class="contact-entry-end" ></div> <div class="contact-entry-end"></div>
</div> </div>

View File

@ -4,7 +4,7 @@
{{if $finding}}<h4>{{$finding}}</h4>{{/if}} {{if $finding}}<h4>{{$finding}}</h4>{{/if}}
<div id="contacts-search-wrapper"> <div id="contacts-search-wrapper">
<form id="contacts-search-form" action="{{$cmd}}" method="get" > <form id="contacts-search-form" action="{{$cmd}}" method="get">
<span class="contacts-search-desc">{{$desc nofilter}}</span> <span class="contacts-search-desc">{{$desc nofilter}}</span>
<input type="text" name="search" id="contacts-search" class="search-input" onfocus="this.select();" value="{{$search}}" /> <input type="text" name="search" id="contacts-search" class="search-input" onfocus="this.select();" value="{{$search}}" />
<input type="submit" name="submit" id="contacts-search-submit" value="{{$submit}}" /> <input type="submit" name="submit" id="contacts-search-submit" value="{{$submit}}" />

View File

@ -21,8 +21,8 @@
{{if $dropping}} {{if $dropping}}
<div id="item-delete-selected" class="fakelink" onclick="deleteCheckedItems();"> <div id="item-delete-selected" class="fakelink" onclick="deleteCheckedItems();">
<div id="item-delete-selected-icon" class="icon drophide" title="{{$dropping}}" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></div> <div id="item-delete-selected-icon" class="icon drophide" title="{{$dropping}}" onmouseover="imgbright(this);" onmouseout="imgdull(this);"></div>
<div id="item-delete-selected-desc" >{{$dropping}}</div> <div id="item-delete-selected-desc">{{$dropping}}</div>
</div> </div>
<div id="item-delete-selected-end"></div> <div id="item-delete-selected-end"></div>
{{/if}} {{/if}}

View File

@ -1,6 +1,6 @@
<p id="dfrn-request-homecoming" > <p id="dfrn-request-homecoming">
{{$welcome}} {{$welcome}}
<br /> <br />
{{$please}} {{$please}}
@ -16,7 +16,7 @@
<input type="checkbox" name="hidden-contact" value="1" /> <input type="checkbox" name="hidden-contact" value="1" />
<div id="dfrn-request-homecoming-submit-wrapper" > <div id="dfrn-request-homecoming-submit-wrapper">
<input id="dfrn-request-homecoming-submit" type="submit" name="submit" value="{{$submit}}" /> <input id="dfrn-request-homecoming-submit" type="submit" name="submit" value="{{$submit}}" />
</div> </div>
</form> </form>

View File

@ -8,7 +8,7 @@
{{/if}} {{/if}}
<div id="directory-search-wrapper"> <div id="directory-search-wrapper">
<form id="directory-search-form" action="{{$search_mod}}" method="get" > <form id="directory-search-form" action="{{$search_mod}}" method="get">
<span class="dirsearch-desc">{{$desc nofilter}}</span> <span class="dirsearch-desc">{{$desc nofilter}}</span>
<input type="text" name="search" id="directory-search" class="search-input" onfocus="this.select();" value="{{$search}}" /> <input type="text" name="search" id="directory-search" class="search-input" onfocus="this.select();" value="{{$search}}" />
<input type="submit" name="submit" id="directory-search-submit" value="{{$submit}}" class="button" /> <input type="submit" name="submit" id="directory-search-submit" value="{{$submit}}" class="button" />
@ -25,6 +25,6 @@
{{include file="contact_template.tpl"}} {{include file="contact_template.tpl"}}
{{/foreach}} {{/foreach}}
<div class="directory-end" ></div> <div class="directory-end"></div>
{{$paginate nofilter}} {{$paginate nofilter}}

View File

@ -1,9 +1,9 @@
<div class="directory-item lframe" id="directory-item-{{$entry.id}}" > <div class="directory-item lframe" id="directory-item-{{$entry.id}}">
<div class="contact-photo-wrapper" id="directory-photo-wrapper-{{$entry.id}}" > <div class="contact-photo-wrapper" id="directory-photo-wrapper-{{$entry.id}}">
<div class="contact-photo" id="directory-photo-{{$entry.id}}" > <div class="contact-photo" id="directory-photo-{{$entry.id}}">
<a href="{{$entry.profile_link}}" class="directory-profile-link" id="directory-profile-link-{{$entry.id}}" > <a href="{{$entry.profile_link}}" class="directory-profile-link" id="directory-profile-link-{{$entry.id}}">
<img class="directory-photo-img" src="{{$entry.photo}}" alt="{{$entry.alt_text}}" title="{{$entry.alt_text}}" /> <img class="directory-photo-img" src="{{$entry.photo}}" alt="{{$entry.alt_text}}" title="{{$entry.alt_text}}" />
</a> </a>
</div> </div>

View File

@ -2,7 +2,7 @@
{{foreach $events as $event}} {{foreach $events as $event}}
<div class="event"> <div class="event">
{{if $event.item.author_name}}<a href="{{$event.item.author_link}}" ><img src="{{$event.item.author_avatar}}" height="32" width="32" />{{$event.item.author_name}}</a>{{/if}} {{if $event.item.author_name}}<a href="{{$event.item.author_link}}"><img src="{{$event.item.author_avatar}}" height="32" width="32" />{{$event.item.author_name}}</a>{{/if}}
{{$event.html nofilter}} {{$event.html nofilter}}
{{if $event.plink.orig}}<a href="{{$event.plink.orig}}" title="{{$event.plink.orig_title}}" target="_blank" rel="noopener noreferrer" class="plink-event-link icon s22 remote-link"></a>{{/if}} {{if $event.plink.orig}}<a href="{{$event.plink.orig}}" title="{{$event.plink.orig_title}}" target="_blank" rel="noopener noreferrer" class="plink-event-link icon s22 remote-link"></a>{{/if}}
{{if $event.edit}}<a href="{{$event.edit.0}}" title="{{$event.edit.1}}" class="edit-event-link icon s22 pencil"></a>{{/if}} {{if $event.edit}}<a href="{{$event.edit.0}}" title="{{$event.edit.1}}" class="edit-event-link icon s22 pencil"></a>{{/if}}

View File

@ -5,7 +5,7 @@
{{$desc nofilter}} {{$desc nofilter}}
</p> </p>
<form id="event-edit-form" action="{{$post}}" method="post" > <form id="event-edit-form" action="{{$post}}" method="post">
<input type="hidden" name="event_id" value="{{$eid}}" /> <input type="hidden" name="event_id" value="{{$eid}}" />
<input type="hidden" name="cid" value="{{$cid}}" /> <input type="hidden" name="cid" value="{{$cid}}" />

View File

@ -2,7 +2,7 @@
{{$tabs nofilter}} {{$tabs nofilter}}
{{include file="section_title.tpl"}} {{include file="section_title.tpl"}}
<div id="new-event-link"><a href="{{$new_event.0}}" >{{$new_event.1}}</a></div> <div id="new-event-link"><a href="{{$new_event.0}}">{{$new_event.1}}</a></div>
<div id="event-calendar-wrapper"> <div id="event-calendar-wrapper">
<a href="{{$previus.0}}" class="prevcal {{$previus.2}}"><div id="event-calendar-prev" class="icon s22 prev" title="{{$previus.1}}"></div></a> <a href="{{$previus.0}}" class="prevcal {{$previus.2}}"><div id="event-calendar-prev" class="icon s22 prev" title="{{$previus.1}}"></div></a>
@ -14,8 +14,8 @@
{{foreach $events as $event}} {{foreach $events as $event}}
<div class="event"> <div class="event">
{{if $event.is_first}}<hr /><a name="link-{{$event.j}}" ><div class="event-list-date">{{$event.d}}</div></a>{{/if}} {{if $event.is_first}}<hr /><a name="link-{{$event.j}}"><div class="event-list-date">{{$event.d}}</div></a>{{/if}}
{{if $event.item.author_name}}<a href="{{$event.item.author_link}}" ><img src="{{$event.item.author_avatar}}" height="32" width="32" />{{$event.item.author_name}}</a>{{/if}} {{if $event.item.author_name}}<a href="{{$event.item.author_link}}"><img src="{{$event.item.author_avatar}}" height="32" width="32" />{{$event.item.author_name}}</a>{{/if}}
{{$event.html nofilter}} {{$event.html nofilter}}
{{if $event.item.plink}}<a href="{{$event.plink.0}}" title="{{$event.plink.1}}" target="_blank" rel="noopener noreferrer" class="plink-event-link icon s22 remote-link"></a>{{/if}} {{if $event.item.plink}}<a href="{{$event.plink.0}}" title="{{$event.plink.1}}" target="_blank" rel="noopener noreferrer" class="plink-event-link icon s22 remote-link"></a>{{/if}}
{{if $event.edit}}<a href="{{$event.edit.0}}" title="{{$event.edit.1}}" class="edit-event-link icon s22 pencil"></a>{{/if}} {{if $event.edit}}<a href="{{$event.edit.0}}" title="{{$event.edit.1}}" class="edit-event-link icon s22 pencil"></a>{{/if}}

View File

@ -2,6 +2,6 @@
{{$tabs nofilter}} {{$tabs nofilter}}
<h2>{{$title}}</h2> <h2>{{$title}}</h2>
<div id="new-event-link"><a href="{{$new_event.0}}" >{{$new_event.1}}</a></div> <div id="new-event-link"><a href="{{$new_event.0}}">{{$new_event.1}}</a></div>
<div id="events-calendar"></div> <div id="events-calendar"></div>

View File

@ -1,7 +1,7 @@
{{if $count}} {{if $count}}
<div id="event-notice" class="birthday-notice fakelink {{$classtoday}}" onclick="openClose('event-wrapper');">{{$event_reminders}} ({{$count}})</div> <div id="event-notice" class="birthday-notice fakelink {{$classtoday}}" onclick="openClose('event-wrapper');">{{$event_reminders}} ({{$count}})</div>
<div id="event-wrapper" style="display: none;" ><div id="event-title">{{$event_title}}</div> <div id="event-wrapper" style="display: none;"><div id="event-title">{{$event_title}}</div>
<div id="event-title-end"></div> <div id="event-title-end"></div>
{{foreach $events as $event}} {{foreach $events as $event}}
<div class="event-list" id="event-{{$event.id}}"> <a class="ajax-popupbox" href="events/?id={{$event.id}}">{{$event.title}}</a> - {{$event.date}} </div> <div class="event-list" id="event-{{$event.id}}"> <a class="ajax-popupbox" href="events/?id={{$event.id}}">{{$event.title}}</a> - {{$event.date}} </div>

View File

@ -2,8 +2,8 @@
<div class='field combobox'> <div class='field combobox'>
<label for='id_{{$field.0}}' id='id_{{$field.0}}_label'>{{$field.1}}</label> <label for='id_{{$field.0}}' id='id_{{$field.0}}_label'>{{$field.1}}</label>
{{* html5 don't work on Chrome, Safari and IE9 {{* html5 don't work on Chrome, Safari and IE9
<input id="id_{{$field.0}}" type="text" list="data_{{$field.0}}" > <input id="id_{{$field.0}}" type="text" list="data_{{$field.0}}">
<datalist id="data_{{$field.0}}" > <datalist id="data_{{$field.0}}">
{{foreach $field.4 as $opt=>$val}}<option value="{{$val}}">{{/foreach}} {{foreach $field.4 as $opt=>$val}}<option value="{{$val}}">{{/foreach}}
</datalist> *}} </datalist> *}}

View File

@ -1,7 +1,7 @@
<div class="field input" id="wrapper_{{$field.0}}"> <div class="field input" id="wrapper_{{$field.0}}">
<label for="id_{{$field.0}}">{{$field.1}}{{if $field.4}} <span class="required" title="{{$field.4}}">*</span>{{/if}}</label> <label for="id_{{$field.0}}">{{$field.1}}{{if $field.4}} <span class="required" title="{{$field.4}}">*</span>{{/if}}</label>
<input type="{{$field.6|default:'text'}}" name="{{$field.0}}" id="id_{{$field.0}}" value="{{$field.2}}"{{if $field.4}} required{{/if}}{{if $field.5 eq "autofocus"}} autofocus{{elseif $field.5}} {{$field.5 nofilter}}{{/if}} aria-describedby="{{$field.0}}_tip"> <input type="{{$field.6|default:'text'}}" name="{{$field.0}}" id="id_{{$field.0}}" value="{{$field.2}}"{{if $field.4}} required{{/if}}{{if $field.5 eq "autofocus"}} autofocus{{elseif $field.5}} {{$field.5 nofilter}}{{/if}} aria-describedby="{{$field.0}}_tip" dir="auto">
{{if $field.3}} {{if $field.3}}
<span class="field_help" role="tooltip" id="{{$field.0}}_tip">{{$field.3 nofilter}}</span> <span class="field_help" role="tooltip" id="{{$field.0}}_tip">{{$field.3 nofilter}}</span>
{{/if}} {{/if}}

View File

@ -1,9 +1,9 @@
<div class='field select'> <div class="field select">
<label for='id_{{$field.0}}'>{{$field.1}}</label> <label for="id_{{$field.0}}">{{$field.1}}</label>
<select name='{{$field.0}}' id='id_{{$field.0}}' aria-describedby='{{$field.0}}_tip'> <select name="{{$field.0}}" id="id_{{$field.0}}" aria-describedby="{{$field.0}}_tip">
{{foreach $field.4 as $opt=>$val}} {{foreach $field.4 as $opt=>$val}}
<option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option> <option value="{{$opt}}" dir="auto"{{if $opt==$field.2}} selected="selected"{{/if}}>{{$val}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
{{if $field.3}} {{if $field.3}}

View File

@ -1,7 +1,7 @@
<div class="field textarea"> <div class="field textarea">
<label for="id_{{$field.0}}">{{$field.1}}{{if $field.4}} <span class="required" title="{{$field.4}}">*</span>{{/if}}</label> <label for="id_{{$field.0}}">{{$field.1}}{{if $field.4}} <span class="required" title="{{$field.4}}">*</span>{{/if}}</label>
<textarea name="{{$field.0}}" id="id_{{$field.0}}"{{if $field.4}} required{{/if}} aria-describedby="{{$field.0}}_tip">{{$field.2}}</textarea> <textarea name="{{$field.0}}" id="id_{{$field.0}}"{{if $field.4}} required{{/if}} aria-describedby="{{$field.0}}_tip" dir="auto">{{$field.2}}</textarea>
{{if $field.3}} {{if $field.3}}
<span class="field_help" role="tooltip" id="{{$field.0}}_tip">{{$field.3 nofilter}}</span> <span class="field_help" role="tooltip" id="{{$field.0}}_tip">{{$field.3 nofilter}}</span>
{{/if}} {{/if}}

View File

@ -6,7 +6,7 @@
<label for="id_{{$field.0}}">{{$field.1}}</label> <label for="id_{{$field.0}}">{{$field.1}}</label>
<select name="{{$field.0}}" id="id_{{$field.0}}" {{if $field.5}}onchange="previewTheme(this);"{{/if}} aria-describedby="{{$field.0}}_tip"> <select name="{{$field.0}}" id="id_{{$field.0}}" {{if $field.5}}onchange="previewTheme(this);"{{/if}} aria-describedby="{{$field.0}}_tip">
{{foreach $field.4 as $opt=>$val}} {{foreach $field.4 as $opt=>$val}}
<option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option> <option value="{{$opt}}" dir="auto"{{if $opt==$field.2}} selected="selected"{{/if}}>{{$val}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
{{if $field.3}} {{if $field.3}}

View File

@ -1,7 +1,7 @@
<!-- <!--
This is the template used by mod/fbrowser.php This is the template used by mod/fbrowser.php
--> -->
<script type="text/javascript" src="{{$baseurl}}/view/js/ajaxupload.js?v={{$smarty.const.FRIENDICA_VERSION}}" ></script> <script type="text/javascript" src="{{$baseurl}}/view/js/ajaxupload.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script type="text/javascript" src="{{$baseurl}}/view/js/filebrowser.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script> <script type="text/javascript" src="{{$baseurl}}/view/js/filebrowser.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script> <script>
$(function() { $(function() {

View File

@ -1,5 +1,5 @@
{{include file="field_combobox.tpl"}} {{include file="field_combobox.tpl"}}
<div class="settings-submit-wrapper" > <div class="settings-submit-wrapper">
<input id="filer_save" type="button" class="settings-submit" value="{{$submit}}" /> <input id="filer_save" type="button" class="settings-submit" value="{{$submit}}" />
</div> </div>

View File

@ -1,5 +1,5 @@
<div class="group-delete-wrapper button" id="group-delete-wrapper-{{$id}}" > <div class="group-delete-wrapper button" id="group-delete-wrapper-{{$id}}">
<a href="group/drop/{{$id}}?t={{$form_security_token}}" <a href="group/drop/{{$id}}?t={{$form_security_token}}"
onclick="return confirmDelete();" onclick="return confirmDelete();"
id="group-delete-icon-{{$id}}" id="group-delete-icon-{{$id}}"

View File

@ -3,16 +3,16 @@
{{if $editable == 1}} {{if $editable == 1}}
<div id="group-edit-wrapper" > <div id="group-edit-wrapper">
<form action="group/{{$gid}}" id="group-edit-form" method="post" > <form action="group/{{$gid}}" id="group-edit-form" method="post">
<input type='hidden' name='form_security_token' value='{{$form_security_token}}'> <input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
{{include file="field_input.tpl" field=$gname}} {{include file="field_input.tpl" field=$gname}}
{{if $drop}}{{$drop nofilter}}{{/if}} {{if $drop}}{{$drop nofilter}}{{/if}}
<div id="group-edit-submit-wrapper" > <div id="group-edit-submit-wrapper">
<input type="submit" name="submit" value="{{$submit}}" > <input type="submit" name="submit" value="{{$submit}}">
</div> </div>
<div id="group-edit-select-end" ></div> <div id="group-edit-select-end"></div>
</form> </form>
</div> </div>
{{/if}} {{/if}}

View File

@ -1,9 +1,9 @@
<div class="field custom"> <div class="field custom">
<label for="group-selection" id="group-selection-lbl">{{$label}}</label> <label for="group-selection" id="group-selection-lbl">{{$label}}</label>
<select name="group-selection" id="group-selection" > <select name="group-selection" id="group-selection">
{{foreach $groups as $group}} {{foreach $groups as $group}}
<option value="{{$group.id}}" {{if $group.selected}}selected="selected"{{/if}} >{{$group.name}}</option> <option value="{{$group.id}}"{{if $group.selected}} selected="selected"{{/if}}>{{$group.name}}</option>
{{/foreach}} {{/foreach}}
</select> </select>
</div> </div>

View File

@ -32,19 +32,19 @@
<!--[if IE]> <!--[if IE]>
<script type="text/javascript" src="https://html5shiv.googlecode.com/svn/trunk/html5.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script> <script type="text/javascript" src="https://html5shiv.googlecode.com/svn/trunk/html5.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<![endif]--> <![endif]-->
<script type="text/javascript" src="view/js/modernizr.js?v={{$smarty.const.FRIENDICA_VERSION}}" ></script> <script type="text/javascript" src="view/js/modernizr.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script type="text/javascript" src="view/asset/jquery/dist/jquery.min.js?v={{$smarty.const.FRIENDICA_VERSION}}" ></script> <script type="text/javascript" src="view/asset/jquery/dist/jquery.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script type="text/javascript" src="view/js/jquery.textinputs.js?v={{$smarty.const.FRIENDICA_VERSION}}" ></script> <script type="text/javascript" src="view/js/jquery.textinputs.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script type="text/javascript" src="view/asset/textcomplete/dist/textcomplete.min.js?v={{$smarty.const.FRIENDICA_VERSION}}" ></script> <script type="text/javascript" src="view/asset/textcomplete/dist/textcomplete.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script type="text/javascript" src="view/js/autocomplete.js?v={{$smarty.const.FRIENDICA_VERSION}}" ></script> <script type="text/javascript" src="view/js/autocomplete.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script type="text/javascript" src="view/asset/jquery-colorbox/jquery.colorbox-min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script> <script type="text/javascript" src="view/asset/jquery-colorbox/jquery.colorbox-min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script type="text/javascript" src="view/asset/jgrowl/jquery.jgrowl.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script> <script type="text/javascript" src="view/asset/jgrowl/jquery.jgrowl.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script type="text/javascript" src="view/asset/jquery-datetimepicker/build/jquery.datetimepicker.full.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script> <script type="text/javascript" src="view/asset/jquery-datetimepicker/build/jquery.datetimepicker.full.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script type="text/javascript" src="view/asset/perfect-scrollbar/dist/js/perfect-scrollbar.jquery.min.js?v={{$smarty.const.FRIENDICA_VERSION}}" ></script> <script type="text/javascript" src="view/asset/perfect-scrollbar/dist/js/perfect-scrollbar.jquery.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script type="text/javascript" src="view/asset/imagesloaded/imagesloaded.pkgd.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script> <script type="text/javascript" src="view/asset/imagesloaded/imagesloaded.pkgd.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script type="text/javascript" src="view/asset/base64/base64.min.js?v={{$smarty.const.FRIENDICA_VERSION}}" ></script> <script type="text/javascript" src="view/asset/base64/base64.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script type="text/javascript" src="view/asset/dompurify/dist/purify.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script> <script type="text/javascript" src="view/asset/dompurify/dist/purify.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script type="text/javascript" src="view/js/main.js?v={{$smarty.const.FRIENDICA_VERSION}}" ></script> <script type="text/javascript" src="view/js/main.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script> <script>
// Lifted from https://css-tricks.com/snippets/jquery/move-cursor-to-end-of-textarea-or-input/ // Lifted from https://css-tricks.com/snippets/jquery/move-cursor-to-end-of-textarea-or-input/

View File

@ -1,4 +1,4 @@
<div class="basic-content" > <div class="basic-content">
<div class="hover-card-details"> <div class="hover-card-details">
<div class="hover-card-header left-align"> <div class="hover-card-header left-align">
<div class="hover-card-pic left-align"> <div class="hover-card-pic left-align">

View File

@ -1,5 +1,5 @@
<form action="invite" method="post" id="invite-form" > <form action="invite" method="post" id="invite-form">
<input type='hidden' name='form_security_token' value='{{$form_security_token}}'> <input type='hidden' name='form_security_token' value='{{$form_security_token}}'>

View File

@ -8,11 +8,11 @@
<input type="hidden" name="wall" value="{{$wall}}" /> <input type="hidden" name="wall" value="{{$wall}}" />
<div id="jot-title-wrap"> <div id="jot-title-wrap">
<input type="text" name="title" id="jot-title" class="jothidden jotforms form-control" placeholder="{{$placeholdertitle}}" title="{{$placeholdertitle}}" value="{{$title}}" tabindex="1"/> <input type="text" name="title" id="jot-title" class="jothidden jotforms form-control" placeholder="{{$placeholdertitle}}" title="{{$placeholdertitle}}" value="{{$title}}" tabindex="1" dir="auto" />
</div> </div>
{{if $placeholdercategory}} {{if $placeholdercategory}}
<div id="jot-category-wrap"> <div id="jot-category-wrap">
<input name="category" id="jot-category" class="jothidden jotforms form-control" type="text" placeholder="{{$placeholdercategory}}" title="{{$placeholdercategory}}" value="{{$category}}" tabindex="2"/> <input name="category" id="jot-category" class="jothidden jotforms form-control" type="text" placeholder="{{$placeholdercategory}}" title="{{$placeholdercategory}}" value="{{$category}}" tabindex="2" dir="auto" />
</div> </div>
{{/if}} {{/if}}
@ -44,7 +44,7 @@
</span> </span>
</p> </p>
<p> <p>
<textarea id="comment-edit-text-{{$id}}" class="comment-edit-text form-control text-autosize" name="body" placeholder="{{$default}}" rows="7" tabindex="3">{{$body}}</textarea> <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text form-control text-autosize" name="body" placeholder="{{$default}}" rows="7" tabindex="3" dir="auto" dir="auto">{{$body}}</textarea>
</p> </p>
<p class="comment-edit-submit-wrapper"> <p class="comment-edit-submit-wrapper">

View File

@ -40,7 +40,7 @@ function enableOnUser(){
} }
</script> </script>
<script type="text/javascript" src="{{$baseurl}}/view/js/ajaxupload.js?v={{$smarty.const.FRIENDICA_VERSION}}" ></script> <script type="text/javascript" src="{{$baseurl}}/view/js/ajaxupload.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script> <script>
var ispublic = '{{$ispublic nofilter}}'; var ispublic = '{{$ispublic nofilter}}';

View File

@ -1,11 +1,11 @@
<div id="profile-jot-wrapper" > <div id="profile-jot-wrapper">
<div id="profile-jot-banner-wrapper"> <div id="profile-jot-banner-wrapper">
<div id="profile-jot-desc" >&nbsp;</div> <div id="profile-jot-desc">&nbsp;</div>
<div id="character-counter" class="grey"></div> <div id="character-counter" class="grey"></div>
</div> </div>
<div id="profile-jot-banner-end"></div> <div id="profile-jot-banner-end"></div>
<form id="profile-jot-form" action="{{$action}}" method="post" > <form id="profile-jot-form" action="{{$action}}" method="post">
<input type="hidden" name="wall" value="{{$wall}}" /> <input type="hidden" name="wall" value="{{$wall}}" />
<input type="hidden" name="post_type" value="{{$posttype}}" /> <input type="hidden" name="post_type" value="{{$posttype}}" />
<input type="hidden" name="profile_uid" value="{{$profile_uid}}" /> <input type="hidden" name="profile_uid" value="{{$profile_uid}}" />
@ -18,43 +18,43 @@
{{if $notes_cid}} {{if $notes_cid}}
<input type="hidden" name="contact_allow[]" value="<{{$notes_cid}}>" /> <input type="hidden" name="contact_allow[]" value="<{{$notes_cid}}>" />
{{/if}} {{/if}}
<div id="jot-title-wrap"><input name="title" id="jot-title" type="text" placeholder="{{$placeholdertitle}}" value="{{$title}}" class="jothidden" style="display:none"></div> <div id="jot-title-wrap"><input name="title" id="jot-title" type="text" placeholder="{{$placeholdertitle}}" value="{{$title}}" class="jothidden" style="display:none" dir="auto"></div>
{{if $placeholdercategory}} {{if $placeholdercategory}}
<div id="jot-category-wrap"><input name="category" id="jot-category" type="text" placeholder="{{$placeholdercategory}}" value="{{$category}}" class="jothidden" style="display:none" /></div> <div id="jot-category-wrap"><input name="category" id="jot-category" type="text" placeholder="{{$placeholdercategory}}" value="{{$category}}" class="jothidden" style="display:none" dir="auto"></div>
{{/if}} {{/if}}
<div id="jot-text-wrap"> <div id="jot-text-wrap">
<img id="profile-jot-text-loading" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait}}" style="display: none;" /> <img id="profile-jot-text-loading" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait}}" style="display: none;" />
<textarea rows="5" cols="64" class="profile-jot-text" id="profile-jot-text" name="body" placeholder="{{$share}}">{{if $content}}{{$content nofilter}}{{/if}}</textarea> <textarea rows="5" cols="64" class="profile-jot-text" id="profile-jot-text" name="body" placeholder="{{$share}}" dir="auto">{{if $content}}{{$content nofilter}}{{/if}}</textarea>
</div> </div>
<div id="profile-jot-submit-wrapper" class="jothidden"> <div id="profile-jot-submit-wrapper" class="jothidden">
<input type="submit" id="profile-jot-submit" name="submit" value="{{$share}}" /> <input type="submit" id="profile-jot-submit" name="submit" value="{{$share}}" />
<div id="profile-upload-wrapper" style="display: {{$visitor}};" > <div id="profile-upload-wrapper" style="display: {{$visitor}};">
<div id="wall-image-upload-div" ><a href="#" onclick="return false;" id="wall-image-upload" class="icon camera" title="{{$upload}}"></a></div> <div id="wall-image-upload-div"><a href="#" onclick="return false;" id="wall-image-upload" class="icon camera" title="{{$upload}}"></a></div>
</div> </div>
<div id="profile-attach-wrapper" style="display: {{$visitor}};" > <div id="profile-attach-wrapper" style="display: {{$visitor}};">
<div id="wall-file-upload-div" ><a href="#" onclick="return false;" id="wall-file-upload" class="icon attach" title="{{$attach}}"></a></div> <div id="wall-file-upload-div"><a href="#" onclick="return false;" id="wall-file-upload" class="icon attach" title="{{$attach}}"></a></div>
</div> </div>
<div id="profile-link-wrapper" style="display: {{$visitor}};" ondragenter="linkdropper(event);" ondragover="linkdropper(event);" ondrop="linkdrop(event);" > <div id="profile-link-wrapper" style="display: {{$visitor}};" ondragenter="linkdropper(event);" ondragover="linkdropper(event);" ondrop="linkdrop(event);">
<a id="profile-link" class="icon link" title="{{$weblink}}" ondragenter="return linkdropper(event);" ondragover="return linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink(); return false;"></a> <a id="profile-link" class="icon link" title="{{$weblink}}" ondragenter="return linkdropper(event);" ondragover="return linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink(); return false;"></a>
</div> </div>
<div id="profile-video-wrapper" style="display: {{$visitor}};" > <div id="profile-video-wrapper" style="display: {{$visitor}};">
<a id="profile-video" class="icon video" title="{{$video}}" onclick="jotVideoURL();return false;"></a> <a id="profile-video" class="icon video" title="{{$video}}" onclick="jotVideoURL();return false;"></a>
</div> </div>
<div id="profile-audio-wrapper" style="display: {{$visitor}};" > <div id="profile-audio-wrapper" style="display: {{$visitor}};">
<a id="profile-audio" class="icon audio" title="{{$audio}}" onclick="jotAudioURL();return false;"></a> <a id="profile-audio" class="icon audio" title="{{$audio}}" onclick="jotAudioURL();return false;"></a>
</div> </div>
<div id="profile-location-wrapper" style="display: {{$visitor}};" > <div id="profile-location-wrapper" style="display: {{$visitor}};">
<a id="profile-location" class="icon globe" title="{{$setloc}}" onclick="jotGetLocation();return false;"></a> <a id="profile-location" class="icon globe" title="{{$setloc}}" onclick="jotGetLocation();return false;"></a>
</div> </div>
<div id="profile-nolocation-wrapper" style="display: none;" > <div id="profile-nolocation-wrapper" style="display: none;">
<a id="profile-nolocation" class="icon noglobe" title="{{$noloc}}" onclick="jotClearLocation();return false;"></a> <a id="profile-nolocation" class="icon noglobe" title="{{$noloc}}" onclick="jotClearLocation();return false;"></a>
</div> </div>
<div id="profile-jot-perms" class="profile-jot-perms" style="display: {{$pvisit}};" > <div id="profile-jot-perms" class="profile-jot-perms" style="display: {{$pvisit}};">
<a href="#profile-jot-acl-wrapper" id="jot-perms-icon" class="icon {{$lockstate}}" title="{{$permset}}" ></a>{{$bang}} <a href="#profile-jot-acl-wrapper" id="jot-perms-icon" class="icon {{$lockstate}}" title="{{$permset}}"></a>{{$bang}}
</div> </div>
<!-- {{if $preview}}<span onclick="preview_post();" id="jot-preview-link" class="fakelink">{{$preview}}</span>{{/if}} --> <!-- {{if $preview}}<span onclick="preview_post();" id="jot-preview-link" class="fakelink">{{$preview}}</span>{{/if}} -->
@ -67,7 +67,7 @@
{{$jotplugins nofilter}} {{$jotplugins nofilter}}
</div> </div>
<div id="profile-rotator-wrapper" style="display: {{$visitor}};" > <div id="profile-rotator-wrapper" style="display: {{$visitor}};">
<img id="profile-rotator" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait}}" style="display: none;" /> <img id="profile-rotator" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait}}" style="display: none;" />
</div> </div>

View File

@ -1,6 +1,6 @@
<form id="login-form" action="{{$dest_url}}" role="form" method="post" > <form id="login-form" action="{{$dest_url}}" role="form" method="post">
<div id="login-group" role="group" aria-labelledby="login-head"> <div id="login-group" role="group" aria-labelledby="login-head">
<input type="hidden" name="auth-params" value="login" /> <input type="hidden" name="auth-params" value="login" />
@ -10,7 +10,7 @@
{{include file="field_input.tpl" field=$lname}} {{include file="field_input.tpl" field=$lname}}
{{include file="field_password.tpl" field=$lpassword}} {{include file="field_password.tpl" field=$lpassword}}
<div id="login-lost-password-link"> <div id="login-lost-password-link">
<a href="lostpass" title="{{$lostpass}}" id="lost-password-link" >{{$lostlink}}</a> <a href="lostpass" title="{{$lostpass}}" id="lost-password-link">{{$lostlink}}</a>
</div> </div>
</div> </div>
@ -20,7 +20,7 @@
</div> </div>
{{/if}} {{/if}}
<div id="login-submit-wrapper" > <div id="login-submit-wrapper">
<input type="submit" name="submit" id="login-submit-button" value="{{$login}}" /> <input type="submit" name="submit" id="login-submit-button" value="{{$login}}" />
</div> </div>

View File

@ -1,5 +1,5 @@
<form action="{{$dest_url}}" method="post" > <form action="{{$dest_url}}" method="post">
<div class="logout-wrapper"> <div class="logout-wrapper">
<input type="hidden" name="auth-params" value="logout" /> <input type="hidden" name="auth-params" value="logout" />
<input type="submit" name="submit" id="logout-button" value="{{$logout}}" /> <input type="submit" name="submit" id="logout-button" value="{{$logout}}" />

View File

@ -5,13 +5,13 @@
{{$desc nofilter}} {{$desc nofilter}}
</p> </p>
<form action="lostpass" method="post" > <form action="lostpass" method="post">
<div id="login-name-wrapper"> <div id="login-name-wrapper">
<label for="login-name" id="label-login-name">{{$name}}</label> <label for="login-name" id="label-login-name">{{$name}}</label>
<input type="text" maxlength="60" name="login-name" id="login-name" value="" /> <input type="text" maxlength="60" name="login-name" id="login-name" value="" />
</div> </div>
<div id="login-extra-end"></div> <div id="login-extra-end"></div>
<div id="login-submit-wrapper" > <div id="login-submit-wrapper">
<input type="submit" name="submit" id="lostpass-submit-button" value="{{$submit}}" /> <input type="submit" name="submit" id="lostpass-submit-button" value="{{$submit}}" />
</div> </div>
<div id="login-submit-end"></div> <div id="login-submit-end"></div>

View File

@ -1,14 +1,14 @@
<div class="mail-conv-outside-wrapper"> <div class="mail-conv-outside-wrapper">
<div class="mail-conv-sender" > <div class="mail-conv-sender">
<a href="{{$mail.from_url}}" title="{{$mail.from_addr}}" class="mail-conv-sender-url" ><img class="mframe mail-conv-sender-photo{{$mail.sparkle}}" src="{{$mail.from_photo}}" heigth="80" width="80" alt="{{$mail.from_name}}" /></a> <a href="{{$mail.from_url}}" title="{{$mail.from_addr}}" class="mail-conv-sender-url"><img class="mframe mail-conv-sender-photo{{$mail.sparkle}}" src="{{$mail.from_photo}}" heigth="80" width="80" alt="{{$mail.from_name}}" /></a>
</div> </div>
<div class="mail-conv-detail" > <div class="mail-conv-detail">
<div class="mail-conv-sender-name" >{{$mail.from_name}}</div> <div class="mail-conv-sender-name">{{$mail.from_name}}</div>
<div class="mail-conv-date">{{$mail.date}}</div> <div class="mail-conv-date">{{$mail.date}}</div>
<div class="mail-conv-subject">{{$mail.subject}}</div> <div class="mail-conv-subject">{{$mail.subject}}</div>
<div class="mail-conv-body">{{$mail.body nofilter}}</div> <div class="mail-conv-body">{{$mail.body nofilter}}</div>
<div class="mail-conv-delete-wrapper" id="mail-conv-delete-wrapper-{{$mail.id}}" ><a href="message/drop/{{$mail.id}}" class="icon drophide delete-icon mail-list-delete-icon" onclick="return confirmDelete();" title="{{$mail.delete}}" id="mail-conv-delete-icon-{{$mail.id}}" class="mail-conv-delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a></div><div class="mail-conv-delete-end"></div> <div class="mail-conv-delete-wrapper" id="mail-conv-delete-wrapper-{{$mail.id}}"><a href="message/drop/{{$mail.id}}" class="icon drophide delete-icon mail-list-delete-icon" onclick="return confirmDelete();" title="{{$mail.delete}}" id="mail-conv-delete-icon-{{$mail.id}}" class="mail-conv-delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);"></a></div><div class="mail-conv-delete-end"></div>
<div class="mail-conv-outside-wrapper-end"></div> <div class="mail-conv-outside-wrapper-end"></div>
</div> </div>
</div> </div>

View File

@ -1,14 +1,14 @@
<div class="mail-list-outside-wrapper"> <div class="mail-list-outside-wrapper">
<div class="mail-list-sender" > <div class="mail-list-sender">
<a href="{{$from_url}}" title="{{$from_addr}}" class="mail-list-sender-url" ><img class="mail-list-sender-photo{{$sparkle}}" src="{{$from_photo}}" height="80" width="80" alt="{{$from_name}}" title="{{$from_addr}}" /></a> <a href="{{$from_url}}" title="{{$from_addr}}" class="mail-list-sender-url"><img class="mail-list-sender-photo{{$sparkle}}" src="{{$from_photo}}" height="80" width="80" alt="{{$from_name}}" title="{{$from_addr}}" /></a>
</div> </div>
<div class="mail-list-detail"> <div class="mail-list-detail">
<div class="mail-list-sender-name" >{{$from_name}}</div> <div class="mail-list-sender-name">{{$from_name}}</div>
<div class="mail-list-date">{{$date}}</div> <div class="mail-list-date">{{$date}}</div>
<div class="mail-list-subject"><a href="message/{{$id}}" class="mail-list-link">{{$subject}}</a></div> <div class="mail-list-subject"><a href="message/{{$id}}" class="mail-list-link">{{$subject}}</a></div>
<div class="mail-list-delete-wrapper" id="mail-list-delete-wrapper-{{$id}}" > <div class="mail-list-delete-wrapper" id="mail-list-delete-wrapper-{{$id}}">
<a href="message/dropconv/{{$id}}" onclick="return confirmDelete();" title="{{$delete}}" class="icon drophide mail-list-delete delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a> <a href="message/dropconv/{{$id}}" onclick="return confirmDelete();" title="{{$delete}}" class="icon drophide mail-list-delete delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);"></a>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,6 +1,6 @@
<div class="contact-block-div {{if $class}}{{$class}}{{/if}}"> <div class="contact-block-div{{if $class}} {{$class}}{{/if}}">
<a class="contact-block-link {{if $class}}{{$class }}{{/if}} {{if $sparkle}}sparkle{{/if}} {{if $click}}fakelink{{/if}}" {{if $redir}}target="redir"{{/if}} {{if $url}}href="{{$url}}"{{/if}} {{if $click}}onclick="{{$click}}"{{/if}} > <a class="contact-block-link{{if $class}} {{$class }}{{/if}}{{if $sparkle}} sparkle{{/if}}{{if $click}} fakelink{{/if}}"{{if $redir}} target="redir"{{/if}}{{if $url}} href="{{$url}}"{{/if}}{{if $click}} onclick="{{$click}}"{{/if}}>
<img class="contact-block-img {{if $class}}{{$class }}{{/if}} {{if $sparkle}}sparkle{{/if}}" src="{{$photo}}" title="{{$title}}" alt="{{$name}}" /> <img class="contact-block-img{{if $class}} {{$class }}{{/if}}{{if $sparkle}} sparkle{{/if}}" src="{{$photo}}" title="{{$title}}" alt="{{$name}}"/>
</a> </a>
</div> </div>

View File

@ -1,7 +1,7 @@
<script language="javascript" type="text/javascript"> <script language="javascript" type="text/javascript">
$("#prvmail-text").editor_autocomplete(baseurl + '/search/acl'); $("#prvmail-text").editor_autocomplete(baseurl + '/search/acl');
</script> </script>
<script type="text/javascript" src="view/js/ajaxupload.js?v={{$smarty.const.FRIENDICA_VERSION}}" ></script> <script type="text/javascript" src="view/js/ajaxupload.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
var uploader = new window.AjaxUpload( var uploader = new window.AjaxUpload(

View File

@ -4,41 +4,41 @@
<div id="site-location">{{$sitelocation}}</div> <div id="site-location">{{$sitelocation}}</div>
{{if $nav.logout}}<a id="nav-logout-link" class="nav-link {{$nav.logout.2}}" href="{{$nav.logout.0}}" title="{{$nav.logout.3}}" >{{$nav.logout.1}}</a> {{/if}} {{if $nav.logout}}<a id="nav-logout-link" class="nav-link {{$nav.logout.2}}" href="{{$nav.logout.0}}" title="{{$nav.logout.3}}">{{$nav.logout.1}}</a> {{/if}}
{{if $nav.login}}<a id="nav-login-link" class="nav-login-link {{$nav.login.2}}" href="{{$nav.login.0}}" title="{{$nav.login.3}}" >{{$nav.login.1}}</a> {{/if}} {{if $nav.login}}<a id="nav-login-link" class="nav-login-link {{$nav.login.2}}" href="{{$nav.login.0}}" title="{{$nav.login.3}}">{{$nav.login.1}}</a> {{/if}}
<span id="nav-link-wrapper" > <span id="nav-link-wrapper">
{{if $nav.register}}<a id="nav-register-link" class="nav-commlink {{$nav.register.2}} {{$sel.register}}" href="{{$nav.register.0}}" title="{{$nav.register.3}}" >{{$nav.register.1}}</a>{{/if}} {{if $nav.register}}<a id="nav-register-link" class="nav-commlink {{$nav.register.2}} {{$sel.register}}" href="{{$nav.register.0}}" title="{{$nav.register.3}}">{{$nav.register.1}}</a>{{/if}}
{{if $nav.help}} <a id="nav-help-link" class="nav-link {{$nav.help.2}}" target="friendica-help" href="{{$nav.help.0}}" title="{{$nav.help.3}}" >{{$nav.help.1}}</a>{{/if}} {{if $nav.help}} <a id="nav-help-link" class="nav-link {{$nav.help.2}}" target="friendica-help" href="{{$nav.help.0}}" title="{{$nav.help.3}}">{{$nav.help.1}}</a>{{/if}}
{{if $nav.tos}} <a id="nav-tos-link" class="nav-link {{$nav.tos.2}}" href="{{$nav.tos.0}}" title="{{$nav.tos.3}}" >{{$nav.tos.1}}</a>{{/if}} {{if $nav.tos}} <a id="nav-tos-link" class="nav-link {{$nav.tos.2}}" href="{{$nav.tos.0}}" title="{{$nav.tos.3}}">{{$nav.tos.1}}</a>{{/if}}
{{if $nav.apps}}<a id="nav-apps-link" class="nav-link {{$nav.apps.2}}" href="{{$nav.apps.0}}" title="{{$nav.apps.3}}" >{{$nav.apps.1}}</a>{{/if}} {{if $nav.apps}}<a id="nav-apps-link" class="nav-link {{$nav.apps.2}}" href="{{$nav.apps.0}}" title="{{$nav.apps.3}}">{{$nav.apps.1}}</a>{{/if}}
<a accesskey="s" id="nav-search-link" class="nav-link {{$nav.search.2}}" href="{{$nav.search.0}}" title="{{$nav.search.3}}" >{{$nav.search.1}}</a> <a accesskey="s" id="nav-search-link" class="nav-link {{$nav.search.2}}" href="{{$nav.search.0}}" title="{{$nav.search.3}}">{{$nav.search.1}}</a>
<a id="nav-directory-link" class="nav-link {{$nav.directory.2}}" href="{{$nav.directory.0}}" title="{{$nav.directory.3}}" >{{$nav.directory.1}}</a> <a id="nav-directory-link" class="nav-link {{$nav.directory.2}}" href="{{$nav.directory.0}}" title="{{$nav.directory.3}}">{{$nav.directory.1}}</a>
{{if $nav.admin}}<a accesskey="a" id="nav-admin-link" class="nav-link {{$nav.admin.2}}" href="{{$nav.admin.0}}" title="{{$nav.admin.3}}" >{{$nav.admin.1}}</a>{{/if}} {{if $nav.admin}}<a accesskey="a" id="nav-admin-link" class="nav-link {{$nav.admin.2}}" href="{{$nav.admin.0}}" title="{{$nav.admin.3}}">{{$nav.admin.1}}</a>{{/if}}
{{if $nav.network}} {{if $nav.network}}
<a accesskey="n" id="nav-network-link" class="nav-commlink {{$nav.network.2}} {{$sel.network}}" href="{{$nav.network.0}}" title="{{$nav.network.3}}" >{{$nav.network.1}}</a> <a accesskey="n" id="nav-network-link" class="nav-commlink {{$nav.network.2}} {{$sel.network}}" href="{{$nav.network.0}}" title="{{$nav.network.3}}">{{$nav.network.1}}</a>
<span id="net-update" class="nav-ajax-left"></span> <span id="net-update" class="nav-ajax-left"></span>
{{/if}} {{/if}}
{{if $nav.home}} {{if $nav.home}}
<a accesskey="p" id="nav-home-link" class="nav-commlink {{$nav.home.2}} {{$sel.home}}" href="{{$nav.home.0}}" title="{{$nav.home.3}}" >{{$nav.home.1}}</a> <a accesskey="p" id="nav-home-link" class="nav-commlink {{$nav.home.2}} {{$sel.home}}" href="{{$nav.home.0}}" title="{{$nav.home.3}}">{{$nav.home.1}}</a>
<span id="home-update" class="nav-ajax-left"></span> <span id="home-update" class="nav-ajax-left"></span>
{{/if}} {{/if}}
{{if $nav.community}} {{if $nav.community}}
<a accesskey="c" id="nav-community-link" class="nav-commlink {{$nav.community.2}} {{$sel.community}}" href="{{$nav.community.0}}" title="{{$nav.community.3}}" >{{$nav.community.1}}</a> <a accesskey="c" id="nav-community-link" class="nav-commlink {{$nav.community.2}} {{$sel.community}}" href="{{$nav.community.0}}" title="{{$nav.community.3}}">{{$nav.community.1}}</a>
{{/if}} {{/if}}
{{if $nav.introductions}} {{if $nav.introductions}}
<a id="nav-notification-link" class="nav-commlink {{$nav.introductions.2}} {{$sel.introductions}}" href="{{$nav.introductions.0}}" title="{{$nav.introductions.3}}" >{{$nav.introductions.1}}</a> <a id="nav-notification-link" class="nav-commlink {{$nav.introductions.2}} {{$sel.introductions}}" href="{{$nav.introductions.0}}" title="{{$nav.introductions.3}}">{{$nav.introductions.1}}</a>
<span id="intro-update" class="nav-ajax-left"></span> <span id="intro-update" class="nav-ajax-left"></span>
{{/if}} {{/if}}
{{if $nav.messages}} {{if $nav.messages}}
<a id="nav-messages-link" class="nav-commlink {{$nav.messages.2}} {{$sel.messages}}" href="{{$nav.messages.0}}" title="{{$nav.messages.3}}" >{{$nav.messages.1}}</a> <a id="nav-messages-link" class="nav-commlink {{$nav.messages.2}} {{$sel.messages}}" href="{{$nav.messages.0}}" title="{{$nav.messages.3}}">{{$nav.messages.1}}</a>
<span id="mail-update" class="nav-ajax-left"></span> <span id="mail-update" class="nav-ajax-left"></span>
{{/if}} {{/if}}
@ -58,9 +58,9 @@
{{/if}} {{/if}}
{{if $nav.settings}}<a id="nav-settings-link" class="nav-link {{$nav.settings.2}}" href="{{$nav.settings.0}}" title="{{$nav.settings.3}}">{{$nav.settings.1}}</a>{{/if}} {{if $nav.settings}}<a id="nav-settings-link" class="nav-link {{$nav.settings.2}}" href="{{$nav.settings.0}}" title="{{$nav.settings.3}}">{{$nav.settings.1}}</a>{{/if}}
{{if $nav.profiles}}<a id="nav-profiles-link" class="nav-link {{$nav.profiles.2}}" href="{{$nav.profiles.0}}" title="{{$nav.profiles.3}}" >{{$nav.profiles.1}}</a>{{/if}} {{if $nav.profiles}}<a id="nav-profiles-link" class="nav-link {{$nav.profiles.2}}" href="{{$nav.profiles.0}}" title="{{$nav.profiles.3}}">{{$nav.profiles.1}}</a>{{/if}}
{{if $nav.contacts}}<a id="nav-contacts-link" class="nav-link {{$nav.contacts.2}}" href="{{$nav.contacts.0}}" title="{{$nav.contacts.3}}" >{{$nav.contacts.1}}</a>{{/if}} {{if $nav.contacts}}<a id="nav-contacts-link" class="nav-link {{$nav.contacts.2}}" href="{{$nav.contacts.0}}" title="{{$nav.contacts.3}}">{{$nav.contacts.1}}</a>{{/if}}
</span> </span>
<span id="nav-end"></span> <span id="nav-end"></span>
<span id="banner">{{$banner nofilter}}</span> <span id="banner">{{$banner nofilter}}</span>

View File

@ -1,6 +1,6 @@
<h2>{{$header}}</h2> <h2>{{$header}}</h2>
<div class="intro-wrapper" id="intro-{{$contact_id}}" > <div class="intro-wrapper" id="intro-{{$contact_id}}">
<p class="intro-desc">{{$str_notification_type}} {{$str_type}}</p> <p class="intro-desc">{{$str_notification_type}} {{$str_type}}</p>
<img id="photo-{{$contact_id}}" class="intro-photo" src="{{$photo}}" width="175" height=175" title="{{$fullname}}" alt="{{$fullname}}" /> <img id="photo-{{$contact_id}}" class="intro-photo" src="{{$photo}}" width="175" height=175" title="{{$fullname}}" alt="{{$fullname}}" />
@ -25,9 +25,9 @@
{{include file="field_radio.tpl" field=$follower}} {{include file="field_radio.tpl" field=$follower}}
</div> </div>
<input type="hidden" name="dfrn_id" value="{{$dfrn_id}}" > <input type="hidden" name="dfrn_id" value="{{$dfrn_id}}">
<input type="hidden" name="intro_id" value="{{$intro_id}}" > <input type="hidden" name="intro_id" value="{{$intro_id}}">
<input type="hidden" name="contact_id" value="{{$contact_id}}" > <input type="hidden" name="contact_id" value="{{$contact_id}}">
<input class="intro-submit-approve" type="submit" name="submit" value="{{$approve}}" /> <input class="intro-submit-approve" type="submit" name="submit" value="{{$approve}}" />
</form> </form>

View File

@ -8,7 +8,7 @@
<div class="intro-approve-as-friend-wrapper"> <div class="intro-approve-as-friend-wrapper">
<label class="intro-approve-as-friend-label" for="intro-approve-as-friend-{{$intro_id}}">{{$as_friend}}</label> <label class="intro-approve-as-friend-label" for="intro-approve-as-friend-{{$intro_id}}">{{$as_friend}}</label>
<input type="radio" name="duplex" id="intro-approve-as-friend-{{$intro_id}}" class="intro-approve-as-friend" {{$friend_selected}} value="1" /> <input type="radio" name="duplex" id="intro-approve-as-friend-{{$intro_id}}" class="intro-approve-as-friend" {{$friend_selected}} value="1" />
<div class="intro-approve-friend-break" ></div> <div class="intro-approve-friend-break"></div>
</div> </div>
<div class="intro-approve-as-friend-end"></div> <div class="intro-approve-as-friend-end"></div>
<div class="intro-approve-as-fan-wrapper"> <div class="intro-approve-as-fan-wrapper">

View File

@ -1,12 +1,12 @@
<div class="intro-wrapper" > <div class="intro-wrapper">
<p class="intro-desc">{{$str_notification_type}} {{$str_type}}</p> <p class="intro-desc">{{$str_notification_type}} {{$str_type}}</p>
{{if $madeby}}<div class="intro-madeby">{{$lbl_madeby}} {{$madeby}}</div>{{/if}} {{if $madeby}}<div class="intro-madeby">{{$lbl_madeby}} {{$madeby}}</div>{{/if}}
<div class="intro-fullname" >{{$fullname}}</div> <div class="intro-fullname">{{$fullname}}</div>
<a class="intro-url-link" href="{{$url}}" ><img class="intro-photo lframe" src="{{$photo}}" width="175" height="175" title="{{$fullname}}" alt="{{$fullname}}" /></a> <a class="intro-url-link" href="{{$url}}"><img class="intro-photo lframe" src="{{$photo}}" width="175" height="175" title="{{$fullname}}" alt="{{$fullname}}" /></a>
<div class="intro-note" >{{$note}}</div> <div class="intro-note">{{$note}}</div>
<div class="intro-wrapper-end"></div> <div class="intro-wrapper-end"></div>
<form class="intro-form" action="notification/{{$intro_id}}" method="post"> <form class="intro-form" action="notification/{{$intro_id}}" method="post">
<input class="intro-submit-ignore" type="submit" name="submit" value="{{$ignore}}" /> <input class="intro-submit-ignore" type="submit" name="submit" value="{{$ignore}}" />

View File

@ -1,4 +1,4 @@
<a class="embed_video" href="{{$embedurl}}" onclick='this.innerHTML=window.atob("{{$escapedhtml}}"); this.classList.add("active"); return false;'> <a class="embed_video" href="{{$embedurl}}" onclick="this.innerHTML=window.atob('{{$escapedhtml}}'); this.classList.add('active'); return false;">
<img width='{{$tw}}' height='{{$th}}' src='{{$turl}}' > <img width="{{$tw}}" height="{{$th}}" src="{{$turl}}">
<div style='width: {{$tw}}px; height: {{$th}}px;'></div> <div style="width: {{$tw}}px; height: {{$th}}px;"></div>
</a> </a>

View File

@ -6,16 +6,16 @@
{{if $drop}} {{if $drop}}
<div id="album-drop-link"><a href="{{$drop.1}}" title="{{$drop.0}}">{{$drop.0}}</a></div> <div id="album-drop-link"><a href="{{$drop.1}}" title="{{$drop.0}}">{{$drop.0}}</a></div>
{{/if}} {{/if}}
<div class="photos-upload-link" ><a href="{{$order.1}}" title="{{$order.0}}">{{$order.0}}</a></div> <div class="photos-upload-link"><a href="{{$order.1}}" title="{{$order.0}}">{{$order.0}}</a></div>
{{if $can_post}} {{if $can_post}}
<div class="photos-upload-link" ><a href="{{$upload.1}}">{{$upload.0}}</a></div> <div class="photos-upload-link"><a href="{{$upload.1}}">{{$upload.0}}</a></div>
{{/if}} {{/if}}
{{foreach $photos as $photo}} {{foreach $photos as $photo}}
<div class="photo-album-image-wrapper" id="photo-album-image-wrapper-{{$photo.id}}"> <div class="photo-album-image-wrapper" id="photo-album-image-wrapper-{{$photo.id}}">
<a href="{{$photo.link}}" class="photo-album-photo-link" id="photo-album-photo-link-{{$photo.id}}" title="{{$photo.title}}"> <a href="{{$photo.link}}" class="photo-album-photo-link" id="photo-album-photo-link-{{$photo.id}}" title="{{$photo.title}}">
<img src="{{$photo.src}}" alt="{{if $photo.album.name}}{{$photo.album.name}}{{elseif $photo.desc}}{{$photo.desc}}{{elseif $photo.alt}}{{$photo.alt}}{{else}}{{$photo.unknown}}{{/if}}" title="{{$photo.title}}" class="photo-album-photo lframe resize{{$photo.twist}}" id="photo-album-photo-{{$photo.id}}" /> <img src="{{$photo.src}}" alt="{{if $photo.album.name}}{{$photo.album.name}}{{elseif $photo.desc}}{{$photo.desc}}{{elseif $photo.alt}}{{$photo.alt}}{{else}}{{$photo.unknown}}{{/if}}" title="{{$photo.title}}" class="photo-album-photo lframe resize{{$photo.twist}}" id="photo-album-photo-{{$photo.id}}" />
<p class='caption'>{{$photo.desc}}</p> <p class="caption" dir="auto">{{$photo.desc}}</p>
</a> </a>
</div> </div>
<div class="photo-album-image-wrapper-end"></div> <div class="photo-album-image-wrapper-end"></div>

View File

@ -2,7 +2,7 @@
<h3>{{$title}}</h3> <h3>{{$title}}</h3>
<ul role="menubar" class="sidebar-photos-albums-ul"> <ul role="menubar" class="sidebar-photos-albums-ul">
<li role="menuitem" class="sidebar-photos-albums-li"> <li role="menuitem" class="sidebar-photos-albums-li">
<a href="{{$baseurl}}/photos/{{$nick}}" class="sidebar-photos-albums-element" title="{{$title}}" >{{$recent}}</a> <a href="{{$baseurl}}/photos/{{$nick}}" class="sidebar-photos-albums-element" title="{{$title}}">{{$recent}}</a>
</li> </li>
{{if $albums}} {{if $albums}}
@ -19,6 +19,6 @@
</ul> </ul>
{{if $can_post}} {{if $can_post}}
<div class="photos-upload-link" ><a href="{{$upload.1}}">{{$upload.0}}</a></div> <div class="photos-upload-link"><a href="{{$upload.1}}">{{$upload.0}}</a></div>
{{/if}} {{/if}}
</div> </div>

View File

@ -1,5 +1,5 @@
<form action="photos/{{$nickname}}/image/{{$resource_id}}/edit" method="post" id="photo_edit_form" > <form action="photos/{{$nickname}}/image/{{$resource_id}}/edit" method="post" id="photo_edit_form">
<input type="hidden" name="item_id" value="{{$item_id}}" /> <input type="hidden" name="item_id" value="{{$item_id}}" />
<input type="hidden" name="origaname" value="{{$album.2}}" /> <input type="hidden" name="origaname" value="{{$album.2}}" />
@ -12,14 +12,14 @@
{{include file="field_radio.tpl" field=$rotate_cw}} {{include file="field_radio.tpl" field=$rotate_cw}}
{{include file="field_radio.tpl" field=$rotate_ccw}} {{include file="field_radio.tpl" field=$rotate_ccw}}
<div id="photo-edit-perms" class="photo-edit-perms" > <div id="photo-edit-perms" class="photo-edit-perms">
<a href="#photo-edit-perms-select" id="photo-edit-perms-menu" class="button popupbox" title="{{$permissions}}"> <a href="#photo-edit-perms-select" id="photo-edit-perms-menu" class="button popupbox" title="{{$permissions}}">
<span id="jot-perms-icon" class="icon {{$lockstate}}" ></span>{{$permissions}} <span id="jot-perms-icon" class="icon {{$lockstate}}"></span>{{$permissions}}
</a> </a>
<div id="photo-edit-perms-menu-end"></div> <div id="photo-edit-perms-menu-end"></div>
<div style="display: none;"> <div style="display: none;">
<div id="photo-edit-perms-select" > <div id="photo-edit-perms-select">
{{$aclselect nofilter}} {{$aclselect nofilter}}
</div> </div>
</div> </div>

View File

@ -2,6 +2,6 @@
<a href="{{$photo.link}}" class="photo-top-photo-link" id="photo-top-photo-link-{{$photo.id}}" title="{{$photo.title}}"> <a href="{{$photo.link}}" class="photo-top-photo-link" id="photo-top-photo-link-{{$photo.id}}" title="{{$photo.title}}">
<img src="{{$photo.src}}" alt="{{$photo.alt}}" title="{{$photo.title}}" class="photo-top-photo{{$photo.twist}}" id="photo-top-photo-{{$photo.id}}" /> <img src="{{$photo.src}}" alt="{{$photo.alt}}" title="{{$photo.title}}" class="photo-top-photo{{$photo.twist}}" id="photo-top-photo-{{$photo.id}}" />
</a> </a>
<div class="photo-top-album-name"><a href="{{$photo.album.link}}" class="photo-top-album-link" title="{{$photo.album.alt}}" >{{$photo.album.name}}</a></div> <div class="photo-top-album-name"><a href="{{$photo.album.link}}" class="photo-top-album-link" title="{{$photo.album.alt}}">{{$photo.album.name}}</a></div>
</div> </div>

View File

@ -1,4 +1,4 @@
<div class="photos-upload-submit-wrapper" > <div class="photos-upload-submit-wrapper">
<input type="submit" name="submit" value="{{$submit}}" id="photos-upload-submit" /> <input type="submit" name="submit" value="{{$submit}}" id="photos-upload-submit" />
</div> </div>

View File

@ -3,10 +3,10 @@
<div id="photos-usage-message">{{$usage}}</div> <div id="photos-usage-message">{{$usage}}</div>
<form action="photos/{{$nickname}}" enctype="multipart/form-data" method="post" name="photos-upload-form" id="photos-upload-form" > <form action="photos/{{$nickname}}" enctype="multipart/form-data" method="post" name="photos-upload-form" id="photos-upload-form">
<div id="photos-upload-new-wrapper" > <div id="photos-upload-new-wrapper">
<div id="photos-upload-newalbum-div"> <div id="photos-upload-newalbum-div">
<label id="photos-upload-newalbum-text" for="photos-upload-newalbum" >{{$newalbum}}</label> <label id="photos-upload-newalbum-text" for="photos-upload-newalbum">{{$newalbum}}</label>
</div> </div>
<input id="photos-upload-newalbum" type="text" name="newalbum" /> <input id="photos-upload-newalbum" type="text" name="newalbum" />
</div> </div>
@ -19,15 +19,15 @@
</div> </div>
<div id="photos-upload-exist-end"></div> <div id="photos-upload-exist-end"></div>
<div id="photos-upload-noshare-div" class="photos-upload-noshare-div" > <div id="photos-upload-noshare-div" class="photos-upload-noshare-div">
<input id="photos-upload-noshare" type="checkbox" name="not_visible" value="1" checked/> <input id="photos-upload-noshare" type="checkbox" name="not_visible" value="1" checked/>
<label id="photos-upload-noshare-text" for="photos-upload-noshare" >{{$nosharetext}}</label> <label id="photos-upload-noshare-text" for="photos-upload-noshare">{{$nosharetext}}</label>
</div> </div>
<div id="photos-upload-perms" class="photos-upload-perms" > <div id="photos-upload-perms" class="photos-upload-perms">
<a href="#photos-upload-permissions-wrapper" id="photos-upload-perms-menu" class="button popupbox" /> <a href="#photos-upload-permissions-wrapper" id="photos-upload-perms-menu" class="button popupbox" />
<span id="jot-perms-icon" class="icon {{$lockstate}}" ></span>{{$permissions}} <span id="jot-perms-icon" class="icon {{$lockstate}}"></span>{{$permissions}}
</a> </a>
</div> </div>
<div id="photos-upload-perms-end"></div> <div id="photos-upload-perms-end"></div>
@ -45,6 +45,6 @@
{{$default_upload_box nofilter}} {{$default_upload_box nofilter}}
{{$default_upload_submit nofilter}} {{$default_upload_submit nofilter}}
<div class="photos-upload-end" ></div> <div class="photos-upload-end"></div>
</form> </form>

View File

@ -7,7 +7,7 @@
<label id="profile-publish-yes-label-{{$instance}}" for="profile-publish-yes-{{$instance}}">{{$str_yes}}</label> <label id="profile-publish-yes-label-{{$instance}}" for="profile-publish-yes-{{$instance}}">{{$str_yes}}</label>
<input type="radio" name="profile_publish_{{$instance}}" id="profile-publish-yes-{{$instance}}" {{$yes_selected}} value="1" /> <input type="radio" name="profile_publish_{{$instance}}" id="profile-publish-yes-{{$instance}}" {{$yes_selected}} value="1" />
<div id="profile-publish-break-{{$instance}}" ></div> <div id="profile-publish-break-{{$instance}}"></div>
</div> </div>
<div id="profile-publish-no-wrapper-{{$instance}}"> <div id="profile-publish-no-wrapper-{{$instance}}">
<label id="profile-publish-no-label-{{$instance}}" for="profile-publish-no-{{$instance}}">{{$str_no}}</label> <label id="profile-publish-no-label-{{$instance}}" for="profile-publish-no-{{$instance}}">{{$str_no}}</label>

View File

@ -2,8 +2,8 @@
<h3>{{$header}}</h3> <h3>{{$header}}</h3>
<div id="prvmail-wrapper" > <div id="prvmail-wrapper">
<form id="prvmail-form" action="message" method="post" > <form id="prvmail-form" action="message" method="post">
{{$parent nofilter}} {{$parent nofilter}}
@ -17,15 +17,15 @@
<textarea rows="8" cols="72" class="prvmail-text" id="prvmail-text" name="body" tabindex="12">{{$text}}</textarea> <textarea rows="8" cols="72" class="prvmail-text" id="prvmail-text" name="body" tabindex="12">{{$text}}</textarea>
<div id="prvmail-submit-wrapper" > <div id="prvmail-submit-wrapper">
<input type="submit" id="prvmail-submit" name="submit" value="{{$submit}}" tabindex="13" /> <input type="submit" id="prvmail-submit" name="submit" value="{{$submit}}" tabindex="13" />
<div id="prvmail-upload-wrapper" > <div id="prvmail-upload-wrapper">
<div id="prvmail-upload" class="icon border camera" title="{{$upload}}" ></div> <div id="prvmail-upload" class="icon border camera" title="{{$upload}}"></div>
</div> </div>
<div id="prvmail-link-wrapper" > <div id="prvmail-link-wrapper">
<div id="prvmail-link" class="icon border link" title="{{$insert}}" onclick="jotGetLink();" ></div> <div id="prvmail-link" class="icon border link" title="{{$insert}}" onclick="jotGetLink();"></div>
</div> </div>
<div id="prvmail-rotator-wrapper" > <div id="prvmail-rotator-wrapper">
<img id="prvmail-rotator" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait}}" style="display: none;" /> <img id="prvmail-rotator" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait}}" style="display: none;" />
</div> </div>
</div> </div>

View File

@ -13,40 +13,40 @@
<p id="register-fill-ext">{{$fillext}}</p> <p id="register-fill-ext">{{$fillext}}</p>
{{if $oidlabel}} {{if $oidlabel}}
<div id="register-openid-wrapper" > <div id="register-openid-wrapper">
<label for="register-openid" id="label-register-openid" >{{$oidlabel}}</label><input type="text" maxlength="60" size="32" name="openid_url" class="openid" id="register-openid" value="{{$openid}}" > <label for="register-openid" id="label-register-openid">{{$oidlabel}}</label><input type="text" maxlength="60" size="32" name="openid_url" class="openid" id="register-openid" value="{{$openid}}">
</div> </div>
<div id="register-openid-end" ></div> <div id="register-openid-end"></div>
{{/if}} {{/if}}
{{if $invitations}} {{if $invitations}}
<p id="register-invite-desc">{{$invite_desc nofilter}}</p> <p id="register-invite-desc">{{$invite_desc nofilter}}</p>
<div id="register-invite-wrapper" > <div id="register-invite-wrapper">
<label for="register-invite" id="label-register-invite" >{{$invite_label}}</label> <label for="register-invite" id="label-register-invite">{{$invite_label}}</label>
<input type="text" maxlength="60" size="32" name="invite_id" id="register-invite" value="{{$invite_id}}" > <input type="text" maxlength="60" size="32" name="invite_id" id="register-invite" value="{{$invite_id}}">
</div> </div>
<div id="register-name-end" ></div> <div id="register-name-end"></div>
{{/if}} {{/if}}
<div id="register-name-wrapper" > <div id="register-name-wrapper">
<label for="register-name" id="label-register-name" >{{$namelabel}}</label> <label for="register-name" id="label-register-name">{{$namelabel}}</label>
<input type="text" maxlength="60" size="32" name="username" id="register-name" value="{{$username}}" required> <input type="text" maxlength="60" size="32" name="username" id="register-name" value="{{$username}}" required>
</div> </div>
<div id="register-name-end" ></div> <div id="register-name-end"></div>
{{if !$additional}} {{if !$additional}}
<div id="register-email-wrapper" > <div id="register-email-wrapper">
<label for="register-email" id="label-register-email" >{{$addrlabel}}</label> <label for="register-email" id="label-register-email">{{$addrlabel}}</label>
<input type="text" maxlength="60" size="32" name="field1" id="register-email" value="{{$email}}" required> <input type="text" maxlength="60" size="32" name="field1" id="register-email" value="{{$email}}" required>
</div> </div>
<div id="register-email-end" ></div> <div id="register-email-end"></div>
<div id="register-repeat-wrapper" > <div id="register-repeat-wrapper">
<label for="register-repeat" id="label-register-repeat" >{{$addrlabel2}}</label> <label for="register-repeat" id="label-register-repeat">{{$addrlabel2}}</label>
<input type="text" maxlength="60" size="32" name="repeat" id="register-repeat" value="" required> <input type="text" maxlength="60" size="32" name="repeat" id="register-repeat" value="" required>
</div> </div>
<div id="register-repeat-end" ></div> <div id="register-repeat-end"></div>
{{/if}} {{/if}}
{{if $ask_password}} {{if $ask_password}}
@ -54,13 +54,13 @@
{{include file="field_password.tpl" field=$password2}} {{include file="field_password.tpl" field=$password2}}
{{/if}} {{/if}}
<p id="register-nickname-desc" >{{$nickdesc nofilter}}</p> <p id="register-nickname-desc">{{$nickdesc nofilter}}</p>
<div id="register-nickname-wrapper" > <div id="register-nickname-wrapper">
<label for="register-nickname" id="label-register-nickname" >{{$nicklabel}}</label> <label for="register-nickname" id="label-register-nickname">{{$nicklabel}}</label>
<input type="text" maxlength="60" size="32" name="nickname" id="register-nickname" value="{{$nickname}}" required><div id="register-sitename">@{{$sitename}}</div> <input type="text" maxlength="60" size="32" name="nickname" id="register-nickname" value="{{$nickname}}" required><div id="register-sitename">@{{$sitename}}</div>
</div> </div>
<div id="register-nickname-end" ></div> <div id="register-nickname-end"></div>
<input type="input" id=tarpit" name="email" style="display: none;" placeholder="Don't enter anything here"/> <input type="input" id=tarpit" name="email" style="display: none;" placeholder="Don't enter anything here"/>
@ -87,7 +87,7 @@
<div id="register-submit-wrapper"> <div id="register-submit-wrapper">
<input type="submit" name="submit" id="register-submit-button" value="{{$regbutt}}" /> <input type="submit" name="submit" id="register-submit-button" value="{{$regbutt}}" />
</div> </div>
<div id="register-submit-end" ></div> <div id="register-submit-end"></div>
{{if !$additional}} {{if !$additional}}
<h3>{{$importh}}</h3> <h3>{{$importh}}</h3>

View File

@ -5,7 +5,7 @@
<div id="remove-account-desc">{{$desc nofilter}}</div> <div id="remove-account-desc">{{$desc nofilter}}</div>
<form action="{{$basedir}}/removeme" autocomplete="off" method="post" > <form action="{{$basedir}}/removeme" autocomplete="off" method="post">
<input type="hidden" name="verify" value="{{$hash}}" /> <input type="hidden" name="verify" value="{{$hash}}" />
<div id="remove-account-pass-wrapper"> <div id="remove-account-pass-wrapper">

View File

@ -32,7 +32,7 @@
</div> </div>
<div class="wall-item-content" id="wall-item-content-{{$item.id}}"> <div class="wall-item-content" id="wall-item-content-{{$item.id}}">
<div class="wall-item-title" id="wall-item-title-{{$item.id}}">{{$item.title}}</div> <div class="wall-item-title" id="wall-item-title-{{$item.id}}" dir="auto">{{$item.title}}</div>
<div class="wall-item-title-end"></div> <div class="wall-item-title-end"></div>
<div class="wall-item-body" id="wall-item-body-{{$item.id}}" dir="auto">{{$item.body_html nofilter}}</div> <div class="wall-item-body" id="wall-item-body-{{$item.id}}" dir="auto">{{$item.body_html nofilter}}</div>
{{if $item.has_cats}} {{if $item.has_cats}}
@ -56,9 +56,9 @@
<div class="wall-item-wrapper-end"></div> <div class="wall-item-wrapper-end"></div>
<div class="wall-item-conv" id="wall-item-conv-{{$item.id}}"> <div class="wall-item-conv" id="wall-item-conv-{{$item.id}}" dir="auto">
{{if $item.conv}} {{if $item.conv}}
<a href='{{$item.conv.href}}' id='context-{{$item.id}}' title='{{$item.conv.title}}'>{{$item.conv.title}}</a> <a href="{{$item.conv.href}}" id="context-{{$item.id}}" title="{{$item.conv.title}}">{{$item.conv.title}}</a>
{{/if}} {{/if}}
</div> </div>

View File

@ -2,4 +2,4 @@
<div id="settings-nick-wrapper"> <div id="settings-nick-wrapper">
<div id="settings-nickname-desc" class="info-message">{{$desc nofilter}}</div> <div id="settings-nickname-desc" class="info-message">{{$desc nofilter}}</div>
</div> </div>
<div id="settings-nick-end" ></div> <div id="settings-nick-end"></div>

View File

@ -10,7 +10,7 @@
{{include file="field_input.tpl" field=$redirect}} {{include file="field_input.tpl" field=$redirect}}
{{include file="field_input.tpl" field=$icon}} {{include file="field_input.tpl" field=$icon}}
<div class="settings-submit-wrapper" > <div class="settings-submit-wrapper">
<input type="submit" name="submit" class="settings-submit" value="{{$submit}}" /> <input type="submit" name="submit" class="settings-submit" value="{{$submit}}" />
<!-- <input type="submit" name="cancel" class="settings-submit" value="{{$cancel}}" /> --> <!-- <input type="submit" name="cancel" class="settings-submit" value="{{$cancel}}" /> -->
</div> </div>

View File

@ -1 +1 @@
<script type="text/javascript" src="view/js/country.js?v={{$smarty.const.FRIENDICA_VERSION}}" ></script> <script type="text/javascript" src="view/js/country.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>

View File

@ -8,7 +8,7 @@
<p><img src="{{$image_url}}" id="croppa" class="imgCrop" alt="{{$title}}"></p> <p><img src="{{$image_url}}" id="croppa" class="imgCrop" alt="{{$title}}"></p>
</div> </div>
<div id="cropimage-preview-wrapper" > <div id="cropimage-preview-wrapper">
<div id="previewWrap" class="crop-preview"></div> <div id="previewWrap" class="crop-preview"></div>
</div> </div>

View File

@ -18,7 +18,7 @@
<input type="hidden" name="form_security_token" value="{{$form_security_token}}"> <input type="hidden" name="form_security_token" value="{{$form_security_token}}">
<div>{{$regenerate_message}}</div> <div>{{$regenerate_message}}</div>
<div class="form-group pull-right settings-submit-wrapper" > <div class="form-group pull-right settings-submit-wrapper">
<button type="submit" name="action" id="confirm-submit-button" class="btn btn-primary confirm-button" value="regenerate">{{$regenerate_label}}</button> <button type="submit" name="action" id="confirm-submit-button" class="btn btn-primary confirm-button" value="regenerate">{{$regenerate_label}}</button>
</div> </div>
</form> </form>

View File

@ -11,7 +11,7 @@
{{include file="field_input.tpl" field=$verify_code}} {{include file="field_input.tpl" field=$verify_code}}
<div class="form-group settings-submit-wrapper" > <div class="form-group settings-submit-wrapper">
<button type="submit" name="action" id="confirm-submit-button" class="btn btn-primary confirm-button" value="verify">{{$verify_label}}</button> <button type="submit" name="action" id="confirm-submit-button" class="btn btn-primary confirm-button" value="verify">{{$verify_label}}</button>
</div> </div>
</form> </form>

View File

@ -7,8 +7,8 @@
{{if $dropping}} {{if $dropping}}
<div id="item-delete-selected" class="fakelink" onclick="deleteCheckedItems();"> <div id="item-delete-selected" class="fakelink" onclick="deleteCheckedItems();">
<div id="item-delete-selected-icon" class="icon drophide" title="{{$dropping}}" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></div> <div id="item-delete-selected-icon" class="icon drophide" title="{{$dropping}}" onmouseover="imgbright(this);" onmouseout="imgdull(this);"></div>
<div id="item-delete-selected-desc" >{{$dropping}}</div> <div id="item-delete-selected-desc">{{$dropping}}</div>
</div> </div>
<img id="item-delete-selected-rotator" class="like-rotator" src="images/rotator.gif" style="display: none;" /> <img id="item-delete-selected-rotator" class="like-rotator" src="images/rotator.gif" style="display: none;" />
<div id="item-delete-selected-end"></div> <div id="item-delete-selected-end"></div>

View File

@ -10,5 +10,5 @@
<div id="register-submit-wrapper"> <div id="register-submit-wrapper">
<input type="submit" name="submit" id="register-submit-button" value="{{$regbutt}}" /> <input type="submit" name="submit" id="register-submit-button" value="{{$regbutt}}" />
</div> </div>
<div id="register-submit-end" ></div> <div id="register-submit-end"></div>
</form> </form>

View File

@ -56,7 +56,7 @@
<div class="wall-item-ago" id="wall-item-ago-{{$item.id}}" title="{{$item.localtime}}"><time class="dt-published" datetime="{{$item.localtime}}">{{$item.ago}}</time><span class="pinned">{{$item.pinned}}</span></div> <div class="wall-item-ago" id="wall-item-ago-{{$item.id}}" title="{{$item.localtime}}"><time class="dt-published" datetime="{{$item.localtime}}">{{$item.ago}}</time><span class="pinned">{{$item.pinned}}</span></div>
</div> </div>
<div class="wall-item-content" id="wall-item-content-{{$item.id}}"> <div class="wall-item-content" id="wall-item-content-{{$item.id}}">
<div class="wall-item-title p-name" id="wall-item-title-{{$item.id}}">{{$item.title}}</div> <div class="wall-item-title p-name" id="wall-item-title-{{$item.id}}" dir="auto">{{$item.title}}</div>
<div class="wall-item-title-end"></div> <div class="wall-item-title-end"></div>
<div class="wall-item-body" id="wall-item-body-{{$item.id}}"> <div class="wall-item-body" id="wall-item-body-{{$item.id}}">
<span class="e-content" dir="auto">{{$item.body_html nofilter}}<span> <span class="e-content" dir="auto">{{$item.body_html nofilter}}<span>

View File

@ -4,8 +4,8 @@
<h4>{{$subheader}}</h4> <h4>{{$subheader}}</h4>
<div id="prvmail-wrapper" > <div id="prvmail-wrapper">
<form id="prvmail-form" action="wallmessage/{{$nickname}}" method="post" > <form id="prvmail-form" action="wallmessage/{{$nickname}}" method="post">
{{$parent nofilter}} {{$parent nofilter}}
@ -19,12 +19,12 @@
<textarea rows="8" cols="72" class="prvmail-text" id="prvmail-text" name="body" tabindex="12">{{$text}}</textarea> <textarea rows="8" cols="72" class="prvmail-text" id="prvmail-text" name="body" tabindex="12">{{$text}}</textarea>
<div id="prvmail-submit-wrapper" > <div id="prvmail-submit-wrapper">
<input type="submit" id="prvmail-submit" name="submit" value="Submit" tabindex="13" /> <input type="submit" id="prvmail-submit" name="submit" value="Submit" tabindex="13" />
<div id="prvmail-link-wrapper" > <div id="prvmail-link-wrapper">
<div id="prvmail-link" class="icon border link" title="{{$insert}}" onclick="jotGetLink();" ></div> <div id="prvmail-link" class="icon border link" title="{{$insert}}" onclick="jotGetLink();"></div>
</div> </div>
<div id="prvmail-rotator-wrapper" > <div id="prvmail-rotator-wrapper">
<img id="prvmail-rotator" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait}}" style="display: none;" /> <img id="prvmail-rotator" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait}}" style="display: none;" />
</div> </div>
</div> </div>

View File

@ -3,7 +3,7 @@
<h3>{{$etitle}}</h3> <h3>{{$etitle}}</h3>
<ul class="sidebar-calendar-export-ul"> <ul class="sidebar-calendar-export-ul">
<li role="menuitem" class="sidebar-calendar-export-li"><a href="{{$baseurl}}/cal/{{$user}}/export/ical" >{{$export_ical}}</a></li> <li role="menuitem" class="sidebar-calendar-export-li"><a href="{{$baseurl}}/cal/{{$user}}/export/ical">{{$export_ical}}</a></li>
<li role="menuitem" class="sidebar-calendar-export-li"><a href="{{$baseurl}}/cal/{{$user}}/export/csv" >{{$export_csv}}</a></li> <li role="menuitem" class="sidebar-calendar-export-li"><a href="{{$baseurl}}/cal/{{$user}}/export/csv">{{$export_csv}}</a></li>
</ul> </ul>
</div> </div>

View File

@ -2,7 +2,7 @@
<div id="follow-sidebar" class="widget"> <div id="follow-sidebar" class="widget">
<h3>{{$connect}}</h3> <h3>{{$connect}}</h3>
<div id="connect-desc">{{$desc nofilter}}</div> <div id="connect-desc">{{$desc nofilter}}</div>
<form action="follow" method="get" > <form action="follow" method="get">
<input id="side-follow-url" type="text" name="url" value="{{$value}}" size="24" placeholder="{{$hint}}" title="{{$hint}}" /><input id="side-follow-submit" type="submit" name="submit" value="{{$follow}}" /> <input id="side-follow-url" type="text" name="url" value="{{$value}}" size="24" placeholder="{{$hint}}" title="{{$hint}}" /><input id="side-follow-submit" type="submit" name="submit" value="{{$follow}}" />
</form> </form>
</div> </div>

View File

@ -5,13 +5,13 @@
<form action="dirfind" method="get" /> <form action="dirfind" method="get" />
<input id="side-peoplefind-url" type="text" name="search" size="24" title="{{$nv.hint}}" /><input id="side-peoplefind-submit" type="submit" name="submit" value="{{$nv.findthem}}" /> <input id="side-peoplefind-url" type="text" name="search" size="24" title="{{$nv.hint}}" /><input id="side-peoplefind-submit" type="submit" name="submit" value="{{$nv.findthem}}" />
</form> </form>
<div class="side-link" id="side-match-link"><a href="match" >{{$nv.similar}}</a></div> <div class="side-link" id="side-match-link"><a href="match">{{$nv.similar}}</a></div>
<div class="side-link" id="side-suggest-link"><a href="suggest" >{{$nv.suggest}}</a></div> <div class="side-link" id="side-suggest-link"><a href="suggest">{{$nv.suggest}}</a></div>
<div class="side-link" id="side-directory-link"><a href="directory" >{{$nv.local_directory}}</a></div> <div class="side-link" id="side-directory-link"><a href="directory">{{$nv.local_directory}}</a></div>
<div class="side-link" id="side-directory-link"><a href="{{$nv.global_dir}}" target="extlink" >{{$nv.directory}}</a></div> <div class="side-link" id="side-directory-link"><a href="{{$nv.global_dir}}" target="extlink">{{$nv.directory}}</a></div>
<div class="side-link" id="side-random-profile-link" ><a href="randprof" target="extlink" >{{$nv.random}}</a></div> <div class="side-link" id="side-random-profile-link"><a href="randprof" target="extlink">{{$nv.random}}</a></div>
{{if $nv.inv}} {{if $nv.inv}}
<div class="side-link" id="side-invite-link" ><a href="invite" >{{$nv.inv}}</a></div> <div class="side-link" id="side-invite-link"><a href="invite">{{$nv.inv}}</a></div>
{{/if}} {{/if}}
</div> </div>

View File

@ -27,7 +27,7 @@ function showHideForumlist() {
<a href="{{$forum.external_url}}" title="{{$forum.link_desc}}" class="label sparkle" target="_blank" rel="noopener noreferrer"> <a href="{{$forum.external_url}}" title="{{$forum.link_desc}}" class="label sparkle" target="_blank" rel="noopener noreferrer">
<img class="forumlist-img" src="{{$forum.micro}}" alt="{{$forum.link_desc}}" /> <img class="forumlist-img" src="{{$forum.micro}}" alt="{{$forum.link_desc}}" />
</a> </a>
<a class="forum-widget-link {{if $forum.selected}}forum-selected{{/if}}" id="forum-widget-link-{{$forum.id}}" href="{{$forum.url}}" >{{$forum.name}}</a> <a class="forum-widget-link {{if $forum.selected}}forum-selected{{/if}}" id="forum-widget-link-{{$forum.id}}" href="{{$forum.url}}">{{$forum.name}}</a>
</li> </li>
{{/if}} {{/if}}
@ -37,7 +37,7 @@ function showHideForumlist() {
<a href="{{$forum.external_url}}" title="{{$forum.link_desc}}" class="label sparkle" target="_blank" rel="noopener noreferrer"> <a href="{{$forum.external_url}}" title="{{$forum.link_desc}}" class="label sparkle" target="_blank" rel="noopener noreferrer">
<img class="forumlist-img" src="{{$forum.micro}}" alt="{{$forum.link_desc}}" /> <img class="forumlist-img" src="{{$forum.micro}}" alt="{{$forum.link_desc}}" />
</a> </a>
<a class="forum-widget-link {{if $forum.selected}}forum-selected{{/if}}" id="forum-widget-link-{{$forum.id}}" href="{{$forum.url}}" >{{$forum.name}}</a> <a class="forum-widget-link {{if $forum.selected}}forum-selected{{/if}}" id="forum-widget-link-{{$forum.id}}" href="{{$forum.url}}">{{$forum.name}}</a>
</li> </li>
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}

View File

@ -42,7 +42,7 @@
data-role="insert-formatting" data-bbcode="video" data-id="{{$id}}"></a></li> data-role="insert-formatting" data-bbcode="video" data-id="{{$id}}"></a></li>
</ul> </ul>
<div class="comment-edit-bb-end"></div> <div class="comment-edit-bb-end"></div>
<textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty" name="body" placeholder="{{$comment}}" onFocus="commentOpen(this,{{$id}});cmtBbOpen(this, {{$id}});" onBlur="commentClose(this,{{$id}});cmtBbClose(this,{{$id}});">{{if $threaded != false}}{{$default}}{{/if}}</textarea> <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty" name="body" placeholder="{{$comment}}" onFocus="commentOpen(this,{{$id}});cmtBbOpen(this, {{$id}});" onBlur="commentClose(this,{{$id}});cmtBbClose(this,{{$id}});" dir="auto">{{if $threaded != false}}{{$default}}{{/if}}</textarea>
{{if $qcomment}} {{if $qcomment}}
<select id="qcomment-select-{{$id}}" name="qcomment-{{$id}}" class="qcomment" onchange="qCommentInsert(this,{{$id}});"> <select id="qcomment-select-{{$id}}" name="qcomment-{{$id}}" class="qcomment" onchange="qCommentInsert(this,{{$id}});">
<option value=""></option> <option value=""></option>

View File

@ -4,41 +4,41 @@
<div id="site-location">{{$sitelocation}}</div> <div id="site-location">{{$sitelocation}}</div>
{{if $nav.logout}}<a id="nav-logout-link" class="nav-link {{$nav.logout.2}}" href="{{$nav.logout.0}}" title="{{$nav.logout.3}}" >{{$nav.logout.1}}</a> {{/if}} {{if $nav.logout}}<a id="nav-logout-link" class="nav-link {{$nav.logout.2}}" href="{{$nav.logout.0}}" title="{{$nav.logout.3}}">{{$nav.logout.1}}</a> {{/if}}
{{if $nav.login}}<a id="nav-login-link" class="nav-login-link {{$nav.login.2}}" href="{{$nav.login.0}}" title="{{$nav.login.3}}" >{{$nav.login.1}}</a> {{/if}} {{if $nav.login}}<a id="nav-login-link" class="nav-login-link {{$nav.login.2}}" href="{{$nav.login.0}}" title="{{$nav.login.3}}">{{$nav.login.1}}</a> {{/if}}
<span id="nav-link-wrapper" > <span id="nav-link-wrapper">
{{if $nav.register}}<a id="nav-register-link" class="nav-commlink {{$nav.register.2}} {{$sel.register}}" href="{{$nav.register.0}}" title="{{$nav.register.3}}" >{{$nav.register.1}}</a>{{/if}} {{if $nav.register}}<a id="nav-register-link" class="nav-commlink {{$nav.register.2}} {{$sel.register}}" href="{{$nav.register.0}}" title="{{$nav.register.3}}">{{$nav.register.1}}</a>{{/if}}
{{if $nav.help}} <a id="nav-help-link" class="nav-link {{$nav.help.2}}" target="friendica-help" href="{{$nav.help.0}}" title="{{$nav.help.3}}" >{{$nav.help.1}}</a>{{/if}} {{if $nav.help}} <a id="nav-help-link" class="nav-link {{$nav.help.2}}" target="friendica-help" href="{{$nav.help.0}}" title="{{$nav.help.3}}">{{$nav.help.1}}</a>{{/if}}
{{if $nav.tos}} <a id="nav-tos-link" class="nav-link {{$nav.tos.2}}" href="{{$nav.tos.0}}" title="{{$nav.tos.3}}" >{{$nav.tos.1}}</a>{{/if}} {{if $nav.tos}} <a id="nav-tos-link" class="nav-link {{$nav.tos.2}}" href="{{$nav.tos.0}}" title="{{$nav.tos.3}}">{{$nav.tos.1}}</a>{{/if}}
{{if $nav.apps}}<a id="nav-apps-link" class="nav-link {{$nav.apps.2}}" href="{{$nav.apps.0}}" title="{{$nav.apps.3}}" >{{$nav.apps.1}}</a>{{/if}} {{if $nav.apps}}<a id="nav-apps-link" class="nav-link {{$nav.apps.2}}" href="{{$nav.apps.0}}" title="{{$nav.apps.3}}">{{$nav.apps.1}}</a>{{/if}}
<a accesskey="s" id="nav-search-link" class="nav-link {{$nav.search.2}}" href="{{$nav.search.0}}" title="{{$nav.search.3}}" >{{$nav.search.1}}</a> <a accesskey="s" id="nav-search-link" class="nav-link {{$nav.search.2}}" href="{{$nav.search.0}}" title="{{$nav.search.3}}">{{$nav.search.1}}</a>
<a id="nav-directory-link" class="nav-link {{$nav.directory.2}}" href="{{$nav.directory.0}}" title="{{$nav.directory.3}}" >{{$nav.directory.1}}</a> <a id="nav-directory-link" class="nav-link {{$nav.directory.2}}" href="{{$nav.directory.0}}" title="{{$nav.directory.3}}">{{$nav.directory.1}}</a>
{{if $nav.admin}}<a accesskey="a" id="nav-admin-link" class="nav-link {{$nav.admin.2}}" href="{{$nav.admin.0}}" title="{{$nav.admin.3}}" >{{$nav.admin.1}}</a>{{/if}} {{if $nav.admin}}<a accesskey="a" id="nav-admin-link" class="nav-link {{$nav.admin.2}}" href="{{$nav.admin.0}}" title="{{$nav.admin.3}}">{{$nav.admin.1}}</a>{{/if}}
{{if $nav.network}} {{if $nav.network}}
<a accesskey="n" id="nav-network-link" class="nav-commlink {{$nav.network.2}} {{$sel.network}}" href="{{$nav.network.0}}" title="{{$nav.network.3}}" >{{$nav.network.1}}</a> <a accesskey="n" id="nav-network-link" class="nav-commlink {{$nav.network.2}} {{$sel.network}}" href="{{$nav.network.0}}" title="{{$nav.network.3}}">{{$nav.network.1}}</a>
<span id="net-update" class="nav-ajax-left"></span> <span id="net-update" class="nav-ajax-left"></span>
{{/if}} {{/if}}
{{if $nav.home}} {{if $nav.home}}
<a accesskey="p" id="nav-home-link" class="nav-commlink {{$nav.home.2}} {{$sel.home}}" href="{{$nav.home.0}}" title="{{$nav.home.3}}" >{{$nav.home.1}}</a> <a accesskey="p" id="nav-home-link" class="nav-commlink {{$nav.home.2}} {{$sel.home}}" href="{{$nav.home.0}}" title="{{$nav.home.3}}">{{$nav.home.1}}</a>
<span id="home-update" class="nav-ajax-left"></span> <span id="home-update" class="nav-ajax-left"></span>
{{/if}} {{/if}}
{{if $nav.community}} {{if $nav.community}}
<a accesskey="c" id="nav-community-link" class="nav-commlink {{$nav.community.2}} {{$sel.community}}" href="{{$nav.community.0}}" title="{{$nav.community.3}}" >{{$nav.community.1}}</a> <a accesskey="c" id="nav-community-link" class="nav-commlink {{$nav.community.2}} {{$sel.community}}" href="{{$nav.community.0}}" title="{{$nav.community.3}}">{{$nav.community.1}}</a>
{{/if}} {{/if}}
{{if $nav.introductions}} {{if $nav.introductions}}
<a id="nav-notification-link" class="nav-commlink {{$nav.introductions.2}} {{$sel.introductions}}" href="{{$nav.introductions.0}}" title="{{$nav.introductions.3}}" >{{$nav.introductions.1}}</a> <a id="nav-notification-link" class="nav-commlink {{$nav.introductions.2}} {{$sel.introductions}}" href="{{$nav.introductions.0}}" title="{{$nav.introductions.3}}">{{$nav.introductions.1}}</a>
<span id="intro-update" class="nav-ajax-left"></span> <span id="intro-update" class="nav-ajax-left"></span>
{{/if}} {{/if}}
{{if $nav.messages}} {{if $nav.messages}}
<a id="nav-messages-link" class="nav-commlink {{$nav.messages.2}} {{$sel.messages}}" href="{{$nav.messages.0}}" title="{{$nav.messages.3}}" >{{$nav.messages.1}}</a> <a id="nav-messages-link" class="nav-commlink {{$nav.messages.2}} {{$sel.messages}}" href="{{$nav.messages.0}}" title="{{$nav.messages.3}}">{{$nav.messages.1}}</a>
<span id="mail-update" class="nav-ajax-left"></span> <span id="mail-update" class="nav-ajax-left"></span>
{{/if}} {{/if}}
@ -57,9 +57,9 @@
{{/if}} {{/if}}
{{if $nav.settings}}<a id="nav-settings-link" class="nav-link {{$nav.settings.2}}" href="{{$nav.settings.0}}" title="{{$nav.settings.3}}">{{$nav.settings.1}}</a>{{/if}} {{if $nav.settings}}<a id="nav-settings-link" class="nav-link {{$nav.settings.2}}" href="{{$nav.settings.0}}" title="{{$nav.settings.3}}">{{$nav.settings.1}}</a>{{/if}}
{{if $nav.profiles}}<a id="nav-profiles-link" class="nav-link {{$nav.profiles.2}}" href="{{$nav.profiles.0}}" title="{{$nav.profiles.3}}" >{{$nav.profiles.1}}</a>{{/if}} {{if $nav.profiles}}<a id="nav-profiles-link" class="nav-link {{$nav.profiles.2}}" href="{{$nav.profiles.0}}" title="{{$nav.profiles.3}}">{{$nav.profiles.1}}</a>{{/if}}
{{if $nav.contacts}}<a id="nav-contacts-link" class="nav-link {{$nav.contacts.2}}" href="{{$nav.contacts.0}}" title="{{$nav.contacts.3}}" >{{$nav.contacts.1}}</a>{{/if}} {{if $nav.contacts}}<a id="nav-contacts-link" class="nav-link {{$nav.contacts.2}}" href="{{$nav.contacts.0}}" title="{{$nav.contacts.3}}">{{$nav.contacts.1}}</a>{{/if}}
{{if $nav.delegation}}<a id="nav-delegation-link" class="nav-link {{$nav.delegation.2}} {{$sel.delegation}}" href="{{$nav.delegation.0}}" title="{{$nav.delegation.3}}">{{$nav.delegation.1}}</a>{{/if}} {{if $nav.delegation}}<a id="nav-delegation-link" class="nav-link {{$nav.delegation.2}} {{$sel.delegation}}" href="{{$nav.delegation.0}}" title="{{$nav.delegation.3}}">{{$nav.delegation.1}}</a>{{/if}}

View File

@ -22,7 +22,7 @@
{{foreach $users as $u}} {{foreach $users as $u}}
<tr> <tr>
<td><img class="avatar-nano" src="{{$u.micro}}" title="{{$u.nickname}}"></td> <td><img class="avatar-nano" src="{{$u.micro}}" title="{{$u.nickname}}"></td>
<td><a href="{{$u.url}}" title="{{$u.nickname}}" >{{$u.name}}</a></td> <td><a href="{{$u.url}}" title="{{$u.nickname}}">{{$u.name}}</a></td>
<td>{{$u.email}}</td> <td>{{$u.email}}</td>
<td>{{$u.deleted}}</td> <td>{{$u.deleted}}</td>
</tr> </tr>

View File

@ -1,6 +1,6 @@
<div id="photo-album-edit-wrapper"> <div id="photo-album-edit-wrapper">
<form name="photo-album-edit-form" id="photo-album-edit-form" action="photos/{{$nickname}}/album/{{$hexalbum}}" method="post" > <form name="photo-album-edit-form" id="photo-album-edit-form" action="photos/{{$nickname}}/album/{{$hexalbum}}" method="post">
<label id="photo-album-edit-name-label" for="photo-album-edit-name" >{{$nametext}}</label> <label id="photo-album-edit-name-label" for="photo-album-edit-name">{{$nametext}}</label>
<div class="pull-left photo-album-edit-name"> <div class="pull-left photo-album-edit-name">
<input class="form-control" type="text" size="64" name="albumname" value="{{$album}}" id="photo-album-edit-name"> <input class="form-control" type="text" size="64" name="albumname" value="{{$album}}" id="photo-album-edit-name">
</div> </div>

View File

@ -39,7 +39,7 @@
</span> </span>
</p> </p>
<p> <p>
<textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty form-control text-autosize" name="body" placeholder="{{$comment}}" rows="3" data-default="{{$default}}">{{$default}}</textarea> <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty form-control text-autosize" name="body" placeholder="{{$comment}}" rows="3" data-default="{{$default}}" dir="auto">{{$default}}</textarea>
</p> </p>
{{if $qcomment}} {{if $qcomment}}
<p> <p>

View File

@ -2,7 +2,7 @@
<form action="{{$confirm_url}}" id="confirm-form" method="{{$method}}" class="generic-page-wrapper"> <form action="{{$confirm_url}}" id="confirm-form" method="{{$method}}" class="generic-page-wrapper">
<div id="confirm-message">{{$message}}</div> <div id="confirm-message">{{$message}}</div>
<div class="form-group pull-right settings-submit-wrapper" > <div class="form-group pull-right settings-submit-wrapper">
<button type="submit" name="{{$confirm_name}}" id="confirm-submit-button" class="btn btn-primary confirm-button" value="{{$confirm}}">{{$confirm}}</button> <button type="submit" name="{{$confirm_name}}" id="confirm-submit-button" class="btn btn-primary confirm-button" value="{{$confirm}}">{{$confirm}}</button>
<button type="submit" name="canceled" id="confirm-cancel-button" class="btn confirm-button" data-dismiss="modal">{{$cancel}}</button> <button type="submit" name="canceled" id="confirm-cancel-button" class="btn confirm-button" data-dismiss="modal">{{$cancel}}</button>
</div> </div>

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