Merge branch 'master' of git://github.com/friendika/Free-Friendika
6
boot.php
|
@ -8,9 +8,9 @@ require_once("include/pgettext.php");
|
|||
require_once('include/nav.php');
|
||||
|
||||
define ( 'FRIENDIKA_PLATFORM', 'Free Friendika');
|
||||
define ( 'FRIENDIKA_VERSION', '2.3.1118' );
|
||||
define ( 'FRIENDIKA_VERSION', '2.3.1124' );
|
||||
define ( 'DFRN_PROTOCOL_VERSION', '2.21' );
|
||||
define ( 'DB_UPDATE_VERSION', 1092 );
|
||||
define ( 'DB_UPDATE_VERSION', 1094 );
|
||||
|
||||
define ( 'EOL', "<br />\r\n" );
|
||||
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
||||
|
@ -152,6 +152,8 @@ define ( 'ACTIVITY_DISLIKE', NAMESPACE_DFRN . '/dislike' );
|
|||
define ( 'ACTIVITY_OBJ_HEART', NAMESPACE_DFRN . '/heart' );
|
||||
|
||||
define ( 'ACTIVITY_FRIEND', NAMESPACE_ACTIVITY_SCHEMA . 'make-friend' );
|
||||
define ( 'ACTIVITY_REQ_FRIEND', NAMESPACE_ACTIVITY_SCHEMA . 'request-friend' );
|
||||
define ( 'ACTIVITY_UNFRIEND', NAMESPACE_ACTIVITY_SCHEMA . 'remove-friend' );
|
||||
define ( 'ACTIVITY_FOLLOW', NAMESPACE_ACTIVITY_SCHEMA . 'follow' );
|
||||
define ( 'ACTIVITY_UNFOLLOW', NAMESPACE_ACTIVITY_SCHEMA . 'stop-following' );
|
||||
define ( 'ACTIVITY_POST', NAMESPACE_ACTIVITY_SCHEMA . 'post' );
|
||||
|
|
14
database.sql
|
@ -114,6 +114,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
|
|||
CREATE TABLE IF NOT EXISTS `group` (
|
||||
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`uid` int(10) unsigned NOT NULL,
|
||||
`visible` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`deleted` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`name` char(255) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
|
@ -424,7 +425,9 @@ CREATE TABLE IF NOT EXISTS `user` (
|
|||
`deny_gid` mediumtext NOT NULL,
|
||||
`openidserver` text NOT NULL,
|
||||
PRIMARY KEY (`uid`),
|
||||
KEY `nickname` (`nickname`)
|
||||
KEY `nickname` (`nickname`),
|
||||
KEY `account_expired` (`account_expired`),
|
||||
KEY `login_date` (`login_date`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
|
||||
|
@ -630,3 +633,12 @@ CREATE TABLE IF NOT EXISTS `search` (
|
|||
INDEX ( `uid` ),
|
||||
INDEX ( `term` )
|
||||
) ENGINE = MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `fserver` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
||||
`server` CHAR( 255 ) NOT NULL ,
|
||||
`posturl` CHAR( 255 ) NOT NULL ,
|
||||
`key` TEXT NOT NULL,
|
||||
INDEX ( `server` )
|
||||
) ENGINE = MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
|
|
|
@ -142,8 +142,8 @@ function conversation(&$a, $items, $mode, $update) {
|
|||
|
||||
|
||||
// array with html for each thread (parent+comments)
|
||||
$treads = array();
|
||||
$treadsid = -1;
|
||||
$threads = array();
|
||||
$threadsid = -1;
|
||||
|
||||
if(count($items)) {
|
||||
|
||||
|
@ -155,7 +155,7 @@ function conversation(&$a, $items, $mode, $update) {
|
|||
$tpl = get_markup_template('search_item.tpl');
|
||||
|
||||
foreach($items as $item) {
|
||||
$treadsid++;
|
||||
$threadsid++;
|
||||
|
||||
$comment = '';
|
||||
$owner_url = '';
|
||||
|
@ -220,7 +220,7 @@ function conversation(&$a, $items, $mode, $update) {
|
|||
|
||||
$body = prepare_body($item,true);
|
||||
|
||||
$treads[$treadsid] .= replace_macros($tpl,array(
|
||||
$tmp_item = replace_macros($tpl,array(
|
||||
'$id' => $item['item_id'],
|
||||
'$linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])),
|
||||
'$profile_url' => $profile_link,
|
||||
|
@ -251,6 +251,11 @@ function conversation(&$a, $items, $mode, $update) {
|
|||
'$wait' => t('Please wait'),
|
||||
));
|
||||
|
||||
$arr = array('item' => $item, 'output' => $tmp_item);
|
||||
call_hooks('display_item', $arr);
|
||||
|
||||
$threads[$threadsid] .= $arr['output'];
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -331,8 +336,8 @@ function conversation(&$a, $items, $mode, $update) {
|
|||
$comments_seen = 0;
|
||||
$comments_collapsed = false;
|
||||
|
||||
$treadsid++;
|
||||
$treads[$treadsid] = "";
|
||||
$threadsid++;
|
||||
$threads[$threadsid] = "";
|
||||
}
|
||||
else {
|
||||
// prevent private email from leaking into public conversation
|
||||
|
@ -346,7 +351,7 @@ function conversation(&$a, $items, $mode, $update) {
|
|||
|
||||
if(($comments[$item['parent']] > 2) && ($comments_seen <= ($comments[$item['parent']] - 2)) && ($item['gravity'] == 6)) {
|
||||
if(! $comments_collapsed) {
|
||||
$treads[$treadsid] .= '<div class="ccollapse-wrapper fakelink" id="ccollapse-wrapper-' . $item['parent']
|
||||
$threads[$threadsid] .= '<div class="ccollapse-wrapper fakelink" id="ccollapse-wrapper-' . $item['parent']
|
||||
. '" onclick="openClose(' . '\'ccollapse-' . $item['parent'] . '\'); $(\'#ccollapse-wrapper-' . $item['parent'] . '\').hide();" >'
|
||||
. sprintf( t('See all %d comments'), $comments[$item['parent']]) . '</div>'
|
||||
. '<div class="ccollapse" id="ccollapse-' . $item['parent'] . '" style="display: none;" >';
|
||||
|
@ -354,7 +359,7 @@ function conversation(&$a, $items, $mode, $update) {
|
|||
}
|
||||
}
|
||||
if(($comments[$item['parent']] > 2) && ($comments_seen == ($comments[$item['parent']] - 1))) {
|
||||
$treads[$treadsid] .= '</div>';
|
||||
$threads[$threadsid] .= '</div>';
|
||||
}
|
||||
|
||||
$redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ;
|
||||
|
@ -450,7 +455,7 @@ function conversation(&$a, $items, $mode, $update) {
|
|||
);
|
||||
|
||||
$star = false;
|
||||
$starred = "unstarred";
|
||||
$isstarred = "unstarred";
|
||||
if ($profile_owner == local_user() && $toplevelpost) {
|
||||
$isstarred = (($item['starred']) ? "starred" : "unstarred");
|
||||
|
||||
|
@ -559,7 +564,7 @@ function conversation(&$a, $items, $mode, $update) {
|
|||
$arr = array('item' => $item, 'output' => $tmp_item);
|
||||
call_hooks('display_item', $arr);
|
||||
|
||||
$treads[$treadsid] .= $arr['output'];
|
||||
$threads[$threadsid] .= $arr['output'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -568,11 +573,11 @@ function conversation(&$a, $items, $mode, $update) {
|
|||
// if author collapsing is in force but didn't get closed, close it off now.
|
||||
|
||||
/*if($blowhard_count >= 3)
|
||||
$treads[$treadsid] .= '</div>';*/
|
||||
$threads[$threadsid] .= '</div>';*/
|
||||
|
||||
$page_template = get_markup_template("conversation.tpl");
|
||||
$o .= replace_macros($page_template, array(
|
||||
'$treads' => $treads,
|
||||
'$threads' => $threads,
|
||||
'$dropping' => ($dropping?t('Delete Selected Items'):False),
|
||||
));
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ function delivery_run($argv, $argc){
|
|||
$normal_mode = false;
|
||||
$expire = true;
|
||||
$items = q("SELECT * FROM `item` WHERE `uid` = %d AND `wall` = 1
|
||||
AND `deleted` = 1 AND `changed` > UTC_TIMESTAMP - INTERVAL 30 MINUTE",
|
||||
AND `deleted` = 1 AND `changed` > UTC_TIMESTAMP() - INTERVAL 30 MINUTE",
|
||||
intval($item_id)
|
||||
);
|
||||
$uid = $item_id;
|
||||
|
@ -96,6 +96,8 @@ function delivery_run($argv, $argc){
|
|||
$uid = $r[0]['uid'];
|
||||
$updated = $r[0]['edited'];
|
||||
|
||||
if(! $parent_id)
|
||||
return;
|
||||
|
||||
|
||||
$items = q("SELECT `item`.*, `sign`.`signed_text`,`sign`.`signature`,`sign`.`signer`
|
||||
|
@ -121,7 +123,6 @@ function delivery_run($argv, $argc){
|
|||
if( ! ($icontacts && count($icontacts)))
|
||||
return;
|
||||
|
||||
|
||||
// avoid race condition with deleting entries
|
||||
|
||||
if($items[0]['deleted']) {
|
||||
|
@ -267,7 +268,12 @@ function delivery_run($argv, $argc){
|
|||
if(! $item_contact)
|
||||
continue;
|
||||
|
||||
$atom .= atom_entry($item,'text',$item_contact,$owner,true);
|
||||
if($normal_mode) {
|
||||
if($item_id == $item['id'] || $item['id'] == $item['parent'])
|
||||
$atom .= atom_entry($item,'text',$item_contact,$owner,true);
|
||||
}
|
||||
else
|
||||
$atom .= atom_entry($item,'text',$item_contact,$owner,true);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -807,6 +807,14 @@ function item_store($arr,$force_parent = false) {
|
|||
}
|
||||
}
|
||||
|
||||
$r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
|
||||
dbesc($arr['uri']),
|
||||
dbesc($arr['uid'])
|
||||
);
|
||||
if($r && count($r)) {
|
||||
logger('item-store: duplicate item ignored. ' . print_r($arr,true));
|
||||
return 0;
|
||||
}
|
||||
|
||||
call_hooks('post_remote',$arr);
|
||||
|
||||
|
@ -1070,10 +1078,21 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
|
|||
* have a contact record.
|
||||
* $hub = should we find a hub declation in the feed, pass it back to our calling process, who might (or
|
||||
* might not) try and subscribe to it.
|
||||
* $datedir sorts in reverse order
|
||||
* $pass - by default ($pass = 0) we cannot guarantee that a parent item has been
|
||||
* imported prior to its children being seen in the stream unless we are certain
|
||||
* of how the feed is arranged/ordered.
|
||||
* With $pass = 1, we only pull parent items out of the stream.
|
||||
* With $pass = 2, we only pull children (comments/likes).
|
||||
*
|
||||
* So running this twice, first with pass 1 and then with pass 2 will do the right
|
||||
* thing regardless of feed ordering. This won't be adequate in a fully-threaded
|
||||
* model where comments can have sub-threads. That would require some massive sorting
|
||||
* to get all the feed items into a mostly linear ordering, and might still require
|
||||
* recursion.
|
||||
*/
|
||||
|
||||
function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $secure_feed = false) {
|
||||
function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) {
|
||||
|
||||
require_once('library/simplepie/simplepie.inc');
|
||||
|
||||
|
@ -1241,7 +1260,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $secure_fee
|
|||
// process any deleted entries
|
||||
|
||||
$del_entries = $feed->get_feed_tags(NAMESPACE_TOMB, 'deleted-entry');
|
||||
if(is_array($del_entries) && count($del_entries)) {
|
||||
if(is_array($del_entries) && count($del_entries) && $pass != 2) {
|
||||
foreach($del_entries as $dentry) {
|
||||
$deleted = false;
|
||||
if(isset($dentry['attribs']['']['ref'])) {
|
||||
|
@ -1333,7 +1352,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $secure_fee
|
|||
$parent_uri = $rawthread[0]['attribs']['']['ref'];
|
||||
}
|
||||
|
||||
if(($is_reply) && is_array($contact)) {
|
||||
if(($is_reply) && is_array($contact) && $pass != 1) {
|
||||
|
||||
// Have we seen it? If not, import it.
|
||||
|
||||
|
@ -1385,7 +1404,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $secure_fee
|
|||
}
|
||||
|
||||
$force_parent = false;
|
||||
if($contact['network'] === 'stat') {
|
||||
if($contact['network'] === NETWORK_OSTATUS) {
|
||||
$force_parent = true;
|
||||
if(strlen($datarray['title']))
|
||||
unset($datarray['title']);
|
||||
|
@ -1397,7 +1416,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $secure_fee
|
|||
$datarray['last-child'] = 1;
|
||||
}
|
||||
|
||||
if(($contact['network'] === 'feed') || (! strlen($contact['notify']))) {
|
||||
if(($contact['network'] === NETWORK_FEED) || (! strlen($contact['notify']))) {
|
||||
// one way feed - no remote comment ability
|
||||
$datarray['last-child'] = 0;
|
||||
}
|
||||
|
@ -1430,6 +1449,8 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $secure_fee
|
|||
$datarray['author-avatar'] = $contact['thumb'];
|
||||
}
|
||||
|
||||
// special handling for events
|
||||
|
||||
if((x($datarray,'object-type')) && ($datarray['object-type'] === ACTIVITY_OBJ_EVENT)) {
|
||||
$ev = bbtoevent($datarray['body']);
|
||||
if(x($ev,'desc') && x($ev,'start')) {
|
||||
|
@ -1491,16 +1512,28 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $secure_fee
|
|||
lose_follower($importer,$contact,$datarray,$item);
|
||||
return;
|
||||
}
|
||||
|
||||
if(activity_match($datarray['verb'],ACTIVITY_REQ_FRIEND)) {
|
||||
logger('consume-feed: New friend request');
|
||||
new_follower($importer,$contact,$datarray,$item,true);
|
||||
return;
|
||||
}
|
||||
if(activity_match($datarray['verb'],ACTIVITY_UNFRIEND)) {
|
||||
lose_sharer($importer,$contact,$datarray,$item);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if(! is_array($contact))
|
||||
return;
|
||||
|
||||
if($contact['network'] === 'stat' || stristr($permalink,'twitter.com')) {
|
||||
if($contact['network'] === NETWORK_OSTATUS || stristr($permalink,'twitter.com')) {
|
||||
if(strlen($datarray['title']))
|
||||
unset($datarray['title']);
|
||||
$datarray['last-child'] = 1;
|
||||
}
|
||||
|
||||
if(($contact['network'] === 'feed') || (! strlen($contact['notify']))) {
|
||||
if(($contact['network'] === NETWORK_FEED) || (! strlen($contact['notify']))) {
|
||||
// one way feed - no remote comment ability
|
||||
$datarray['last-child'] = 0;
|
||||
}
|
||||
|
@ -1522,7 +1555,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $secure_fee
|
|||
}
|
||||
}
|
||||
|
||||
function new_follower($importer,$contact,$datarray,$item) {
|
||||
function new_follower($importer,$contact,$datarray,$item,$sharing = false) {
|
||||
$url = notags(trim($datarray['author-link']));
|
||||
$name = notags(trim($datarray['author-name']));
|
||||
$photo = notags(trim($datarray['author-avatar']));
|
||||
|
@ -1532,14 +1565,14 @@ function new_follower($importer,$contact,$datarray,$item) {
|
|||
$nick = $rawtag[0]['child'][NAMESPACE_POCO]['preferredUsername'][0]['data'];
|
||||
|
||||
if(is_array($contact)) {
|
||||
if($contact['network'] == 'stat' && $contact['rel'] == CONTACT_IS_SHARING) {
|
||||
if(($contact['network'] == NETWORK_OSTATUS && $contact['rel'] == CONTACT_IS_SHARING)
|
||||
|| ($sharing && $contact['rel'] == CONTACT_IS_FOLLOWER)) {
|
||||
$r = q("UPDATE `contact` SET `rel` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval(CONTACT_IS_FRIEND),
|
||||
intval($contact['id']),
|
||||
intval($importer['uid'])
|
||||
);
|
||||
}
|
||||
|
||||
// send email notification to owner?
|
||||
}
|
||||
else {
|
||||
|
@ -1555,13 +1588,12 @@ function new_follower($importer,$contact,$datarray,$item) {
|
|||
dbesc($name),
|
||||
dbesc($nick),
|
||||
dbesc($photo),
|
||||
dbesc('stat'),
|
||||
intval(CONTACT_IS_FOLLOWER)
|
||||
dbesc(($sharing) ? NETWORK_ZOT : NETWORK_OSTATUS),
|
||||
intval(($sharing) ? CONTACT_IS_SHARING : CONTACT_IS_FOLLOWER)
|
||||
);
|
||||
$r = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `url` = '%s' AND `pending` = 1 AND `rel` = %d LIMIT 1",
|
||||
$r = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `url` = '%s' AND `pending` = 1 LIMIT 1",
|
||||
intval($importer['uid']),
|
||||
dbesc($url),
|
||||
intval(CONTACT_IS_FOLLOWER)
|
||||
dbesc($url)
|
||||
);
|
||||
if(count($r))
|
||||
$contact_record = $r[0];
|
||||
|
@ -1593,7 +1625,7 @@ function new_follower($importer,$contact,$datarray,$item) {
|
|||
'$sitename' => $a->config['sitename']
|
||||
));
|
||||
$res = mail($r[0]['email'],
|
||||
t("You have a new follower at ") . $a->config['sitename'],
|
||||
(($sharing) ? t('A new person is sharing with you at ') : t("You have a new follower at ")) . $a->config['sitename'],
|
||||
$email,
|
||||
'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
|
||||
. 'Content-type: text/plain; charset=UTF-8' . "\n"
|
||||
|
@ -1617,8 +1649,21 @@ function lose_follower($importer,$contact,$datarray,$item) {
|
|||
}
|
||||
}
|
||||
|
||||
function lose_sharer($importer,$contact,$datarray,$item) {
|
||||
|
||||
function subscribe_to_hub($url,$importer,$contact,$submode = 'subscribe') {
|
||||
if(($contact['rel'] == CONTACT_IS_FRIEND) || ($contact['rel'] == CONTACT_IS_FOLLOWER)) {
|
||||
q("UPDATE `contact` SET `rel` = %d WHERE `id` = %d LIMIT 1",
|
||||
intval(CONTACT_IS_FOLLOWER),
|
||||
intval($contact['id'])
|
||||
);
|
||||
}
|
||||
else {
|
||||
contact_remove($contact['id']);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function subscribe_to_hub($url,$importer,$contact,$hubmode = 'subscribe') {
|
||||
|
||||
if(is_array($importer)) {
|
||||
$r = q("SELECT `nickname` FROM `user` WHERE `uid` = %d LIMIT 1",
|
||||
|
@ -1641,7 +1686,7 @@ function subscribe_to_hub($url,$importer,$contact,$submode = 'subscribe') {
|
|||
|
||||
$params= 'hub.mode=' . $hubmode . '&hub.callback=' . urlencode($push_url) . '&hub.topic=' . urlencode($contact['poll']) . '&hub.verify=async&hub.verify_token=' . $verify_token;
|
||||
|
||||
logger('subscribe_to_hub: subscribing ' . $contact['name'] . ' to hub ' . $url . ' with verifier ' . $verify_token);
|
||||
logger('subscribe_to_hub: ' . $hubmode . ' ' . $contact['name'] . ' to hub ' . $url . ' endpoint: ' . $push_url . ' with verifier ' . $verify_token);
|
||||
|
||||
if(! strlen($contact['hub-verify'])) {
|
||||
$r = q("UPDATE `contact` SET `hub-verify` = '%s' WHERE `id` = %d LIMIT 1",
|
||||
|
|
|
@ -86,7 +86,7 @@ function notifier_run($argv, $argc){
|
|||
$normal_mode = false;
|
||||
$expire = true;
|
||||
$items = q("SELECT * FROM `item` WHERE `uid` = %d AND `wall` = 1
|
||||
AND `deleted` = 1 AND `changed` > UTC_TIMESTAMP - INTERVAL 10 MINUTE",
|
||||
AND `deleted` = 1 AND `changed` > UTC_TIMESTAMP() - INTERVAL 10 MINUTE",
|
||||
intval($item_id)
|
||||
);
|
||||
$uid = $item_id;
|
||||
|
@ -123,6 +123,9 @@ function notifier_run($argv, $argc){
|
|||
$uid = $r[0]['uid'];
|
||||
$updated = $r[0]['edited'];
|
||||
|
||||
if(! $parent_id)
|
||||
return;
|
||||
|
||||
$items = q("SELECT `item`.*, `sign`.`signed_text`,`sign`.`signature`,`sign`.`signer`
|
||||
FROM `item` LEFT JOIN `sign` ON `sign`.`iid` = `item`.`id` WHERE `parent` = %d ORDER BY `id` ASC",
|
||||
intval($parent_id)
|
||||
|
@ -357,7 +360,16 @@ function notifier_run($argv, $argc){
|
|||
if(! $contact)
|
||||
continue;
|
||||
|
||||
$atom .= atom_entry($item,'text',$contact,$owner,true);
|
||||
if($normal_mode) {
|
||||
|
||||
// we only need the current item, but include the parent because without it
|
||||
// older sites without a corresponding dfrn_notify change may do the wrong thing.
|
||||
|
||||
if($item_id == $item['id'] || $item['id'] == $item['parent'])
|
||||
$atom .= atom_entry($item,'text',$contact,$owner,true);
|
||||
}
|
||||
else
|
||||
$atom .= atom_entry($item,'text',$contact,$owner,true);
|
||||
|
||||
if(($top_level) && ($public_message) && ($item['author-link'] === $item['owner-link']) && (! $expire))
|
||||
$slaps[] = atom_entry($item,'html',$contact,$owner,true);
|
||||
|
|
|
@ -44,6 +44,12 @@ function poller_run($argv, $argc){
|
|||
AND `account_expires_on` != '0000-00-00 00:00:00'
|
||||
AND `account_expires_on` < UTC_TIMESTAMP() ");
|
||||
|
||||
$abandon_days = intval(get_config('system','account_abandon_days'));
|
||||
if($abandon_days < 1)
|
||||
$abandon_days = 0;
|
||||
|
||||
|
||||
|
||||
// once daily run expire in background
|
||||
|
||||
$d1 = get_config('system','last_expire_day');
|
||||
|
@ -92,12 +98,17 @@ function poller_run($argv, $argc){
|
|||
// and which have a polling address and ignore Diaspora since
|
||||
// we are unable to match those posts with a Diaspora GUID and prevent duplicates.
|
||||
|
||||
$abandon_sql = (($abandon_days)
|
||||
? sprintf(" AND `user`.`login_date` > UTC_TIMESTAMP() - INTERVAL %d DAY ", intval($abandon_days))
|
||||
: ''
|
||||
);
|
||||
|
||||
$contacts = q("SELECT `contact`.`id` FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid`
|
||||
WHERE ( `rel` = %d OR `rel` = %d ) AND `poll` != ''
|
||||
AND `network` != '%s'
|
||||
$sql_extra
|
||||
AND `self` = 0 AND `contact`.`blocked` = 0 AND `contact`.`readonly` = 0
|
||||
AND `user`.`account_expired` = 0 ORDER BY RAND()",
|
||||
AND `user`.`account_expired` = 0 $abandon_sql ORDER BY RAND()",
|
||||
intval(CONTACT_IS_SHARING),
|
||||
intval(CONTACT_IS_FRIEND),
|
||||
dbesc(NETWORK_DIASPORA)
|
||||
|
@ -475,11 +486,11 @@ function poller_run($argv, $argc){
|
|||
}
|
||||
|
||||
|
||||
consume_feed($xml,$importer,$contact,$hub,1, true);
|
||||
consume_feed($xml,$importer,$contact,$hub,1,1);
|
||||
|
||||
// do it twice. Ensures that children of parents which may be later in the stream aren't tossed
|
||||
|
||||
consume_feed($xml,$importer,$contact,$hub,1);
|
||||
consume_feed($xml,$importer,$contact,$hub,1,2);
|
||||
|
||||
$hubmode = 'subscribe';
|
||||
if($contact['network'] === NETWORK_DFRN || $contact['blocked'] || $contact['readonly'])
|
||||
|
|
|
@ -744,7 +744,12 @@ function link_compare($a,$b) {
|
|||
if(! function_exists('prepare_body')) {
|
||||
function prepare_body($item,$attach = false) {
|
||||
|
||||
call_hooks('prepare_body_init', $item);
|
||||
|
||||
$s = prepare_text($item['body']);
|
||||
|
||||
call_hooks('prepare_body', $s);
|
||||
|
||||
if(! $attach)
|
||||
return $s;
|
||||
|
||||
|
@ -776,6 +781,7 @@ function prepare_body($item,$attach = false) {
|
|||
}
|
||||
$s .= '<div class="clear"></div></div>';
|
||||
}
|
||||
call_hooks('prepare_body_final', $s);
|
||||
return $s;
|
||||
}}
|
||||
|
||||
|
|
27
js/main.js
|
@ -95,6 +95,16 @@
|
|||
if(home == 0) { home = ''; $('#home-update').removeClass('show') } else { $('#home-update').addClass('show') }
|
||||
$('#home-update').html(home);
|
||||
|
||||
var intro = $(data).find('intro').text();
|
||||
if(intro == 0) { intro = ''; $('#intro-update').removeClass('show') } else { $('#intro-update').addClass('show') }
|
||||
$('#intro-update').html(intro);
|
||||
|
||||
var mail = $(data).find('mail').text();
|
||||
if(mail == 0) { mail = ''; $('#mail-update').removeClass('show') } else { $('#mail-update').addClass('show') }
|
||||
$('#mail-update').html(mail);
|
||||
|
||||
|
||||
|
||||
var eNotif = $(data).find('notif')
|
||||
notif = eNotif.attr('count');
|
||||
if (notif>0){
|
||||
|
@ -154,6 +164,15 @@
|
|||
});
|
||||
|
||||
function NavUpdate() {
|
||||
if(! stopped) {
|
||||
$.get("ping",function(data) {
|
||||
$(data).find('result').each(function() {
|
||||
// send nav-update event
|
||||
$('nav').trigger('nav-update', this);
|
||||
});
|
||||
}) ;
|
||||
}
|
||||
|
||||
|
||||
if($('#live-network').length) { src = 'network'; liveUpdate(); }
|
||||
if($('#live-profile').length) { src = 'profile'; liveUpdate(); }
|
||||
|
@ -172,14 +191,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
if(! stopped) {
|
||||
$.get("ping",function(data) {
|
||||
$(data).find('result').each(function() {
|
||||
// send nav-update event
|
||||
$('nav').trigger('nav-update', this);
|
||||
});
|
||||
}) ;
|
||||
}
|
||||
timer = setTimeout(NavUpdate,30000);
|
||||
}
|
||||
|
||||
|
|
|
@ -177,6 +177,8 @@ function admin_page_site_post(&$a){
|
|||
|
||||
|
||||
$register_policy = ((x($_POST,'register_policy')) ? intval(trim($_POST['register_policy'])) : 0);
|
||||
$abandon_days = ((x($_POST,'abandon_days')) ? intval(trim($_POST['abandon_days'])) : 0);
|
||||
|
||||
$register_text = ((x($_POST,'register_text')) ? notags(trim($_POST['register_text'])) : '');
|
||||
|
||||
$allowed_sites = ((x($_POST,'allowed_sites')) ? notags(trim($_POST['allowed_sites'])) : '');
|
||||
|
@ -215,6 +217,7 @@ function admin_page_site_post(&$a){
|
|||
set_config('system','maximagesize', $maximagesize);
|
||||
|
||||
set_config('config','register_policy', $register_policy);
|
||||
set_config('system','account_abandon_days', $abandon_days);
|
||||
set_config('config','register_text', $register_text);
|
||||
set_config('system','allowed_sites', $allowed_sites);
|
||||
set_config('system','allowed_email', $allowed_email);
|
||||
|
@ -314,6 +317,7 @@ function admin_page_site(&$a) {
|
|||
|
||||
'$register_policy' => array('register_policy', t("Register policy"), $a->config['register_policy'], "", $register_choices),
|
||||
'$register_text' => array('register_text', t("Register text"), htmlentities($a->config['register_text'], ENT_QUOTES), "Will be displayed prominently on the registration page."),
|
||||
'$abandon_days' => array('abandon_days', t('Accounts abandoned after x days'), get_config('system','account_abandon_days'), t('Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit.')),
|
||||
'$allowed_sites' => array('allowed_sites', t("Allowed friend domains"), get_config('system','allowed_sites'), "Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"),
|
||||
'$allowed_email' => array('allowed_email', t("Allowed email domains"), get_config('system','allowed_email'), "Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"),
|
||||
'$block_public' => array('block_public', t("Block public"), get_config('system','block_public'), "Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."),
|
||||
|
|
|
@ -450,7 +450,15 @@ function dfrn_notify_post(&$a) {
|
|||
}
|
||||
|
||||
if($is_reply) {
|
||||
if($feed->get_item_quantity() == 1) {
|
||||
|
||||
// was the top-level post for this reply written by somebody on this site? Specifically, the recipient?
|
||||
|
||||
$r = q("select `id` from `item` where `uri` = '%s' AND `uid` = %d LIMIT 1",
|
||||
dbesc($parent_uri),
|
||||
intval($importer['importer_uid'])
|
||||
);
|
||||
if($r && count($r)) {
|
||||
|
||||
logger('dfrn_notify: received remote comment');
|
||||
$is_like = false;
|
||||
// remote reply to our post. Import and then notify everybody else.
|
||||
|
|
|
@ -779,6 +779,11 @@ function item_post(&$a) {
|
|||
}
|
||||
}
|
||||
|
||||
// fallback so that parent always gets set to non-zero.
|
||||
|
||||
if(! $parent)
|
||||
$parent = $post_id;
|
||||
|
||||
$r = q("UPDATE `item` SET `parent` = %d, `parent-uri` = '%s', `plink` = '%s', `changed` = '%s', `last-child` = 1, `visible` = 1
|
||||
WHERE `id` = %d LIMIT 1",
|
||||
intval($parent),
|
||||
|
|
|
@ -22,6 +22,7 @@ function match_content(&$a) {
|
|||
|
||||
$params = array();
|
||||
$tags = trim($r[0]['pub_keywords'] . ' ' . $r[0]['prv_keywords']);
|
||||
|
||||
if($tags) {
|
||||
$params['s'] = $tags;
|
||||
if($a->pager['page'] != 1)
|
||||
|
@ -40,15 +41,17 @@ function match_content(&$a) {
|
|||
}
|
||||
|
||||
if(count($j->results)) {
|
||||
|
||||
$tpl = get_markup_template('match.tpl');
|
||||
foreach($j->results as $jj) {
|
||||
|
||||
$o .= '<div class="profile-match-wrapper"><div class="profile-match-photo">';
|
||||
$o .= '<a href="' . $jj->url . '">' . '<img src="' . $jj->photo . '" alt="' . $jj->name . '" title="' . $jj->name . '[' . $jj->tags . ']' . '" /></a></div>';
|
||||
$o .= '<div class="profile-match-break"></div>';
|
||||
$o .= '<div class="profile-match-name"><a href="' . $jj->url . '" title="' . $jj->name . '[' . $jj->url .']' . '">' . $jj->name . '</a></div>';
|
||||
$o .= '<div class="profile-match-end"></div></div>';
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$url' => $jj->url,
|
||||
'$name' => $jj->name,
|
||||
'$photo' => $jj->photo,
|
||||
'$tags' => $jj->tags
|
||||
));
|
||||
}
|
||||
$o .= '<div id="profile-match-wrapper-end"></div>';
|
||||
}
|
||||
else {
|
||||
info( t('No matches') . EOL);
|
||||
|
|
|
@ -45,13 +45,21 @@ function message_content(&$a) {
|
|||
|
||||
$myprofile = $a->get_baseurl() . '/profile/' . $a->user['nickname'];
|
||||
|
||||
if (($a->argc > 1) && ($a->argv[1] === 'new')) {
|
||||
$tab = 'new';
|
||||
} else if ($a->argc == 2 && $a->argv[1] === 'sent') {
|
||||
$tab = 'sent';
|
||||
} else {
|
||||
$tab = 'inbox';
|
||||
}
|
||||
|
||||
$tpl = get_markup_template('mail_head.tpl');
|
||||
$header = replace_macros($tpl, array(
|
||||
'$messages' => t('Messages'),
|
||||
'$inbox' => t('Inbox'),
|
||||
'$outbox' => t('Outbox'),
|
||||
'$new' => t('New Message')
|
||||
'$new' => t('New Message'),
|
||||
'$activetab' => $tab
|
||||
));
|
||||
|
||||
|
||||
|
@ -90,6 +98,8 @@ function message_content(&$a) {
|
|||
|
||||
if(($a->argc > 1) && ($a->argv[1] === 'new')) {
|
||||
|
||||
$o .= $header;
|
||||
|
||||
$tpl = get_markup_template('msg-header.tpl');
|
||||
|
||||
$a->page['htmlhead'] .= replace_macros($tpl, array(
|
||||
|
@ -114,7 +124,6 @@ function message_content(&$a) {
|
|||
'$upload' => t('Upload photo'),
|
||||
'$insert' => t('Insert web link'),
|
||||
'$wait' => t('Please wait')
|
||||
|
||||
));
|
||||
|
||||
return $o;
|
||||
|
@ -248,7 +257,6 @@ function message_content(&$a) {
|
|||
'$upload' => t('Upload photo'),
|
||||
'$insert' => t('Insert web link'),
|
||||
'$wait' => t('Please wait')
|
||||
|
||||
));
|
||||
|
||||
return $o;
|
||||
|
|
|
@ -137,7 +137,7 @@ function saved_searches($search) {
|
|||
if(count($r)) {
|
||||
$o .= '<ul id="saved-search-ul">' . "\r\n";
|
||||
foreach($r as $rr) {
|
||||
$o .= '<li class="saved-search-li clear"><a href="network/?f=&remove=1&search=' . $rr['term'] . '" class="icon drophide savedsearchdrop" title="' . t('Remove term') . '" onclick="return confirmDelete();" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a> <a href="network/?f&search=' . $rr['term'] . '" class="savedsearchterm" >' . $rr['term'] . '</a></li>' . "\r\n";
|
||||
$o .= '<li class="saved-search-li clear"><a href="network/?f=&remove=1&search=' . $rr['term'] . '" class="icon drophide savedsearchdrop" title="' . t('Remove term') . '" onclick="return confirmDelete();" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a> <a href="network/?f&search=' . urlencode($rr['term']) . '" class="savedsearchterm" >' . $rr['term'] . '</a></li>' . "\r\n";
|
||||
}
|
||||
$o .= '</ul>';
|
||||
}
|
||||
|
|
|
@ -128,7 +128,14 @@ function photo_init(&$a) {
|
|||
}
|
||||
}
|
||||
|
||||
if(function_exists('header_remove')) {
|
||||
header_remove('Pragma');
|
||||
header_remove('pragma');
|
||||
}
|
||||
|
||||
header("Content-type: image/jpeg");
|
||||
header("Expires: " . gmdate("D, d M Y H:i:s", time() + (3600*24)) . " GMT");
|
||||
header("Cache-Control: max-age=" . (3600*24));
|
||||
echo $data;
|
||||
killme();
|
||||
// NOTREACHED
|
||||
|
|
|
@ -92,15 +92,11 @@ EOT;
|
|||
|
||||
function photos_post(&$a) {
|
||||
|
||||
logger('mod/photos.php: photos_post(): begin' , 'LOGGER_DEBUG');
|
||||
logger('mod-photos: photos_post(): begin' , 'LOGGER_DEBUG');
|
||||
|
||||
foreach($_REQUEST AS $key => $val) {
|
||||
logger('mod/photos.php: photos_post(): $_REQUEST key: ' . $key . ' val: ' . $val , 'LOGGER_DEBUG');
|
||||
}
|
||||
|
||||
foreach($_FILES AS $key => $val) {
|
||||
logger('mod/photos.php: photos_post(): $_FILES key: ' . $key . ' val: ' . $val , 'LOGGER_DEBUG');
|
||||
}
|
||||
logger('mod_photos: REQUEST ' . print_r($_REQUEST,true), LOGGER_DATA);
|
||||
logger('mod_photos: FILES ' . print_r($_FILES,true), LOGGER_DATA);
|
||||
|
||||
$can_post = false;
|
||||
$visitor = 0;
|
||||
|
@ -585,6 +581,9 @@ function photos_post(&$a) {
|
|||
else
|
||||
$visible = 0;
|
||||
|
||||
if(intval($_REQUEST['not_visible']))
|
||||
$visible = 0;
|
||||
|
||||
$str_group_allow = perms2str(((is_array($_REQUEST['group_allow'])) ? $_REQUEST['group_allow'] : explode(',',$_REQUEST['group_allow'])));
|
||||
$str_contact_allow = perms2str(((is_array($_REQUEST['contact_allow'])) ? $_REQUEST['contact_allow'] : explode(',',$_REQUEST['contact_allow'])));
|
||||
$str_group_deny = perms2str(((is_array($_REQUEST['group_deny'])) ? $_REQUEST['group_deny'] : explode(',',$_REQUEST['group_deny'])));
|
||||
|
@ -892,6 +891,7 @@ function photos_content(&$a) {
|
|||
'$nickname' => $a->data['user']['nickname'],
|
||||
'$newalbum' => t('New album name: '),
|
||||
'$existalbumtext' => t('or existing album name: '),
|
||||
'$nosharetext' => t('Do not show a status post for this upload'),
|
||||
'$albumselect' => template_escape($albumselect),
|
||||
'$permissions' => t('Permissions'),
|
||||
'$aclselect' => (($visitor) ? '' : template_escape(populate_acl($a->user, $celeb))),
|
||||
|
|
|
@ -114,7 +114,7 @@ function ping_init(&$a) {
|
|||
function xmlize($href, $name, $url, $photo, $date, $message){
|
||||
$notsxml = '<note href="%s" name="%s" url="%s" photo="%s" date="%s">%s</note>';
|
||||
return sprintf ( $notsxml,
|
||||
$href, $name, $url, $photo, $date, $message
|
||||
xmlify($href), xmlify($name), xmlify($url), xmlify($photo), xmlify($date), xmlify($message)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -110,8 +110,10 @@ function profperm_content(&$a) {
|
|||
if($change)
|
||||
$o = '';
|
||||
|
||||
$o .= '<div id="prof-members">';
|
||||
$o .= '<div id="prof-members-title">';
|
||||
$o .= '<h3>' . t('Visible To') . '</h3>';
|
||||
$o .= '</div>';
|
||||
$o .= '<div id="prof-members">';
|
||||
|
||||
$textmode = (($switchtotext && (count($members) > $switchtotext)) ? true : false);
|
||||
|
||||
|
@ -123,9 +125,12 @@ function profperm_content(&$a) {
|
|||
}
|
||||
$o .= '</div><div id="prof-members-end"></div>';
|
||||
$o .= '<hr id="prof-separator" />';
|
||||
|
||||
$o .= '<div id="prof-all-contcts-title">';
|
||||
$o .= '<h3>' . t("All Contacts \x28with secure profile access\x29") . '</h3>';
|
||||
$o .= '</div>';
|
||||
$o .= '<div id="prof-all-contacts">';
|
||||
|
||||
$o .= '<h3>' . t("All Contacts \x28with secure profile access\x29") . '</h3>';
|
||||
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 and `pending` = 0 and `self` = 0
|
||||
AND `network` = 'dfrn' ORDER BY `name` ASC",
|
||||
intval(local_user())
|
||||
|
|
|
@ -69,8 +69,13 @@ function pubsub_init(&$a) {
|
|||
// We must initiate an unsubscribe request with a verify_token.
|
||||
// Don't allow outsiders to unsubscribe us.
|
||||
|
||||
if(($hub_mode === 'unsubscribe') && (! strlen($hub_verify)))
|
||||
hub_return(false, '');
|
||||
if($hub_mode === 'unsubscribe') {
|
||||
if(! strlen($hub_verify)) {
|
||||
logger('pubsub: bogus unsubscribe');
|
||||
hub_return(false, '');
|
||||
}
|
||||
logger('pubsub: unsubscribe success');
|
||||
}
|
||||
|
||||
$r = q("UPDATE `contact` SET `subhub` = %d WHERE `id` = %d LIMIT 1",
|
||||
intval($subscribe),
|
||||
|
@ -132,11 +137,11 @@ function pubsub_post(&$a) {
|
|||
|
||||
require_once('include/items.php');
|
||||
|
||||
consume_feed($xml,$importer,$contact,$feedhub,1);
|
||||
consume_feed($xml,$importer,$contact,$feedhub,1,1);
|
||||
|
||||
// do it a second time so that any children find their parents.
|
||||
|
||||
consume_feed($xml,$importer,$contact,$feedhub,1);
|
||||
consume_feed($xml,$importer,$contact,$feedhub,1,2);
|
||||
|
||||
hub_post_return();
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ function search_saved_searches() {
|
|||
$o .= '<h3>' . t('Saved Searches') . '</h3>' . "\r\n";
|
||||
$o .= '<ul id="saved-search-ul">' . "\r\n";
|
||||
foreach($r as $rr) {
|
||||
$o .= '<li class="saved-search-li clear"><a href="search/?f=&remove=1&search=' . $rr['term'] . '" class="icon drophide savedsearchdrop" title="' . t('Remove term') . '" onclick="return confirmDelete();" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a> <a href="search/?f&search=' . $rr['term'] . '" class="savedsearchterm" >' . $rr['term'] . '</a></li>' . "\r\n";
|
||||
$o .= '<li class="saved-search-li clear"><a href="search/?f=&remove=1&search=' . $rr['term'] . '" class="icon drophide savedsearchdrop" title="' . t('Remove term') . '" onclick="return confirmDelete();" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a> <a href="search/?f=&search=' . $rr['term'] . '" class="savedsearchterm" >' . $rr['term'] . '</a></li>' . "\r\n";
|
||||
}
|
||||
$o .= '</ul></div>' . "\r\n";
|
||||
}
|
||||
|
|
52
mod/tagmatch.php
Normal file
|
@ -0,0 +1,52 @@
|
|||
<?php
|
||||
|
||||
|
||||
function tagmatch_content(&$a) {
|
||||
|
||||
$search = notags(trim($_REQUEST['search']));
|
||||
|
||||
$o = '';
|
||||
|
||||
$o .= '<h2>' . t('Tag Match') . ' - ' . $search . '</h2>';
|
||||
|
||||
if($search) {
|
||||
|
||||
$p = (($a->pager['page'] != 1) ? '&p=' . $a->pager['page'] : '');
|
||||
|
||||
if(strlen(get_config('system','directory_submit_url')))
|
||||
$x = fetch_url('http://dir.friendika.com/lsearch?f=' . $p . '&search=' . urlencode($search));
|
||||
|
||||
//TODO fallback local search if global dir not available.
|
||||
// else
|
||||
// $x = post_url($a->get_baseurl() . '/lsearch', $params);
|
||||
|
||||
$j = json_decode($x);
|
||||
|
||||
if($j->total) {
|
||||
$a->set_pager_total($j->total);
|
||||
$a->set_pager_itemspage($j->items_page);
|
||||
}
|
||||
|
||||
if(count($j->results)) {
|
||||
|
||||
$tpl = get_markup_template('match.tpl');
|
||||
foreach($j->results as $jj) {
|
||||
|
||||
$o .= replace_macros($tpl,array(
|
||||
'$url' => $jj->url,
|
||||
'$name' => $jj->name,
|
||||
'$photo' => $jj->photo,
|
||||
'$tags' => $jj->tags
|
||||
));
|
||||
}
|
||||
}
|
||||
else {
|
||||
info( t('No matches') . EOL);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$o .= '<div class="clear"></div>';
|
||||
$o .= paginate($a);
|
||||
return $o;
|
||||
}
|
19
update.php
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
define( 'UPDATE_VERSION' , 1092 );
|
||||
define( 'UPDATE_VERSION' , 1094 );
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -770,3 +770,20 @@ function update_1091() {
|
|||
|
||||
}
|
||||
|
||||
function update_1092() {
|
||||
q("ALTER TABLE `user` ADD INDEX ( `login_date` ) ");
|
||||
q("ALTER TABLE `user` ADD INDEX ( `account_expired` ) ");
|
||||
}
|
||||
|
||||
function update_1093() {
|
||||
q("CREATE TABLE IF NOT EXISTS `fserver` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
||||
`server` CHAR( 255 ) NOT NULL ,
|
||||
`posturl` CHAR( 255 ) NOT NULL ,
|
||||
`key` TEXT NOT NULL,
|
||||
INDEX ( `server` )
|
||||
) ENGINE = MYISAM ");
|
||||
|
||||
q("ALTER TABLE `group` ADD `visible` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `uid` ");
|
||||
|
||||
}
|
|
@ -12,26 +12,26 @@
|
|||
</script>
|
||||
<h4><a href="$admurl">Admin</a></h4>
|
||||
<ul class='admin linklist'>
|
||||
<li class='admin link $admin.site.2'><a href='$admin.site.0'>$admin.site.1</a></li>
|
||||
<li class='admin link $admin.users.2'><a href='$admin.users.0'>$admin.users.1</a><span id='pending-update' title='$h_pending'></span></li>
|
||||
<li class='admin link $admin.plugins.2'><a href='$admin.plugins.0'>$admin.plugins.1</a></li>
|
||||
<li class='admin link button $admin.site.2'><a href='$admin.site.0'>$admin.site.1</a></li>
|
||||
<li class='admin link button $admin.users.2'><a href='$admin.users.0'>$admin.users.1</a><span id='pending-update' title='$h_pending'></span></li>
|
||||
<li class='admin link button $admin.plugins.2'><a href='$admin.plugins.0'>$admin.plugins.1</a></li>
|
||||
</ul>
|
||||
|
||||
<ul class='admin linklist'>
|
||||
<li class='admin link $admin.update.2'><a href='$admin.update.0'>$admin.update.1</a></li>
|
||||
<li class='admin link button $admin.update.2'><a href='$admin.update.0'>$admin.update.1</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
{{ if $admin.plugins_admin }}<h4>Plugins</h4>{{ endif }}
|
||||
<ul class='admin linklist'>
|
||||
{{ for $admin.plugins_admin as $l }}
|
||||
<li class='admin link $l.2'><a href='$l.0'>$l.1</a></li>
|
||||
<li class='admin link button $l.2'><a href='$l.0'>$l.1</a></li>
|
||||
{{ endfor }}
|
||||
</ul>
|
||||
|
||||
|
||||
<h4>Logs</h4>
|
||||
<ul class='admin linklist'>
|
||||
<li class='admin link $admin.logs.2'><a href='$admin.logs.0'>$admin.logs.1</a></li>
|
||||
<li class='admin link button $admin.logs.2'><a href='$admin.logs.0'>$admin.logs.1</a></li>
|
||||
</ul>
|
||||
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
{{ inc field_input.tpl with $field=$proxy }}{{ endinc }}
|
||||
{{ inc field_input.tpl with $field=$proxyuser }}{{ endinc }}
|
||||
{{ inc field_input.tpl with $field=$timeout }}{{ endinc }}
|
||||
{{ inc field_input.tpl with $field=$abandon_days }}{{ endinc }}
|
||||
|
||||
<div class="submit"><input type="submit" name="page_site" value="$submit" /></div>
|
||||
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
{{ for $treads as $tread }}
|
||||
{{ for $threads as $thread }}
|
||||
<div class="tread-wrapper">
|
||||
$tread
|
||||
$thread
|
||||
</div>
|
||||
{{ endfor }}
|
||||
|
||||
{{ if $dropping }}
|
||||
<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>
|
||||
|
|
1290
view/fr/messages.po
|
@ -1,8 +1,5 @@
|
|||
<?php
|
||||
|
||||
function string_plural_select_fr($n){
|
||||
return ($n != 1);
|
||||
}
|
||||
;
|
||||
$a->strings["Logged out."] = "Déconnecté.";
|
||||
$a->strings["Login failed."] = "Échec de connexion.";
|
||||
|
@ -37,7 +34,7 @@ $a->strings["Abstinent"] = "Abstinent";
|
|||
$a->strings["Virgin"] = "Vierge";
|
||||
$a->strings["Deviant"] = "Déviant";
|
||||
$a->strings["Fetish"] = "Fétichiste";
|
||||
$a->strings["Oodles"] = "Oodles";
|
||||
$a->strings["Oodles"] = "";
|
||||
$a->strings["Nonsexual"] = "Non-sexuel";
|
||||
$a->strings["Single"] = "Célibataire";
|
||||
$a->strings["Lonely"] = "Esseulé";
|
||||
|
@ -48,10 +45,10 @@ $a->strings["Unfaithful"] = "Infidèle";
|
|||
$a->strings["Sex Addict"] = "Accro au sexe";
|
||||
$a->strings["Friends"] = "Amis";
|
||||
$a->strings["Friends/Benefits"] = "Amis par intérêt";
|
||||
$a->strings["Casual"] = "Casual";
|
||||
$a->strings["Casual"] = "Relation informelle";
|
||||
$a->strings["Engaged"] = "Fiancé";
|
||||
$a->strings["Married"] = "Marié";
|
||||
$a->strings["Partners"] = "Partenaire";
|
||||
$a->strings["Partners"] = "Avec partenaire";
|
||||
$a->strings["Cohabiting"] = "En cohabitation";
|
||||
$a->strings["Happy"] = "Heureux";
|
||||
$a->strings["Not Looking"] = "Sans recherche";
|
||||
|
@ -676,7 +673,7 @@ $a->strings["%d member"] = array(
|
|||
1 => "%d membres",
|
||||
);
|
||||
$a->strings["Warning: This group contains %s from an insecure network."] = "Attention : ce groupe contient %s, qui se connecte depuis un réseau non-sécurisé.";
|
||||
$a->strings["Private messages to this group are at risk of public disclosure."] = "es messages privés envoyés à ce groupe s'exposent à une diffusion incontrôlée.";
|
||||
$a->strings["Private messages to this group are at risk of public disclosure."] = "Les messages privés envoyés à ce groupe s'exposent à une diffusion incontrôlée.";
|
||||
$a->strings["D, d M Y - g:i A"] = "D, d M Y - g:i A";
|
||||
$a->strings["Friendika Social Network"] = "Réseau social Friendika";
|
||||
$a->strings["Installation"] = "Installation";
|
||||
|
@ -689,9 +686,9 @@ $a->strings["Database Login Password"] = "Mot de passe de la base";
|
|||
$a->strings["Database Name"] = "Nom de la base";
|
||||
$a->strings["Please select a default timezone for your website"] = "Sélectionner un fuseau horaire par défaut pour votre site";
|
||||
$a->strings["Normal Account"] = "Compte normal";
|
||||
$a->strings["This account is a normal personal profile"] = "e compte correspond à un profil normal, pour une seule personne (physique, généralement)";
|
||||
$a->strings["This account is a normal personal profile"] = "Ce compte correspond à un profil normal, pour une seule personne (physique, généralement)";
|
||||
$a->strings["Soapbox Account"] = "Compte \"boîte à savon\"";
|
||||
$a->strings["Automatically approve all connection/friend requests as read-only fans"] = "ccepter automatiquement toutes les demandes d'amitié/connexion comme étant des fans 'en lecture seule'";
|
||||
$a->strings["Automatically approve all connection/friend requests as read-only fans"] = "Accepter automatiquement toutes les demandes d'amitié/connexion comme étant des fans 'en lecture seule'";
|
||||
$a->strings["Community/Celebrity Account"] = "Compte de communauté/célébrité";
|
||||
$a->strings["Automatically approve all connection/friend requests as read-write fans"] = "Accepter automatiquement toutes les demandes d'amitié/connexion comme étant des fans en 'lecture/écriture'";
|
||||
$a->strings["Automatic Friend Account"] = "Compte auto-amical";
|
||||
|
@ -907,7 +904,7 @@ $a->strings["Hide your contact/friend list from viewers of this profile?"] = "Ca
|
|||
$a->strings["Birthday (%s):"] = "Date de naissance (%s):";
|
||||
$a->strings["visible to everybody"] = "visible par tout le monde";
|
||||
$a->strings["Events"] = "Evènements";
|
||||
$a->strings["Personal Notes"] = "Notes personnelles";
|
||||
$a->strings["Personal Notes"] = "Notes";
|
||||
$a->strings["Save"] = "Enregistrer";
|
||||
$a->strings["An invitation is required."] = "Une invitation est requise.";
|
||||
$a->strings["Invitation could not be verified."] = "L'invitation n'a pu être vérifiée.";
|
||||
|
@ -1086,3 +1083,57 @@ $a->strings["%d invitation available"] = array(
|
|||
1 => "%d invitations disponibles",
|
||||
);
|
||||
$a->strings["Suggest friends"] = "Suggérer des amis/contacts";
|
||||
$a->strings["View %s's profile @ %s"] = "Voir le profil de %s sur %s";
|
||||
$a->strings["like"] = "aime";
|
||||
$a->strings["dislike"] = "n'aime pas";
|
||||
$a->strings["Share this"] = "Partager ça";
|
||||
$a->strings["share"] = "partager";
|
||||
$a->strings["add star"] = "mettre en avant";
|
||||
$a->strings["remove star"] = "ne plus mettre en avant";
|
||||
$a->strings["starred"] = "mis en avant";
|
||||
$a->strings["default"] = "";
|
||||
$a->strings["[Relayed] Comment authored by %s from network %s"] = "[Relayé] Commentaire de %s du réseau %s";
|
||||
$a->strings["OStatus"] = "OStatus";
|
||||
$a->strings["RSS/Atom"] = "RSS/Atom";
|
||||
$a->strings["Diaspora"] = "Diaspora";
|
||||
$a->strings["Zot!"] = "Zot!";
|
||||
$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un groupe supprimé portant ce nom a été re-créé. Les anciennes permissions <strong>peuvent</strong> s'appliquer à ce groupe ainsi qu'à tous ses membres futurs. Si ce n'est pas ce que vous souhaitez, merci de créer un nouveau groupe avec un nom différent.";
|
||||
$a->strings["A new person is sharing with you at "] = "Une nouvelle personne partage avec vous sur ";
|
||||
$a->strings["Your profile page"] = "Votre page de profil";
|
||||
$a->strings["Your photos"] = "Vos photos";
|
||||
$a->strings["Your events"] = "Vos évènements";
|
||||
$a->strings["Personal notes"] = "Notes personnelles";
|
||||
$a->strings["Your personal photos"] = "Vos photos personnelles";
|
||||
$a->strings["Nothing new here"] = "Rien de neuf ici";
|
||||
$a->strings["Tag Match"] = "";
|
||||
$a->strings["All"] = "Tout";
|
||||
$a->strings["New"] = "Nouveaux";
|
||||
$a->strings["Starred"] = "Mis en avant";
|
||||
$a->strings["Bookmarks"] = "Favoris";
|
||||
$a->strings["Saved Searches"] = "Recherches sauvées";
|
||||
$a->strings["Remove term"] = "Retirer le terme";
|
||||
$a->strings["Site public key not available in contact record for URL %s."] = "La clé publique du site n'est pas disponible dans l'enregistrement de contact pour l'URL %s.";
|
||||
$a->strings["Time Conversion"] = "Conversion de date/heure";
|
||||
$a->strings["Friendika provides this service for sharing events with other networks and friends in unknown timezones."] = "Friendika fournit ce service pour partager des évènements avec d'autres réseaux, et des contacts situés dans des fuseaux horaires inconnus.";
|
||||
$a->strings["UTC time: %s"] = "Temps universel (UTC): %s";
|
||||
$a->strings["Current timezone: %s"] = "Fuseau horaire actuel: %s";
|
||||
$a->strings["Converted localtime: %s"] = "Temps converti: %s";
|
||||
$a->strings["Please select your timezone:"] = "Merci de choisir votre fuseau:";
|
||||
$a->strings["Accounts abandoned after x days"] = "Délai d'\"expiration\" des comptes (en jours)";
|
||||
$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Pour ne pas gaspiller les ressources du système en surveillant des sites externes, Friendika peut marquer certains comptes inactifs comme abandonnés. Mettre 0 pour ne pas avoir de limite.";
|
||||
$a->strings["{0} wants to be your friend"] = "{0} veut être relié";
|
||||
$a->strings["{0} sent you a message"] = "{0} vous a envoyé un message";
|
||||
$a->strings["{0} requested registration"] = "{0} a demandé à s'enregistrer";
|
||||
$a->strings["{0} commented %s's post"] = "{0} a commenté l'entrée de %s";
|
||||
$a->strings["{0} like %s's post"] = "{0} aime l'entrée de %s";
|
||||
$a->strings["{0} dislike %s's post"] = "{0} n'aime pas l'entrée de %s";
|
||||
$a->strings["{0} is now friend with %s"] = "{0} est désormais relié à %s";
|
||||
$a->strings["Event description and start time are required."] = "L'évènement requiert une description et un début.";
|
||||
$a->strings["Diaspora members: Please do not use this form. Instead, enter \"%s\" into your Diaspora search bar."] = "Aux membres de Diaspora: merci de ne pas utiliser ce formulaire. Entrez plutôt \"%s\" dans votre barre de recherche Diaspora.";
|
||||
$a->strings["- please share from your own site as noted above"] = "- merci de partager depuis votre propre site, comme indiqué plus haut";
|
||||
$a->strings["@Tagname - overrides Name/Nickname"] = "@NomDuTag - outrepasse Nom/Surnom";
|
||||
$a->strings["Do not show a status post for this upload"] = "Ne pas notifier le réseau de cet envoi";
|
||||
$a->strings["Permission denied. Access to this item may be restricted."] = "Permission refusée. L'accès à cet élément peut avoir été restreint.";
|
||||
$a->strings["View photo"] = "Voir photo";
|
||||
$a->strings["Similar Interests"] = "Intérêts similaires";
|
||||
$a->strings["Network type: %s"] = "Type de réseau: %s";
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<div class="group-delete-wrapper" id="group-delete-wrapper-$id" >
|
||||
<div class="group-delete-wrapper button" id="group-delete-wrapper-$id" >
|
||||
<a href="group/drop/$id"
|
||||
onclick="return confirmDelete();"
|
||||
title="$delete"
|
||||
id="group-delete-icon-$id"
|
||||
class="icon drophide group-delete-icon"
|
||||
onmouseover="imgbright(this);"
|
||||
|
|
5
view/like_noshare.tpl
Normal file
|
@ -0,0 +1,5 @@
|
|||
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
|
||||
<a href="#" class="icon like"title="$likethis" onclick="dolike($id,'like'); return false"></a>
|
||||
<a href="#" class="icon dislike" title="$nolike" onclick="dolike($id,'dislike'); return false"></a>
|
||||
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
||||
</div>
|
|
@ -7,9 +7,8 @@
|
|||
<div class="mail-conv-date">$date</div>
|
||||
<div class="mail-conv-subject">$subject</div>
|
||||
<div class="mail-conv-body">$body</div>
|
||||
</div>
|
||||
<div class="mail-conv-delete-wrapper" id="mail-conv-delete-wrapper-$id" ><a href="message/drop/$id" onclick="return confirmDelete();" ><img src="images/b_drophide.gif" alt="$delete" title="$delete" id="mail-conv-delete-icon-$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>
|
||||
</div>
|
||||
<div class="mail-conv-delete-wrapper" id="mail-conv-delete-wrapper-$id" ><a href="message/drop/$id" onclick="return confirmDelete();" ><img src="images/b_drophide.gif" alt="$delete" title="$delete" id="mail-conv-delete-icon-$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>
|
||||
<hr class="mail-conv-break" />
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
<div class="mail-list-sender-name" >$from_name</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-delete-wrapper" id="mail-list-delete-wrapper-$id" >
|
||||
<a href="message/dropconv/$id" onclick="return confirmDelete();" title="$delete" class="icon drophide mail-list- delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>
|
||||
</div>
|
||||
</div>
|
||||
<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-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>
|
||||
</div>
|
||||
<div class="mail-list-delete-end"></div>
|
||||
|
||||
|
|
12
view/match.tpl
Normal file
|
@ -0,0 +1,12 @@
|
|||
<div class="profile-match-wrapper">
|
||||
<div class="profile-match-photo">
|
||||
<a href="$url">
|
||||
<img src="$photo" alt="$name" title="$name[$tags]" />
|
||||
</a>
|
||||
</div>
|
||||
<div class="profile-match-break"></div>
|
||||
<div class="profile-match-name">
|
||||
<a href="$url" title="$name[$tags]">$name</a>
|
||||
</div>
|
||||
<div class="profile-match-end"></div>
|
||||
</div>
|
|
@ -1,8 +1,7 @@
|
|||
<div class="photo-album-image-wrapper" id="photo-album-image-wrapper-$id">
|
||||
<a href="$photolink" class="photo-album-photo-link" id="photo-album-photo-link-$id" title="$phototitle">
|
||||
<img src="$imgsrc" alt="$imgalt" title="$phototitle" class="photo-album-photo" id="photo-album-photo-$id" />
|
||||
<img src="$imgsrc" alt="$imgalt" title="$phototitle" class="photo-album-photo lframe resize" id="photo-album-photo-$id" />
|
||||
<p class='caption'>$desc</p>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div class="photo-album-image-wrapper-end"></div>
|
||||
|
|
|
@ -13,6 +13,11 @@
|
|||
</div>
|
||||
<div id="photos-upload-exist-end"></div>
|
||||
|
||||
<div id="photos-upload-noshare-div" class="photos-upload-noshare-div" >
|
||||
<input id="photos-upload-noshare" type="checkbox" name="not_visible" value="1" />
|
||||
<label id="photos-upload-noshare-text" for="photos-upload-noshare" >$nosharetext</label>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="photos-upload-perms" class="photos-upload-perms" >
|
||||
<a href="#photos-upload-permissions-wrapper" id="photos-upload-perms-menu" class="button" />
|
||||
|
|
|
@ -15,7 +15,7 @@ $select
|
|||
<div id="prvmail-message-label">$yourmessage</div>
|
||||
<textarea rows="8" cols="72" class="prvmail-text" id="prvmail-text" name="body" ></textarea>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="prvmail-submit-wrapper" >
|
||||
<input type="submit" id="prvmail-submit" name="submit" value="Submit" />
|
||||
<div id="prvmail-upload-wrapper" >
|
||||
|
@ -29,5 +29,6 @@ $select
|
|||
</div>
|
||||
</div>
|
||||
<div id="prvmail-end"></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
<div id="profile-tabs-wrapper" >
|
||||
<a href="$account.1" id="profile-tab-status-link" class="profile-tabs" >$account.0</a>
|
||||
<a href="$plugins.1" id="profile-tab-profile-link" class="profile-tabs" >$plugins.0</a>
|
||||
<a href="$account.1" id="profile-tab-status-link" class="profile-tabs button" >$account.0</a>
|
||||
<a href="$plugins.1" id="profile-tab-profile-link" class="profile-tabs button" >$plugins.0</a>
|
||||
<div id="profile-tabs-end"></div>
|
||||
</div>
|
||||
|
|
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 443 B |
|
@ -1,67 +0,0 @@
|
|||
|
||||
<h2>$header</h2>
|
||||
|
||||
<div id="contact-edit-banner-name">$name</div>
|
||||
|
||||
$nettype
|
||||
|
||||
<form action="contacts/$contact_id" method="post" >
|
||||
<input type="hidden" name="contact_id" value="$contact_id">
|
||||
|
||||
<div id="contact-edit-wrapper" >
|
||||
|
||||
<div id="contact-edit-photo-wrapper" >
|
||||
<img id="contact-edit-direction-icon" src="$dir_icon" alt="$alt_text" title="$alt_text" />
|
||||
<div id="contact-edit-photo" >
|
||||
<a href="$url" title="$visit" /><img src="$photo" $sparkle alt="$name" /></a>
|
||||
</div>
|
||||
<div id="contact-edit-photo-end" ></div>
|
||||
</div>
|
||||
<div id="contact-edit-nav-wrapper" >
|
||||
|
||||
<div id="contact-edit-links" >
|
||||
<a href="contacts/$contact_id/block" class="icon block" id="contact-edit-block-link" title="$block_text"></a>
|
||||
<a href="contacts/$contact_id/ignore" class="icon no" id="contact-edit-ignore-link" title="$ignore_text"></a>
|
||||
<a href="crepair/$contact_id" class="icon tools" id="contact-edit-repair" title="$lblcrepair"></a>
|
||||
<a href="contacts/$contact_id/drop" class="icon drophide" id="contact-edit-drop-link" onclick="return confirmDelete();" title="$delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);"></a>
|
||||
</div>
|
||||
<div id="contact-edit-nav-end"></div>
|
||||
|
||||
{{ if $poll_enabled }}
|
||||
<div id="contact-edit-poll-wrapper">
|
||||
<div id="contact-edit-last-update-text">$lastupdtext<span id="contact-edit-last-updated">$last_update</span></div>
|
||||
<div id="contact-edit-poll-text">$updpub</div>
|
||||
$poll_interval
|
||||
<div id="contact-edit-update-now"><a href="contacts/$contact_id/update" >$udnow</a></div>
|
||||
</div>
|
||||
{{ endif }}
|
||||
</div>
|
||||
<div id="contact-edit-end" ></div>
|
||||
|
||||
$insecure
|
||||
$blocked
|
||||
$ignored
|
||||
|
||||
<div id="view-recent-wrapper"><a href="network/?cid=$contact_id" id="contact-view-recent">$lblrecent</a></div>
|
||||
$lblsuggest
|
||||
|
||||
<div id="contact-edit-info-wrapper">
|
||||
<h4>$lbl_info1</h4>
|
||||
<textarea id="contact-edit-info" rows="10" cols="72" name="info" >$info</textarea>
|
||||
</div>
|
||||
<div id="contact-edit-info-end"></div>
|
||||
|
||||
<input class="contact-edit-submit" type="submit" name="submit" value="$submit" />
|
||||
|
||||
<div id="contact-edit-profile-select-text">
|
||||
<h4>$lbl_vis1</h4>
|
||||
<p>$lbl_vis2
|
||||
</p>
|
||||
</div>
|
||||
$profile_select
|
||||
<div id="contact-edit-profile-select-end"></div>
|
||||
|
||||
<input class="contact-edit-submit" type="submit" name="submit" value="$submit" />
|
||||
|
||||
</form>
|
||||
</div>
|
BIN
view/theme/darkbubble/dbicons.png
Normal file
After Width: | Height: | Size: 19 KiB |
|
@ -1,8 +0,0 @@
|
|||
<div class="group-delete-wrapper" id="group-delete-wrapper-$id" >
|
||||
<a href="group/drop/$id"
|
||||
onclick="return confirmDelete();"
|
||||
title="$delete"
|
||||
id="group-delete-icon-$id"
|
||||
class="drophide group-delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" >Delete Group</a>
|
||||
</div>
|
||||
<div class="group-delete-end"></div>
|
|
@ -1,16 +0,0 @@
|
|||
<h2>$title</h2>
|
||||
|
||||
|
||||
<div id="group-edit-wrapper" >
|
||||
<form action="group/$gid" id="group-edit-form" method="post" >
|
||||
<div id="group-edit-name-wrapper" >
|
||||
<label id="group-edit-name-label" for="group-edit-name" >$gname</label>
|
||||
<input type="text" id="group-edit-name" name="groupname" value="$name" />
|
||||
<input type="submit" name="submit" value="$submit">
|
||||
$drop
|
||||
</div>
|
||||
<div id="group-edit-name-end"></div>
|
||||
<div id="group-edit-desc">$desc</div>
|
||||
<div id="group-edit-select-end" ></div>
|
||||
</form>
|
||||
</div>
|
Before Width: | Height: | Size: 911 B |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 81 KiB |
|
@ -1,251 +0,0 @@
|
|||
|
||||
<script language="javascript" type="text/javascript" src="$baseurl/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js"></script>
|
||||
<script language="javascript" type="text/javascript">
|
||||
|
||||
var editor=false;
|
||||
var textlen = 0;
|
||||
|
||||
function initEditor(cb) {
|
||||
if (editor==false) {
|
||||
$("#profile-jot-text-loading").show();
|
||||
tinyMCE.init({
|
||||
theme : "advanced",
|
||||
mode : "specific_textareas",
|
||||
editor_selector: /(profile-jot-text|prvmail-text)/,
|
||||
plugins : "bbcode,paste,fullscreen,autoresize",
|
||||
theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code,fullscreen",
|
||||
theme_advanced_buttons2 : "",
|
||||
theme_advanced_buttons3 : "",
|
||||
theme_advanced_toolbar_location : "top",
|
||||
theme_advanced_toolbar_align : "center",
|
||||
theme_advanced_blockformats : "blockquote,code",
|
||||
//theme_advanced_resizing : true,
|
||||
//theme_advanced_statusbar_location : "bottom",
|
||||
paste_text_sticky : true,
|
||||
entity_encoding : "raw",
|
||||
add_unload_trigger : false,
|
||||
remove_linebreaks : false,
|
||||
force_p_newlines : false,
|
||||
force_br_newlines : true,
|
||||
forced_root_block : '',
|
||||
convert_urls: false,
|
||||
content_css: "$baseurl/view/custom_tinymce.css",
|
||||
theme_advanced_path : false,
|
||||
setup : function(ed) {
|
||||
//Character count
|
||||
ed.onKeyUp.add(function(ed, e) {
|
||||
var txt = tinyMCE.activeEditor.getContent();
|
||||
textlen = txt.length;
|
||||
if(textlen != 0 && $('#jot-perms-icon').is('.unlock')) {
|
||||
$('#profile-jot-desc').html(ispublic);
|
||||
}
|
||||
else {
|
||||
$('#profile-jot-desc').html(' ');
|
||||
}
|
||||
|
||||
if(textlen <= 140) {
|
||||
$('#character-counter').removeClass('red');
|
||||
$('#character-counter').removeClass('orange');
|
||||
$('#character-counter').addClass('grey');
|
||||
}
|
||||
if((textlen > 140) && (textlen <= 420)) {
|
||||
$('#character-counter').removeClass('grey');
|
||||
$('#character-counter').removeClass('red');
|
||||
$('#character-counter').addClass('orange');
|
||||
}
|
||||
if(textlen > 420) {
|
||||
$('#character-counter').removeClass('grey');
|
||||
$('#character-counter').removeClass('orange');
|
||||
$('#character-counter').addClass('red');
|
||||
}
|
||||
$('#character-counter').text(textlen);
|
||||
});
|
||||
ed.onInit.add(function(ed) {
|
||||
ed.pasteAsPlainText = true;
|
||||
$("#profile-jot-text-loading").hide();
|
||||
$("#profile-jot-submit-wrapper").show();
|
||||
$("#profile-upload-wrapper").show();
|
||||
$("#profile-attach-wrapper").show();
|
||||
$("#profile-link-wrapper").show();
|
||||
$("#profile-youtube-wrapper").show();
|
||||
$("#profile-video-wrapper").show();
|
||||
$("#profile-audio-wrapper").show();
|
||||
$("#profile-location-wrapper").show();
|
||||
$("#profile-nolocation-wrapper").show();
|
||||
$("#profile-title-wrapper").show();
|
||||
$("#profile-jot-plugin-wrapper").show();
|
||||
$("#character-counter").show();
|
||||
if (typeof cb!="undefined") cb();
|
||||
});
|
||||
}
|
||||
});
|
||||
editor = true;
|
||||
// setup acl popup
|
||||
$("a#jot-perms-icon").fancybox({
|
||||
'transitionIn' : 'none',
|
||||
'transitionOut' : 'none'
|
||||
});
|
||||
} else {
|
||||
if (typeof cb!="undefined") cb();
|
||||
}
|
||||
} // initEditor
|
||||
</script>
|
||||
<script type="text/javascript" src="js/ajaxupload.js" ></script>
|
||||
<script>
|
||||
var ispublic = '$ispublic';
|
||||
$(document).ready(function() {
|
||||
/* enable tinymce on focus */
|
||||
$("#profile-jot-text").focus(function(){
|
||||
if (editor) return;
|
||||
$(this).val("");
|
||||
initEditor();
|
||||
});
|
||||
var uploader = new window.AjaxUpload(
|
||||
'wall-image-upload',
|
||||
{ action: 'wall_upload/$nickname',
|
||||
name: 'userfile',
|
||||
onSubmit: function(file,ext) { $('#profile-rotator').show(); },
|
||||
onComplete: function(file,response) {
|
||||
tinyMCE.execCommand('mceInsertRawHTML',false,response);
|
||||
$('#profile-rotator').hide();
|
||||
}
|
||||
}
|
||||
);
|
||||
var file_uploader = new window.AjaxUpload(
|
||||
'wall-file-upload',
|
||||
{ action: 'wall_attach/$nickname',
|
||||
name: 'userfile',
|
||||
onSubmit: function(file,ext) { $('#profile-rotator').show(); },
|
||||
onComplete: function(file,response) {
|
||||
tinyMCE.execCommand('mceInsertRawHTML',false,response);
|
||||
$('#profile-rotator').hide();
|
||||
}
|
||||
}
|
||||
);
|
||||
$('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() {
|
||||
var selstr;
|
||||
$('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() {
|
||||
selstr = $(this).text();
|
||||
$('#jot-perms-icon').removeClass('unlock').addClass('lock');
|
||||
$('#jot-public').hide();
|
||||
$('.profile-jot-net input').attr('disabled', 'disabled');
|
||||
});
|
||||
if(selstr == null) {
|
||||
$('#jot-perms-icon').removeClass('lock').addClass('unlock');
|
||||
$('#jot-public').show();
|
||||
$('.profile-jot-net input').attr('disabled', false);
|
||||
}
|
||||
|
||||
}).trigger('change');
|
||||
|
||||
});
|
||||
|
||||
function deleteCheckedItems() {
|
||||
var checkedstr = '';
|
||||
|
||||
$('.item-select').each( function() {
|
||||
if($(this).is(':checked')) {
|
||||
if(checkedstr.length != 0) {
|
||||
checkedstr = checkedstr + ',' + $(this).val();
|
||||
}
|
||||
else {
|
||||
checkedstr = $(this).val();
|
||||
}
|
||||
}
|
||||
});
|
||||
$.post('item', { dropitems: checkedstr }, function(data) {
|
||||
window.location.reload();
|
||||
});
|
||||
}
|
||||
|
||||
function jotGetLink() {
|
||||
reply = prompt("$linkurl");
|
||||
if(reply && reply.length) {
|
||||
reply = bin2hex(reply);
|
||||
$('#profile-rotator').show();
|
||||
$.get('parse_url?url=' + reply, function(data) {
|
||||
tinyMCE.execCommand('mceInsertRawHTML',false,data);
|
||||
$('#profile-rotator').hide();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function jotGetVideo() {
|
||||
reply = prompt("$utubeurl");
|
||||
if(reply && reply.length) {
|
||||
tinyMCE.execCommand('mceInsertRawHTML',false,'[youtube]' + reply + '[/youtube]');
|
||||
}
|
||||
}
|
||||
|
||||
function jotVideoURL() {
|
||||
reply = prompt("$vidurl");
|
||||
if(reply && reply.length) {
|
||||
tinyMCE.execCommand('mceInsertRawHTML',false,'[video]' + reply + '[/video]');
|
||||
}
|
||||
}
|
||||
|
||||
function jotAudioURL() {
|
||||
reply = prompt("$audurl");
|
||||
if(reply && reply.length) {
|
||||
tinyMCE.execCommand('mceInsertRawHTML',false,'[audio]' + reply + '[/audio]');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function jotGetLocation() {
|
||||
reply = prompt("$whereareu", $('#jot-location').val());
|
||||
if(reply && reply.length) {
|
||||
$('#jot-location').val(reply);
|
||||
}
|
||||
}
|
||||
|
||||
function jotTitle() {
|
||||
reply = prompt("$title", $('#jot-title').val());
|
||||
if(reply && reply.length) {
|
||||
$('#jot-title').val(reply);
|
||||
}
|
||||
}
|
||||
|
||||
function jotShare(id) {
|
||||
$('#like-rotator-' + id).show();
|
||||
$.get('share/' + id, function(data) {
|
||||
if (!editor) $("#profile-jot-text").val("");
|
||||
initEditor(function(){
|
||||
tinyMCE.execCommand('mceInsertRawHTML',false,data);
|
||||
$('#like-rotator-' + id).hide();
|
||||
$(window).scrollTop(0);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function linkdropper(event) {
|
||||
var linkFound = event.dataTransfer.types.contains("text/uri-list");
|
||||
if(linkFound)
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
function linkdrop(event) {
|
||||
var reply = event.dataTransfer.getData("text/uri-list");
|
||||
event.target.textContent = reply;
|
||||
event.preventDefault();
|
||||
if(reply && reply.length) {
|
||||
$('#profile-rotator').show();
|
||||
$.get('parse_url?url=' + reply, function(data) {
|
||||
if (!editor) $("#profile-jot-text").val("");
|
||||
initEditor(function(){
|
||||
tinyMCE.execCommand('mceInsertRawHTML',false,data);
|
||||
$('#profile-rotator').hide();
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function jotClearLocation() {
|
||||
$('#jot-coord').val('');
|
||||
$('#profile-nolocation-wrapper').hide();
|
||||
}
|
||||
|
||||
$geotag
|
||||
|
||||
</script>
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
|
||||
<div id="profile-jot-wrapper" >
|
||||
<div id="profile-jot-banner-wrapper">
|
||||
<div id="profile-jot-desc" > </div>
|
||||
<div id="character-counter" class="grey" style="display: none;">0</div>
|
||||
<div id="profile-rotator-wrapper" style="display: $visitor;" >
|
||||
<img id="profile-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display:none;" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="profile-jot-form" action="$action" method="post" >
|
||||
<input type="hidden" name="type" value="wall" />
|
||||
<input type="hidden" name="profile_uid" value="$profile_uid" />
|
||||
<input type="hidden" name="return" value="$return_path" />
|
||||
<input type="hidden" name="location" id="jot-location" value="$defloc" />
|
||||
<input type="hidden" name="coord" id="jot-coord" value="" />
|
||||
<input type="hidden" name="title" id="jot-title" value="" />
|
||||
<input type="hidden" name="post_id" value="$post_id" />
|
||||
|
||||
<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" >{{ if $content }}$content{{ else }}$share{{ endif }}</textarea>
|
||||
{{ if $content }}<script>initEditor();</script>{{ endif }}
|
||||
|
||||
<div id="profile-upload-wrapper" class="jot-tool" style="display: none;" >
|
||||
<div id="wall-image-upload-div" ><a onclick="return false;" id="wall-image-upload" class="icon border camera" title="$upload"></a></div>
|
||||
</div>
|
||||
<div id="profile-attach-wrapper" class="jot-tool" style="display: none;" >
|
||||
<div id="wall-file-upload-div" ><a href="#" onclick="return false;" id="wall-file-upload" class="icon border attach" title="$attach"></a></div>
|
||||
</div>
|
||||
<div id="profile-link-wrapper" class="jot-tool" style="display: none;" ondragenter="linkdropper(event);" ondragover="linkdropper(event);" ondrop="linkdrop(event);" >
|
||||
<a id="profile-link" class="icon border link" title="$weblink" ondragenter="return linkdropper(event);" ondragover="return linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink(); return false;"></a>
|
||||
</div>
|
||||
<div id="profile-youtube-wrapper" class="jot-tool" style="display: none;" >
|
||||
<a id="profile-youtube" class="icon border youtube" title="$youtube" onclick="jotGetVideo(); return false;"></a>
|
||||
</div>
|
||||
<div id="profile-video-wrapper" class="jot-tool" style="display: none;" >
|
||||
<a id="profile-video" class="icon border video" title="$video" onclick="jotVideoURL(); return false;"></a>
|
||||
</div>
|
||||
<div id="profile-audio-wrapper" class="jot-tool" style="display: none;" >
|
||||
<a id="profile-audio" class="icon border audio" title="$audio" onclick="jotAudioURL(); return false;"></a>
|
||||
</div>
|
||||
<div id="profile-location-wrapper" class="jot-tool" style="display: none;" >
|
||||
<a id="profile-location" class="icon border globe" title="$setloc" onclick="jotGetLocation(); return false;"></a>
|
||||
</div>
|
||||
<div id="profile-nolocation-wrapper" class="jot-tool" style="display: none;" >
|
||||
<a id="profile-nolocation" class="icon border noglobe" title="$noloc" onclick="jotClearLocation(); return false;"></a>
|
||||
</div>
|
||||
<div id="profile-title-wrapper" class="jot-tool" style="display: none;" >
|
||||
<a id="profile-title" class="icon border article" title="$title" onclick="jotTitle(); return false;"></a>
|
||||
</div>
|
||||
|
||||
<div id="profile-jot-submit-wrapper" style="display:none;padding-left: 400px;">
|
||||
<input type="submit" id="profile-jot-submit" name="submit" value="$share" />
|
||||
<div id="profile-jot-perms" class="profile-jot-perms" style="display: $visitor;" >
|
||||
<a href="#profile-jot-acl-wrapper" id="jot-perms-icon" class="icon $lockstate sharePerms" title="$permset"></a>$bang</div>
|
||||
</div>
|
||||
|
||||
<div id="profile-jot-plugin-wrapper" style="display: none;">
|
||||
$jotplugins
|
||||
</div>
|
||||
<div id="profile-jot-tools-end"></div>
|
||||
|
||||
<div style="display: none;">
|
||||
<div id="profile-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;">
|
||||
$acl
|
||||
<hr style="clear:both"/>
|
||||
<div id="profile-jot-email-label">$emailcc</div><input type="text" name="emailcc" id="profile-jot-email" title="$emtitle" />
|
||||
<div id="profile-jot-email-end"></div>
|
||||
$jotnets
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="profile-jot-end"></div>
|
||||
</form>
|
||||
</div>
|
Before Width: | Height: | Size: 237 B |
|
@ -1,25 +0,0 @@
|
|||
|
||||
<form action="" method="post" >
|
||||
<input type="hidden" name="auth-params" value="login" />
|
||||
<div id="login-name-wrapper">
|
||||
<label for="login-name" id="label-login-name">$namelabel</label>
|
||||
<input type="text" maxlength="60" name="openid_url" class="$classname" id="login-name" value="" />
|
||||
</div>
|
||||
<div id="login-name-end" ></div>
|
||||
<div id="login-password-wrapper">
|
||||
<label for="login-password" id="label-login-password">$passlabel</label>
|
||||
<input type="password" maxlength="60" name="password" id="login-password" value="" />
|
||||
</div>
|
||||
<div id="login-password-end"></div>
|
||||
<div id="login-submit-wrapper" >
|
||||
<input type="submit" name="submit" id="login-submit-button" value="$login" />
|
||||
<a href="lostpass" title="$lostpass" id="lost-password-link" >$lostlink</a>
|
||||
</div>
|
||||
<div id="login-submit-end"></div>
|
||||
<div id="login-extra-links">
|
||||
<div id="login-extra-filler"> </div>
|
||||
$register_html
|
||||
</div>
|
||||
<div id="login-extra-end"></div>
|
||||
</form>
|
||||
|
Before Width: | Height: | Size: 236 B |
|
@ -1,7 +0,0 @@
|
|||
<h3>$messages</h3>
|
||||
|
||||
<ul class="tabs-wrapper">
|
||||
<li><a href="message" class="tabs">$inbox</a></li>
|
||||
<li><a href="message/sent" class="tabs">$outbox</a></li>
|
||||
<li><a href="message/new" class="tabs">$new</a></li>
|
||||
</ul>
|
Before Width: | Height: | Size: 276 B |
|
@ -1,55 +0,0 @@
|
|||
<nav>
|
||||
$langselector
|
||||
|
||||
<span id="banner">$banner</span>
|
||||
|
||||
<div id="notifications">
|
||||
{{ if $nav.network }}<a id="net-update" class="nav-ajax-update" href="$nav.network.0" title="$nav.network.1"></a>{{ endif }}
|
||||
{{ if $nav.home }}<a id="home-update" class="nav-ajax-update" href="$nav.home.0" title="$nav.home.1"></a>{{ endif }}
|
||||
{{ if $nav.notifications }}<a id="notify-update" class="nav-ajax-update" href="$nav.notifications.0" title="$nav.notifications.1"></a>{{ endif }}
|
||||
{{ if $nav.messages }}<a id="mail-update" class="nav-ajax-update" href="$nav.messages.0" title="$nav.messages.1"></a>{{ endif }}
|
||||
</div>
|
||||
|
||||
<div id="user-menu" >
|
||||
<a id="user-menu-label" onclick="openClose('user-menu-popup'); return false" href="$nav.home.0">$sitelocation</a>
|
||||
|
||||
<ul id="user-menu-popup"
|
||||
onmouseover="if (typeof tmenu != 'undefined') clearTimeout(tmenu); openMenu('user-menu-popup')"
|
||||
onmouseout="tmenu=setTimeout('closeMenu(\'user-menu-popup\');',200)">
|
||||
|
||||
{{ if $nav.register }}<li><a id="nav-register-link" class="nav-commlink $nav.register.2" href="$nav.register.0" title="$nav.register.1">$nav.register.1</a></li>{{ endif }}
|
||||
|
||||
{{ if $nav.home }}<li><a id="nav-home-link" class="nav-commlink $nav.home.2" href="$nav.home.0">$nav.home.1</a></li>{{ endif }}
|
||||
|
||||
{{ if $nav.network }}<li><a id="nav-network-link" class="nav-commlink $nav.network.2" href="$nav.network.0">$nav.network.1</a></li>{{ endif }}
|
||||
|
||||
{{ if $nav.community }}
|
||||
<li><a id="nav-community-link" class="nav-commlink $nav.community.2" href="$nav.community.0" title="$nav.community.3" >$nav.community.1</a></li>
|
||||
{{ endif }}
|
||||
|
||||
<li><a id="nav-search-link" class="nav-link $nav.search.2" href="$nav.search.0" title="$nav.search.1">$nav.search.1</a></li>
|
||||
<li><a id="nav-directory-link" class="nav-link $nav.directory.2" href="$nav.directory.0" title="$nav.directory.1">$nav.directory.1</a></li>
|
||||
{{ if $nav.apps }}<li><a id="nav-apps-link" class="nav-link $nav.apps.2" href="$nav.apps.0" title="$nav.apps.1">$nav.apps.1</a></li>{{ endif }}
|
||||
|
||||
{{ if $nav.notifications }}<li><a id="nav-notify-link" class="nav-commlink nav-sep $nav.notifications.2" href="$nav.notifications.0">$nav.notifications.1</a></li>{{ endif }}
|
||||
{{ if $nav.messages }}<li><a id="nav-messages-link" class="nav-commlink $nav.messages.2" href="$nav.messages.0">$nav.messages.1</a></li>{{ endif }}
|
||||
{{ if $nav.contacts }}<li><a id="nav-contacts-link" class="nav-commlink $nav.contacts.2" href="$nav.contacts.0">$nav.contacts.1</a></li>{{ endif }}
|
||||
|
||||
{{ if $nav.profiles }}<li><a id="nav-profiles-link" class="nav-commlink nav-sep $nav.profiles.2" href="$nav.profiles.0">$nav.profiles.1</a></li>{{ endif }}
|
||||
{{ if $nav.settings }}<li><a id="nav-settings-link" class="nav-commlink $nav.settings.2" href="$nav.settings.0">$nav.settings.1</a></li>{{ endif }}
|
||||
|
||||
{{ if $nav.manage }}<li><a id="nav-manage-link" class="nav-commlink $nav.manage.2" href="$nav.manage.0">$nav.manage.1</a></li>{{ endif }}
|
||||
|
||||
{{ if $nav.admin }}<li><a id="nav-admin-link" class="nav-commlink $nav.admin.2" href="$nav.admin.0">$nav.admin.1</a></li>{{ endif }}
|
||||
|
||||
<li><a id="nav-help-link" class="nav-link $nav.help.2" href="$nav.help.0" title="$nav.help.1">$nav.help.1</a></li>
|
||||
|
||||
{{ if $nav.login }}<li><a id="nav-login-link" class="nav-link $nav.login.2" href="$nav.login.0" title="$nav.login.1">$nav.login.1</a></li> {{ endif }}
|
||||
{{ if $nav.logout }}<li><a id="nav-logout-link" class="nav-commlink nav-sep $nav.logout.2" href="$nav.logout.0">$nav.logout.1</a></li> {{ endif }}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</nav>
|
||||
|
Before Width: | Height: | Size: 891 B |
Before Width: | Height: | Size: 6.1 KiB |
|
@ -1,40 +0,0 @@
|
|||
<div id="live-display"></div>
|
||||
<h3><a href="$album.0">$album.1</a></h3>
|
||||
|
||||
<div id="photo-edit-link-wrap">
|
||||
{{ if $tools }}
|
||||
<a id="photo-edit-link" href="$tools.edit.0">$tools.edit.1</a>
|
||||
-
|
||||
<a id="photo-toprofile-link" href="$tools.profile.0">$tools.profile.1</a>
|
||||
{{ endif }}
|
||||
{{ if $lock }} - <img src="images/lock_icon.gif" class="lockview" alt="$lock" onclick="lockview(event,'photo$id');" /> {{ endif }}
|
||||
</div>
|
||||
|
||||
<div id="photo-photo">
|
||||
{{ if $prevlink }}<div id="photo-prev-link"><a href="$prevlink.0">$prevlink.1</a></div>{{ endif }}
|
||||
<a href="$photo.href" title="$photo.title"><img src="$photo.src" /></a>
|
||||
{{ if $nextlink }}<div id="photo-next-link"><a href="$nextlink.0">$nextlink.1</a></div>{{ endif }}
|
||||
</div>
|
||||
|
||||
<div id="photo-photo-end"></div>
|
||||
<div id="photo-caption" >$desc</div>
|
||||
{{ if $tags }}
|
||||
<div id="in-this-photo-text">$tags.0</div>
|
||||
<div id="in-this-photo">$tags.1</div>
|
||||
{{ endif }}
|
||||
{{ if $tags.2 }}<div id="tag-remove"><a href="$tags.2">$tags.3</a></div>{{ endif }}
|
||||
|
||||
{{ if $edit }}$edit{{ endif }}
|
||||
|
||||
{{ if $likebuttons }}
|
||||
<div id="photo-like-div">
|
||||
$likebuttons
|
||||
$like
|
||||
$dislike
|
||||
</div>
|
||||
{{ endif }}
|
||||
|
||||
$comments
|
||||
|
||||
$paginate
|
||||
|
Before Width: | Height: | Size: 766 B |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 853 B |
|
@ -1,11 +0,0 @@
|
|||
|
||||
<div class="profile-listing" >
|
||||
<div class="profile-listing-photo-wrapper" >
|
||||
<a href="profiles/$id" class="profile-listing-edit-link"><img class="profile-listing-photo" id="profile-listing-photo-$id" src="$photo" alt="$alt" /></a>
|
||||
</div>
|
||||
<div class="profile-listing-photo-end"></div>
|
||||
<div class="profile-listing-name" id="profile-listing-name-$id"><a href="profiles/$id" class="profile-listing-edit-link" >$profile_name</a></div>
|
||||
<div class='profile-visible'>$visible</div>
|
||||
</div>
|
||||
<div class="profile-listing-end"></div>
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
|
||||
<div class="tabs-wrapper" >
|
||||
<a href="$url" id="profile-tab-status-link" class="tabs {{if $activetab==posts}}active{{endif}}" >$status</a>
|
||||
<a href="$url?tab=profile" id="profile-tab-profile-link" class="tabs {{if $activetab==profile}}active{{endif}}" >$profile</a>
|
||||
<a href="$phototab" id="profile-tab-photos-link" class="tabs {{if $activetab==photos}}active{{endif}}" >$photos</a>
|
||||
{{ if $events }}<a href="events" id="profile-tab-events-link" class="tabs {{if $activetab==events}}active{{endif}}" >$events</a>{{ endif }}
|
||||
{{ if $notes }}<a href="notes" id="profile-tab-notes-link" class="tabs {{if $activetab==notes}}active{{endif}}" >$notes</a>{{ endif }}
|
||||
<div class="tabs-end"></div>
|
||||
</div>
|
|
@ -1,45 +0,0 @@
|
|||
<div class="vcard">
|
||||
<div class="fn label">$profile.name</div>
|
||||
|
||||
|
||||
{{ if $pdesc }}<div class="title">$profile.pdesc</div>{{ endif }}
|
||||
<div id="profile-photo-wrapper"><img class="photo" width="175" height="175" src="$profile.photo" alt="$profile.name"></div>
|
||||
|
||||
|
||||
|
||||
{{ if $location }}
|
||||
<dl class="location"><dt class="location-label">$location</dt>
|
||||
<dd class="adr">
|
||||
{{ if $profile.address }}<div class="street-address">$profile.address</div>{{ endif }}
|
||||
<span class="city-state-zip">
|
||||
<span class="locality">$profile.locality</span>{{ if $profile.locality }}, {{ endif }}
|
||||
<span class="region">$profile.region</span>
|
||||
<span class="postal-code">$profile.postal-code</span>
|
||||
</span>
|
||||
{{ if $profile.country-name }}<span class="country-name">$profile.country-name</span>{{ endif }}
|
||||
</dd>
|
||||
</dl>
|
||||
{{ endif }}
|
||||
|
||||
{{ if $gender }}<dl class="mf"><dt class="gender-label">$gender</dt> <dd class="x-gender">$profile.gender</dd></dl>{{ endif }}
|
||||
|
||||
{{ if $profile.pubkey }}<div class="key" style="display:none;">$profile.pubkey</div>{{ endif }}
|
||||
|
||||
{{ if $marital }}<dl class="marital"><dt class="marital-label"><span class="heart">♥</span>$marital</dt><dd class="marital-text">$profile.marital</dd></dl>{{ endif }}
|
||||
|
||||
{{ if $homepage }}<dl class="homepage"><dt class="homepage-label">$homepage</dt><dd class="homepage-url"><a href="$profile.homepage" target="external-link">$profile.homepage</a></dd></dl>{{ endif }}
|
||||
|
||||
{{ inc diaspora_vcard.tpl }}{{ endinc }}
|
||||
|
||||
<div id="profile-extra-links">
|
||||
<ul>
|
||||
{{ if $connect }}
|
||||
<li><a id="dfrn-request-link" href="dfrn_request/$profile.nickname">$connect</a></li>
|
||||
{{ endif }}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
$contact_block
|
||||
|
||||
|
Before Width: | Height: | Size: 808 B |
|
@ -1,48 +0,0 @@
|
|||
<div class="wall-item-outside-wrapper$indent" id="wall-item-outside-wrapper-$id" >
|
||||
<div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
|
||||
<div class="wall-item-info" id="wall-item-info-$id">
|
||||
<div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$id"
|
||||
onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')"
|
||||
onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
|
||||
<a href="$profile_url" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
|
||||
<img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" style="height: 80px; width: 80px;" alt="$name" /></a>
|
||||
<span onclick="openClose('wall-item-photo-menu-$id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$id">menu</span>
|
||||
<div class="wall-item-photo-menu" id="wall-item-photo-menu-$id">
|
||||
<ul>
|
||||
$item_photo_menu
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wall-item-photo-end"></div>
|
||||
<div class="wall-item-location" id="wall-item-location-$id">{{ if $location }}<span class="icon globe"></span>$location {{ endif }}</div>
|
||||
</div>
|
||||
<div class="wall-item-lock-wrapper">
|
||||
{{ if $lock }}<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="$lock" onclick="lockview(event,$id);" /></div>
|
||||
{{ else }}<div class="wall-item-lock"></div>{{ endif }}
|
||||
</div>
|
||||
<div class="wall-item-tools" id="wall-item-tools-$id">
|
||||
<div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$id" >
|
||||
{{ if $drop.dropping }}<a href="item/drop/$id" onclick="return confirmDelete();" class="icon drophide" title="$drop.delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{ endif }}
|
||||
</div>
|
||||
{{ if $drop.dropping }}<input type="checkbox" onclick="checkboxhighlight(this);" title="$drop.select" class="item-select" name="itemselected[]" value="$id" />{{ endif }}
|
||||
<div class="wall-item-delete-end"></div>
|
||||
</div>
|
||||
<div class="wall-item-content" id="wall-item-content-$id" >
|
||||
<div class="wall-item-title" id="wall-item-title-$id">$title</div>
|
||||
<div class="wall-item-title-end"></div>
|
||||
<div class="wall-item-body" id="wall-item-body-$id" >$body</div>
|
||||
</div>
|
||||
<div class="wall-item-author">
|
||||
<a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
|
||||
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="wall-item-conv" id="wall-item-conv-$id" >
|
||||
{{ if $conv }}<a href='$conv.href' id='context-$id' title='$conv.title'>$conv.title</a>{{ endif }}
|
||||
</div>
|
||||
<div class="wall-item-wrapper-end"></div>
|
||||
</div>
|
||||
|
||||
<div class="wall-item-outside-wrapper-end$indent" ></div>
|
Before Width: | Height: | Size: 2.1 KiB |
|
@ -1,7 +1,33 @@
|
|||
@import url('../testbubble/style.css');
|
||||
|
||||
.icon {
|
||||
background-image: url('dbicons.png');
|
||||
}
|
||||
|
||||
body {
|
||||
background: #000000;
|
||||
color: #dddddd;
|
||||
}
|
||||
|
||||
.info-message {
|
||||
color: #444444;
|
||||
}
|
||||
|
||||
#id_openid_url {
|
||||
background: url(../testbubble/login-bg.gif) no-repeat #ffffff;
|
||||
background-position: 0 50%;
|
||||
padding-left: 18px;
|
||||
width: 385px;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.vevent, .eventcal {
|
||||
color: #000000;
|
||||
}
|
||||
.event-list-date {
|
||||
color: #DDDDDD;
|
||||
}
|
||||
|
||||
.fortunate {
|
||||
color: #8888FF !important;
|
||||
}
|
4
view/theme/darkbubble/theme.php
Normal file
|
@ -0,0 +1,4 @@
|
|||
<?php
|
||||
$a->theme_info = array(
|
||||
'extends' => 'testbubble',
|
||||
);
|
Before Width: | Height: | Size: 664 B |
|
@ -1,75 +0,0 @@
|
|||
<!-- test -->
|
||||
<div class="wall-item-outside-wrapper$indent" id="wall-item-outside-wrapper-$id" >
|
||||
<div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
|
||||
<div class="wall-item-info" id="wall-item-info-$id">
|
||||
<div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$id"
|
||||
onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')"
|
||||
onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
|
||||
<a href="$profile_url" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
|
||||
<img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" style="height: 80px; width: 80px;" alt="$name" />
|
||||
</a>
|
||||
<span onclick="openClose('wall-item-photo-menu-$id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$id">menu</span>
|
||||
<div class="wall-item-photo-menu" id="wall-item-photo-menu-$id">
|
||||
<ul>
|
||||
$item_photo_menu
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wall-item-photo-end"></div>
|
||||
<div class="wall-item-location" id="wall-item-location-$id">{{ if $location }}<span class="icon globe"></span>$location {{ endif }}</div>
|
||||
</div>
|
||||
<div class="wall-item-lock-wrapper">
|
||||
{{ if $lock }}<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="$lock" onclick="lockview(event,$id);" /></div>
|
||||
{{ else }}<div class="wall-item-lock"></div>{{ endif }}
|
||||
</div>
|
||||
<div class="wall-item-content" id="wall-item-content-$id" >
|
||||
<div class="wall-item-title" id="wall-item-title-$id">$title</div>
|
||||
<div class="wall-item-title-end"></div>
|
||||
<div class="wall-item-body" id="wall-item-body-$id" >$body</div>
|
||||
</div>
|
||||
|
||||
<div class="wall-item-tools" id="wall-item-tools-$id">
|
||||
{{ if $vote }}
|
||||
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
|
||||
<a href="#" class="icon like" title="$vote.like.0" onclick="dolike($id,'like'); return false"></a>
|
||||
<a href="#" class="icon dislike" title="$vote.dislike.0" onclick="dolike($id,'dislike'); return false"></a>
|
||||
{{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title=""$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
|
||||
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
||||
</div>
|
||||
{{ endif }}
|
||||
{{ if $plink }}
|
||||
<div class="wall-item-links-wrapper"><a href="$plink.href" title="$plink.title" target="external-link" class="icon remote-link"></a></div>
|
||||
{{ endif }}
|
||||
{{ if $edpost }}
|
||||
<a class="editpost icon pencil" href="$edpost.0" title="$edpost.1"></a>
|
||||
{{ endif }}
|
||||
|
||||
{{ if $star }}
|
||||
<a href="#" id="starred-$id" onclick="dostar($id); return false;" class="star-item icon $isstarred" title="$star.toggle"></a>
|
||||
{{ endif }}
|
||||
|
||||
<div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$id" >
|
||||
{{ if $drop.dropping }}<a href="item/drop/$id" onclick="return confirmDelete();" class="icon drophide" title="$drop.delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{ endif }}
|
||||
</div>
|
||||
{{ if $drop.dropping }}<input type="checkbox" onclick="checkboxhighlight(this);" title="$drop.select" class="item-select" name="itemselected[]" value="$id" />{{ endif }}
|
||||
<div class="wall-item-delete-end"></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="wall-item-author">
|
||||
<a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
|
||||
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="wall-item-wrapper-end"></div>
|
||||
<div class="wall-item-like" id="wall-item-like-$id">$like</div>
|
||||
<div class="wall-item-dislike" id="wall-item-dislike-$id">$dislike</div>
|
||||
<div class="wall-item-comment-wrapper" >
|
||||
$comment
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wall-item-outside-wrapper-end$indent" ></div>
|
||||
|
|
@ -1,74 +0,0 @@
|
|||
<div class="wall-item-outside-wrapper$indent wallwall" id="wall-item-outside-wrapper-$id" >
|
||||
<div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
|
||||
<div class="wall-item-info wallwall" id="wall-item-info-$id">
|
||||
<div class="wall-item-photo-wrapper wwto" id="wall-item-ownerphoto-wrapper-$id" >
|
||||
<a href="$owner_url" title="$olinktitle" class="wall-item-photo-link" id="wall-item-ownerphoto-link-$id">
|
||||
<img src="$owner_photo" class="wall-item-photo$osparkle" id="wall-item-ownerphoto-$id" style="height: 80px; width: 80px;" alt="$owner_name" /></a>
|
||||
</div>
|
||||
<div class="wall-item-arrowphoto-wrapper" ><img src="images/larrow.gif" alt="$wall" /></div>
|
||||
<div class="wall-item-photo-wrapper wwfrom" id="wall-item-photo-wrapper-$id"
|
||||
onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')"
|
||||
onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
|
||||
<a href="$profile_url" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
|
||||
<img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" style="height: 80px; width: 80px;" alt="$name" /></a>
|
||||
<span onclick="openClose('wall-item-photo-menu-$id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$id">menu</span>
|
||||
<div class="wall-item-photo-menu" id="wall-item-photo-menu-$id">
|
||||
<ul>
|
||||
$item_photo_menu
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="wall-item-photo-end"></div>
|
||||
<div class="wall-item-location" id="wall-item-location-$id">{{ if $location }}<span class="icon globe"></span>$location {{ endif }}</div>
|
||||
</div>
|
||||
<div class="wall-item-lock-wrapper">
|
||||
{{ if $lock }}<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="$lock" onclick="lockview(event,$id);" /></div>
|
||||
{{ else }}<div class="wall-item-lock"></div>{{ endif }}
|
||||
</div>
|
||||
<div class="wall-item-tools" id="wall-item-tools-$id">
|
||||
{{ if $vote }}
|
||||
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
|
||||
<a href="#" class="icon like" title="$vote.like.0" onclick="dolike($id,'like'); return false"></a>
|
||||
<a href="#" class="icon dislike" title="$vote.dislike.0" onclick="dolike($id,'dislike'); return false"></a>
|
||||
{{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title=""$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
|
||||
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
||||
</div>
|
||||
{{ endif }}
|
||||
{{ if $plink }}
|
||||
<div class="wall-item-links-wrapper"><a href="$plink.href" title="$plink.title" target="external-link" class="icon remote-link"></a></div>
|
||||
{{ endif }}
|
||||
{{ if $edpost }}
|
||||
<a class="editpost icon pencil" href="$edpost.0" title="$edpost.1"></a>
|
||||
{{ endif }}
|
||||
|
||||
{{ if $star }}
|
||||
<a href="#" id="starred-$id" onclick="dostar($id); return false;" class="star-item icon $isstarred" title="$star.toggle"></a>
|
||||
{{ endif }}
|
||||
|
||||
<div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$id" >
|
||||
{{ if $drop.dropping }}<a href="item/drop/$id" onclick="return confirmDelete();" class="icon drophide" title="$drop.delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{ endif }}
|
||||
</div>
|
||||
{{ if $drop.dropping }}<input type="checkbox" onclick="checkboxhighlight(this);" title="$drop.select" class="item-select" name="itemselected[]" value="$id" />{{ endif }}
|
||||
<div class="wall-item-delete-end"></div>
|
||||
</div>
|
||||
<div class="wall-item-content" id="wall-item-content-$id" >
|
||||
<div class="wall-item-title" id="wall-item-title-$id">$title</div>
|
||||
<div class="wall-item-title-end"></div>
|
||||
<div class="wall-item-body" id="wall-item-body-$id" >$body</div>
|
||||
</div>
|
||||
<div class="wall-item-author">
|
||||
<a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
|
||||
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wall-item-wrapper-end"></div>
|
||||
<div class="wall-item-like" id="wall-item-like-$id">$like</div>
|
||||
<div class="wall-item-dislike" id="wall-item-dislike-$id">$dislike</div>
|
||||
<div class="wall-item-comment-wrapper" >
|
||||
$comment
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wall-item-outside-wrapper-end$indent" ></div>
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
{{ endif }}
|
||||
{{ if $nav.notifications }}
|
||||
<a id="nav-notify-link" class="nav-commlink $nav.notifications.2 $sel.notifications" href="$nav.notifications.0" title="$nav.notifications.3" >$nav.notifications.1</a>
|
||||
<span id="notify-update" class="nav-ajax-left"></span>
|
||||
<span id="intro-update" class="nav-ajax-left"></span>
|
||||
{{ endif }}
|
||||
{{ if $nav.messages }}
|
||||
<a id="nav-messages-link" class="nav-commlink $nav.messages.2" href="$nav.messages.0 $sel.messages" title="$nav.messages.3" >$nav.messages.1</a>
|
||||
|
|
|
@ -1559,6 +1559,8 @@ input#dfrn-url {
|
|||
display:block!important;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#acl-wrapper {
|
||||
width: 690px;
|
||||
float:left;
|
||||
|
@ -1917,6 +1919,10 @@ a.mail-list-link {
|
|||
float: left;
|
||||
width: 175px;
|
||||
}
|
||||
|
||||
#photos-upload-noshare {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
#photos-upload-existing-album-text {
|
||||
float: left;
|
||||
width: 175px;
|
||||
|
|
|
@ -67,3 +67,8 @@
|
|||
@NoticeBackgroundColor: #511919;
|
||||
|
||||
@ThreadBackgroundColor: #f6f7f8;
|
||||
|
||||
@CommentBoxEmptyColor: @Grey3;
|
||||
@CommentBoxEmptyBorderColor: @Grey3;
|
||||
@CommentBoxFullColor: @Grey5;
|
||||
@CommentBoxFullBorderColor: @Grey5;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
/* global */
|
||||
body {
|
||||
font-family: Liberation Sans,helvetica,arial,clean,sans-serif;
|
||||
font-size: 10px;
|
||||
font-size: 12px;
|
||||
background-color: @BodyBackground;
|
||||
color: @BodyColor;
|
||||
margin: 50px 0px 0px 0px;
|
||||
|
@ -324,18 +324,17 @@ section {
|
|||
.wall-item-ago { padding-right: 40px; }
|
||||
.wall-item-name { font-weight: bold; }
|
||||
|
||||
.wall-item-actions-author { float: left; width: 25%; margin-top: 0.5em; }
|
||||
.wall-item-actions-social { float: left; width: 50%; margin-top: 0.5em;
|
||||
.wall-item-actions-author { float: left; width: 20em; margin-top: 0.5em; }
|
||||
.wall-item-actions-social { float: left; margin-top: 0.5em;
|
||||
a { margin-right: 3em; }
|
||||
}
|
||||
.wall-item-actions-tools { float: right; width: 25%;
|
||||
.wall-item-actions-tools { float: right; width: 15%;
|
||||
a { float: right; }
|
||||
input { float: right; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.wall-item-container.comment {
|
||||
margin-top: 50px;
|
||||
.wall-item-photo { width: 32px; height: 32px; margin-left: 16px;}
|
||||
|
@ -345,3 +344,34 @@ section {
|
|||
}
|
||||
.wall-item-links { padding-left: 12px; }
|
||||
}
|
||||
|
||||
.wall-item-comment-wrapper {
|
||||
margin: 30px 2em 2em 60px;
|
||||
.comment-edit-photo { display: none; }
|
||||
textarea {
|
||||
height: 1em; width: 100%; font-size: 10px;
|
||||
color: @CommentBoxEmptyColor;
|
||||
border: 1px solid @CommentBoxEmptyBorderColor;
|
||||
padding:0.3em;
|
||||
}
|
||||
.comment-edit-text-full {
|
||||
font-size: 14px;
|
||||
height: 4em;
|
||||
color: @CommentBoxFullColor;
|
||||
border: 1px solid @CommentBoxFullBorderColor;
|
||||
}
|
||||
}
|
||||
|
||||
#profile-jot-wrapper {
|
||||
width: 100%;
|
||||
margin: 0px 2em 20px 0px;
|
||||
|
||||
|
||||
}
|
||||
.profile-jot-text {
|
||||
height: 1em; width: 100%; font-size: 10px;
|
||||
color: @CommentBoxEmptyColor;
|
||||
border: 1px solid @CommentBoxEmptyBorderColor;
|
||||
padding:0.3em;
|
||||
}
|
||||
|
||||
|
|
|
@ -153,7 +153,7 @@
|
|||
/* global */
|
||||
body {
|
||||
font-family: Liberation Sans, helvetica, arial, clean, sans-serif;
|
||||
font-size: 10px;
|
||||
font-size: 12px;
|
||||
background-color: #ffffff;
|
||||
color: #2d2d2d;
|
||||
margin: 50px 0px 0px 0px;
|
||||
|
@ -574,12 +574,11 @@ section {
|
|||
}
|
||||
.wall-item-container .wall-item-actions-author {
|
||||
float: left;
|
||||
width: 25%;
|
||||
width: 20em;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
.wall-item-container .wall-item-actions-social {
|
||||
float: left;
|
||||
width: 50%;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
.wall-item-container .wall-item-actions-social a {
|
||||
|
@ -587,7 +586,7 @@ section {
|
|||
}
|
||||
.wall-item-container .wall-item-actions-tools {
|
||||
float: right;
|
||||
width: 25%;
|
||||
width: 15%;
|
||||
}
|
||||
.wall-item-container .wall-item-actions-tools a {
|
||||
float: right;
|
||||
|
@ -610,3 +609,35 @@ section {
|
|||
.wall-item-container.comment .wall-item-links {
|
||||
padding-left: 12px;
|
||||
}
|
||||
.wall-item-comment-wrapper {
|
||||
margin: 30px 2em 2em 60px;
|
||||
}
|
||||
.wall-item-comment-wrapper .comment-edit-photo {
|
||||
display: none;
|
||||
}
|
||||
.wall-item-comment-wrapper textarea {
|
||||
height: 1em;
|
||||
width: 100%;
|
||||
font-size: 10px;
|
||||
color: #999999;
|
||||
border: 1px solid #999999;
|
||||
padding: 0.3em;
|
||||
}
|
||||
.wall-item-comment-wrapper .comment-edit-text-full {
|
||||
font-size: 14px;
|
||||
height: 4em;
|
||||
color: #2d2d2d;
|
||||
border: 1px solid #2d2d2d;
|
||||
}
|
||||
#profile-jot-wrapper {
|
||||
width: 100%;
|
||||
margin: 0px 2em 20px 0px;
|
||||
}
|
||||
.profile-jot-text {
|
||||
height: 1em;
|
||||
width: 100%;
|
||||
font-size: 10px;
|
||||
color: #999999;
|
||||
border: 1px solid #999999;
|
||||
padding: 0.3em;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<h3>$messages</h3>
|
||||
|
||||
<ul class="tabs-wrapper">
|
||||
<li><a href="message" class="tabs">$inbox</a></li>
|
||||
<li><a href="message/sent" class="tabs">$outbox</a></li>
|
||||
<li><a href="message/new" class="tabs">$new</a></li>
|
||||
<li><a href="message" class="tabs button {{if $activetab==inbox}}active{{endif}}">$inbox</a></li>
|
||||
<li><a href="message/sent" class="tabs button {{if $activetab==sent}}active{{endif}}">$outbox</a></li>
|
||||
<li><a href="message/new" class="tabs button {{if $activetab==new}}active{{endif}}">$new</a></li>
|
||||
</ul>
|
||||
|
|
10
view/theme/testbubble/match.tpl
Normal file
|
@ -0,0 +1,10 @@
|
|||
<div class="profile-match-wrapper">
|
||||
<div class="profile-match-photo">
|
||||
<a href="$url">
|
||||
<img src="$photo" alt="$name" />
|
||||
</a>
|
||||
</div>
|
||||
<span><a href="$url">$name</a> is interested in:<br />$tags</span>
|
||||
<div class="profile-match-break"></div>
|
||||
<div class="profile-match-end"></div>
|
||||
</div>
|
|
@ -4,10 +4,13 @@
|
|||
<span id="banner">$banner</span>
|
||||
|
||||
<div id="notifications">
|
||||
{{ if $nav.network }}<a id="net-update" class="nav-ajax-update" href="$nav.network.0" title="$nav.network.1"></a>{{ endif }}
|
||||
{{ if $nav.home }}<a id="home-update" class="nav-ajax-update" href="$nav.home.0" title="$nav.home.1"></a>{{ endif }}
|
||||
{{ if $nav.notifications }}<a id="notify-update" class="nav-ajax-update" href="$nav.notifications.0" title="$nav.notifications.1"></a>{{ endif }}
|
||||
{{ if $nav.messages }}<a id="mail-update" class="nav-ajax-update" href="$nav.messages.0" title="$nav.messages.1"></a>{{ endif }}
|
||||
{{ if $nav.network }}<a rel="#nav-notifications-menu" id="net-update" class="nav-ajax-update" href="$nav.network.0" title="$nav.network.1"></a>{{ endif }}
|
||||
{{ if $nav.home }}<a rel="#nav-notifications-menu" id="home-update" class="nav-ajax-update" href="$nav.home.0" title="$nav.home.1"></a>{{ endif }}
|
||||
{{ if $nav.notifications }}<a rel="#nav-notifications-menu" id="intro-update" class="nav-ajax-update" href="$nav.notifications.0" title="$nav.notifications.1"></a>{{ endif }}
|
||||
{{ if $nav.messages }}<a rel="#nav-notifications-menu" id="mail-update" class="nav-ajax-update" href="$nav.messages.0" title="$nav.messages.1"></a>{{ endif }}
|
||||
<ul id="nav-notifications-menu" class="menu-popup">
|
||||
<li class="empty">$emptynotifications</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="user-menu" >
|
||||
|
@ -48,8 +51,8 @@
|
|||
{{ if $nav.logout }}<li><a id="nav-logout-link" class="nav-commlink nav-sep $nav.logout.2" href="$nav.logout.0">$nav.logout.1</a></li> {{ endif }}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</nav>
|
||||
|
||||
<ul id="nav-notifications-template" style="display:none;" rel="template">
|
||||
<a href="{0}"><li>{2} <span class="notif-when">{3}</span></li></a>
|
||||
</ul>
|
||||
|
|
8
view/theme/testbubble/photo_album.tpl
Normal file
|
@ -0,0 +1,8 @@
|
|||
<div class="photo-album-image-wrapper" id="photo-album-image-wrapper-$id">
|
||||
<a href="$photolink" class="photo-album-photo-link" id="photo-album-photo-link-$id" title="$phototitle">
|
||||
<img src="$imgsrc" alt="$imgalt" title="$phototitle" class="photo-album-photo lframe resize" id="photo-album-photo-$id" />
|
||||
</div>
|
||||
<p class='caption'>$desc</p>
|
||||
</a>
|
||||
</div>
|
||||
<div class="photo-album-image-wrapper-end"></div>
|
8
view/theme/testbubble/photo_top.tpl
Normal file
|
@ -0,0 +1,8 @@
|
|||
|
||||
<div class="photo-top-image-wrapper lframe" id="photo-top-image-wrapper-$id">
|
||||
<div id="photo-album-wrapper-inner">
|
||||
<a href="$photolink" class="photo-top-photo-link" id="photo-top-photo-link-$id" title="$phototitle"><img src="$imgsrc" alt="$imgalt" title="$phototitle" class="photo-top-photo" id="photo-top-photo-$id" /></a>
|
||||
</div>
|
||||
<div class="photo-top-album-name"><a href="$albumlink" class="photo-top-album-link" title="$albumalt" >$albumname</a></div>
|
||||
</div>
|
||||
<div class="photo-top-image-wrapper-end"></div>
|
|
@ -7,14 +7,11 @@
|
|||
*/
|
||||
/* ========== */
|
||||
/* = Colors
|
||||
|
||||
Red links - #b20202
|
||||
Red link hover - #db0503
|
||||
Red Gradients (buttons and other gradients) - #b20202 and #d60808
|
||||
|
||||
Grey/body text - #626262
|
||||
Grey Gradients (buttons and other gradients) - #bdbdbd and #a2a2a2
|
||||
|
||||
Dark Grey Gradients - #7c7d7b and #555753
|
||||
|
||||
You can switch out the colors of the header, buttons and links by using a find and replace in your text editor.
|
||||
|
@ -134,7 +131,7 @@ section {
|
|||
.mframe {
|
||||
padding: 5px;
|
||||
background-color: #efefef;
|
||||
border: 2px dotted #eeeeee;
|
||||
border: 2px solid #dddddd;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
box-shadow: 3px 3px 4px #959494;
|
||||
|
@ -364,7 +361,7 @@ ul#user-menu-popup li a.nav-sep { border-top: 1px solid #989898; border-style:in
|
|||
#notifications {
|
||||
height: 32px;
|
||||
position: absolute;
|
||||
top:10px; left: 650px;
|
||||
top:10px; left: 40%;
|
||||
}
|
||||
.nav-ajax-update {
|
||||
width: 44px;
|
||||
|
@ -376,12 +373,12 @@ ul#user-menu-popup li a.nav-sep { border-top: 1px solid #989898; border-style:in
|
|||
padding-top: 0.5em;
|
||||
float: left;
|
||||
padding-left: 11px;
|
||||
display: none;
|
||||
/*display: none;*/
|
||||
}
|
||||
#net-update { background-position: 0px 0px; }
|
||||
#mail-update { background-position: 0px -42px; }
|
||||
#notify-update { background-position: 0px -84px; }
|
||||
#home-update { background-position: 0px -126px; }
|
||||
#net-update { background-position: 0px -126px; }
|
||||
#mail-update { background-position: 0px -40px; }
|
||||
#intro-update { background-position: 0px -84px; }
|
||||
#home-update { background-position: 0px 0px; }
|
||||
|
||||
#lang-select-icon {
|
||||
cursor: pointer;
|
||||
|
@ -452,14 +449,10 @@ aside a{
|
|||
font-variant:small-caps;
|
||||
}
|
||||
|
||||
.marital {
|
||||
font-size: 1em;
|
||||
font-variant:small-caps;
|
||||
}
|
||||
|
||||
.homepage-label {
|
||||
font-size: 1em;
|
||||
font-variant:small-caps;
|
||||
.vcard dd {
|
||||
font-size: 12px;
|
||||
font-variant: normal;
|
||||
-webkit-margin-start: 10px;
|
||||
}
|
||||
|
||||
.vcard .fn {
|
||||
|
@ -848,10 +841,16 @@ profile-jot-banner-wrapper {
|
|||
/* ========= */
|
||||
|
||||
.wall-item-outside-wrapper {
|
||||
margin-top: 50px;
|
||||
max-width: 83%;
|
||||
border-bottom: 1px solid #dedede;
|
||||
margin-top: 20px;
|
||||
padding-right: 10px;
|
||||
padding-left: 12px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.wall-item-outside-wrapper-end { clear: both;}
|
||||
.wall-item-content-wrapper { position: relative; max-width: 95%; }
|
||||
.wall-item-content-wrapper { position: relative; max-width: 100%; }
|
||||
.wall-item-photo-menu { display: none;}
|
||||
.wall-item-photo-menu-button {
|
||||
display:none;
|
||||
|
@ -897,12 +896,13 @@ profile-jot-banner-wrapper {
|
|||
}
|
||||
|
||||
.wall-item-outside-wrapper.comment .wall-item-tools {
|
||||
margin: 5px 5px 10px 60px;
|
||||
margin: 5px 5px 10px 70px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.wall-item-like-buttons {
|
||||
float: left;
|
||||
padding-left: 10px;
|
||||
}
|
||||
.wall-item-like-buttons a.icon {
|
||||
float: left;
|
||||
|
@ -931,9 +931,13 @@ profile-jot-banner-wrapper {
|
|||
float: left;
|
||||
}
|
||||
.wall-item-title { font-size: 1.2em; font-weight: bold;}
|
||||
.wall-item-body { margin-left: 140px; padding-right: 20px; }
|
||||
.wall-item-body {
|
||||
margin-left: 140px;
|
||||
padding-right: 10px;
|
||||
max-width: 85%;
|
||||
}
|
||||
|
||||
.wall-item-body p {
|
||||
max-width: 600px;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
.wall-item-lock-wrapper { float: right; }
|
||||
|
@ -943,6 +947,7 @@ profile-jot-banner-wrapper {
|
|||
clear: left;
|
||||
font-size: 0.9em;
|
||||
margin: 4px 0px 0px 140px;
|
||||
padding-left: 10px;
|
||||
font-variant:small-caps;
|
||||
}
|
||||
|
||||
|
@ -1049,11 +1054,7 @@ profile-jot-banner-wrapper {
|
|||
.icon.drop,
|
||||
.icon.drophide { float: left; }
|
||||
#item-delete-selected { overflow: auto; width: 100%;}
|
||||
.wall-item-outside-wrapper {
|
||||
max-width: 83%;
|
||||
border-bottom: 1px solid #dedede;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
|
||||
/* ============ */
|
||||
/* = Comments = */
|
||||
|
@ -1062,11 +1063,11 @@ profile-jot-banner-wrapper {
|
|||
.ccollapse-wrapper {
|
||||
font-size: 0.9em;
|
||||
color: #898989;
|
||||
margin-left: 80px;
|
||||
margin-left: 60px;
|
||||
font-variant:small-caps;
|
||||
}
|
||||
|
||||
.wall-item-outside-wrapper.comment { margin-left: 80px; }
|
||||
.wall-item-outside-wrapper.comment { margin-left: 70px; }
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo {
|
||||
width: 40px!important;
|
||||
height: 40px!important;
|
||||
|
@ -1079,7 +1080,13 @@ profile-jot-banner-wrapper {
|
|||
background-position: 35px center;
|
||||
}
|
||||
.wall-item-outside-wrapper.comment .wall-item-info { width: 60px; }
|
||||
.wall-item-outside-wrapper.comment .wall-item-body { margin-left: 60px; max-width: 85%;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-body {
|
||||
margin-left: 70px;
|
||||
max-width: 85%;
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.wall-item-outside-wrapper.comment .wall-item-author { margin-left: 60px;}
|
||||
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo-menu {
|
||||
|
@ -1140,11 +1147,14 @@ profile-jot-banner-wrapper {
|
|||
}
|
||||
|
||||
.wall-item-body code {
|
||||
border-color: #CCCCCC;
|
||||
border-style: solid;
|
||||
font-family: Courier, monospace;
|
||||
white-space: pre;
|
||||
display: block;
|
||||
overflow: auto;
|
||||
border: 1px solid #cccccc;
|
||||
border-width: 1px 1px 1px 10px;
|
||||
display: block;
|
||||
padding-left: 10px;
|
||||
padding-left: 10px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
/* =========== */
|
||||
|
@ -1242,23 +1252,44 @@ div[id$="wrapper"] br { clear: left; }
|
|||
}
|
||||
|
||||
.profile-match-wrapper {
|
||||
width: 300px;
|
||||
width: 82%;
|
||||
padding: 5px;
|
||||
margin-bottom:10px;
|
||||
margin-left: 20px;
|
||||
background-color: #f6f6f6;
|
||||
border: 1px solid #dddddd;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
box-shadow: 3px 3px 4px #959494;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.profile-match-end {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.profile-match-photo {
|
||||
float: left;
|
||||
margin-right: 10px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
/* ========== */
|
||||
/* = Photos = */
|
||||
/* ========== */
|
||||
|
||||
#side-bar-photos-albums h3:before {
|
||||
content: url("photography.png");
|
||||
padding-right: 10px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
#side-bar-photos-albums li {
|
||||
font-size: 1.2em;
|
||||
font-size: 14px;
|
||||
font-variant: none;
|
||||
text-align: left;
|
||||
padding-left: 20px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
#photo-top-links {
|
||||
|
@ -1286,15 +1317,31 @@ div[id$="wrapper"] br { clear: left; }
|
|||
background-color: #b20202;
|
||||
}
|
||||
|
||||
.photo-album-image-wrapper,
|
||||
.photo-top-image-wrapper {
|
||||
.photo-album-image-wrapper {
|
||||
float: left;
|
||||
margin: 0px 10px 10px 0px;
|
||||
padding-bottom: 30px;
|
||||
position:relative;
|
||||
}
|
||||
|
||||
#photo-photo { max-width: 100% }
|
||||
.photo-top-image-wrapper {
|
||||
float: left;
|
||||
width: 180px;
|
||||
height: 180px;
|
||||
margin: 0px 10px 10px 0px;
|
||||
padding-bottom: 30px;
|
||||
position:relative;
|
||||
}
|
||||
|
||||
#photo-album-wrapper-inner {
|
||||
position: relative;
|
||||
float: left;
|
||||
width: 180px;
|
||||
height: 180px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#photo-photo { max-width: 85%; height: auto; }
|
||||
#photo-photo img { max-width: 100% }
|
||||
|
||||
.photo-top-image-wrapper a:hover,
|
||||
|
@ -1303,7 +1350,7 @@ div[id$="wrapper"] br { clear: left; }
|
|||
border-bottom: 0px;
|
||||
}
|
||||
|
||||
.photo-top-photo,
|
||||
.photo-top-photo {}
|
||||
.photo-album-photo {}
|
||||
|
||||
.photo-top-album-name {
|
||||
|
@ -1502,16 +1549,6 @@ input#photo_edit_form {
|
|||
margin-left: 190px;
|
||||
}
|
||||
|
||||
#side-bar-photos-albums h3:before {
|
||||
content: url("photography.png");
|
||||
padding-right: 10px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
#side-bar-photos-albums li {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
#photo-album-edit-wrapper {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
@ -1587,16 +1624,15 @@ input#photo_edit_form {
|
|||
font-size: 1em;
|
||||
}
|
||||
|
||||
|
||||
#prvmail-submit-wrapper { margin-top: 10px; }
|
||||
#prvmail-submit {
|
||||
float: right;
|
||||
margin-top: 0px;
|
||||
margin-right: 90px;
|
||||
margin-right: 0px;
|
||||
}
|
||||
|
||||
#prvmail-upload {
|
||||
margin-left: 90px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
#prvmail-submit-wrapper > div {
|
||||
|
@ -1637,7 +1673,7 @@ margin-left: 90px;
|
|||
float: right;
|
||||
clear: block;
|
||||
display: inline;
|
||||
font-size: 0.8em;
|
||||
font-size: 0.9em;
|
||||
padding-left: 10px;
|
||||
font-stretch:ultra-condensed;
|
||||
font-variant:small-caps;
|
||||
|
@ -1654,11 +1690,15 @@ margin-left: 90px;
|
|||
color: #626262;
|
||||
}
|
||||
|
||||
.mail-list-delete-wrapper { float: left; margin-right:550px; }
|
||||
.mail-list-delete-wrapper { float: right;}
|
||||
.mail-list-outside-wrapper-end {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.mail-conv-outside-wrapper {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.mail-conv-sender {float: left; margin: 0px 5px 5px 0px; }
|
||||
.mail-conv-sender-photo {
|
||||
width: 64px;
|
||||
|
@ -1675,13 +1715,20 @@ margin-left: 90px;
|
|||
.mail-conv-detail {
|
||||
width: 500px;
|
||||
padding: 30px;
|
||||
padding-bottom: 10px;
|
||||
margin-left: 20px;
|
||||
margin-bottom: 0px;
|
||||
vertical-align: middle;
|
||||
margin: auto;
|
||||
border: 1px solid #dddddd;
|
||||
}
|
||||
.mail-conv-break { display: none; border: none;}
|
||||
.mail-conv-delete-wrapper { margin-top: 5px; width: 650px; text-align: right; }
|
||||
.mail-conv-delete-wrapper { padding-top: 10px; width: 510px; text-align: right; }
|
||||
|
||||
#prvmail-subject {
|
||||
font-weight: bold;
|
||||
border: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
/* ================= */
|
||||
/* = Notifications = */
|
||||
|
@ -2061,56 +2108,19 @@ margin-left: 90px;
|
|||
padding-top: 10px;
|
||||
}
|
||||
|
||||
#profile-tab-status-link:hover {
|
||||
#profile-tab-status-link {
|
||||
border: 0px;
|
||||
padding: 5px 10px 5px 10px;
|
||||
font-style: bold;
|
||||
color: #efefef;
|
||||
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #b20202), color-stop(1, #d60808) );
|
||||
background:-moz-linear-gradient( center top, #b20202 5%, #d60808 100% );
|
||||
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#b20202', endColorstr='#d60808');
|
||||
background-color:#b20202;
|
||||
}
|
||||
|
||||
#profile-tab-status-link:active {
|
||||
border: 0px;
|
||||
padding: 5px 10px 5px 10px;
|
||||
font-style: bold;
|
||||
background-color: #b20202;
|
||||
position:relative;
|
||||
top:1px;
|
||||
}
|
||||
|
||||
#profile-tab-status-link a {
|
||||
color: #efefef;
|
||||
}
|
||||
|
||||
#uexport-link a {
|
||||
color: #efefef;
|
||||
}
|
||||
|
||||
#profile-tab-profile-link:hover {
|
||||
#profile-tab-profile-link {
|
||||
border: 0px;
|
||||
padding: 5px 10px 5px 10px;
|
||||
font-style: bold;
|
||||
color: #efefef;
|
||||
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #b20202), color-stop(1, #d60808) );
|
||||
background:-moz-linear-gradient( center top, #b20202 5%, #d60808 100% );
|
||||
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#b20202', endColorstr='#d60808');
|
||||
background-color:#b20202;
|
||||
}
|
||||
|
||||
#profile-tab-profile-link:active {
|
||||
border: 0px;
|
||||
padding: 5px 10px 5px 10px;
|
||||
font-style: bold;
|
||||
background-color: #b20202;
|
||||
position:relative;
|
||||
top:1px;
|
||||
}
|
||||
|
||||
#profile-tab-profile-link a {
|
||||
color: #efefef;
|
||||
}
|
||||
|
||||
#uexport-link {
|
||||
|
@ -2255,7 +2265,7 @@ margin-left: 90px;
|
|||
background-color:#bdbdbd;
|
||||
-moz-border-radius:5px;
|
||||
-webkit-border-radius:5px;
|
||||
border-radius:5px;
|
||||
border-radius:5px;*/
|
||||
}
|
||||
|
||||
.group-delete-wrapper:hover {
|
||||
|
@ -2602,7 +2612,9 @@ tr {
|
|||
.admin.link {
|
||||
list-style-position: inside;
|
||||
font-size: 1em;
|
||||
padding: 3px;
|
||||
padding: 5px;
|
||||
width: 100px;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
#adminpage dl {
|
||||
|
@ -2990,3 +3002,61 @@ a.active {
|
|||
padding: 5px 10px 5px 10px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
/* notifications popup menu */
|
||||
.nav-notify {
|
||||
display: none;
|
||||
position: absolute;
|
||||
font-size: 10px;
|
||||
padding: 1px 3px;
|
||||
top: 0px;
|
||||
right: -10px;
|
||||
min-width: 15px;
|
||||
text-align: right;
|
||||
}
|
||||
.nav-notify.show {
|
||||
display: block;
|
||||
}
|
||||
ul.menu-popup {
|
||||
position: absolute;
|
||||
display: none;
|
||||
width: 10em;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
list-style: none;
|
||||
z-index: 100000;
|
||||
top: 40px;
|
||||
}
|
||||
#nav-notifications-menu {
|
||||
width: 320px;
|
||||
max-height: 400px;
|
||||
overflow-y: scroll;
|
||||
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #797979), color-stop(1, #898988) );
|
||||
background:-moz-linear-gradient( center top, #797979 5%, #898988 100% );
|
||||
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#797979', endColorstr='#898988');
|
||||
background-color:#a2a2a2;
|
||||
-moz-border-radius:0px 0px 5px 5px;
|
||||
-webkit-border-radius:0px 0px 5px 5px;
|
||||
border-radius:0px 0px 5px 5px;
|
||||
border: 1px solid #9A9A9A;
|
||||
border-top: none;
|
||||
-moz-box-shadow: 5px 5px 10px #242424;
|
||||
-webkit-box-shadow: 5px 5px 10px #242424;
|
||||
box-shadow: 5px 5px 10px #242424;
|
||||
|
||||
}
|
||||
#nav-notifications-menu .contactname { font-weight: bold; font-size: 0.9em; }
|
||||
#nav-notifications-menu img { float: left; margin-right: 5px; }
|
||||
#nav-notifications-menu .notif-when { font-size: 0.8em; display: block; }
|
||||
#nav-notifications-menu li {
|
||||
padding: 7px 10px 7px 10px;
|
||||
word-wrap:normal;
|
||||
border-bottom: 1px solid #626262;
|
||||
}
|
||||
|
||||
#nav-notifications-menu li:hover {
|
||||
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #b20202), color-stop(1, #d60808) );
|
||||
background:-moz-linear-gradient( center top, #b20202 5%, #d60808 100% );
|
||||
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#b20202', endColorstr='#d60808');
|
||||
background-color:#b20202;
|
||||
}
|
||||
|
|
|
@ -66,4 +66,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wall-item-comment-wrapper" >
|
||||
$comment
|
||||
</div>
|
||||
|
|
|
@ -1,58 +1,3 @@
|
|||
{#<div class="wall-item-outside-wrapper$indent wallwall" id="wall-item-outside-wrapper-$id" >
|
||||
<div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
|
||||
<div class="wall-item-info wallwall" id="wall-item-info-$id">
|
||||
<div class="wall-item-photo-wrapper mframe wwto" id="wall-item-ownerphoto-wrapper-$id" >
|
||||
<a href="$owner_url" target="redir" title="$olinktitle" class="wall-item-photo-link" id="wall-item-ownerphoto-link-$id">
|
||||
<img src="$owner_photo" class="wall-item-photo$osparkle" id="wall-item-ownerphoto-$id" style="height: 80px; width: 80px;" alt="$owner_name" /></a>
|
||||
</div>
|
||||
<div class="wall-item-arrowphoto-wrapper" ><img src="images/larrow.gif" alt="$wall" /></div>
|
||||
<div class="wall-item-photo-wrapper mframe wwfrom" id="wall-item-photo-wrapper-$id"
|
||||
onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')"
|
||||
onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
|
||||
<a href="$profile_url" target="redir" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
|
||||
<img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" style="height: 80px; width: 80px;" alt="$name" /></a>
|
||||
<span onclick="openClose('wall-item-photo-menu-$id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$id">menu</span>
|
||||
<div class="wall-item-photo-menu" id="wall-item-photo-menu-$id">
|
||||
<ul>
|
||||
$item_photo_menu
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="wall-item-photo-end"></div>
|
||||
<div class="wall-item-wrapper" id="wall-item-wrapper-$id" >
|
||||
$lock
|
||||
<div class="wall-item-location" id="wall-item-location-$id">$location</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wall-item-author">
|
||||
<a href="$profile_url" target="redir" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a> $to <a href="$owner_url" target="redir" title="$olinktitle" class="wall-item-name-link"><span class="wall-item-name$osparkle" id="wall-item-ownername-$id">$owner_name</span></a> $vwall<br />
|
||||
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
|
||||
</div>
|
||||
<div class="wall-item-content" id="wall-item-content-$id" >
|
||||
<div class="wall-item-title" id="wall-item-title-$id">$title</div>
|
||||
<div class="wall-item-title-end"></div>
|
||||
<div class="wall-item-body" id="wall-item-body-$id" >$body</div>
|
||||
</div>
|
||||
<div class="wall-item-tools" id="wall-item-tools-$id">
|
||||
$vote
|
||||
$plink
|
||||
$edpost
|
||||
$star
|
||||
$drop
|
||||
</div>
|
||||
</div>
|
||||
<div class="wall-item-wrapper-end"></div>
|
||||
<div class="wall-item-like" id="wall-item-like-$id">$like</div>
|
||||
<div class="wall-item-dislike" id="wall-item-dislike-$id">$dislike</div>
|
||||
<div class="wall-item-comment-separator"></div>
|
||||
<div class="wall-item-comment-wrapper" >
|
||||
$comment
|
||||
</div>
|
||||
|
||||
<div class="wall-item-outside-wrapper-end$indent" ></div>
|
||||
</div> #}
|
||||
|
||||
{{ if $indent }}{{ else }}
|
||||
<div class="wall-item-decor">
|
||||
<span class="icon s22 star $isstarred" id="starred-$id" title="$star.starred">$star.starred</span>
|
||||
|
@ -63,12 +8,12 @@
|
|||
<div class="wall-item-container $indent">
|
||||
<div class="wall-item-item">
|
||||
<div class="wall-item-info">
|
||||
<div class="wall-item-photo-wrapper wwto" id="wall-item-ownerphoto-wrapper-$id" >
|
||||
<div class="wall-item-photo-wrapper mframe wwto" id="wall-item-ownerphoto-wrapper-$id" >
|
||||
<a href="$owner_url" target="redir" title="$olinktitle" class="wall-item-photo-link" id="wall-item-ownerphoto-link-$id">
|
||||
<img src="$owner_photo" class="wall-item-photo$osparkle" id="wall-item-ownerphoto-$id" alt="$owner_name" />
|
||||
</a>
|
||||
</div>
|
||||
<div class="wall-item-photo-wrapper wwfrom"
|
||||
<div class="wall-item-photo-wrapper mframe wwfrom"
|
||||
onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')"
|
||||
onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
|
||||
<a href="$profile_url" target="redir" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
|
||||
|
@ -128,3 +73,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wall-item-comment-wrapper" >
|
||||
$comment
|
||||
</div>
|
||||
|
|
134
zot.txt
|
@ -1,7 +1,7 @@
|
|||
This is the Zot! social communications protocol.
|
||||
|
||||
Specification revision: 1
|
||||
15 September 2011
|
||||
2 October 2011
|
||||
|
||||
Mike Macgirvin
|
||||
This specification is public domain.
|
||||
|
@ -78,16 +78,21 @@ zot:env
|
|||
*******
|
||||
|
||||
This consists of RFC822-style header fields representing the sender and
|
||||
recipient(s). Example:
|
||||
recipient(s). Line lengths have no defined limit and RFC822 continuation
|
||||
lines are not supported. If an inbound server is not able to process an
|
||||
envelope or post due to size constraints, it SHOULD return a
|
||||
"413 Entity too large" HTTP response.
|
||||
|
||||
From: bob@example.com
|
||||
Sender: bob@example.com
|
||||
To: alice@example.com
|
||||
Example:
|
||||
|
||||
Both "From:" and "Sender:" MUST be provided, and represent a webfinger
|
||||
address of the author and sender respectively. The webfinger address for
|
||||
the From address MUST contain a discoverable salmon public key that
|
||||
is needed to verify the enclosed salmon data. Sender is used to indicate
|
||||
Z-From: zot:bob@example.com
|
||||
Z-Sender: zot:bob@example.com
|
||||
Z-To: zot:alice@example.com
|
||||
|
||||
Both "Z-From:" and "Z-Sender:" MUST be provided, and represent a single
|
||||
webfinger address of the author and sender respectively. The webfinger
|
||||
address for the From address MUST contain a discoverable salmon public key
|
||||
which is needed to verify the enclosed salmon data. Sender is used to indicate
|
||||
the webfinger identity responsible for transmitting this message. From
|
||||
indicates the message author.
|
||||
|
||||
|
@ -95,46 +100,92 @@ In web-based social systems, a reply to a message SHOULD be conveyed to all of
|
|||
the original message participants. Only the author of the original message
|
||||
may know all the recipients (such as those contained in Bcc: elements). The
|
||||
author of a message always provides 'From'. They MUST duplicate this
|
||||
information as 'Sender'.
|
||||
information as 'Sender' when posting a followup message.
|
||||
|
||||
A reply to a given message MUST be sent to the original From address, and MAY
|
||||
be sent to any additional addresses in the recipient list. The original author
|
||||
MUST send the reply to all known recipients of the original message, with
|
||||
their webfinger identity as Sender, and the comment/reply author as From.
|
||||
A reply to a given message MUST be sent to the From address of the original
|
||||
post, and MAY be sent to any additional addresses in the recipient list. The
|
||||
original post author MUST send the reply to all known recipients of the
|
||||
original message, with their webfinger identity as Sender, and the
|
||||
comment/reply author as From.
|
||||
|
||||
Receiving agents SHOULD validate the From identity as the signer of the salmon
|
||||
magic envelope, and MAY reject it. They SHOULD also verify the Sender signature
|
||||
of the zot packet if it is different than the salmon signature. They MAY
|
||||
reject the message if the Sender is not allowed in their "friend list", or if
|
||||
they do not have a suitable relationship with the Sender, or if either
|
||||
signature fails to validate.
|
||||
signature fails to validate. Rejected messages for one of these reasons SHOULD
|
||||
be indicated with a "400 Bad Request" HTTP response.
|
||||
|
||||
|
||||
To: *
|
||||
Z-To: *
|
||||
|
||||
indicates a public message with no specifically enumerated recipients.
|
||||
|
||||
The fields To:, Cc:, and/or Bcc: MAY be present. At least one recipient field
|
||||
MUST be present. These fields may use the entire syntax specified by RFC822,
|
||||
for example:
|
||||
The fields Z-To: and/or Z-Bcc: MAY be present. At least one recipient field
|
||||
MUST be present.
|
||||
|
||||
To: "Bob Smith" <bob@example.com>, "Alice Jones" <alice@example.com>
|
||||
Z-To: zot:bob@example.com, zot:alice@example.com, mailto:dave@example.com
|
||||
Z-Bcc: zot:https://example.com/profile/richard
|
||||
|
||||
is a valid entry. A zot envelope is UTF-8 encoded, which differs from RFC822.
|
||||
The host component MUST be US-ASCII, with punycode translation of
|
||||
internationalised domain names applied.
|
||||
are valid entries. Adresses are comma separated and individual entries MUST NOT
|
||||
contain commas. There MAY be any number of ASCII space characters between
|
||||
entries for legibility. Header lines are terminated with a linefeed character
|
||||
(ASCII 0x0A).
|
||||
|
||||
The entire envelope is then encrypted using alg with env_key and env_iv and
|
||||
This specification provides the following protocol address prefixes
|
||||
for use in Z-To: or Z-Bcc: elements:
|
||||
|
||||
zot: - normal zot delivery using webfinger or LRDD resolvable address
|
||||
dfrn: - legacy DFRN mode delivery using webfinger or LRDD resovable address
|
||||
ostatus: - normal OStatus delivery using webfinger or LRDD resovable address
|
||||
diaspora: - Diaspora network delivery using webfinger address
|
||||
facebook: - Facebook profile page URL
|
||||
twitter: - Twitter personal page URL without AJAX '#!' fragment
|
||||
mailto: - email RFC822/ESMTP address
|
||||
|
||||
Examples:
|
||||
|
||||
twitter:http://twitter.com/bjensen
|
||||
facebook:http://facebook.com/profile.php?id=000000001
|
||||
|
||||
Foreign protocol addresses which have not been defined in this specification
|
||||
or future revisions of this specification and which are unknown to the
|
||||
recipient delivery process MAY be ignored.
|
||||
|
||||
In cases where an address may contain either a webfinger or LRDD address, the
|
||||
webfinger address SHOULD be used preferentially.
|
||||
|
||||
|
||||
Z-Bcc:
|
||||
******
|
||||
|
||||
The Z-Bcc element may contain one or more addresses which are hidden from end
|
||||
user presentation. A zot receiving system MUST NOT store or allow for
|
||||
the display of the Bcc information. Implementations which require extreme
|
||||
privacy SHOULD send individual posts to each of the Bcc: recipients containing
|
||||
only a single address. They MAY send all Bcc: posts using bulk delivery,
|
||||
however this may have privacy implications as there is no guarantee a
|
||||
receiving system will not log, store, or otherwise reveal the contents of the
|
||||
Bcc recipient list.
|
||||
|
||||
Z-To: addresses MAY be shown to an end user.
|
||||
|
||||
|
||||
Envelope encryption
|
||||
*******************
|
||||
|
||||
|
||||
The entire envelope is encrypted using alg with env_key and env_iv and
|
||||
base64url encoded for transmission.
|
||||
|
||||
The zot envelope MAY include remote addresses. A zot delivery agent MUST parse
|
||||
all addresses and determine whether a delivery address to the current endpoint
|
||||
is valid. This may be the result of:
|
||||
The zot envelope MAY include remote addresses. A zot inbound delivery agent
|
||||
MUST parse the envelope and determine whether a delivery address to the
|
||||
current endpoint is valid. This may be the result of:
|
||||
|
||||
1. An address contains the public message wildcard '*'
|
||||
|
||||
2. The current endpoint is a personal endpoint and one of the recipients
|
||||
listed in the To:, Cc:, or Bcc: addresses matches the webfinger address of
|
||||
listed in the Z-To: or Z-Bcc: addresses matches the webfinger address of
|
||||
the "owner" of the endpoint.
|
||||
|
||||
3. The current endpoint is a bulk delivery endpoint. The bulk delivery
|
||||
|
@ -203,15 +254,12 @@ This specification is subject to change. The current version which is in
|
|||
effect at a given site may be noted by XRD properties. The following
|
||||
properties MUST be present in the XRD providing the relevant endpoint:
|
||||
|
||||
<Property xmlns:zot="http://purl.og/zot/1.0"
|
||||
type="http://purl.org/zot/1.0/version"
|
||||
zot:version="1" />
|
||||
<Property type="http://purl.org/zot/1.0/version">1</Property>
|
||||
<Property type="http://purl.org/zot/1.0/accept">application/atom+xml</Property>
|
||||
|
||||
<Property xmlns:zot="http://purl.og/zot/1.0"
|
||||
type="http://purl.org/zot/1.0/accept"
|
||||
zot:accept="application/atom+xml" />
|
||||
|
||||
Version is specified in this document and indicates the current revision.
|
||||
Version is an increasing non-zero integer value. There are no minor versions.
|
||||
Implementations MAY provide compatibility to multiple incompatible versions
|
||||
by using this version indication. The "accept" indicates a range of document
|
||||
content types which may be enclosed in the underlying salmon magic envelope.
|
||||
|
@ -219,7 +267,8 @@ We anticipate this specification will in the future allow for a close variant
|
|||
of "message/rfc822" and which may include MIME. This may also be used to
|
||||
embed alternate message formats and protocols such as
|
||||
"application/x-diaspora+xml". If a delivery agent is unable to provide any
|
||||
acceptable data format, the delivery MUST be terminated/cancelled.
|
||||
acceptable data format to the remote system, the delivery to that system MUST
|
||||
be terminated/cancelled.
|
||||
|
||||
Foreign Messages
|
||||
****************
|
||||
|
@ -233,9 +282,18 @@ systems MAY reject foreign messages.
|
|||
|
||||
|
||||
|
||||
**********************
|
||||
* Zid authentication *
|
||||
**********************
|
||||
|
||||
|
||||
*******************************
|
||||
* Zid (Zot-ID) authentication *
|
||||
*******************************
|
||||
|
||||
This section of the document is considered separate from the delivery
|
||||
specification precding it and represents a different protocol, which is
|
||||
currently incomplete. This will be split off into another document in the
|
||||
future, but is presented here as a synergistic component of the Zot network
|
||||
model.
|
||||
|
||||
|
||||
URLs may be present within a zot message which refer to private and/or
|
||||
protected resources. Zid uses OpenID to gain access to these protected
|
||||
|
|