Merge remote branch 'upstream/master'

This commit is contained in:
zottel 2012-05-01 08:21:12 +02:00
commit 2e2bb5e8b0
85 changed files with 3724 additions and 2911 deletions

View file

@ -9,9 +9,9 @@ require_once('include/nav.php');
require_once('include/cache.php');
define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_VERSION', '2.3.1325' );
define ( 'FRIENDICA_VERSION', '2.3.1328' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
define ( 'DB_UPDATE_VERSION', 1139 );
define ( 'DB_UPDATE_VERSION', 1141 );
define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
@ -73,6 +73,14 @@ define ( 'HOOK_HOOK', 0);
define ( 'HOOK_FILE', 1);
define ( 'HOOK_FUNCTION', 2);
/**
* DB update return values
*/
define ( 'UPDATE_SUCCESS', 0);
define ( 'UPDATE_FAILED', 1);
/**
*
* page/profile types
@ -193,6 +201,8 @@ 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_JOIN', NAMESPACE_ACTIVITY_SCHEMA . 'join' );
define ( 'ACTIVITY_POST', NAMESPACE_ACTIVITY_SCHEMA . 'post' );
define ( 'ACTIVITY_UPDATE', NAMESPACE_ACTIVITY_SCHEMA . 'update' );
define ( 'ACTIVITY_TAG', NAMESPACE_ACTIVITY_SCHEMA . 'tag' );
@ -205,6 +215,7 @@ define ( 'ACTIVITY_OBJ_PHOTO', NAMESPACE_ACTIVITY_SCHEMA . 'photo' );
define ( 'ACTIVITY_OBJ_P_PHOTO', NAMESPACE_ACTIVITY_SCHEMA . 'profile-photo' );
define ( 'ACTIVITY_OBJ_ALBUM', NAMESPACE_ACTIVITY_SCHEMA . 'photo-album' );
define ( 'ACTIVITY_OBJ_EVENT', NAMESPACE_ACTIVITY_SCHEMA . 'event' );
define ( 'ACTIVITY_OBJ_GROUP', NAMESPACE_ACTIVITY_SCHEMA . 'group' );
define ( 'ACTIVITY_OBJ_TAGTERM', NAMESPACE_DFRN . '/tagterm' );
define ( 'ACTIVITY_OBJ_PROFILE', NAMESPACE_DFRN . '/profile' );
@ -658,32 +669,29 @@ if(! function_exists('check_config')) {
// call the specific update
// global $db;
// $db->excep(TRUE);
// try {
// $db->beginTransaction();
$func = 'update_' . $x;
$func($a);
// $db->commit();
// } catch(Exception $ex) {
// $db->rollback();
// //send the administrator an e-mail
// $email_tpl = get_intltext_template("update_fail_eml.tpl");
// $email_tpl = replace_macros($email_tpl, array(
// '$sitename' => $a->config['sitename'],
// '$siteurl' => $a->get_baseurl(),
// '$update' => $x,
// '$error' => $ex->getMessage()));
// $subject=sprintf(t('Update Error at %s'), $a->get_baseurl());
$retval = $func();
if($retval) {
//send the administrator an e-mail
$email_tpl = get_intltext_template("update_fail_eml.tpl");
$email_msg = replace_macros($email_tpl, array(
'$sitename' => $a->config['sitename'],
'$siteurl' => $a->get_baseurl(),
'$update' => $x,
'$error' => sprintf( t('Update %s failed. See error logs.'), $x)
));
$subject=sprintf(t('Update Error at %s'), $a->get_baseurl());
mail($a->config['admin_email'], $subject, $email_msg,
'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
. 'Content-type: text/plain; charset=UTF-8' . "\n"
. 'Content-transfer-encoding: 8bit' );
//try the logger
logger('CRITICAL: Update Failed: '. $x);
}
else
set_config('database','update_' . $x, 'success');
// mail($a->config['admin_email'], $subject, $text,
// 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
// . 'Content-type: text/plain; charset=UTF-8' . "\n"
// . 'Content-transfer-encoding: 8bit' );
// //try the logger
// logger('update failed: '.$ex->getMessage().EOL);
// }
// $db->excep(FALSE);
}
}
set_config('system','build', DB_UPDATE_VERSION);
@ -726,10 +734,11 @@ if(! function_exists('check_config')) {
if(! in_array($i['name'],$plugins_arr)) {
uninstall_plugin($i['name']);
}
else
else {
$installed_arr[] = $i['name'];
}
}
}
if(count($plugins_arr)) {
foreach($plugins_arr as $p) {
@ -1463,16 +1472,19 @@ if(! function_exists('profile_tabs')){
'label'=>t('Status'),
'url' => $url,
'sel' => ((!isset($tab)&&$a->argv[0]=='profile')?'active':''),
'title' => t('Status Messages and Posts'),
),
array(
'label' => t('Profile'),
'url' => $url.'/?tab=profile',
'sel' => ((isset($tab) && $tab=='profile')?'active':''),
'title' => t('Profile Details'),
),
array(
'label' => t('Photos'),
'url' => $a->get_baseurl() . '/photos/' . $nickname,
'sel' => ((!isset($tab)&&$a->argv[0]=='photos')?'active':''),
'title' => t('Photo Albums'),
),
);
@ -1481,11 +1493,13 @@ if(! function_exists('profile_tabs')){
'label' => t('Events'),
'url' => $a->get_baseurl() . '/events',
'sel' =>((!isset($tab)&&$a->argv[0]=='events')?'active':''),
'title' => t('Events and Calendar'),
);
$tabs[] = array(
'label' => t('Personal Notes'),
'url' => $a->get_baseurl() . '/notes',
'sel' =>((!isset($tab)&&$a->argv[0]=='notes')?'active':''),
'title' => t('Only You Can See This'),
);
}
@ -1505,6 +1519,12 @@ function get_my_url() {
return false;
}
function zrl_init(&$a) {
proc_run('php','include/gprobe.php',bin2hex(get_my_url()));
$arr = array('zrl' => get_my_url(), 'url' => $a->cmd);
call_hooks('zrl_init',$arr);
}
function zrl($s,$force = false) {
if(! strlen($s))
return $s;

View file

@ -16,9 +16,11 @@ CREATE TABLE IF NOT EXISTS `addon` (
`name` char(255) NOT NULL,
`version` char(255) NOT NULL,
`installed` tinyint(1) NOT NULL DEFAULT '0',
`hidden` tinyint(1) NOT NULL DEFAULT '0',
`timestamp` bigint(20) NOT NULL DEFAULT '0',
`plugin_admin` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
PRIMARY KEY (`id`),
KEY `hidden` (`hidden`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
@ -1019,6 +1021,7 @@ CREATE TABLE IF NOT EXISTS `user` (
`pwdreset` char(255) NOT NULL,
`maxreq` int(11) NOT NULL DEFAULT '10',
`expire` int(10) unsigned NOT NULL DEFAULT '0',
`account_removed` tinyint(1) NOT NULL DEFAULT '0',
`account_expired` tinyint(1) NOT NULL DEFAULT '0',
`account_expires_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`expire_notification_sent` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
@ -1036,7 +1039,8 @@ CREATE TABLE IF NOT EXISTS `user` (
KEY `blocked` (`blocked`),
KEY `verified` (`verified`),
KEY `unkmail` (`unkmail`),
KEY `cntunkmail` (`cntunkmail`)
KEY `cntunkmail` (`cntunkmail`),
KEY `account_removed` (`account_removed`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------

View file

@ -51,6 +51,21 @@ function user_remove($uid) {
function contact_remove($id) {
$r = q("select uid from contact where id = %d limit 1",
intval($id)
);
if((! count($r)) || (! intval($r[0]['uid'])))
return;
$archive = get_pconfig($r[0]['uid'], 'system','archive_removed_contacts');
if($archive) {
q("update contact set `archive` = 1, `network` = 'none', `writable` = 0 where id = %d limit 1",
intval($id)
);
return;
}
q("DELETE FROM `contact` WHERE `id` = %d LIMIT 1",
intval($id)
);

View file

@ -380,7 +380,7 @@
$nick = $name;
// Generating a random ID
if (!array_key_exists($nick, $usercache))
if (is_null($usercache[$nick]) or !array_key_exists($nick, $usercache))
$usercache[$nick] = mt_rand(2000000, 2100000);
$ret = array(

View file

@ -75,22 +75,28 @@ class dba {
if((! $this->db) || (! $this->connected))
return false;
$this->error = '';
if($this->mysqli)
$result = @$this->db->query($sql);
else
$result = @mysql_query($sql,$this->db);
if($this->mysqli) {
if($this->db->errno)
$this->error = $this->db->error;
}
elseif(mysql_errno($this->db))
$this->error = mysql_error($this->db);
if(strlen($this->error)) {
logger('dba: ' . $this->error);
}
if($this->debug) {
$mesg = '';
if($this->mysqli) {
if($this->db->errno)
logger('dba: ' . $this->db->error);
}
elseif(mysql_errno($this->db))
logger('dba: ' . mysql_error($this->db));
if($result === false)
$mesg = 'false';
elseif($result === true)
@ -102,7 +108,9 @@ class dba {
$mesg = mysql_num_rows($result) . ' results' . EOL;
}
$str = 'SQL = ' . printable($sql) . EOL . 'SQL returned ' . $mesg . EOL;
$str = 'SQL = ' . printable($sql) . EOL . 'SQL returned ' . $mesg
. (($this->error) ? ' error: ' . $this->error : '')
. EOL;
logger('dba: ' . $str );
}
@ -114,9 +122,9 @@ class dba {
*/
if($result === false) {
logger('dba: ' . printable($sql) . ' returned false.');
logger('dba: ' . printable($sql) . ' returned false.' . "\n" . $this->error);
if(file_exists('dbfail.out'))
file_put_contents('dbfail.out', datetime_convert() . "\n" . printable($sql) . ' returned false' . "\n", FILE_APPEND);
file_put_contents('dbfail.out', datetime_convert() . "\n" . printable($sql) . ' returned false' . "\n" . $this->error . "\n", FILE_APPEND);
}
if(($result === true) || ($result === false))

60
include/gprobe.php Normal file
View file

@ -0,0 +1,60 @@
<?php
require_once("boot.php");
require_once('include/Scrape.php');
function gprobe_run($argv, $argc){
global $a, $db;
if(is_null($a)) {
$a = new App;
}
if(is_null($db)) {
@include(".htconfig.php");
require_once("dba.php");
$db = new dba($db_host, $db_user, $db_pass, $db_data);
unset($db_host, $db_user, $db_pass, $db_data);
};
require_once('include/session.php');
require_once('include/datetime.php');
load_config('config');
load_config('system');
$a->set_baseurl(get_config('system','url'));
load_hooks();
if($argc != 2)
return;
$url = hex2bin($argv[1]);
$r = q("select * from gcontact where nurl = '%s' limit 1",
dbesc(normalise_link($url))
);
if(count($r))
return;
$arr = probe_url($url);
if(count($arr) && x($arr,'network') && $arr['network'] === NETWORK_DFRN) {
q("insert into `gcontact` (`name`,`url`,`nurl`,`photo`)
values ( '%s', '%s', '%s', '%s') ",
dbesc($arr['name']),
dbesc($arr['url']),
dbesc(normalise_link($arr['url'])),
dbesc($arr['photo'])
);
}
return;
}
if (array_search(__file__,get_included_files())===0){
gprobe_run($argv,$argc);
killme();
}

View file

@ -2227,8 +2227,8 @@ function local_delivery($importer,$data) {
logger('local_delivery: received remote comment');
$is_like = false;
// remote reply to our post. Import and then notify everybody else.
$datarray = get_atom_elements($feed,$item);
$datarray = get_atom_elements($feed,$item);
$r = q("SELECT `id`, `uid`, `last-child`, `edited`, `body` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
dbesc($item_id),
@ -2266,14 +2266,22 @@ function local_delivery($importer,$data) {
// return 0;
// }
// our user with $importer['importer_uid'] is the owner
$own = q("select name,url,thumb from contact where uid = %d and self = 1 limit 1",
intval($importer['importer_uid'])
);
$datarray['type'] = 'remote-comment';
$datarray['wall'] = 1;
$datarray['parent-uri'] = $parent_uri;
$datarray['uid'] = $importer['importer_uid'];
$datarray['owner-name'] = $r[0]['name'];
$datarray['owner-link'] = $r[0]['url'];
$datarray['owner-avatar'] = $r[0]['thumb'];
$datarray['owner-name'] = $own[0]['name'];
$datarray['owner-link'] = $own[0]['url'];
$datarray['owner-avatar'] = $own[0]['thumb'];
$datarray['contact-id'] = $importer['id'];
if(($datarray['verb'] === ACTIVITY_LIKE) || ($datarray['verb'] === ACTIVITY_DISLIKE)) {
$is_like = true;
$datarray['type'] = 'activity';
@ -2291,25 +2299,33 @@ function local_delivery($importer,$data) {
if(($datarray['verb'] === ACTIVITY_TAG) && ($datarray['object-type'] === ACTIVITY_OBJ_TAGTERM)) {
$xo = parse_xml_string($datarray['object'],false);
$xt = parse_xml_string($datarray['target'],false);
if(($xt->type == ACTIVITY_OBJ_NOTE) && ($xt->id == $r[0]['uri'])) {
if(($xt->type == ACTIVITY_OBJ_NOTE) && ($xt->id)) {
// fetch the parent item
$tagp = q("select * from item where uri = '%s' and uid = %d limit 1",
dbesc($xt->id),
intval($importer['importer_uid'])
);
if(! count($tagp))
continue;
// extract tag, if not duplicate, and this user allows tags, add to parent item
if($xo->id && $xo->content) {
$newtag = '#[url=' . $xo->id . ']'. $xo->content . '[/url]';
if(! (stristr($r[0]['tag'],$newtag))) {
if(! (stristr($tagp[0]['tag'],$newtag))) {
$i = q("SELECT `blocktags` FROM `user` where `uid` = %d LIMIT 1",
intval($importer['importer_uid'])
);
if(count($i) && ! ($i[0]['blocktags'])) {
q("UPDATE item SET tag = '%s' WHERE id = %d LIMIT 1",
dbesc($r[0]['tag'] . (strlen($r[0]['tag']) ? ',' : '') . $newtag),
intval($r[0]['id'])
if(count($i) && ! intval($i[0]['blocktags'])) {
q("UPDATE item SET tag = '%s', `edited` = '%s' WHERE id = %d LIMIT 1",
dbesc($tagp[0]['tag'] . (strlen($tagp[0]['tag']) ? ',' : '') . $newtag),
intval($tagp[0]['id']),
dbesc(datetime_convert())
);
}
}

519
include/onepoll.php Normal file
View file

@ -0,0 +1,519 @@
<?php
require_once("boot.php");
function onepoll_run($argv, $argc){
global $a, $db;
if(is_null($a)) {
$a = new App;
}
if(is_null($db)) {
@include(".htconfig.php");
require_once("dba.php");
$db = new dba($db_host, $db_user, $db_pass, $db_data);
unset($db_host, $db_user, $db_pass, $db_data);
};
require_once('include/session.php');
require_once('include/datetime.php');
require_once('library/simplepie/simplepie.inc');
require_once('include/items.php');
require_once('include/Contact.php');
require_once('include/email.php');
require_once('include/socgraph.php');
require_once('include/pidfile.php');
load_config('config');
load_config('system');
$a->set_baseurl(get_config('system','url'));
load_hooks();
logger('onepoll: start');
$abandon_days = intval(get_config('system','account_abandon_days'));
if($abandon_days < 1)
$abandon_days = 0;
$manual_id = 0;
$generation = 0;
$hub_update = false;
$force = false;
$restart = false;
if(($argc > 1) && (intval($argv[1])))
$contact_id = intval($argv[1]);
if(! $contact_id) {
logger('onepoll: no contact');
return;
}
$d = datetime_convert();
// Only poll from those with suitable relationships,
// 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`.* FROM `contact`
WHERE ( `rel` = %d OR `rel` = %d ) AND `poll` != ''
AND NOT `network` IN ( '%s', '%s' )
AND `contact`.`id` = %d
AND `self` = 0 AND `contact`.`blocked` = 0 AND `contact`.`readonly` = 0
AND `contact`.`archive` = 0 LIMIT 1",
intval(CONTACT_IS_SHARING),
intval(CONTACT_IS_FRIEND),
dbesc(NETWORK_DIASPORA),
dbesc(NETWORK_FACEBOOK),
intval($contact_id)
);
if(! count($contacts)) {
return;
}
$contact = $contacts[0];
$xml = false;
$t = $contact['last-update'];
if($contact['subhub']) {
$interval = get_config('system','pushpoll_frequency');
$contact['priority'] = (($interval !== false) ? intval($interval) : 3);
$hub_update = false;
if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day"))
$hub_update = true;
}
else
$hub_update = false;
$importer_uid = $contact['uid'];
$r = q("SELECT `contact`.*, `user`.`page-flags` FROM `contact` LEFT JOIN `user` on `contact`.`uid` = `user`.`uid` WHERE `user`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
intval($importer_uid)
);
if(! count($r))
return;
$importer = $r[0];
logger("onepoll: poll: ({$contact['id']}) IMPORTER: {$importer['name']}, CONTACT: {$contact['name']}");
$last_update = (($contact['last-update'] === '0000-00-00 00:00:00')
? datetime_convert('UTC','UTC','now - 7 days', ATOM_TIME)
: datetime_convert('UTC','UTC',$contact['last-update'], ATOM_TIME)
);
if($contact['network'] === NETWORK_DFRN) {
$idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']);
if(intval($contact['duplex']) && $contact['dfrn-id'])
$idtosend = '0:' . $orig_id;
if(intval($contact['duplex']) && $contact['issued-id'])
$idtosend = '1:' . $orig_id;
// they have permission to write to us. We already filtered this in the contact query.
$perm = 'rw';
$url = $contact['poll'] . '?dfrn_id=' . $idtosend
. '&dfrn_version=' . DFRN_PROTOCOL_VERSION
. '&type=data&last_update=' . $last_update
. '&perm=' . $perm ;
$handshake_xml = fetch_url($url);
logger('onepoll: handshake with url ' . $url . ' returns xml: ' . $handshake_xml, LOGGER_DATA);
if(! $handshake_xml) {
logger("poller: $url appears to be dead - marking for death ");
// dead connection - might be a transient event, or this might
// mean the software was uninstalled or the domain expired.
// Will keep trying for one month.
mark_for_death($contact);
// set the last-update so we don't keep polling
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($contact['id'])
);
return;
}
if(! strstr($handshake_xml,'<?xml')) {
logger('poller: response from ' . $url . ' did not contain XML.');
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($contact['id'])
);
return;
}
$res = parse_xml_string($handshake_xml);
if(intval($res->status) == 1) {
logger("poller: $url replied status 1 - marking for death ");
// we may not be friends anymore. Will keep trying for one month.
// set the last-update so we don't keep polling
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($contact['id'])
);
mark_for_death($contact);
}
else {
if($contact['term-date'] != '0000-00-00 00:00:00') {
logger("poller: $url back from the dead - removing mark for death");
unmark_for_death($contact);
}
}
if((intval($res->status) != 0) || (! strlen($res->challenge)) || (! strlen($res->dfrn_id)))
return;
if(((float) $res->dfrn_version > 2.21) && ($contact['poco'] == '')) {
q("update contact set poco = '%s' where id = %d limit 1",
dbesc(str_replace('/profile/','/poco/', $contact['url'])),
intval($contact['id'])
);
}
$postvars = array();
$sent_dfrn_id = hex2bin((string) $res->dfrn_id);
$challenge = hex2bin((string) $res->challenge);
$final_dfrn_id = '';
if(($contact['duplex']) && strlen($contact['prvkey'])) {
openssl_private_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['prvkey']);
openssl_private_decrypt($challenge,$postvars['challenge'],$contact['prvkey']);
}
else {
openssl_public_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['pubkey']);
openssl_public_decrypt($challenge,$postvars['challenge'],$contact['pubkey']);
}
$final_dfrn_id = substr($final_dfrn_id, 0, strpos($final_dfrn_id, '.'));
if(strpos($final_dfrn_id,':') == 1)
$final_dfrn_id = substr($final_dfrn_id,2);
if($final_dfrn_id != $orig_id) {
logger('poller: ID did not decode: ' . $contact['id'] . ' orig: ' . $orig_id . ' final: ' . $final_dfrn_id);
// did not decode properly - cannot trust this site
return;
}
$postvars['dfrn_id'] = $idtosend;
$postvars['dfrn_version'] = DFRN_PROTOCOL_VERSION;
$postvars['perm'] = 'rw';
$xml = post_url($contact['poll'],$postvars);
}
elseif(($contact['network'] === NETWORK_OSTATUS)
|| ($contact['network'] === NETWORK_DIASPORA)
|| ($contact['network'] === NETWORK_FEED) ) {
// Upgrading DB fields from an older Friendica version
// Will only do this once per notify-enabled OStatus contact
// or if relationship changes
$stat_writeable = ((($contact['notify']) && ($contact['rel'] == CONTACT_IS_FOLLOWER || $contact['rel'] == CONTACT_IS_FRIEND)) ? 1 : 0);
if($stat_writeable != $contact['writable']) {
q("UPDATE `contact` SET `writable` = %d WHERE `id` = %d LIMIT 1",
intval($stat_writeable),
intval($contact['id'])
);
}
// Are we allowed to import from this person?
if($contact['rel'] == CONTACT_IS_FOLLOWER || $contact['blocked'] || $contact['readonly'])
return;
$xml = fetch_url($contact['poll']);
}
elseif($contact['network'] === NETWORK_MAIL || $contact['network'] === NETWORK_MAIL2) {
logger("onepoll: mail: Fetching", LOGGER_DEBUG);
$mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
if($mail_disabled)
return;
logger("onepoll: Mail: Enabled", LOGGER_DEBUG);
$mbox = null;
$x = q("SELECT `prvkey` FROM `user` WHERE `uid` = %d LIMIT 1",
intval($importer_uid)
);
$mailconf = q("SELECT * FROM `mailacct` WHERE `server` != '' AND `uid` = %d LIMIT 1",
intval($importer_uid)
);
if(count($x) && count($mailconf)) {
$mailbox = construct_mailbox_name($mailconf[0]);
$password = '';
openssl_private_decrypt(hex2bin($mailconf[0]['pass']),$password,$x[0]['prvkey']);
$mbox = email_connect($mailbox,$mailconf[0]['user'],$password);
unset($password);
logger("Mail: Connect");
if($mbox) {
q("UPDATE `mailacct` SET `last_check` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($mailconf[0]['id']),
intval($importer_uid)
);
}
}
if($mbox) {
$msgs = email_poll($mbox,$contact['addr']);
if(count($msgs)) {
logger("Mail: Parsing ".count($msgs)." mails.", LOGGER_DEBUG);
foreach($msgs as $msg_uid) {
logger("Mail: Parsing mail ".$msg_uid, LOGGER_DATA);
$datarray = array();
$meta = email_msg_meta($mbox,$msg_uid);
$headers = email_msg_headers($mbox,$msg_uid);
// look for a 'references' header and try and match with a parent item we have locally.
$raw_refs = ((x($headers,'references')) ? str_replace("\t",'',$headers['references']) : '');
$datarray['uri'] = msgid2iri(trim($meta->message_id,'<>'));
if($raw_refs) {
$refs_arr = explode(' ', $raw_refs);
if(count($refs_arr)) {
for($x = 0; $x < count($refs_arr); $x ++)
$refs_arr[$x] = "'" . msgid2iri(str_replace(array('<','>',' '),array('','',''),dbesc($refs_arr[$x]))) . "'";
}
$qstr = implode(',',$refs_arr);
$r = q("SELECT `uri` , `parent-uri` FROM `item` WHERE `uri` IN ( $qstr ) AND `uid` = %d LIMIT 1",
intval($importer_uid)
);
if(count($r))
$datarray['parent-uri'] = $r[0]['uri'];
}
if(! x($datarray,'parent-uri'))
$datarray['parent-uri'] = $datarray['uri'];
// Have we seen it before?
$r = q("SELECT * FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
intval($importer_uid),
dbesc($datarray['uri'])
);
if(count($r)) {
// logger("Mail: Seen before ".$msg_uid);
if($meta->deleted && ! $r[0]['deleted']) {
q("UPDATE `item` SET `deleted` = 1, `changed` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($r[0]['id'])
);
}
switch ($mailconf[0]['action']) {
case 0:
break;
case 1:
logger("Mail: Deleting ".$msg_uid);
imap_delete($mbox, $msg_uid, FT_UID);
break;
case 2:
logger("Mail: Mark as seen ".$msg_uid);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
break;
case 3:
logger("Mail: Moving ".$msg_uid." to ".$mailconf[0]['movetofolder']);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
if ($mailconf[0]['movetofolder'] != "")
imap_mail_move($mbox, $msg_uid, $mailconf[0]['movetofolder'], FT_UID);
break;
}
continue;
}
// Decoding the header
$subject = imap_mime_header_decode($meta->subject);
$datarray['title'] = "";
foreach($subject as $subpart)
if ($subpart->charset != "default")
$datarray['title'] .= iconv($subpart->charset, 'UTF-8//IGNORE', $subpart->text);
else
$datarray['title'] .= $subpart->text;
$datarray['title'] = notags(trim($datarray['title']));
//$datarray['title'] = notags(trim($meta->subject));
$datarray['created'] = datetime_convert('UTC','UTC',$meta->date);
// Is it reply?
$reply = ((substr(strtolower($datarray['title']), 0, 3) == "re:") or
(substr(strtolower($datarray['title']), 0, 3) == "re-") or
(raw_refs != ""));
$r = email_get_msg($mbox,$msg_uid, $reply);
if(! $r) {
logger("Mail: can't fetch msg ".$msg_uid);
continue;
}
$datarray['body'] = escape_tags($r['body']);
logger("Mail: Importing ".$msg_uid);
// some mailing lists have the original author as 'from' - add this sender info to msg body.
// todo: adding a gravatar for the original author would be cool
if(! stristr($meta->from,$contact['addr'])) {
$from = imap_mime_header_decode($meta->from);
$fromdecoded = "";
foreach($from as $frompart)
if ($frompart->charset != "default")
$fromdecoded .= iconv($frompart->charset, 'UTF-8//IGNORE', $frompart->text);
else
$fromdecoded .= $frompart->text;
$datarray['body'] = "[b]".t('From: ') . escape_tags($fromdecoded) . "[/b]\n\n" . $datarray['body'];
}
$datarray['uid'] = $importer_uid;
$datarray['contact-id'] = $contact['id'];
if($datarray['parent-uri'] === $datarray['uri'])
$datarray['private'] = 1;
if(($contact['network'] === NETWORK_MAIL) && (! get_pconfig($importer_uid,'system','allow_public_email_replies'))) {
$datarray['private'] = 1;
$datarray['allow_cid'] = '<' . $contact['id'] . '>';
}
$datarray['author-name'] = $contact['name'];
$datarray['author-link'] = 'mailbox';
$datarray['author-avatar'] = $contact['photo'];
$stored_item = item_store($datarray);
q("UPDATE `item` SET `last-child` = 0 WHERE `parent-uri` = '%s' AND `uid` = %d",
dbesc($datarray['parent-uri']),
intval($importer_uid)
);
q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1",
intval($stored_item)
);
switch ($mailconf[0]['action']) {
case 0:
break;
case 1:
logger("Mail: Deleting ".$msg_uid);
imap_delete($mbox, $msg_uid, FT_UID);
break;
case 2:
logger("Mail: Mark as seen ".$msg_uid);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
break;
case 3:
logger("Mail: Moving ".$msg_uid." to ".$mailconf[0]['movetofolder']);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
if ($mailconf[0]['movetofolder'] != "")
imap_mail_move($mbox, $msg_uid, $mailconf[0]['movetofolder'], FT_UID);
break;
}
}
}
imap_close($mbox);
}
}
elseif($contact['network'] === NETWORK_FACEBOOK) {
// This is picked up by the Facebook plugin on a cron hook.
// Ignored here.
}
if($xml) {
logger('poller: received xml : ' . $xml, LOGGER_DATA);
if(! strstr($xml,'<?xml')) {
logger('poller: post_handshake: response from ' . $url . ' did not contain XML.');
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($contact['id'])
);
return;
}
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,2);
$hubmode = 'subscribe';
if($contact['network'] === NETWORK_DFRN || $contact['blocked'] || $contact['readonly'])
$hubmode = 'unsubscribe';
if((strlen($hub)) && ($hub_update) && ($contact['rel'] != CONTACT_IS_FOLLOWER)) {
logger('poller: hub ' . $hubmode . ' : ' . $hub . ' contact name : ' . $contact['name'] . ' local user : ' . $importer['name']);
$hubs = explode(',', $hub);
if(count($hubs)) {
foreach($hubs as $h) {
$h = trim($h);
if(! strlen($h))
continue;
subscribe_to_hub($h,$importer,$contact,$hubmode);
}
}
}
}
$updated = datetime_convert();
$r = q("UPDATE `contact` SET `last-update` = '%s', `success_update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc($updated),
dbesc($updated),
intval($contact['id'])
);
// load current friends if possible.
if($contact['poco']) {
$r = q("SELECT count(*) as total from glink
where `cid` = %d and updated > UTC_TIMESTAMP() - INTERVAL 1 DAY",
intval($contact['id'])
);
}
if(count($r)) {
if(! $r[0]['total']) {
poco_load($contact['id'],$importer_uid,$contact['poco']);
}
}
return;
}
if (array_search(__file__,get_included_files())===0){
onepoll_run($argv,$argc);
killme();
}

View file

@ -5,7 +5,7 @@
if (! function_exists('uninstall_plugin')){
function uninstall_plugin($plugin){
logger("Addons: uninstalling " . $plugin);
q("DELETE FROM `addon` WHERE `name` = '%s' LIMIT 1",
q("DELETE FROM `addon` WHERE `name` = '%s' ",
dbesc($plugin)
);
@ -37,6 +37,16 @@ function install_plugin($plugin) {
intval($t),
$plugin_admin
);
// we can add the following with the previous SQL
// once most site tables have been updated.
// This way the system won't fall over dead during the update.
if(file_exists('addon/' . $plugin . '/.hidden')) {
q("update addon set hidden = 1 where name = '%s' limit 1",
dbesc($plugin)
);
}
return true;
}
else {

View file

@ -113,6 +113,8 @@ function poller_run($argv, $argc){
$force = true;
}
$interval = ((get_config('system','delivery_interval') === false) ? 3 : intval(get_config('system','delivery_interval')));
$sql_extra = (($manual_id) ? " AND `id` = $manual_id " : "");
reload_plugins();
@ -136,6 +138,7 @@ function poller_run($argv, $argc){
AND NOT `network` IN ( '%s', '%s' )
$sql_extra
AND `self` = 0 AND `contact`.`blocked` = 0 AND `contact`.`readonly` = 0
AND `contact`.`archive` = 0
AND `user`.`account_expired` = 0 $abandon_sql ORDER BY RAND()",
intval(CONTACT_IS_SHARING),
intval(CONTACT_IS_FRIEND),
@ -224,440 +227,12 @@ function poller_run($argv, $argc){
continue;
}
// Check to see if we are running out of memory - if so spawn a new process and kill this one
$avail_memory = return_bytes(ini_get('memory_limit'));
$memused = memory_get_peak_usage(true);
if(intval($avail_memory)) {
if(($memused / $avail_memory) > 0.95) {
if($generation + 1 > 10) {
logger('poller: maximum number of spawns exceeded. Terminating.');
killme();
}
logger('poller: memory exceeded. ' . $memused . ' bytes used. Spawning new poll.');
proc_run('php', 'include/poller.php', 'restart', (string) $generation + 1);
killme();
proc_run('php','include/onepoll.php',$contact['id']);
if($interval)
@time_sleep_until(microtime(true) + (float) $interval);
}
}
$importer_uid = $contact['uid'];
$r = q("SELECT `contact`.*, `user`.`page-flags` FROM `contact` LEFT JOIN `user` on `contact`.`uid` = `user`.`uid` WHERE `user`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
intval($importer_uid)
);
if(! count($r))
continue;
$importer = $r[0];
logger("poller: poll: ({$contact['id']}) IMPORTER: {$importer['name']}, CONTACT: {$contact['name']}");
$last_update = (($contact['last-update'] === '0000-00-00 00:00:00')
? datetime_convert('UTC','UTC','now - 30 days', ATOM_TIME)
: datetime_convert('UTC','UTC',$contact['last-update'], ATOM_TIME)
);
if($contact['network'] === NETWORK_DFRN) {
$idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']);
if(intval($contact['duplex']) && $contact['dfrn-id'])
$idtosend = '0:' . $orig_id;
if(intval($contact['duplex']) && $contact['issued-id'])
$idtosend = '1:' . $orig_id;
// they have permission to write to us. We already filtered this in the contact query.
$perm = 'rw';
$url = $contact['poll'] . '?dfrn_id=' . $idtosend
. '&dfrn_version=' . DFRN_PROTOCOL_VERSION
. '&type=data&last_update=' . $last_update
. '&perm=' . $perm ;
$handshake_xml = fetch_url($url);
logger('poller: handshake with url ' . $url . ' returns xml: ' . $handshake_xml, LOGGER_DATA);
if(! $handshake_xml) {
logger("poller: $url appears to be dead - marking for death ");
// dead connection - might be a transient event, or this might
// mean the software was uninstalled or the domain expired.
// Will keep trying for one month.
mark_for_death($contact);
// set the last-update so we don't keep polling
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($contact['id'])
);
continue;
}
if(! strstr($handshake_xml,'<?xml')) {
logger('poller: response from ' . $url . ' did not contain XML.');
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($contact['id'])
);
continue;
}
$res = parse_xml_string($handshake_xml);
if(intval($res->status) == 1) {
logger("poller: $url replied status 1 - marking for death ");
// we may not be friends anymore. Will keep trying for one month.
// set the last-update so we don't keep polling
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($contact['id'])
);
mark_for_death($contact);
}
else {
if($contact['term-date'] != '0000-00-00 00:00:00') {
logger("poller: $url back from the dead - removing mark for death");
unmark_for_death($contact);
}
}
if((intval($res->status) != 0) || (! strlen($res->challenge)) || (! strlen($res->dfrn_id)))
continue;
if(((float) $res->dfrn_version > 2.21) && ($contact['poco'] == '')) {
q("update contact set poco = '%s' where id = %d limit 1",
dbesc(str_replace('/profile/','/poco/', $contact['url'])),
intval($contact['id'])
);
}
$postvars = array();
$sent_dfrn_id = hex2bin((string) $res->dfrn_id);
$challenge = hex2bin((string) $res->challenge);
$final_dfrn_id = '';
if(($contact['duplex']) && strlen($contact['prvkey'])) {
openssl_private_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['prvkey']);
openssl_private_decrypt($challenge,$postvars['challenge'],$contact['prvkey']);
}
else {
openssl_public_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['pubkey']);
openssl_public_decrypt($challenge,$postvars['challenge'],$contact['pubkey']);
}
$final_dfrn_id = substr($final_dfrn_id, 0, strpos($final_dfrn_id, '.'));
if(strpos($final_dfrn_id,':') == 1)
$final_dfrn_id = substr($final_dfrn_id,2);
if($final_dfrn_id != $orig_id) {
logger('poller: ID did not decode: ' . $contact['id'] . ' orig: ' . $orig_id . ' final: ' . $final_dfrn_id);
// did not decode properly - cannot trust this site
continue;
}
$postvars['dfrn_id'] = $idtosend;
$postvars['dfrn_version'] = DFRN_PROTOCOL_VERSION;
$postvars['perm'] = 'rw';
$xml = post_url($contact['poll'],$postvars);
}
elseif(($contact['network'] === NETWORK_OSTATUS)
|| ($contact['network'] === NETWORK_DIASPORA)
|| ($contact['network'] === NETWORK_FEED) ) {
// Upgrading DB fields from an older Friendica version
// Will only do this once per notify-enabled OStatus contact
// or if relationship changes
$stat_writeable = ((($contact['notify']) && ($contact['rel'] == CONTACT_IS_FOLLOWER || $contact['rel'] == CONTACT_IS_FRIEND)) ? 1 : 0);
if($stat_writeable != $contact['writable']) {
q("UPDATE `contact` SET `writable` = %d WHERE `id` = %d LIMIT 1",
intval($stat_writeable),
intval($contact['id'])
);
}
// Are we allowed to import from this person?
if($contact['rel'] == CONTACT_IS_FOLLOWER || $contact['blocked'] || $contact['readonly'])
continue;
$xml = fetch_url($contact['poll']);
}
elseif($contact['network'] === NETWORK_MAIL || $contact['network'] === NETWORK_MAIL2) {
logger("Mail: Fetching");
$mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
if($mail_disabled)
continue;
logger("Mail: Enabled");
$mbox = null;
$x = q("SELECT `prvkey` FROM `user` WHERE `uid` = %d LIMIT 1",
intval($importer_uid)
);
$mailconf = q("SELECT * FROM `mailacct` WHERE `server` != '' AND `uid` = %d LIMIT 1",
intval($importer_uid)
);
if(count($x) && count($mailconf)) {
$mailbox = construct_mailbox_name($mailconf[0]);
$password = '';
openssl_private_decrypt(hex2bin($mailconf[0]['pass']),$password,$x[0]['prvkey']);
$mbox = email_connect($mailbox,$mailconf[0]['user'],$password);
unset($password);
logger("Mail: Connect");
if($mbox) {
q("UPDATE `mailacct` SET `last_check` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($mailconf[0]['id']),
intval($importer_uid)
);
}
}
if($mbox) {
logger("Mail: mbox");
$msgs = email_poll($mbox,$contact['addr']);
if(count($msgs)) {
logger("Mail: Parsing ".count($msgs)." mails.");
foreach($msgs as $msg_uid) {
logger("Mail: Parsing mail ".$msg_uid);
$datarray = array();
$meta = email_msg_meta($mbox,$msg_uid);
$headers = email_msg_headers($mbox,$msg_uid);
// look for a 'references' header and try and match with a parent item we have locally.
$raw_refs = ((x($headers,'references')) ? str_replace("\t",'',$headers['references']) : '');
$datarray['uri'] = msgid2iri(trim($meta->message_id,'<>'));
if($raw_refs) {
$refs_arr = explode(' ', $raw_refs);
if(count($refs_arr)) {
for($x = 0; $x < count($refs_arr); $x ++)
$refs_arr[$x] = "'" . msgid2iri(str_replace(array('<','>',' '),array('','',''),dbesc($refs_arr[$x]))) . "'";
}
$qstr = implode(',',$refs_arr);
$r = q("SELECT `uri` , `parent-uri` FROM `item` WHERE `uri` IN ( $qstr ) AND `uid` = %d LIMIT 1",
intval($importer_uid)
);
if(count($r))
$datarray['parent-uri'] = $r[0]['uri'];
}
if(! x($datarray,'parent-uri'))
$datarray['parent-uri'] = $datarray['uri'];
// Have we seen it before?
$r = q("SELECT * FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
intval($importer_uid),
dbesc($datarray['uri'])
);
if(count($r)) {
logger("Mail: Seen before ".$msg_uid);
if($meta->deleted && ! $r[0]['deleted']) {
q("UPDATE `item` SET `deleted` = 1, `changed` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($r[0]['id'])
);
}
switch ($mailconf[0]['action']) {
case 0:
break;
case 1:
logger("Mail: Deleting ".$msg_uid);
imap_delete($mbox, $msg_uid, FT_UID);
break;
case 2:
logger("Mail: Mark as seen ".$msg_uid);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
break;
case 3:
logger("Mail: Moving ".$msg_uid." to ".$mailconf[0]['movetofolder']);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
if ($mailconf[0]['movetofolder'] != "")
imap_mail_move($mbox, $msg_uid, $mailconf[0]['movetofolder'], FT_UID);
break;
}
continue;
}
// Decoding the header
$subject = imap_mime_header_decode($meta->subject);
$datarray['title'] = "";
foreach($subject as $subpart)
if ($subpart->charset != "default")
$datarray['title'] .= iconv($subpart->charset, 'UTF-8//IGNORE', $subpart->text);
else
$datarray['title'] .= $subpart->text;
$datarray['title'] = notags(trim($datarray['title']));
//$datarray['title'] = notags(trim($meta->subject));
$datarray['created'] = datetime_convert('UTC','UTC',$meta->date);
// Is it reply?
$reply = ((substr(strtolower($datarray['title']), 0, 3) == "re:") or
(substr(strtolower($datarray['title']), 0, 3) == "re-") or
(raw_refs != ""));
$r = email_get_msg($mbox,$msg_uid, $reply);
if(! $r) {
logger("Mail: can't fetch msg ".$msg_uid);
continue;
}
$datarray['body'] = escape_tags($r['body']);
logger("Mail: Importing ".$msg_uid);
// some mailing lists have the original author as 'from' - add this sender info to msg body.
// todo: adding a gravatar for the original author would be cool
if(! stristr($meta->from,$contact['addr'])) {
$from = imap_mime_header_decode($meta->from);
$fromdecoded = "";
foreach($from as $frompart)
if ($frompart->charset != "default")
$fromdecoded .= iconv($frompart->charset, 'UTF-8//IGNORE', $frompart->text);
else
$fromdecoded .= $frompart->text;
$datarray['body'] = "[b]".t('From: ') . escape_tags($fromdecoded) . "[/b]\n\n" . $datarray['body'];
}
$datarray['uid'] = $importer_uid;
$datarray['contact-id'] = $contact['id'];
if($datarray['parent-uri'] === $datarray['uri'])
$datarray['private'] = 1;
if(($contact['network'] === NETWORK_MAIL) && (! get_pconfig($importer_uid,'system','allow_public_email_replies'))) {
$datarray['private'] = 1;
$datarray['allow_cid'] = '<' . $contact['id'] . '>';
}
$datarray['author-name'] = $contact['name'];
$datarray['author-link'] = 'mailbox';
$datarray['author-avatar'] = $contact['photo'];
$stored_item = item_store($datarray);
q("UPDATE `item` SET `last-child` = 0 WHERE `parent-uri` = '%s' AND `uid` = %d",
dbesc($datarray['parent-uri']),
intval($importer_uid)
);
q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1",
intval($stored_item)
);
switch ($mailconf[0]['action']) {
case 0:
break;
case 1:
logger("Mail: Deleting ".$msg_uid);
imap_delete($mbox, $msg_uid, FT_UID);
break;
case 2:
logger("Mail: Mark as seen ".$msg_uid);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
break;
case 3:
logger("Mail: Moving ".$msg_uid." to ".$mailconf[0]['movetofolder']);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
if ($mailconf[0]['movetofolder'] != "")
imap_mail_move($mbox, $msg_uid, $mailconf[0]['movetofolder'], FT_UID);
break;
}
}
}
imap_close($mbox);
}
}
elseif($contact['network'] === NETWORK_FACEBOOK) {
// This is picked up by the Facebook plugin on a cron hook.
// Ignored here.
}
if($xml) {
logger('poller: received xml : ' . $xml, LOGGER_DATA);
if(! strstr($xml,'<?xml')) {
logger('poller: post_handshake: response from ' . $url . ' did not contain XML.');
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($contact['id'])
);
continue;
}
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,2);
$hubmode = 'subscribe';
if($contact['network'] === NETWORK_DFRN || $contact['blocked'] || $contact['readonly'])
$hubmode = 'unsubscribe';
if((strlen($hub)) && ($hub_update) && ($contact['rel'] != CONTACT_IS_FOLLOWER)) {
logger('poller: hub ' . $hubmode . ' : ' . $hub . ' contact name : ' . $contact['name'] . ' local user : ' . $importer['name']);
$hubs = explode(',', $hub);
if(count($hubs)) {
foreach($hubs as $h) {
$h = trim($h);
if(! strlen($h))
continue;
subscribe_to_hub($h,$importer,$contact,$hubmode);
}
}
}
}
$updated = datetime_convert();
$r = q("UPDATE `contact` SET `last-update` = '%s', `success_update` = '%s' WHERE `id` = %d LIMIT 1",
dbesc($updated),
dbesc($updated),
intval($contact['id'])
);
// load current friends if possible.
if($contact['poco']) {
$r = q("SELECT count(*) as total from glink
where `cid` = %d and updated > UTC_TIMESTAMP() - INTERVAL 1 DAY",
intval($contact['id'])
);
}
if(count($r)) {
if(! $r[0]['total']) {
poco_load($contact['id'],$importer_uid,$contact['poco']);
}
}
// loop - next contact
}
}
return;
}

View file

@ -7,9 +7,11 @@ function gender_selector($current="",$suffix="") {
$o .= "<select name=\"gender$suffix\" id=\"gender-select$suffix\" size=\"1\" >";
foreach($select as $selection) {
if($selection !== 'NOTRANSLATION') {
$selected = (($selection == $current) ? ' selected="selected" ' : '');
$o .= "<option value=\"$selection\" $selected >$selection</option>";
}
}
$o .= '</select>';
return $o;
}
@ -20,9 +22,11 @@ function sexpref_selector($current="",$suffix="") {
$o .= "<select name=\"sexual$suffix\" id=\"sexual-select$suffix\" size=\"1\" >";
foreach($select as $selection) {
if($selection !== 'NOTRANSLATION') {
$selected = (($selection == $current) ? ' selected="selected" ' : '');
$o .= "<option value=\"$selection\" $selected >$selection</option>";
}
}
$o .= '</select>';
return $o;
}
@ -34,9 +38,11 @@ function marital_selector($current="",$suffix="") {
$o .= "<select name=\"marital\" id=\"marital-select\" size=\"1\" >";
foreach($select as $selection) {
if($selection !== 'NOTRANSLATION') {
$selected = (($selection == $current) ? ' selected="selected" ' : '');
$o .= "<option value=\"$selection\" $selected >$selection</option>";
}
}
$o .= '</select>';
return $o;
}

View file

@ -92,13 +92,10 @@ if((x($_SESSION,'language')) && ($_SESSION['language'] !== $lang)) {
load_translation_table($lang);
}
if(x($_GET,'zrl')) {
if((x($_GET,'zrl')) && (! $install)) {
$_SESSION['my_url'] = $_GET['zrl'];
$a->query_string = preg_replace('/[\?&]zrl=(.*?)([\?&]|$)/is','',$a->query_string);
if(! $install) {
$arr = array('zrl' => $_SESSION['my_url'], 'url' => $a->cmd);
call_hooks('zrl_init',$arr);
}
zrl_init($a);
}
/**

View file

@ -73,7 +73,16 @@
setupFieldRichtext();
/* popup menus */
function close_last_popup_menu() {
if(last_popup_menu) {
last_popup_menu.hide();
last_popup_button.removeClass("selected");
last_popup_menu = null;
last_popup_button = null;
}
}
$('a[rel^=#]').click(function(e){
close_last_popup_menu();
menu = $( $(this).attr('rel') );
e.preventDefault();
e.stopPropagation();
@ -90,12 +99,7 @@
return false;
});
$('html').click(function() {
if(last_popup_menu) {
last_popup_menu.hide();
last_popup_button.removeClass("selected");
last_popup_menu = null;
last_popup_button = null;
}
close_last_popup_menu();
});
// fancyboxes

View file

@ -61,6 +61,9 @@ function admin_post(&$a){
case 'logs':
admin_page_logs_post($a);
break;
case 'dbsync':
admin_page_dbsync_post($a);
break;
case 'update':
admin_page_remoteupdate_post($a);
break;
@ -94,7 +97,8 @@ function admin_content(&$a) {
'users' => Array($a->get_baseurl(true)."/admin/users/", t("Users") , "users"),
'plugins'=> Array($a->get_baseurl(true)."/admin/plugins/", t("Plugins") , "plugins"),
'themes' => Array($a->get_baseurl(true)."/admin/themes/", t("Themes") , "themes"),
'update' => Array($a->get_baseurl(true)."/admin/update/", t("Update") , "update")
'dbsync' => Array($a->get_baseurl(true)."/admin/dbsync/", t('DB updates'), "dbsync"),
'update' => Array($a->get_baseurl(true)."/admin/update/", t("Software Update") , "update")
);
/* get plugins admin page */
@ -142,6 +146,9 @@ function admin_content(&$a) {
case 'logs':
$o = admin_page_logs($a);
break;
case 'dbsync':
$o = admin_page_dbsync($a);
break;
case 'update':
$o = admin_page_remoteupdate($a);
break;
@ -235,6 +242,7 @@ function admin_page_site_post(&$a){
$proxyuser = ((x($_POST,'proxyuser')) ? notags(trim($_POST['proxyuser'])) : '');
$proxy = ((x($_POST,'proxy')) ? notags(trim($_POST['proxy'])) : '');
$timeout = ((x($_POST,'timeout')) ? intval(trim($_POST['timeout'])) : 60);
$delivery_interval = ((x($_POST,'delivery_interval'))? intval(trim($_POST['delivery_interval'])) : 0);
$dfrn_only = ((x($_POST,'dfrn_only')) ? True : False);
$ostatus_disabled = !((x($_POST,'ostatus_disabled')) ? True : False);
$diaspora_enabled = ((x($_POST,'diaspora_enabled')) ? True : False);
@ -281,7 +289,7 @@ function admin_page_site_post(&$a){
}
}
set_config('system','ssl_policy',$ssl_policy);
set_config('system','delivery_interval',$delivery_interval);
set_config('config','sitename',$sitename);
if ($banner==""){
// don't know why, but del_config doesn't work...
@ -425,6 +433,7 @@ function admin_page_site(&$a) {
'$proxyuser' => array('proxyuser', t("Proxy user"), get_config('system','proxyuser'), ""),
'$proxy' => array('proxy', t("Proxy URL"), get_config('system','proxy'), ""),
'$timeout' => array('timeout', t("Network timeout"), (x(get_config('system','curl_timeout'))?get_config('system','curl_timeout'):60), t("Value is in seconds. Set to 0 for unlimited (not recommended).")),
'$delivery_interval' => array('delivery_interval', t("Delivery interval"), (x(get_config('system','delivery_interval'))?get_config('system','delivery_interval'):2), t("Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers.")),
'$form_security_token' => get_form_security_token("admin_site"),
@ -433,6 +442,62 @@ function admin_page_site(&$a) {
}
function admin_page_dbsync(&$a) {
$o = '';
if($a->argc > 3 && intval($a->argv[3]) && $a->argv[2] === 'mark') {
set_config('database', 'update_' . intval($a->argv[3]), 'success');
info( t('Update has been marked successful') . EOL);
goaway($a->get_baseurl(true) . '/admin/dbsync');
}
if($a->argc > 2 && intval($a->argv[2])) {
require_once('update.php');
$func = 'update_' . intval($a->argv[2]);
if(function_exists($func)) {
$retval = $func();
if($retval === UPDATE_FAILED) {
$o .= sprintf( t('Executing %s failed. Check system logs.'), $func);
}
elseif($retval === UPDATE_SUCCESS) {
$o .= sprintf( t('Update %s was successfully applied.', $func));
set_config('database',$func, 'success');
}
else
$o .= sprintf( t('Update %s did not return a status. Unknown if it succeeded.'), $func);
}
else
$o .= sprintf( t('Update function %s could not be found.'), $func);
return $o;
}
$failed = array();
$r = q("select * from config where `cat` = 'database' ");
if(count($r)) {
foreach($r as $rr) {
$upd = intval(substr($rr['k'],7));
if($upd < 1139 || $rr['v'] === 'success')
continue;
$failed[] = $upd;
}
}
if(! count($failed))
return '<h3>' . t('No failed updates.') . '</h3>';
$o = replace_macros(get_markup_template('failed_updates.tpl'),array(
'$base' => $a->get_baseurl(true),
'$banner' => t('Failed Updates'),
'$desc' => t('This does not include updates prior to 1139, which did not return a status.'),
'$mark' => t('Mark success (if update was manually applied)'),
'$apply' => t('Attempt to execute this update step automatically'),
'$failed' => $failed
));
return $o;
}
/**
* Users admin page
*
@ -977,7 +1042,6 @@ readable.");
$size = 5000000;
$seek = fseek($fp,0-$size,SEEK_END);
if($seek === 0) {
fgets($fp); // throw away the first partial line
$data = escape_tags(fread($fp,$size));
while(! feof($fp))
$data .= escape_tags(fread($fp,4096));

View file

@ -290,22 +290,26 @@ function contacts_content(&$a) {
'label' => (($contact['blocked']) ? t('Unblock') : t('Block') ),
'url' => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/block',
'sel' => '',
'title' => t('Toggle Blocked status'),
),
array(
'label' => (($contact['readonly']) ? t('Unignore') : t('Ignore') ),
'url' => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/ignore',
'sel' => '',
'title' => t('Toggle Ignored status'),
),
array(
'label' => (($contact['archive']) ? t('Unarchive') : t('Archive') ),
'url' => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/archive',
'sel' => '',
'title' => t('Toggle Archive status'),
),
array(
'label' => t('Repair'),
'url' => $a->get_baseurl(true) . '/crepair/' . $contact_id,
'sel' => '',
'title' => t('Advanced Contact Settings'),
)
);
$tab_tpl = get_markup_template('common_tabs.tpl');
@ -403,40 +407,47 @@ function contacts_content(&$a) {
'label' => t('Suggestions'),
'url' => $a->get_baseurl(true) . '/suggest',
'sel' => '',
'title' => t('Suggest potential friends'),
),
array(
'label' => t('All Contacts'),
'url' => $a->get_baseurl(true) . '/contacts/all',
'sel' => ($all) ? 'active' : '',
'title' => t('Show all contacts'),
),
array(
'label' => t('Unblocked'),
'url' => $a->get_baseurl(true) . '/contacts',
'sel' => ((! $all) && (! $blocked) && (! $hidden) && (! $search) && (! $nets) && (! $ignored) && (! $archived)) ? 'active' : '',
'title' => t('Only show unblocked contacts'),
),
array(
'label' => t('Blocked'),
'url' => $a->get_baseurl(true) . '/contacts/blocked',
'sel' => ($blocked) ? 'active' : '',
'title' => t('Only show blocked contacts'),
),
array(
'label' => t('Ignored'),
'url' => $a->get_baseurl(true) . '/contacts/ignored',
'sel' => ($ignored) ? 'active' : '',
'title' => t('Only show ignored contacts'),
),
array(
'label' => t('Archived'),
'url' => $a->get_baseurl(true) . '/contacts/archived',
'sel' => ($archived) ? 'active' : '',
'title' => t('Only show archived contacts'),
),
array(
'label' => t('Hidden'),
'url' => $a->get_baseurl(true) . '/contacts/hidden',
'sel' => ($hidden) ? 'active' : '',
'title' => t('Only show hidden contacts'),
),
);

View file

@ -207,7 +207,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
if($duplex == 1)
$params['duplex'] = 1;
if($user['page-flags'] == PAGE_COMMUNITY)
if($user[0]['page-flags'] == PAGE_COMMUNITY)
$params['page'] = 1;
logger('dfrn_confirm: Confirm: posting data to ' . $dfrn_confirm . ': ' . print_r($params,true), LOGGER_DATA);
@ -434,7 +434,8 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
else
$contact = null;
if(isset($new_relation) && $new_relation == CONTACT_IS_FRIEND) {
if((isset($new_relation) && $new_relation == CONTACT_IS_FRIEND)) {
if(($contact) && ($contact['network'] === NETWORK_DIASPORA)) {
require_once('include/diaspora.php');
@ -447,7 +448,8 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
$r = q("SELECT `hide-friends` FROM `profile` WHERE `uid` = %d AND `is-default` = 1 LIMIT 1",
intval($uid)
);
if((count($r)) && ($activity) && (! $hidden)) {
if((count($r)) && ($r[0]['hide-friends'] == 0) && ($activity) && (! $hidden)) {
require_once('include/items.php');
@ -468,12 +470,15 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
$arr['author-name'] = $arr['owner-name'] = $self[0]['name'];
$arr['author-link'] = $arr['owner-link'] = $self[0]['url'];
$arr['author-avatar'] = $arr['owner-avatar'] = $self[0]['thumb'];
$arr['verb'] = ACTIVITY_FRIEND;
$arr['object-type'] = ACTIVITY_OBJ_PERSON;
$A = '[url=' . $self[0]['url'] . ']' . $self[0]['name'] . '[/url]';
$APhoto = '[url=' . $self[0]['url'] . ']' . '[img]' . $self[0]['thumb'] . '[/img][/url]';
$B = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]';
$BPhoto = '[url=' . $contact['url'] . ']' . '[img]' . $contact['thumb'] . '[/img][/url]';
$arr['verb'] = ACTIVITY_FRIEND;
$arr['object-type'] = ACTIVITY_OBJ_PERSON;
$arr['body'] = sprintf( t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$BPhoto;
$arr['object'] = '<object><type>' . ACTIVITY_OBJ_PERSON . '</type><title>' . $contact['name'] . '</title>'
@ -481,6 +486,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
$arr['object'] .= '<link>' . xmlify('<link rel="alternate" type="text/html" href="' . $contact['url'] . '" />' . "\n");
$arr['object'] .= xmlify('<link rel="photo" type="image/jpeg" href="' . $contact['thumb'] . '" />' . "\n");
$arr['object'] .= '</link></object>' . "\n";
$arr['last-child'] = 1;
$arr['allow_cid'] = $user[0]['allow_cid'];
@ -710,6 +716,10 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
WHERE `contact`.`id` = %d LIMIT 1",
intval($dfrn_record)
);
if(count($r))
$combined = $r[0];
if((count($r)) && ($r[0]['notify-flags'] & NOTIFY_CONFIRM)) {
push_lang($r[0]['language']);
@ -738,6 +748,65 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
}
pop_lang();
}
// Send a new friend post if we are allowed to...
if($page && intval(get_pconfig($local_uid,'system','post_joingroup'))) {
$r = q("SELECT `hide-friends` FROM `profile` WHERE `uid` = %d AND `is-default` = 1 LIMIT 1",
intval($local_uid)
);
if((count($r)) && ($r[0]['hide-friends'] == 0)) {
require_once('include/items.php');
$self = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
intval($local_uid)
);
if(count($self)) {
$arr = array();
$arr['uri'] = $arr['parent-uri'] = item_new_uri($a->get_hostname(), $local_uid);
$arr['uid'] = $local_uid;
$arr['contact-id'] = $self[0]['id'];
$arr['wall'] = 1;
$arr['type'] = 'wall';
$arr['gravity'] = 0;
$arr['origin'] = 1;
$arr['author-name'] = $arr['owner-name'] = $self[0]['name'];
$arr['author-link'] = $arr['owner-link'] = $self[0]['url'];
$arr['author-avatar'] = $arr['owner-avatar'] = $self[0]['thumb'];
$A = '[url=' . $self[0]['url'] . ']' . $self[0]['name'] . '[/url]';
$APhoto = '[url=' . $self[0]['url'] . ']' . '[img]' . $self[0]['thumb'] . '[/img][/url]';
$B = '[url=' . $combined['url'] . ']' . $combined['name'] . '[/url]';
$BPhoto = '[url=' . $combined['url'] . ']' . '[img]' . $combined['thumb'] . '[/img][/url]';
$arr['verb'] = ACTIVITY_JOIN;
$arr['object-type'] = ACTIVITY_OBJ_GROUP;
$arr['body'] = sprintf( t('%1$s has joined %2$s'), $A, $B)."\n\n\n" .$BPhoto;
$arr['object'] = '<object><type>' . ACTIVITY_OBJ_GROUP . '</type><title>' . $combined['name'] . '</title>'
. '<id>' . $combined['url'] . '/' . $combined['name'] . '</id>';
$arr['object'] .= '<link>' . xmlify('<link rel="alternate" type="text/html" href="' . $combined['url'] . '" />' . "\n");
$arr['object'] .= xmlify('<link rel="photo" type="image/jpeg" href="' . $combined['thumb'] . '" />' . "\n");
$arr['object'] .= '</link></object>' . "\n";
$arr['last-child'] = 1;
$arr['allow_cid'] = $user[0]['allow_cid'];
$arr['allow_gid'] = $user[0]['allow_gid'];
$arr['deny_cid'] = $user[0]['deny_cid'];
$arr['deny_gid'] = $user[0]['deny_gid'];
$i = item_store($arr);
if($i)
proc_run('php',"include/notifier.php","activity","$i");
}
}
}
xml_status(0); // Success
return; // NOTREACHED

View file

@ -700,7 +700,8 @@ function dfrn_request_content(&$a) {
'node' => $r[0]['nickname'],
'dfrn_id' => $r[0]['issued-id'],
'intro_id' => $intro[0]['id'],
'duplex' => (($r[0]['page-flags'] == PAGE_FREELOVE) ? 1 : 0)
'duplex' => (($r[0]['page-flags'] == PAGE_FREELOVE) ? 1 : 0),
'activity' => intval(get_pconfig($r[0]['uid'],'system','post_newfriend'))
);
dfrn_confirm_post($a,$handsfree);
}

View file

@ -18,10 +18,18 @@ function friendica_init(&$a) {
$admin = false;
}
$visible_plugins = array();
if(is_array($a->plugins) && count($a->plugins)) {
$r = q("select * from addon where hidden = 0");
if(count($r))
foreach($r as $rr)
$visible_plugins[] = $rr['name'];
}
$data = Array(
'version' => FRIENDICA_VERSION,
'url' => z_root(),
'plugins' => $a->plugins,
'plugins' => $visible_plugins,
'register_policy' => $register_policy[$a->config['register_policy']],
'admin' => $admin,
'site_name' => $a->config['sitename'],
@ -54,9 +62,18 @@ function friendica_content(&$a) {
$o .= '<p></p>';
if(count($a->plugins)) {
$visible_plugins = array();
if(is_array($a->plugins) && count($a->plugins)) {
$r = q("select * from addon where hidden = 0");
if(count($r))
foreach($r as $rr)
$visible_plugins[] = $rr['name'];
}
if(count($visible_plugins)) {
$o .= '<p>' . t('Installed plugins/addons/apps:') . '</p>';
$sorted = $a->plugins;
$sorted = $visible_plugins;
$s = '';
sort($sorted);
foreach($sorted as $p) {

View file

@ -171,37 +171,44 @@ function network_content(&$a, $update = 0) {
'label' => t('Commented Order'),
'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '?f=&cid=' . $_GET['cid'] : ''),
'sel'=>$all_active,
'title'=> t('Sort by Comment Date'),
),
array(
'label' => t('Posted Order'),
'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''),
'sel'=>$postord_active,
'title' => t('Sort by Post Date'),
),
array(
'label' => t('Personal'),
'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&conv=1',
'sel' => $conv_active,
'title' => t('Posts that mention or involve you'),
),
array(
'label' => t('New'),
'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . '/new' . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : ''),
'sel' => $new_active,
'title' => t('Activity Stream - by date'),
),
array(
'label' => t('Starred'),
'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&star=1',
'sel'=>$starred_active,
'title' => t('Favourite Posts'),
),
array(
'label' => t('Shared Links'),
'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&bmark=1',
'sel'=>$bookmarked_active,
'title'=> t('Interesting Links'),
),
// array(
// 'label' => t('Spam'),
// 'url'=>$a->get_baseurl(true) . '/network?f=&spam=1'
// 'sel'=> $spam_active,
// 'title' => t('Posts flagged as SPAM'),
// ),

View file

@ -32,6 +32,8 @@ function profile_init(&$a) {
profile_load($a,$which,$profile);
$userblock = (($a->profile['hidewall'] && (! local_user()) && (! remote_user())) ? true : false);
if((x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY)) {
$a->page['htmlhead'] .= '<meta name="friendica.community" content="true" />';
}
@ -41,8 +43,8 @@ function profile_init(&$a) {
$delegate = ((strstr($a->profile['openid'],'://')) ? $a->profile['openid'] : 'http://' . $a->profile['openid']);
$a->page['htmlhead'] .= '<link rel="openid.delegate" href="' . $delegate . '" />' . "\r\n";
}
if(! $blocked) {
// site block
if((! $blocked) && (! $userblock)) {
$keywords = ((x($a->profile,'pub_keywords')) ? $a->profile['pub_keywords'] : '');
$keywords = str_replace(array('#',',',' ',',,'),array('',' ',',',','),$keywords);
if(strlen($keywords))

View file

@ -139,21 +139,49 @@ function profiles_post(&$a) {
$changes = array();
$value = '';
if($is_default) {
if($marital != $orig[0]['marital']) $changes[] = '&hearts; ' . t('Marital Status');
if($withchanged) $changes[] = '&hearts; ' . t('Romantic Partner');
if($work != $orig[0]['work']) $changes[] = t('Work/Employment');
if($religion != $orig[0]['religion']) $changes[] = t('Religion');
if($politic != $orig[0]['politic']) $changes[] = t('Political Views');
if($gender != $orig[0]['gender']) $changes[] = t('Gender');
if($sexual != $orig[0]['sexual']) $changes[] = t('Sexual Preference');
if($homepage != $orig[0]['homepage']) $changes[] = t('Homepage');
if($interest != $orig[0]['interest']) $changes[] = t('Interests');
if($marital != $orig[0]['marital']) {
$changes[] = '[color=#ff0000]&hearts;[/color] ' . t('Marital Status');
$value = $marital;
}
if($withchanged) {
$changes[] = '&hearts; ' . t('Romantic Partner');
$value = strip_tags($with);
}
if($work != $orig[0]['work']) {
$changes[] = t('Work/Employment');
}
if($religion != $orig[0]['religion']) {
$changes[] = t('Religion');
$value = $religion;
}
if($politic != $orig[0]['politic']) {
$changes[] = t('Political Views');
$value = $politic;
}
if($gender != $orig[0]['gender']) {
$changes[] = t('Gender');
$value = $gender;
}
if($sexual != $orig[0]['sexual']) {
$changes[] = t('Sexual Preference');
$value = $sexual;
}
if($homepage != $orig[0]['homepage']) {
$changes[] = t('Homepage');
$value = $homepage;
}
if($interest != $orig[0]['interest']) {
$changes[] = t('Interests');
$value = $interest;
}
if($address != $orig[0]['address'] || $locality != $orig[0]['locality'] || $region != $orig[0]['region']
|| $country_name != $orig[0]['country_name'])
|| $country_name != $orig[0]['country-name']) {
$changes[] = t('Location');
}
profile_activity($changes);
profile_activity($changes,$value);
}
@ -245,7 +273,7 @@ function profiles_post(&$a) {
}
function profile_activity($changed) {
function profile_activity($changed, $value) {
$a = get_app();
if(! local_user() || ! is_array($changed) || ! count($changed))
@ -289,7 +317,7 @@ function profile_activity($changed) {
foreach($changed as $ch) {
if(strlen($changes)) {
if ($z == ($t - 1))
$changes .= ' and ';
$changes .= t(' and ');
else
$changes .= ', ';
}
@ -299,7 +327,15 @@ function profile_activity($changed) {
$prof = '[url=' . $self[0]['url'] . '?tab=profile' . ']' . t('public profile') . '[/url]';
$arr['body'] = sprintf( t('%1$s has an updated %2$s, changing %3$s.'), $A, $prof, $changes);
if($t == 1 && strlen($value)) {
$message = sprintf( t('%1$s changed %2$s to %3$s'), $A, $changes, $value);
$message .= "\n\n" . sprintf( t(' - Visit %1$s\'s %2$s'), $A, $prof);
}
else
$message = sprintf( t('%1$s has an updated %2$s, changing %3$s.'), $A, $prof, $changes);
$arr['body'] = $message;
$arr['object'] = '<object><type>' . ACTIVITY_OBJ_PROFILE . '</type><title>' . $self[0]['name'] . '</title>'
. '<id>' . $self[0]['url'] . '/' . $self[0]['name'] . '</id>';

View file

@ -352,6 +352,7 @@ function settings_post(&$a) {
$hide_friends = (($_POST['hide-friends'] == 1) ? 1: 0);
$hidewall = (($_POST['hidewall'] == 1) ? 1: 0);
$post_newfriend = (($_POST['post_newfriend'] == 1) ? 1: 0);
$post_joingroup = (($_POST['post_joingroup'] == 1) ? 1: 0);
$post_profilechange = (($_POST['post_profilechange'] == 1) ? 1: 0);
@ -436,6 +437,7 @@ function settings_post(&$a) {
set_pconfig(local_user(),'system','suggestme', $suggestme);
set_pconfig(local_user(),'system','post_newfriend', $post_newfriend);
set_pconfig(local_user(),'system','post_joingroup', $post_joingroup);
set_pconfig(local_user(),'system','post_profilechange', $post_profilechange);
@ -802,6 +804,9 @@ function settings_content(&$a) {
$post_newfriend = get_pconfig(local_user(), 'system','post_newfriend');
$post_newfriend = (($post_newfriend===false)? '0': $post_newfriend); // default if not set: 0
$post_joingroup = get_pconfig(local_user(), 'system','post_joingroup');
$post_joingroup = (($post_joingroup===false)? '0': $post_joingroup); // default if not set: 0
$post_profilechange = get_pconfig(local_user(), 'system','post_profilechange');
$post_profilechange = (($post_profilechange===false)? '0': $post_profilechange); // default if not set: 0
@ -976,6 +981,7 @@ function settings_content(&$a) {
'$h_not' => t('Notification Settings'),
'$activity_options' => t('By default post a status message when:'),
'$post_newfriend' => array('post_newfriend', t('accepting a friend request'), $post_newfriend, ''),
'$post_joingroup' => array('post_joingroup', t('joining a forum/community'), $post_joingroup, ''),
'$post_profilechange' => array('post_profilechange', t('making an <em>interesting</em> profile change'), $post_profilechange, ''),
'$lbl_not' => t('Send a notification email when:'),
'$notify1' => array('notify1', t('You receive an introduction'), ($notify & NOTIFY_INTRO), NOTIFY_INTRO, ''),

View file

@ -66,14 +66,14 @@ function tagger_content(&$a) {
}
$uri = item_new_uri($a->get_hostname(),$owner_uid);
$xterm = xmlify($term);
$post_type = (($item['resource-id']) ? t('photo') : t('status'));
$targettype = (($item['resource-id']) ? ACTIVITY_OBJ_PHOTO : ACTIVITY_OBJ_NOTE );
$link = xmlify('<link rel="alternate" type="text/html" href="'
. $a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id'] . '" />' . "\n") ;
$body = $item['body'];
$body = xmlify($item['body']);
$target = <<< EOT
<target>
@ -95,8 +95,8 @@ EOT;
<local>1</local>
<id>$tagid</id>
<link>$tagid</link>
<title>$term</title>
<content>$term</content>
<title>$xterm</title>
<content>$xterm</content>
</object>
EOT;

View file

@ -1,6 +1,6 @@
<?php
define( 'UPDATE_VERSION' , 1139 );
define( 'UPDATE_VERSION' , 1141 );
/**
*
@ -1216,3 +1216,17 @@ function update_1137() {
function update_1138() {
q("alter table contact add archive tinyint(1) not null default '0' after hidden, add index (archive)");
}
function update_1139() {
$r = q("alter table user add account_removed tinyint(1) not null default '0' after expire, add index(account_removed) ");
if(! $r)
return UPDATE_FAILED ;
return UPDATE_SUCCESS ;
}
function update_1140() {
$r = q("alter table addon add hidden tinyint(1) not null default '0' after installed, add index(hidden) ");
if(! $r)
return UPDATE_FAILED ;
return UPDATE_SUCCESS ;
}

File diff suppressed because it is too large Load diff

View file

@ -16,10 +16,12 @@
<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>
<li class='admin link button $admin.themes.2'><a href='$admin.themes.0'>$admin.themes.1</a></li>
<li class='admin link button $admin.dbsync.2'><a href='$admin.dbsync.0'>$admin.dbsync.1</a></li>
</ul>
<ul class='admin linklist'>
<li class='admin link button $admin.update.2'><a href='$admin.update.0'>$admin.update.1</a></li>
<li class='admin link button $admin.update.2'><a href='https://kakste.com/profile/inthegit'>Important Changes</a></li>
</ul>

View file

@ -80,6 +80,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=$delivery_interval }}{{ endinc }}
{{ inc field_input.tpl with $field=$abandon_days }}{{ endinc }}
<div class="submit"><input type="submit" name="page_site" value="$submit" /></div>

View file

@ -1,5 +1,5 @@
<ul class="tabs">
{{ for $tabs as $tab }}
<li><a href="$tab.url" class="tab button $tab.sel">$tab.label</a></li>
<li><a href="$tab.url" class="tab button $tab.sel"{{ if $tab.title }} title="$tab.title"{{ endif }}>$tab.label</a></li>
{{ endfor }}
</ul>

View file

@ -1,15 +1,14 @@
Hallo $myname,
Hallo $[myname],
'$requestor' folgt dir jetzt auf $sitename.
Du hast einen neuen Anhänger auf $[sitename] - '$[requestor]'.
Du kannst das Profil unter $url abrufen.
Du kannst das Profil unter $[url] besuchen.
Bitte melde dich auf deiner Seite an um die Anfrage zu bestätigen, abzulehnen
oder zu ignorieren.
Bitte melde dich an um die Anfrage zu bestätigen oder sie zu ignorieren bzw. abzulehnen.
$siteurl
$[siteurl]
Grüße,
$sitename Administrator
beste Grüße,
$[sitename] Administrator

File diff suppressed because it is too large Load diff

View file

@ -138,7 +138,7 @@ $a->strings["Permission settings"] = "Berechtigungseinstellungen";
$a->strings["CC: email addresses"] = "Cc:-E-Mail-Addressen";
$a->strings["Public post"] = "Öffentlicher Beitrag";
$a->strings["Set title"] = "Titel setzen";
$a->strings["Categories (comma-separated list)"] = "Kategorien (mit Komma separierte Liste)";
$a->strings["Categories (comma-separated list)"] = "Kategorien (kommasepariert)";
$a->strings["Example: bob@example.com, mary@example.com"] = "Z.B.: bob@example.com, mary@example.com";
$a->strings["This introduction has already been accepted."] = "Diese Kontaktanfrage wurde bereits akzeptiert.";
$a->strings["Profile location is not valid or does not contain profile information."] = "Profiladresse ist ungültig oder stellt einige Profildaten nicht zur Verfügung.";
@ -301,7 +301,8 @@ $a->strings["Contact has been blocked"] = "Kontakt wurde blockiert";
$a->strings["Contact has been unblocked"] = "Kontakt wurde wieder freigegeben";
$a->strings["Contact has been ignored"] = "Kontakt wurde ignoriert";
$a->strings["Contact has been unignored"] = "Kontakt wird nicht mehr ignoriert";
$a->strings["stopped following"] = "wird nicht mehr gefolgt";
$a->strings["Contact has been archived"] = "Kontakt wurde archiviert";
$a->strings["Contact has been unarchived"] = "Kontakt wurde aus dem Archiv geholt";
$a->strings["Contact has been removed."] = "Kontakt wurde entfernt.";
$a->strings["You are mutual friends with %s"] = "Du hast mit %s eine beidseitige Freundschaft";
$a->strings["You are sharing with %s"] = "Du teilst mit %s";
@ -320,6 +321,8 @@ $a->strings["View all contacts"] = "Alle Kontakte anzeigen";
$a->strings["Unblock"] = "Entsperren";
$a->strings["Block"] = "Sperren";
$a->strings["Unignore"] = "Ignorieren aufheben";
$a->strings["Unarchive"] = "Unarchivieren";
$a->strings["Archive"] = "Archivieren";
$a->strings["Repair"] = "Reparieren";
$a->strings["Contact Editor"] = "Kontakt Editor";
$a->strings["Profile Visibility"] = "Profil Anzeige";
@ -337,13 +340,15 @@ $a->strings["Update public posts"] = "Öffentliche Beiträge aktualisieren";
$a->strings["Update now"] = "Jetzt aktualisieren";
$a->strings["Currently blocked"] = "Derzeit geblockt";
$a->strings["Currently ignored"] = "Derzeit ignoriert";
$a->strings["Currently archived"] = "Momentan archiviert";
$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Antworten/Likes auf deine öffentlichen Beiträge <strong>könnten</strong> weiterhin sichtbar sein";
$a->strings["Suggestions"] = "Kontaktvorschläge";
$a->strings["All Contacts"] = "Alle Kontakte";
$a->strings["Unblocked Contacts"] = "Nicht blockierte Kontakte";
$a->strings["Blocked Contacts"] = "Blockierte Kontakte";
$a->strings["Ignored Contacts"] = "Ignorierte Kontakte";
$a->strings["Hidden Contacts"] = "Verborgene Kontakte";
$a->strings["Unblocked"] = "Ungeblockt";
$a->strings["Blocked"] = "Geblockt";
$a->strings["Ignored"] = "Ignoriert";
$a->strings["Archived"] = "Archiviert";
$a->strings["Hidden"] = "Verborgen";
$a->strings["Mutual Friendship"] = "Beidseitige Freundschaft";
$a->strings["is a fan of yours"] = "ist ein Fan von dir";
$a->strings["you are a fan of"] = "du bist Fan von";
@ -373,6 +378,7 @@ $a->strings["Connector settings"] = "Connector-Einstellungen";
$a->strings["Plugin settings"] = "Plugin-Einstellungen";
$a->strings["Connected apps"] = "Verbundene Programme";
$a->strings["Export personal data"] = "Persönliche Daten exportieren";
$a->strings["Remove account"] = "Account entfernen";
$a->strings["Settings"] = "Einstellungen";
$a->strings["Missing some important data!"] = "Wichtige Daten fehlen!";
$a->strings["Update"] = "Aktualisierungen";
@ -723,6 +729,8 @@ $a->strings["Proxy user"] = "Proxy Nutzer";
$a->strings["Proxy URL"] = "Proxy URL";
$a->strings["Network timeout"] = "Netzwerk Wartezeit";
$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Der Wert ist in Sekunden. Setze 0 für unbegrenzt (nicht empfohlen).";
$a->strings["Delivery interval"] = "Zustellungsintervall";
$a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl an Sekunden um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared-Hosts, 2-3 für VPS, 0-1 für große dedizierte Server.";
$a->strings["%s user blocked/unblocked"] = array(
0 => "%s Benutzer geblockt/freigegeben",
1 => "%s Benutzer geblockt/freigegeben",
@ -947,7 +955,8 @@ $a->strings["The given API Key seems to work correctly."] = "Der angegebene API
$a->strings["The correctness of the API Key could not be detected. Somthing strange's going on."] = "Die Echtheit des API Schlüssels konnte nicht überprüft werden. Etwas Merkwürdiges ist hier im Gange.";
$a->strings["App-ID / API-Key"] = "App-ID / API-Key";
$a->strings["Application secret"] = "Anwendungs-Geheimnis";
$a->strings["Polling Interval (min. %1\$s minutes)"] = "Abrufintervall (min. %1\$s Minuten)";
$a->strings["Polling Interval in minutes (minimum %1\$s minutes)"] = "Abfrage-Intervall in Minuten (min %1\$s Minuten)";
$a->strings["Synchronize comments (no comments on Facebook are missed, at the cost of increased system load)"] = "Kommentare synchronisieren (Kein Kommentar von Facebook geht verlohren, verursacht höhere Last auf dem Server)";
$a->strings["Real-Time Updates"] = "Echt-Zeit Aktualisierungen";
$a->strings["Real-Time Updates are activated."] = "Echtzeit-Updates sind aktiviert.";
$a->strings["Deactivate Real-Time Updates"] = "Echtzeit-Updates deaktivieren";
@ -961,6 +970,11 @@ $a->strings["Facebook post failed. Queued for retry."] = "Veröffentlichung bei
$a->strings["Your Facebook connection became invalid. Please Re-authenticate."] = "Deine Facebook Anmeldedaten sind ungültig geworden. Bitte re-authentifiziere dich.";
$a->strings["Facebook connection became invalid"] = "Facebook Anmeldedaten sind ungültig geworden";
$a->strings["Hi %1\$s,\n\nThe connection between your accounts on %2\$s and Facebook became invalid. This usually happens after you change your Facebook-password. To enable the connection again, you have to %3\$sre-authenticate the Facebook-connector%4\$s."] = "Hi %1\$s,\n\ndie Verbindung von deinem Account auf %2\$s und Facebook funktioniert derzeit nicht. Dies ist im Allgemeinen das Ergebnis einer Passwortänderung bei Facebook. Um die Verbindung wieder zu aktivieren musst du %3\$sden Facebook-Connector neu Authentifizieren%4\$s.";
$a->strings["Lifetime of the cache (in hours)"] = "Lebenszeit des Caches (in Stunden)";
$a->strings["Cache Statistics"] = "Cache Statistik";
$a->strings["Number of items"] = "Anzahl der Einträge";
$a->strings["Size of the cache"] = "Größe des Caches";
$a->strings["Delete the whole cache"] = "Cache leeren";
$a->strings["%d person likes this"] = array(
0 => "%d Person mag das",
1 => "%d Leuten mögen das",
@ -969,6 +983,7 @@ $a->strings["%d person doesn't like this"] = array(
0 => " %d Person mag das nicht",
1 => "%d Leute mögen das nicht",
);
$a->strings["Get added to this list!"] = "Werde Mitglied dieser Liste";
$a->strings["Generate new key"] = "Neuen Schlüssel erstellen";
$a->strings["Widgets key"] = "Widgets Schlüssel";
$a->strings["Widgets available"] = "Verfügbare Widgets";
@ -1058,12 +1073,12 @@ $a->strings["The impressum addon needs to be configured!<br />Please add at leas
$a->strings["The page operators name."] = "Name des Server-Administrators";
$a->strings["Site Owners Profile"] = "Profil des Seitenbetreibers";
$a->strings["Profile address of the operator."] = "Profil-Adresse des Server-Administrators";
$a->strings["How to contact the operator via snail mail."] = "Wie erreicht man den Betreiber der Seite postalisch.";
$a->strings["How to contact the operator via snail mail. You can use BBCode here."] = "Kontaktmöglichkeiten zum Administrator via Schneckenpost. Du kannst BBCode verwenden.";
$a->strings["Notes"] = "Hinweise";
$a->strings["Additional notes that are displayed beneath the contact information."] = "Zusätzliche Angaben, die unterhalb der Kontakt-Informationen angezeigt werden.";
$a->strings["Additional notes that are displayed beneath the contact information. You can use BBCode here."] = "Zusätzliche Informationen die neben den Kontaktmöglichkeiten angezeigt werden. Du kannst BBCode verwenden.";
$a->strings["How to contact the operator via email. (will be displayed obfuscated)"] = "Wie erreichts man den Betreiber per Email. (Adresse wird verschleiert dargestellt)";
$a->strings["Footer note"] = "Fußnote";
$a->strings["Text for the footer."] = "Text für die Fußnote";
$a->strings["Text for the footer. You can use BBCode here."] = "Text für die Fußzeile. Du kannst BBCode verwenden.";
$a->strings["Report Bug"] = "Fehlerreport erstellen";
$a->strings["\"Blockem\" Settings"] = "\"Blockem\"-Einstellungen";
$a->strings["Comma separated profile URLS to block"] = "Profil-URLs, die blockiert werden sollen (durch Kommas getrennt)";
@ -1204,6 +1219,10 @@ $a->strings["Enable Posterous Post Plugin"] = "Posterous-Plugin aktivieren";
$a->strings["Posterous login"] = "Posterous-Anmeldename";
$a->strings["Posterous password"] = "Posterous-Passwort";
$a->strings["Post to Posterous by default"] = "Veröffentliche öffentliche Beiträge standardmäßig bei Posterous";
$a->strings["Theme settings"] = "Themen Einstellungen";
$a->strings["Set resize level for images in posts and comments (width and height)"] = "Wähle das Vergrößerungsmaß für Bilder in Beiträgen und Kommentaren (Höhe und Breite)";
$a->strings["Set font-size for posts and comments"] = "Schriftgröße für Beiträge und Kommentare festlegen";
$a->strings["Color scheme"] = "Farbschema";
$a->strings["Last users"] = "Letzte Nutzer";
$a->strings["Last likes"] = "Zuletzt gemocht";
$a->strings["Last photos"] = "Letzte Fotos";
@ -1221,15 +1240,13 @@ $a->strings["Your photos"] = "Deine Fotos";
$a->strings["Your events"] = "Deine Ereignisse";
$a->strings["Personal notes"] = "Persönliche Notizen";
$a->strings["Your personal photos"] = "Deine privaten Fotos";
$a->strings["Theme settings"] = "Themen Einstellungen";
$a->strings["Set font-size for posts and comments"] = "Schriftgröße für Beiträge und Kommentare festlegen";
$a->strings["Set line-height for posts and comments"] = "Liniengröße für Beiträge und Kommantare festlegen";
$a->strings["Set resolution for middle column"] = "Auflösung für die Mittelspalte setzen";
$a->strings["Set color scheme"] = "Wähle Farbschema";
$a->strings["Alignment"] = "Ausrichtung";
$a->strings["Left"] = "Links";
$a->strings["Center"] = "Mitte";
$a->strings["Color scheme"] = "Farbschema";
$a->strings["Set colour scheme"] = "Farbschema wählen";
$a->strings["Gender:"] = "Geschlecht:";
$a->strings["j F, Y"] = "j F, Y";
$a->strings["j F"] = "j F";
@ -1505,6 +1522,7 @@ $a->strings["Welcome "] = "Willkommen ";
$a->strings["Please upload a profile photo."] = "Bitte lade ein Profilbild hoch.";
$a->strings["Welcome back "] = "Willkommen zurück ";
$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Das Sicherheits-Merkmal war nicht korrekt. Das passiert meistens wenn das Formular vor dem Absenden zu lange geöffnet war (länger als 3 Stunden).";
$a->strings["stopped following"] = "wird nicht mehr gefolgt";
$a->strings["View Status"] = "Pinnwand anschauen";
$a->strings["View Profile"] = "Profil anschauen";
$a->strings["View Photos"] = "Bilder anschauen";
@ -1525,6 +1543,14 @@ $a->strings["like"] = "mag ich";
$a->strings["dislike"] = "mag ich nicht";
$a->strings["Share this"] = "Teile dieses";
$a->strings["share"] = "Teilen";
$a->strings["Bold"] = "Fett";
$a->strings["Italic"] = "Kursiv";
$a->strings["Underline"] = "Unterstrichen";
$a->strings["Quote"] = "Zitat";
$a->strings["Code"] = "Code";
$a->strings["Image"] = "Bild";
$a->strings["Link"] = "Verweis";
$a->strings["Video"] = "Video";
$a->strings["add star"] = "markieren";
$a->strings["remove star"] = "Markierung entfernen";
$a->strings["toggle star status"] = "Markierung umschalten";
@ -1569,9 +1595,9 @@ $a->strings["Edit profile"] = "Profil bearbeiten";
$a->strings["Message"] = "Nachricht";
$a->strings["g A l F d"] = "l, d. F G \\U\\h\\r";
$a->strings["F d"] = "d. F";
$a->strings["[today]"] = "[heute]";
$a->strings["Birthday Reminders"] = "Geburtstagserinnerungen";
$a->strings["Birthdays this week:"] = "Geburtstage diese Woche:";
$a->strings["[today]"] = "[heute]";
$a->strings["[No description]"] = "[keine Beschreibung]";
$a->strings["Event Reminders"] = "Veranstaltungserinnerungen";
$a->strings["Events this week:"] = "Veranstaltungen diese Woche";
$a->strings["[No description]"] = "[keine Beschreibung]";

File diff suppressed because it is too large Load diff

View file

@ -301,7 +301,8 @@ $a->strings["Contact has been blocked"] = "Kontakto estas blokita.";
$a->strings["Contact has been unblocked"] = "Kontakto estas malblokita.";
$a->strings["Contact has been ignored"] = "Kontakto estas ignorita.";
$a->strings["Contact has been unignored"] = "Kontakto estas malignorita.";
$a->strings["stopped following"] = "ne plu sekvas";
$a->strings["Contact has been archived"] = "Enarkivigis kontakton";
$a->strings["Contact has been unarchived"] = "Elarkivigis kontakton";
$a->strings["Contact has been removed."] = "Kontakto estas forigita.";
$a->strings["You are mutual friends with %s"] = "Vi estas reciproka amiko de %s";
$a->strings["You are sharing with %s"] = "Vi kunhavigas kun %s";
@ -320,6 +321,8 @@ $a->strings["View all contacts"] = "Vidi ĉiujn kontaktojn";
$a->strings["Unblock"] = "Malbloki";
$a->strings["Block"] = "Bloki";
$a->strings["Unignore"] = "Malignori";
$a->strings["Unarchive"] = "Elarkivigi";
$a->strings["Archive"] = "Enarkivigi";
$a->strings["Repair"] = "Ripari";
$a->strings["Contact Editor"] = "Kontakta redaktilo.";
$a->strings["Profile Visibility"] = "Videbleco de profilo";
@ -337,13 +340,15 @@ $a->strings["Update public posts"] = "Ĝisdatigi publikajn afiŝojn";
$a->strings["Update now"] = "Ĝisdatigi nun";
$a->strings["Currently blocked"] = "Nuntempe blokata";
$a->strings["Currently ignored"] = "Nuntempe ignorata";
$a->strings["Currently archived"] = "Nuntempe enarkivigita";
$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Rispondoj/ŝataĵo al viaj publikaj afiŝoj <strong>eble</strong> plu estos videbla";
$a->strings["Suggestions"] = "Sugestoj";
$a->strings["All Contacts"] = "Ĉiuj Kontaktoj";
$a->strings["Unblocked Contacts"] = "Malblokitaj Kontaktoj";
$a->strings["Blocked Contacts"] = "Blokitaj Kontaktoj";
$a->strings["Ignored Contacts"] = "Ignoritaj Kontaktoj";
$a->strings["Hidden Contacts"] = "Kaŝitaj Kontaktoj";
$a->strings["Unblocked"] = "Malblokita";
$a->strings["Blocked"] = "Blokita";
$a->strings["Ignored"] = "Ignorita";
$a->strings["Archived"] = "Enarkivigita";
$a->strings["Hidden"] = "Kaŝita";
$a->strings["Mutual Friendship"] = "Reciproka amikeco";
$a->strings["is a fan of yours"] = "estas admiranto de vi";
$a->strings["you are a fan of"] = "vi estas admiranto de";
@ -373,6 +378,7 @@ $a->strings["Connector settings"] = "Konektiloj";
$a->strings["Plugin settings"] = "Kromprogramoj";
$a->strings["Connected apps"] = "Konektitaj programoj";
$a->strings["Export personal data"] = "Eksporto";
$a->strings["Remove account"] = "Forigi konton";
$a->strings["Settings"] = "Agordoj";
$a->strings["Missing some important data!"] = "Mankas importantaj datumoj!";
$a->strings["Update"] = "Ĝisdatigi";
@ -723,6 +729,8 @@ $a->strings["Proxy user"] = "Uzantnomo por retperanto";
$a->strings["Proxy URL"] = "URL adreso de retperanto";
$a->strings["Network timeout"] = "Reta tempolimo";
$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valoro en sekundoj. Uzu 0 por mallimitigi (ne rekomendata).";
$a->strings["Delivery interval"] = "Intervalo de liverado";
$a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Malfruigi fonan liveradon dum tiom da sekundoj por malpliigi la ŝargon de la sistemo. Rekomendoj: 4-5 por komunaj serviloj, 2-3 por virtualaj privataj serviloj, 0-1 por grandaj dediĉitaj serviloj.";
$a->strings["%s user blocked/unblocked"] = array(
0 => "Blokis/malblokis %s uzanton",
1 => "Blokis/malblokis %s uzantojn",
@ -947,7 +955,7 @@ $a->strings["The given API Key seems to work correctly."] = "La API ŝlosilo ŝa
$a->strings["The correctness of the API Key could not be detected. Somthing strange's going on."] = "Ne povis kontroli la ĝustecon de la API ŝlosilo. Ia stranga afero okazas. ";
$a->strings["App-ID / API-Key"] = "Programo ID / API Ŝlosilo";
$a->strings["Application secret"] = "Programo sekreto";
$a->strings["Polling Interval (min. %1\$s minutes)"] = "Intervalo por la enketilo (poller intervalo, minimume %1\$s mintuoj) ";
$a->strings["Polling Interval in minutes (minimum %1\$s minutes)"] = "Intervalo de enketo en minutoj (minimume %1\$s minutoj)";
$a->strings["Synchronize comments (no comments on Facebook are missed, at the cost of increased system load)"] = "Sinkronigi komentojn (vi ricevas ĉiujn komentojn de Facebook, sed la ŝargo de la sistemo iom kreskas)";
$a->strings["Real-Time Updates"] = "Realtempaj Ĝisdatigoj";
$a->strings["Real-Time Updates are activated."] = "Realtempaj Ĝisdatigoj estas ŝaltita";
@ -975,6 +983,7 @@ $a->strings["%d person doesn't like this"] = array(
0 => "%d homo malŝatas tiun",
1 => "%d homo malŝatas tiun",
);
$a->strings["Get added to this list!"] = "Iĝu membro de ĉi tiu listo!";
$a->strings["Generate new key"] = "Generi novan ĉifroŝlosilon";
$a->strings["Widgets key"] = "Ŝlosilo por fenestraĵoj";
$a->strings["Widgets available"] = "Disponeblaj fenestraĵoj";
@ -1064,12 +1073,12 @@ $a->strings["The impressum addon needs to be configured!<br />Please add at leas
$a->strings["The page operators name."] = "La nomo de la funkciigisto de la retejo.";
$a->strings["Site Owners Profile"] = "Profilo de la Proprietulo de la Retejo";
$a->strings["Profile address of the operator."] = "La profilo de la funkciigisto de la retejo.";
$a->strings["How to contact the operator via snail mail."] = "Kiel kontakti la funkciigiston de la retejo tra paperpoŝto.";
$a->strings["How to contact the operator via snail mail. You can use BBCode here."] = "Kiel poŝte kontakti la funkciigisto de la retejo. Vi eblas uzi BBCode ĉi tie.";
$a->strings["Notes"] = "Notoj";
$a->strings["Additional notes that are displayed beneath the contact information."] = "Pliaj notoj kiuj estas montrigota malsupre la kontaktinformojn.";
$a->strings["Additional notes that are displayed beneath the contact information. You can use BBCode here."] = "Pli da notoj kiuj aperas sub la kontaktinformoj. Vi eblas uzi BBCode ĉi tie.";
$a->strings["How to contact the operator via email. (will be displayed obfuscated)"] = "Kiel kontakti la funkciigiston de la retejo tra retpoŝto. (montriĝos vuale) ";
$a->strings["Footer note"] = "Paĝpiednoto";
$a->strings["Text for the footer."] = "Teksto por la paĝpiedo.";
$a->strings["Text for the footer. You can use BBCode here."] = "Teksto por la paĝpiedo. Vie eblas uzi BBCode ĉi tie.";
$a->strings["Report Bug"] = "Skribi cimraporton";
$a->strings["\"Blockem\" Settings"] = "\"Blockem\" Agordoj";
$a->strings["Comma separated profile URLS to block"] = "Blokotaj URL adresoj, disigita per komo";
@ -1210,6 +1219,10 @@ $a->strings["Enable Posterous Post Plugin"] = "Ŝalti la Poserous-afiŝo krompro
$a->strings["Posterous login"] = "Posterous salutnomo";
$a->strings["Posterous password"] = "Posterous pasvorto";
$a->strings["Post to Posterous by default"] = "Defaŭlte afiŝi al Posterous";
$a->strings["Theme settings"] = "Agordoj pri la etoso";
$a->strings["Set resize level for images in posts and comments (width and height)"] = "Agordi la regrandignivelo por bildoj en afiŝoj kaj komentoj (larĝo kaj alto)";
$a->strings["Set font-size for posts and comments"] = "Agordi la tiparan grandon por afiŝoj kaj komentoj";
$a->strings["Color scheme"] = "Kolorskemo";
$a->strings["Last users"] = "Ĵusaj uzantoj";
$a->strings["Last likes"] = "Ĵusaj ŝatitaj elementoj";
$a->strings["Last photos"] = "Ĵusaj bildoj";
@ -1227,15 +1240,13 @@ $a->strings["Your photos"] = "Viaj bildoj";
$a->strings["Your events"] = "Viaj okazoj";
$a->strings["Personal notes"] = "Personaj notoj";
$a->strings["Your personal photos"] = "Viaj personaj bildoj";
$a->strings["Theme settings"] = "Agordoj pri la etoso";
$a->strings["Set font-size for posts and comments"] = "Agordi la tiparan grandon por afiŝoj kaj komentoj";
$a->strings["Set line-height for posts and comments"] = "Agordi la linigrandon por afiŝoj kaj komentoj";
$a->strings["Set resolution for middle column"] = "Agordi la distingivon por la meza kolumno";
$a->strings["Set color scheme"] = "Agordi Kolorskemon";
$a->strings["Alignment"] = "Ĝisrandigo";
$a->strings["Left"] = "Maldekstren";
$a->strings["Center"] = "Centren";
$a->strings["Color scheme"] = "Kolorskemo";
$a->strings["Set colour scheme"] = "Agordi Kolorskemon";
$a->strings["Gender:"] = "Sekso:";
$a->strings["j F, Y"] = "j F, Y";
$a->strings["j F"] = "j F";
@ -1511,6 +1522,7 @@ $a->strings["Welcome "] = "Bonvenon ";
$a->strings["Please upload a profile photo."] = "Bonvolu alŝuti profilbildon.";
$a->strings["Welcome back "] = "Bonvenon ";
$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "La sekuriga ĵetono de la formo estis malĝusta. Tio verŝajne okazis ĉar la formo estis malfermita dum tro longa tempo (>3 horoj) antaŭ la sendado.";
$a->strings["stopped following"] = "ne plu sekvas";
$a->strings["View Status"] = "Vidi Staton";
$a->strings["View Profile"] = "Vidi Profilon";
$a->strings["View Photos"] = "Vidi Bildojn";
@ -1531,6 +1543,14 @@ $a->strings["like"] = "ŝati";
$a->strings["dislike"] = "malŝati";
$a->strings["Share this"] = "Kunhavigi ĉi tiun";
$a->strings["share"] = "kunhavigi";
$a->strings["Bold"] = "Grasa";
$a->strings["Italic"] = "Kursiva";
$a->strings["Underline"] = "Substreki";
$a->strings["Quote"] = "Citaĵo";
$a->strings["Code"] = "Kodo";
$a->strings["Image"] = "Bildo";
$a->strings["Link"] = "Ligilo";
$a->strings["Video"] = "Video";
$a->strings["add star"] = "aldoni stelon";
$a->strings["remove star"] = "forpreni stelon";
$a->strings["toggle star status"] = "ŝalti/malŝalti steloŝtato";
@ -1575,9 +1595,9 @@ $a->strings["Edit profile"] = "Redakti profilon";
$a->strings["Message"] = "Mesaĝo";
$a->strings["g A l F d"] = "\\j\\e \\l\\a G\\a \\h\\o\\r\\o, l F d";
$a->strings["F d"] = "F d";
$a->strings["[today]"] = "[hodiaŭ]";
$a->strings["Birthday Reminders"] = "Memorigilo pri naskiĝtagoj";
$a->strings["Birthdays this week:"] = "Naskiĝtagoj ĉi-semajne:";
$a->strings["[today]"] = "[hodiaŭ]";
$a->strings["[No description]"] = "[Neniu priskribo]";
$a->strings["Event Reminders"] = "Memorigiloj pri Okazoj";
$a->strings["Events this week:"] = "Okazoj ĉi-semajne:";
$a->strings["[No description]"] = "[Neniu priskribo]";

17
view/failed_updates.tpl Normal file
View file

@ -0,0 +1,17 @@
<h2>$banner</h2>
<div id="failed_updates_desc">$desc</div>
{{ if $failed }}
{{ for $failed as $f }}
<h4>$f</h4>
<ul>
<li><a href="$base/admin/dbsync/mark/$f">$mark</a></li>
<li><a href="$base/admin/dbsync/$f">$apply</a></li>
</ul>
<hr />
{{ endfor }}
{{ endif }}

View file

@ -6,6 +6,7 @@
<link rel="stylesheet" href="$baseurl/library/jgrowl/jquery.jgrowl.css" type="text/css" media="screen" />
<link rel="stylesheet" type="text/css" href="$stylesheet" media="all" />
<meta name="viewport" content="width=800, initial-scale=1, maximum-scale=3" />
<link rel="shortcut icon" href="$baseurl/images/friendica-32.png" />
<link rel="search"

View file

@ -102,6 +102,7 @@ $unkmail
<strong>$activity_options</strong>
{{inc field_checkbox.tpl with $field=$post_newfriend }}{{endinc}}
{{inc field_checkbox.tpl with $field=$post_joingroup }}{{endinc}}
{{inc field_checkbox.tpl with $field=$post_profilechange }}{{endinc}}

View file

@ -108,7 +108,7 @@ $a->page['htmlhead'] .= '
<script>
$(function() {
$(".wall-item-content-wrapper img").aeImageResize({height: '.$resize.', width: '.$resize.'});
$(".wall-item-content img").aeImageResize({height: '.$resize.', width: '.$resize.'});
});
</script>';}
}

View file

@ -4,9 +4,20 @@
{{ endif }}
</div>
<div id="close_profiles">
{{ if $comunity_profilest_title }}
<h3>$comunity_profilest_title<a id="close_comunity_profiles_icon" onClick="close_profiles()" class="icon close_box" title="close"></a></h3>
<div id='lastusers-wrapper' class='items-wrapper'>
{{ for $comunity_profiles_items as $i }}
$i
{{ endfor }}
</div>
{{ endif }}
</div>
<div id="close_helpers">
{{ if $lastusers_title }}
<h3 style="margin-top:0px;">$helpers.title.1<a id="close_helpers_icon" onClick="close_helpers()" class="icon close_box" title="close"></a></h3>
<h3>$helpers.title.1<a id="close_helpers_icon" onClick="close_helpers()" class="icon close_box" title="close"></a></h3>
<a href="http://kakste.com/profile/newhere" title="@NewHere" style="margin-left: 10px; " target="blank">NewHere</a><br>
<a href="https://helpers.pyxis.uberspace.de/profile/helpers" style="margin-left: 10px; " title="Friendica Support" target="blank">Friendica Support</a><br>
<a href="https://letstalk.pyxis.uberspace.de/profile/letstalk" style="margin-left: 10px; " title="Let's talk" target="blank">Let's talk</a><br>
@ -42,6 +53,9 @@ $nv.search
{{ endif }}
</div>
<div id="twitter">
</div>
<div id="close_lastusers">
{{ if $lastusers_title }}
<h3>$lastusers_title<a id="close_lastusers_icon" onClick="close_lastusers()" class="icon close_box" title="close"></a></h3>

View file

@ -1182,7 +1182,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-aerith/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1191,14 +1191,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-aerith/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-aerith/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;

View file

@ -1178,7 +1178,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-aerith/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1187,14 +1187,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-aerith/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-aerith/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;

View file

@ -1158,7 +1158,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-aerith/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1167,14 +1167,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-aerith/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-aerith/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;

View file

@ -1154,7 +1154,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-aerith/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1163,14 +1163,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-aerith/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-aerith/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;

View file

@ -21,6 +21,7 @@
.admin.linklist {
border: 0px; padding: 0px;
list-style: none;
}
.admin.link {
@ -1014,7 +1015,7 @@ ul.menu-popup .empty {
background-color: #bdcdd4;
}
#nav-notifications-menu {
width: 400px;
width: 425px !important;
max-height: 550px;
overflow: auto;
}
@ -1243,7 +1244,7 @@ aside #likes a:hover{
margin-right: 20px;
}
#login-submit-wrapper{
padding-top: 120px;
margin-bottom: 12px;
}
aside #login-submit-button{

View file

@ -21,6 +21,7 @@
.admin.linklist {
border: 0px; padding: 0px;
list-style: none;
}
.admin.link {
@ -1013,7 +1014,7 @@ ul.menu-popup .empty {
background-color: #bdcdd4;
}
#nav-notifications-menu {
width: 400px;
width: 425px !important;
max-height: 550px;
overflow: auto;
}
@ -1241,7 +1242,7 @@ aside #likes a:hover{
margin-right: 20px;
}
#login-submit-wrapper{
padding-top: 120px;
margin-bottom: 12px;
}
aside #login-submit-button{

View file

@ -1148,7 +1148,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-blue/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1157,14 +1157,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-blue/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-blue/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;

View file

@ -1144,7 +1144,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-blue/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1153,14 +1153,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-blue/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-blue/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;

View file

@ -1128,7 +1128,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-blue/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1137,14 +1137,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-blue/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-blue/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;

View file

@ -1124,7 +1124,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-blue/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1133,14 +1133,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-blue/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-blue/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;

View file

@ -21,6 +21,7 @@
.admin.linklist {
border: 0px; padding: 0px;
list-style: none;
}
.admin.link {
@ -983,7 +984,7 @@ ul.menu-popup .empty {
background-color: #bdcdd4;
}
#nav-notifications-menu {
width: 400px;
width: 425px !important;
max-height: 550px;
overflow: auto;
}
@ -1203,7 +1204,7 @@ aside #side-peoplefind-url {
margin-right: 20px;
}
#login-submit-wrapper{
padding-top: 120px;
margin-bottom: 12px;
}
aside #login-submit-button{

View file

@ -21,6 +21,7 @@
.admin.linklist {
border: 0px; padding: 0px;
list-style: none;
}
.admin.link {
@ -982,7 +983,7 @@ ul.menu-popup .empty {
background-color: #bdcdd4;
}
#nav-notifications-menu {
width: 400px;
width: 425px !important;
max-height: 550px;
overflow: auto;
}
@ -1201,7 +1202,7 @@ aside #side-peoplefind-url {
margin-right: 20px;
}
#login-submit-wrapper{
padding-top: 120px;
margin-bottom: 12px;
}
aside #login-submit-button{

View file

@ -1431,7 +1431,7 @@ transition: all 0.2s ease-in-out;
.wall-item-comment-wrapper {
margin: 1px 5px 5px 80px;
background-color: #fff;
background-color: #444;
width: 500px;
}
.wall-item-comment-wrapper .comment-edit-photo {
@ -1442,14 +1442,14 @@ transition: all 0.2s ease-in-out;
width: 100%;
font-size: 10px;
color: #999999;
border: 1px solid #DDD;
border: 1px solid #2e2e2f;
padding: 0.3em;
font-size: 14px;
}
.wall-item-comment-wrapper .comment-edit-text-full {
font-size: 14px;
height: 4em;
color: #2e2f2e;
color: #eec;
border: 1px solid #2e2f2e;
}
.comment-edit-preview {
@ -1596,8 +1596,8 @@ transition: all 0.2s ease-in-out;
height: 2.0em;
width: 99%;
font-size: 15px;
color: #999999;
border: 1px solid #DDD;
color: #eec;
border: 1px solid #444;
padding: 0.3em;
margin-bottom: 10px;
}

View file

@ -540,7 +540,7 @@ header #banner a:active,
header #banner a:visited,
header #banner a:link,
header #banner a:hover {
color: #2e2f2e;
color: #eec;
text-decoration: none;
outline: none;
vertical-align: middle;
@ -661,7 +661,7 @@ nav .nav-menu-icon {
border-radius: 5px 5px 0 0;
}
nav .nav-menu-icon:hover {
background-color: #eec;
background-color: #308dbf;
position: relative;
height: 22px;
padding: 5px;
@ -776,7 +776,7 @@ nav #nav-apps-link.selected {
}
.notify-seen {
background: none repeat scroll 0 0 #DDDDDD;
background: none repeat scroll 0 0 #666;
}
ul.menu-popup {
@ -1424,7 +1424,7 @@ transition: all 0.2s ease-in-out;
.wall-item-comment-wrapper .comment-edit-text-full {
font-size: 14px;
height: 4em;
color: #2e302;
color: #eec;
border: 1px solid #2e302;
}
.comment-edit-preview {
@ -1571,10 +1571,11 @@ transition: all 0.2s ease-in-out;
height: 2.0em;
width: 99%;
font-size: 15px;
color: #999999;
color: #eec;
border: 1px solid #DDD;
padding: 0.3em;
margin-bottom: 10px;
background: #444;
}
.grey
{
@ -1667,6 +1668,7 @@ transition: all 0.2s ease-in-out;
margin: 0 0 5px;
width: 60%;
border: 1px solid #d2d2d2;
background: #444;
}
#profile-jot-form #jot-title:-webkit-input-placeholder {
font-weight: normal;

View file

@ -1671,6 +1671,7 @@ body .pageheader{
height: 2.0em;
width: 100%;
font-size: 10px;
background: #444;
color: #999999;
border: 1px solid #DDD;
padding: 0.3em;

View file

@ -439,7 +439,7 @@ a:hover {
clear: both;
}
.fakelink {
color: #194719;
color: #2c9936;
/* color: #3e3e8c; */
text-decoration: none;
cursor: pointer;
@ -1158,7 +1158,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-green/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1167,14 +1167,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-green/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-green/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1301,7 +1301,7 @@ transition: all 0.2s ease-in-out;
padding-top: 10px;
}
.tread-wrapper a{
color: #194719;
color: #2c9936;
}
/*marker*/
@ -1840,7 +1840,7 @@ transition: all 0.2s ease-in-out;
font-weight: bolder;
}
.button.creation2 {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;

View file

@ -439,7 +439,7 @@ a:hover {
clear: both;
}
.fakelink {
color: #194719;
color: #2c9936;
/* color: #3e3e8c; */
text-decoration: none;
cursor: pointer;
@ -493,7 +493,7 @@ code {
float: right;
}
.tool a {
color: #194719;
color: #2c9936;
}
.tool a:hover {
text-decoration: none;
@ -1155,7 +1155,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-green/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1164,14 +1164,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-green/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-green/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1297,7 +1297,7 @@ transition: all 0.2s ease-in-out;
padding-top: 10px;
}
.tread-wrapper a{
color: #194719;
color: #2c9936;
}
.wall-item-decor {
@ -1832,7 +1832,7 @@ transition: all 0.2s ease-in-out;
font-weight: bolder;
}
.button.creation2 {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -1964,7 +1964,7 @@ ul.tabs li {
margin-left: 5px;
}
ul.tabs li .active {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;

View file

@ -440,7 +440,7 @@ a:hover {
clear: both;
}
.fakelink {
color: #194719;
color: #2c9936;
/* color: #3e3e8c; */
text-decoration: none;
cursor: pointer;
@ -1134,7 +1134,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-green/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1143,14 +1143,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-green/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-green/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1276,7 +1276,7 @@ transition: all 0.2s ease-in-out;
padding-top: 10px;
}
.tread-wrapper a{
color: #194719;
color: #2c9936;
}
/*marker*/
@ -1811,7 +1811,7 @@ transition: all 0.2s ease-in-out;
cursor: pointer;
}
.button.creation2 {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -1945,7 +1945,7 @@ ul.tabs li {
margin-left: 5px;
}
ul.tabs li .active {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;

View file

@ -440,7 +440,7 @@ a:hover {
clear: both;
}
.fakelink {
color: #194719;
color: #2c9936;
/* color: #3e3e8c; */
text-decoration: none;
cursor: pointer;
@ -1130,7 +1130,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-green/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1139,14 +1139,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-green/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-green/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1270,7 +1270,7 @@ transition: all 0.2s ease-in-out;
padding-top: 10px;
}
.tread-wrapper a{
color: #194719;
color: #2c9936;
}
.wall-item-decor {
@ -1801,7 +1801,7 @@ transition: all 0.2s ease-in-out;
cursor: pointer;
}
.button.creation2 {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -1933,7 +1933,7 @@ ul.tabs li {
margin-left: 5px;
}
ul.tabs li .active {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;

View file

@ -21,6 +21,7 @@
.admin.linklist {
border: 0px; padding: 0px;
list-style: none;
}
.admin.link {
@ -476,7 +477,7 @@ a:hover {
clear: both;
}
.fakelink {
color: #194719;
color: #2c9936;
/* color: #3e3e8c; */
text-decoration: none;
cursor: pointer;
@ -614,7 +615,7 @@ header #banner #logo-text {
}
/* messages */
#message-new {
background: #194719;
background: #2c9936;
border: 1px solid #333;
width: 150px;
}
@ -991,7 +992,7 @@ ul.menu-popup .empty {
background-color: #bdcdd4;
}
#nav-notifications-menu {
width: 400px;
width: 425px !important;
max-height: 550px;
overflow: auto;
}
@ -1185,7 +1186,7 @@ aside #side-peoplefind-url {
height: auto;
}
aside #likes a, a:visited, a:link {
color: #194719;
color: #2c9936;
text-decoration: none;
cursor: pointer;
@ -1220,7 +1221,7 @@ aside #likes a:hover{
margin-right: 20px;
}
#login-submit-wrapper{
padding-top: 120px;
margin-bottom: 12px;
}
aside #login-submit-button{
@ -1422,7 +1423,7 @@ body .pageheader{
padding-top: 10px;
}
.tread-wrapper a{
color: #194719;
color: #2c9936;
}
/*marker*/
@ -2073,7 +2074,7 @@ body .pageheader{
cursor: pointer;
}
.button.creation2 {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -2207,7 +2208,7 @@ ul.tabs li {
margin-left: 5px;
}
ul.tabs li .active {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -2225,7 +2226,7 @@ ul.rs_tabs li {
clear: both;
}
ul.rs_tabs li .selected {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;

View file

@ -21,6 +21,7 @@
.admin.linklist {
border: 0px; padding: 0px;
list-style: none;
}
.admin.link {
@ -477,7 +478,7 @@ a:hover {
}
/*color*/
.fakelink {
color: #194719;
color: #2c9936;
/* color: #3e3e8c; */
text-decoration: none;
cursor: pointer;
@ -550,7 +551,7 @@ code {
}
/*color*/
.tool a {
color: #194719;
color: #2c9936;
}
.tool a:hover {
text-decoration: none;
@ -617,7 +618,7 @@ header #banner #logo-text {
/*color*/
/* messages */
#message-new {
background: #194719;
background: #2c9936;
border: 1px solid #333;
width: 150px;
}
@ -994,7 +995,7 @@ ul.menu-popup .empty {
background-color: #bdcdd4;
}
#nav-notifications-menu {
width: 400px;
width: 425px !important;
max-height: 550px;
overflow: auto;
}
@ -1189,7 +1190,7 @@ aside #side-peoplefind-url {
}
/*color*/
aside #likes a, a:visited, a:link {
color: #194719;
color: #2c9936;
text-decoration: none;
cursor: pointer;
@ -1224,7 +1225,7 @@ aside #likes a:hover{
margin-right: 20px;
}
#login-submit-wrapper{
padding-top: 120px;
margin-bottom: 12px;
}
aside #login-submit-button{
@ -1425,7 +1426,7 @@ body .pageheader{
}
/*color*/
.tread-wrapper a{
color: #194719;
color: #2c9936;
}
.wall-item-decor {
position: absolute;
@ -2071,7 +2072,7 @@ body .pageheader{
}
/*color*/
.button.creation2 {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -2204,7 +2205,7 @@ ul.tabs li {
}
/*color*/
ul.tabs li .active {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -2223,7 +2224,7 @@ ul.rs_tabs li {
}
/*color*/
ul.rs_tabs li .selected {
background-color: #194719;
background-color: #2c9936;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;

View file

@ -439,7 +439,7 @@ a:hover {
clear: both;
}
.fakelink {
color: #996d73;
color: #D02B55;
/* color: #3e3e8c; */
text-decoration: none;
cursor: pointer;
@ -807,7 +807,7 @@ ul.menu-popup a {
text-decoration: none;
}
ul.menu-popup a:hover {
background-color: #996d73; /*bdcdd4;*/
background-color: #D02B55; /*bdcdd4;*/
color: #fff;
}
ul.menu-popup .menu-sep {
@ -1158,7 +1158,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-pink/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1167,14 +1167,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-pink/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-pink/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1301,7 +1301,7 @@ transition: all 0.2s ease-in-out;
padding-top: 10px;
}
.tread-wrapper a{
color: #996d73;
color: #D02B55;
}
/*marker*/
@ -1840,7 +1840,7 @@ transition: all 0.2s ease-in-out;
font-weight: bolder;
}
.button.creation2 {
background-color: #996d73;
background-color: #D02B55;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;

View file

@ -439,7 +439,7 @@ a:hover {
clear: both;
}
.fakelink {
color: #996d73;
color: #D02B55;
/* color: #3e3e8c; */
text-decoration: none;
cursor: pointer;
@ -493,7 +493,7 @@ code {
float: right;
}
.tool a {
color: #996d73;
color: #D02B55;
}
.tool a:hover {
text-decoration: none;
@ -807,7 +807,7 @@ ul.menu-popup a {
text-decoration: none;
}
ul.menu-popup a:hover {
background-color: #996d73; /*bdcdd4;*/
background-color: #D02B55; /*bdcdd4;*/
color: #fff;
}
ul.menu-popup .menu-sep {
@ -1155,7 +1155,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-pink/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1164,14 +1164,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-pink/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-pink/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1297,7 +1297,7 @@ transition: all 0.2s ease-in-out;
padding-top: 10px;
}
.tread-wrapper a{
color: #996d73;
color: #D02B55;
}
.wall-item-decor {
@ -1832,7 +1832,7 @@ transition: all 0.2s ease-in-out;
font-weight: bolder;
}
.button.creation2 {
background-color: #996d73;
background-color: #D02B55;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -1964,7 +1964,7 @@ ul.tabs li {
margin-left: 5px;
}
ul.tabs li .active {
background-color: #996d73;
background-color: #D02B55;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;

View file

@ -440,7 +440,7 @@ a:hover {
clear: both;
}
.fakelink {
color: #996d73;
color: #D02B55;
/* color: #3e3e8c; */
text-decoration: none;
cursor: pointer;
@ -807,7 +807,7 @@ ul.menu-popup a {
text-decoration: none;
}
ul.menu-popup a:hover {
background-color: #996d73; /*bdcdd4;*/
background-color: #D02B55; /*bdcdd4;*/
color: #fff;
}
ul.menu-popup .menu-sep {
@ -1134,7 +1134,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-pink/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1143,14 +1143,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-pink/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-pink/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1276,7 +1276,7 @@ transition: all 0.2s ease-in-out;
padding-top: 10px;
}
.tread-wrapper a{
color: #996d73;
color: #D02B55;
}
/*marker*/
@ -1811,7 +1811,7 @@ transition: all 0.2s ease-in-out;
cursor: pointer;
}
.button.creation2 {
background-color: #996d73;
background-color: #D02B55;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -1945,7 +1945,7 @@ ul.tabs li {
margin-left: 5px;
}
ul.tabs li .active {
background-color: #996d73;
background-color: #D02B55;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;

View file

@ -440,7 +440,7 @@ a:hover {
clear: both;
}
.fakelink {
color: #996d73;
color: #D02B55;
/* color: #3e3e8c; */
text-decoration: none;
cursor: pointer;
@ -806,7 +806,7 @@ ul.menu-popup a {
text-decoration: none;
}
ul.menu-popup a:hover {
background-color: #996d73; /*bdcdd4;*/
background-color: #D02B55; /*bdcdd4;*/
color: #fff;
}
ul.menu-popup .menu-sep {
@ -1130,7 +1130,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-pink/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1139,14 +1139,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-pink/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-pink/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;
@ -1270,7 +1270,7 @@ transition: all 0.2s ease-in-out;
padding-top: 10px;
}
.tread-wrapper a{
color: #996d73;
color: #D02B55;
}
.wall-item-decor {
@ -1801,7 +1801,7 @@ transition: all 0.2s ease-in-out;
cursor: pointer;
}
.button.creation2 {
background-color: #996d73;
background-color: #D02B55;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -1933,7 +1933,7 @@ ul.tabs li {
margin-left: 5px;
}
ul.tabs li .active {
background-color: #996d73;
background-color: #D02B55;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;

View file

@ -21,6 +21,7 @@
.admin.linklist {
border: 0px; padding: 0px;
list-style: none;
}
.admin.link {
@ -476,7 +477,7 @@ a:hover {
clear: both;
}
.fakelink {
color: #996d73;
color: #D02B55;
/* color: #3e3e8c; */
text-decoration: none;
cursor: pointer;
@ -614,7 +615,7 @@ header #banner #logo-text {
}
/* messages */
#message-new {
background: #996d73;
background: #D02B55;
border: 1px solid #333;
width: 150px;
}
@ -943,7 +944,7 @@ ul.menu-popup a {
text-decoration: none;
}
ul.menu-popup a:hover {
background-color: #996d73; /*bdcdd4;*/
background-color: #D02B55; /*bdcdd4;*/
color: #fff;
}
ul.menu-popup .menu-sep {
@ -991,7 +992,7 @@ ul.menu-popup .empty {
background-color: #bdcdd4;
}
#nav-notifications-menu {
width: 400px;
width: 425px !important;
max-height: 550px;
overflow: auto;
}
@ -1185,7 +1186,7 @@ aside #side-peoplefind-url {
height: auto;
}
aside #likes a, a:visited, a:link {
color: #996d73;
color: #D02B55;
text-decoration: none;
cursor: pointer;
@ -1220,7 +1221,7 @@ aside #likes a:hover{
margin-right: 20px;
}
#login-submit-wrapper{
padding-top: 120px;
margin-bottom: 12px;
}
aside #login-submit-button{
@ -1422,7 +1423,7 @@ body .pageheader{
padding-top: 10px;
}
.tread-wrapper a{
color: #996d73;
color: #D02B55;
}
/*marker*/
@ -2073,7 +2074,7 @@ body .pageheader{
cursor: pointer;
}
.button.creation2 {
background-color: #996d73;
background-color: #D02B55;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -2207,7 +2208,7 @@ ul.tabs li {
margin-left: 5px;
}
ul.tabs li .active {
background-color: #996d73;
background-color: #D02B55;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -2225,7 +2226,7 @@ ul.rs_tabs li {
clear: both;
}
ul.rs_tabs li .selected {
background-color: #996d73;
background-color: #D02B55;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;

View file

@ -21,6 +21,7 @@
.admin.linklist {
border: 0px; padding: 0px;
list-style: none;
}
.admin.link {
@ -477,7 +478,7 @@ a:hover {
}
/*color*/
.fakelink {
color: #996d73;
color: #D02B55;
/* color: #3e3e8c; */
text-decoration: none;
cursor: pointer;
@ -550,7 +551,7 @@ code {
}
/*color*/
.tool a {
color: #996d73;
color: #D02B55;
}
.tool a:hover {
text-decoration: none;
@ -617,7 +618,7 @@ header #banner #logo-text {
/* messages */
/*color*/
#message-new {
background: #996d73;
background: #D02B55;
border: 1px solid #333;
width: 150px;
}
@ -946,7 +947,7 @@ ul.menu-popup a {
}
/*color*/
ul.menu-popup a:hover {
background-color: #996d73; /*bdcdd4;*/
background-color: #D02B55; /*bdcdd4;*/
color: #fff;
}
ul.menu-popup .menu-sep {
@ -994,7 +995,7 @@ ul.menu-popup .empty {
background-color: #bdcdd4;
}
#nav-notifications-menu {
width: 400px;
width: 425px !important;
max-height: 550px;
overflow: auto;
}
@ -1189,7 +1190,7 @@ aside #side-peoplefind-url {
}
/*color*/
aside #likes a, a:visited, a:link {
color: #996d73;
color: #D02B55;
text-decoration: none;
cursor: pointer;
@ -1224,7 +1225,7 @@ aside #likes a:hover{
margin-right: 20px;
}
#login-submit-wrapper{
padding-top: 120px;
margin-bottom: 12px;
}
aside #login-submit-button{
@ -1425,7 +1426,7 @@ body .pageheader{
}
/*color*/
.tread-wrapper a{
color: #996d73;
color: #D02B55;
}
.wall-item-decor {
position: absolute;
@ -2071,7 +2072,7 @@ body .pageheader{
}
/*color*/
.button.creation2 {
background-color: #996d73;
background-color: #D02B55;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -2204,7 +2205,7 @@ ul.tabs li {
}
/*color*/
ul.tabs li .active {
background-color: #996d73;
background-color: #D02B55;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;
@ -2223,7 +2224,7 @@ ul.rs_tabs li {
}
/*color*/
ul.rs_tabs li .selected {
background-color: #996d73;
background-color: #D02B55;
border: 1px solid #777777;
color: white;
border-radius: 3px 3px 3px 3px;

View file

@ -1182,7 +1182,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-red/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1191,14 +1191,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-red/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-red/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;

View file

@ -1178,7 +1178,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-red/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1187,14 +1187,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-red/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-red/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;

View file

@ -1141,7 +1141,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-red/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1150,14 +1150,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-red/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-red/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;

View file

@ -1137,7 +1137,7 @@ list-style-type: disc;
}
/* widget: search */
span.sbox_l {
background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
background: white url('../diabook-red/icons/srch_l.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-left: 10px;
@ -1146,14 +1146,14 @@ span.sbox_l {
}
span.sbox_r {
background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
background: white url('../diabook-red/icons/srch_r.gif') no-repeat top left;
float: left;
width: 19px; height: 19px;
margin-top: 5px;
}
span.sbox input {
background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
background: white url('../diabook-red/icons/srch_bg.gif') repeat-x top left;
float: left;
margin-top: 5px;
border: 0;

View file

@ -21,6 +21,7 @@
.admin.linklist {
border: 0px; padding: 0px;
list-style: none;
}
.admin.link {
@ -1013,7 +1014,7 @@ ul.menu-popup .empty {
background-color: #bdcdd4;
}
#nav-notifications-menu {
width: 400px;
width: 425px !important;
max-height: 550px;
overflow: auto;
}
@ -1232,7 +1233,7 @@ aside #side-peoplefind-url {
margin-right: 20px;
}
#login-submit-wrapper{
padding-top: 120px;
margin-bottom: 12px;
}
aside #login-submit-button{

View file

@ -21,6 +21,7 @@
.admin.linklist {
border: 0px; padding: 0px;
list-style: none;
}
.admin.link {
@ -1012,7 +1013,7 @@ ul.menu-popup .empty {
background-color: #bdcdd4;
}
#nav-notifications-menu {
width: 400px;
width: 425px !important;
max-height: 550px;
overflow: auto;
}
@ -1230,7 +1231,7 @@ aside #side-peoplefind-url {
margin-right: 20px;
}
#login-submit-wrapper{
padding-top: 120px;
margin-bottom: 12px;
}
aside #login-submit-button{

View file

@ -1,4 +1,3 @@
<div style="display: table-cell"></div>
<div style="border-top: 1px solid #D2D2D2; width: 100%;margin-top: 30px;">
<div id="footerbox" style="display:none">
<a style="float:right; color:#333;margin-right:10px;display: table;margin-top: 5px;" href="friendica" title="Site Info / Impressum" >Info / Impressum</a>
</div>

View file

@ -24,3 +24,8 @@ $(function() {
_______________________________________________________________________________________________
http://javascriptly.com/examples/jquery-grab-bag/autogrow-textarea.html
_______________________________________________________________________________________________
http://jquery.malsup.com/
http://jquery.malsup.com/twitter/

View file

@ -0,0 +1,289 @@
/*!
* jQuery Twitter Search Plugin
* Examples and documentation at: http://jquery.malsup.com/twitter/
* Copyright (c) 2010 M. Alsup
* Version: 1.04 (15-SEP-2011)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
* Requires: jQuery v1.3.2 or later
*/
;(function($) {
$.fn.twitterSearch = function(options) {
if (typeof options == 'string')
options = { term: options };
return this.each(function() {
var grabFlag = false,
grabbing = false,
$frame = $(this), text, $text, $title, $bird, $cont, height, paused = false,
opts = $.extend(true, {}, $.fn.twitterSearch.defaults, options || {}, $.metadata ? $frame.metadata() : {});
opts.formatter = opts.formatter || $.fn.twitterSearch.formatter;
opts.filter = opts.filter || $.fn.twitterSearch.filter;
if (!opts.applyStyles) { // throw away all style defs
for (var css in opts.css)
opts.css[css] = {};
}
if (opts.title === null) // user can set to '' to suppress title
opts.title = opts.term;
opts.title = opts.title || '';
text = opts.titleLink ? ('<a href="'+ opts.titleLink +'">'+ opts.title + '</a>') : ('<span>' + opts.title +'<a id="close_friends_icon" onClick="close_twitter()" class="icon close_box" title="close"></a>'+ '</span>');
$text = $(text);
if (opts.titleLink)
$text.css(opts.css['titleLink']);
$title = $('<div class="twitterSearchTitle"></div>').append($text).appendTo($frame).css(opts.css['title']);
if (opts.bird) {
$bird = $('<img class="twitterSearchBird" src="'+opts.birdSrc+'" />').appendTo($title).css(opts.css['bird']);
if (opts.birdLink)
$bird.wrap('<a href="'+ opts.birdLink +'"></a>');
}
$cont = $('<div class="twitterSearchContainter"></div>').appendTo($frame).css(opts.css['container']);
cont = $cont[0];
if (opts.colorExterior)
$title.css('background-color',opts.colorExterior);
if (opts.colorInterior)
$cont.css('background-color',opts.colorInterior);
$frame.css(opts.css['frame']);
if (opts.colorExterior)
$frame.css('border-color',opts.colorExterior);
height = $frame.innerHeight() - $title.outerHeight();
$cont.height(height);
if (opts.pause)
$cont.hover(function(){paused = true;},function(){paused = false;});
$('<div class="twitterSearchLoading">Loading tweets..</div>').css(opts.css['loading']).appendTo($cont);
grabTweets();
function grabTweets() {
var url = opts.url + opts.term;
grabFlag = false;
grabbing = true;
// grab twitter stream
$.getJSONP({
url: url,
timeout: 30000,
error: function(xhr, status, e) {
failWhale(e);
},
complete: function() {
grabbing = false;
if (opts.refreshSeconds)
setTimeout(regrab, opts.refreshSeconds * 1000);
},
success: function(json) {
if (json.error) {
failWhale(json.error);
return;
}
$cont.fadeOut('fast',function() {
$cont.empty();
// iterate twitter results
$.each(json.results, function(i) {
if (!opts.filter.call(opts, this))
return; // skip this tweet
var $img, $text, w,
tweet = opts.formatter(this, opts),
$tweet = $(tweet);
$tweet.css(opts.css['tweet']);
$img = $tweet.find('.twitterSearchProfileImg').css(opts.css['img']);
$tweet.find('.twitterSearchUser').css(opts.css['user']);
$tweet.find('.twitterSearchTime').css(opts.css['time']);
$tweet.find('a').css(opts.css['a']);
$tweet.appendTo($cont);
$text = $tweet.find('.twitterSearchText').css(opts.css['text']);
if (opts.avatar) {
w = $img.outerWidth() + parseInt($tweet.css('paddingLeft'));
$text.css('paddingLeft', w);
}
});
$cont.fadeIn('fast');
if (json.results.length < 2) {
if (opts.refreshSeconds)
setTimeout(grabTweets, opts.refreshSeconds * 1000);
return;
}
// stage first animation
setTimeout(go, opts.timeout);
});
}
});
};
function regrab() {
grabFlag = true;
}
function failWhale(msg) {
var $fail = $('<div class="twitterSearchFail">' + msg + '</div>').css(opts.css['fail']);
$cont.empty().append($fail);
};
function go() {
if (paused || grabbing) {
setTimeout(go, 500);
return;
}
var h, $el = $cont.children(':first'), el = $el[0];
$el.animate(opts.animOut, opts.animOutSpeed, function() {
h = $el.outerHeight();
$el.animate({ marginTop: -h }, opts.animInSpeed, function() {
$el.css({ marginTop: 0, opacity: 1 });
/*@cc_on
try { el.style.removeAttribute('filter'); } // ie cleartype fix
catch(smother) {}
@*/
$el.css(opts.css['tweet']).show().appendTo($cont);
setTimeout(grabFlag ? grabTweets : go, opts.timeout);
});
});
}
});
};
$.fn.twitterSearch.filter = function(tweet) {
return true;
};
$.fn.twitterSearch.formatter = function(json, opts) {
var str, pretty,
text = json.text;
if (opts.anchors) {
text = json.text.replace(/(http:\/\/\S+)/g, '<a href="$1">$1</a>');
text = text.replace(/\@(\w+)/g, '<a href="http://twitter.com/$1">@$1</a>');
}
str = '<div class="twitterSearchTweet">';
if (opts.avatar)
str += '<img class="twitterSearchProfileImg" src="' + json.profile_image_url + '" />';
str += '<div><span class="twitterSearchUser"><a href="http://www.twitter.com/'+ json.from_user+'/status/'+ json.id_str +'">'
+ json.from_user + '</a></span>';
pretty = prettyDate(json.created_at);
if (opts.time && pretty)
str += ' <span class="twitterSearchTime">('+ pretty +')</span>'
str += '<div class="twitterSearchText">' + text + '</div></div></div>';
return str;
};
$.fn.twitterSearch.defaults = {
url: 'http://search.twitter.com/search.json?callback=?&q=',
anchors: true, // true or false (enable embedded links in tweets)
animOutSpeed: 500, // speed of animation for top tweet when removed
animInSpeed: 500, // speed of scroll animation for moving tweets up
animOut: { opacity: 0 }, // animation of top tweet when it is removed
applyStyles: true, // true or false (apply default css styling or not)
avatar: true, // true or false (show or hide twitter profile images)
bird: true, // true or false (show or hide twitter bird image)
birdLink: false, // url that twitter bird image should like to
birdSrc: 'http://cloud.github.com/downloads/malsup/twitter/tweet.gif', // twitter bird image
colorExterior: null, // css override of frame border-color and title background-color
colorInterior: null, // css override of container background-color
filter: null, // callback fn to filter tweets: fn(tweetJson) { /* return false to skip tweet */ }
formatter: null, // callback fn to build tweet markup
pause: false, // true or false (pause on hover)
refreshSeconds: 0, // number of seconds to wait before polling for newer tweets
term: '', // twitter search term
time: true, // true or false (show or hide the time that the tweet was sent)
timeout: 4000, // delay betweet tweet scroll
title: null, // title text to display when frame option is true (default = 'term' text)
titleLink: null, // url for title link
css: {
// default styling
a: { textDecoration: 'none', color: '#3B5998' },
bird: { width: '50px', height: '20px', position: 'absolute', left: '-30px', top: '-20px', border: 'none' },
container: { overflow: 'hidden', backgroundColor: '', height: '360px' },
fail: { background: '#6cc5c3 url(http://cloud.github.com/downloads/malsup/twitter/failwhale.png) no-repeat 50% 50%', height: '100%', padding: '10px' },
frame: { border: '0px solid #C2CFF1', borderRadius: '0px', '-moz-border-radius': '0px', '-webkit-border-radius': '0px' },
tweet: { padding: '5px 10px', clear: 'left' },
img: { 'float': 'left', margin: '5px', width: '48px', height: '48px' },
loading: { padding: '20px', textAlign: 'center', color: '#888' },
text: {},
time: { fontSize: 'smaller', color: '#888' },
title: { 'border-bottom': '1px solid #D2D2D2', 'padding-top': '5px', 'padding-bottom': '0px', 'padding-left': '9px', 'margin-bottom': '0px', 'margin-top': '30px' , 'display': 'block', 'font-size': '1.17em', 'font-weight': 'bold'},
titleLink: { textDecoration: 'none', color: '#3B5998' },
user: { fontWeight: 'bold' }
}
};
// fn to handle jsonp with timeouts and errors
// hat tip to Ricardo Tomasi for the timeout logic
$.getJSONP = function(s) {
s.dataType = 'jsonp';
$.ajax(s);
// figure out what the callback fn is
var $script = $(document.getElementsByTagName('head')[0].firstChild);
var url = $script.attr('src') || '';
var cb = (url.match(/callback=(\w+)/)||[])[1];
if (!cb)
return; // bail
var t = 0, cbFn = window[cb];
$script[0].onerror = function(e) {
$script.remove();
handleError(s, {}, "error", e);
clearTimeout(t);
};
if (!s.timeout)
return;
window[cb] = function(json) {
clearTimeout(t);
cbFn(json);
cbFn = null;
};
t = setTimeout(function() {
$script.remove();
handleError(s, {}, "timeout");
if (cbFn)
window[cb] = function(){};
}, s.timeout);
function handleError(s, xhr, msg, e) {
s.error && s.error.call(s.context, xhr, msg, e);
s.global && $.event.trigger("ajaxError", [xhr, s, e || msg]);
s.complete && s.complete.call(s.context, xhr, e || msg);
}
};
/*
* JavaScript Pretty Date
* Copyright (c) 2008 John Resig (jquery.com)
* Licensed under the MIT license.
*/
// converts ISO time to casual time
function prettyDate(time){
var date = new Date((time || "").replace(/-/g,"/").replace(/TZ/g," ")),
diff = (((new Date()).getTime() - date.getTime()) / 1000),
day_diff = Math.floor(diff / 86400);
if ( isNaN(day_diff) || day_diff < 0 || day_diff >= 31 )
return;
var v = day_diff == 0 && (
diff < 60 && "just now" ||
diff < 120 && "1 minute ago" ||
diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" ||
diff < 7200 && "1 hour ago" ||
diff < 86400 && Math.floor( diff / 3600 ) + " hours ago") ||
day_diff == 1 && "Yesterday" ||
day_diff < 7 && day_diff + " days ago" ||
day_diff < 31 && Math.ceil( day_diff / 7 ) + " weeks ago";
if (!v)
window.console && console.log(time);
return v ? v : '';
}
})(jQuery);

View file

@ -136,7 +136,7 @@
</nav>
<div id="scrollup" style="position: fixed; bottom: 5px; right: 10px;"><a id="down" onclick="scrolldown()" ><img id="scroll_top_bottom" src="view/theme/diabook/icons/scroll_bottom.png" style="display:cursor !important;" alt="back to top" title="Back to top"></a></div>
<div id="scrollup" style="position: fixed; bottom: 5px; right: 10px;z-index: 97;"><a id="down" onclick="scrolldown()" ><img id="scroll_top_bottom" src="view/theme/diabook/icons/scroll_bottom.png" style="display:cursor !important;" alt="back to top" title="Back to top"></a></div>
<div style="position: fixed; bottom: 3px; left: 25px;">$langselector</div>
<div style="position: fixed; bottom: 23px; left: 5px;"><a href="http://pad.toktan.org/p/diabook" target="blank" ><img src="view/theme/diabook/icons/bluebug.png" title="report bugs for the theme diabook"/></a></div>

View file

@ -1252,6 +1252,7 @@ right_aside .icon {width: 10px; height: 10px;}
transition: all 0.2s ease-in-out;
}
/* wall item */
.tread-wrapper {
border-bottom: 1px solid #D2D2D2;

View file

@ -21,6 +21,7 @@
.admin.linklist {
border: 0px; padding: 0px;
list-style: none;
}
.admin.link {
@ -974,7 +975,7 @@ ul.menu-popup .empty {
background-color: #bdcdd4;
}
#nav-notifications-menu {
width: 400px;
width: 425px !important;
max-height: 550px;
overflow: auto;
}
@ -1195,7 +1196,7 @@ aside #side-peoplefind-url {
margin-right: 20px;
}
#login-submit-wrapper{
padding-top: 120px;
margin-bottom: 12px;
}
aside #login-submit-button{

View file

@ -21,6 +21,7 @@
.admin.linklist {
border: 0px; padding: 0px;
list-style: none;
}
.admin.link {
@ -974,7 +975,7 @@ ul.menu-popup .empty {
background-color: #bdcdd4;
}
#nav-notifications-menu {
width: 400px;
width: 425px !important;
max-height: 550px;
overflow: auto;
}
@ -1198,7 +1199,7 @@ aside #side-peoplefind-url {
margin-right: 20px;
}
#login-submit-wrapper{
padding-top: 120px;
margin-bottom: 12px;
}
aside #login-submit-button{

View file

@ -3,13 +3,13 @@
/*
* Name: Diabook
* Description: Diabook: report bugs and request here: http://pad.toktan.org/p/diabook or contact me : thomas_bierey@friendica.eu
* Version: (Version: 1.022)
* Version: (Version: 1.024)
* Author:
*/
//print diabook-version for debugging
$diabook_version = "Diabook (Version: 1.022)";
$diabook_version = "Diabook (Version: 1.024)";
$a->page['htmlhead'] .= sprintf('<script "%s" ></script>', $diabook_version);
//change css on network and profilepages
@ -44,6 +44,26 @@ function diabook_community_info(){
$a = get_app();
// comunity_profiles
$aside['$comunity_profilest_title'] = t('Community Profiles');
$aside['$comunity_profiles_items'] = array();
$r = q("select gcontact.* from gcontact left join glink on glink.gcid = gcontact.id
where glink.cid = 0 and glink.uid = 0 order by rand() limit 9");
$tpl = file_get_contents( dirname(__file__).'/ch_directory_item.tpl');
if(count($r)) {
$photo = 'photo';
foreach($r as $rr) {
$profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']);
$entry = replace_macros($tpl,array(
'$id' => $rr['id'],
'$profile-link' => zrl($rr['url']),
'$photo' => $rr[$photo],
'$alt-text' => $rr['name'],
));
$aside['$comunity_profiles_items'][] = $entry;
}
}
// last 12 users
$aside['$lastusers_title'] = t('Last users');
$aside['$lastusers_items'] = array();
@ -175,9 +195,8 @@ function diabook_community_info(){
//Community Page
if(local_user()) {
$page = '<div id="page-sidebar-right_aside" class="widget">
<div class="title tool">
<h3>'.t("Community Pages").'<a id="close_pages_icon" onClick="close_pages()" class="icon close_box" title="close"></a></h3></div>
$page = '<div id="page-sidebar-right_aside" >
<h3 style="margin-top:0px;">'.t("Community Pages").'<a id="close_pages_icon" onClick="close_pages()" class="icon close_box" title="close"></a></h3></div>
<div id="sidebar-page-list"><ul>';
$pagelist = array();
@ -266,9 +285,9 @@ if ($a->argv[0] === "network" && local_user()){
}
$ccCookie = $_COOKIE['close_pages'] + $_COOKIE['close_helpers'] + $_COOKIE['close_services'] + $_COOKIE['close_friends'] + $_COOKIE['close_lastusers'] + $_COOKIE['close_lastphotos'] + $_COOKIE['close_lastlikes'];
$ccCookie = $_COOKIE['close_pages'] + $_COOKIE['close_profiles'] + $_COOKIE['close_helpers'] + $_COOKIE['close_services'] + $_COOKIE['close_friends'] + $_COOKIE['close_twitter'] + $_COOKIE['close_lastusers'] + $_COOKIE['close_lastphotos'] + $_COOKIE['close_lastlikes'];
if($ccCookie != "7") {
if($ccCookie != "9") {
// COMMUNITY
diabook_community_info();
@ -282,7 +301,7 @@ if ($a->argv[0] === "network" && local_user()){
//right_aside at profile pages
if ($a->argv[0].$a->argv[1] === "profile".$a->user['nickname']){
if($ccCookie != "7") {
if($ccCookie != "9") {
// COMMUNITY
diabook_community_info();
@ -312,7 +331,25 @@ $a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></scrip
$autogrowJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.autogrow.textarea.js";
$a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $autogrowJS);
//load jquery.twitter.search.js
$twitterJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.twitter.search.js";
$a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $twitterJS);
//js scripts
//check if community_home-plugin is activated and change css
$nametocheck = "communityhome";
$r = q("select id from addon where name = '%s' and installed = 1", dbesc($nametocheck));
if(count($r) == "1") {
$a->page['htmlhead'] .= '
<script>
$(document).ready(function() {
$("div#login-submit-wrapper").attr("style","padding-top: 120px;");
});
</script>';
}
//comment-edit-wrapper on photo_view
if ($a->argv[0].$a->argv[2] === "photos"."image"){
@ -324,16 +361,28 @@ $a->page['htmlhead'] .= '
});
</script>';
}
$a->page['htmlhead'] .= '
<script>
$(function() {
$("a.lightbox").fancybox(); // Select all links with lightbox class
$("#twitter").twitterSearch({
term: "friendica",
animInSpeed: 250,
bird: false,
avatar: false,
colorExterior: "#fff",
title: "Last Tweets",
timeout: 10000 });
});
$(window).load(function() {
var footer_top = $(document).height() - 30;
$("div#footerbox").attr("style", "border-top: 1px solid #D2D2D2; width: 70%;right: 15%;position: absolute;top:"+footer_top+"px;");
});
</script>';
@ -412,8 +461,10 @@ $a->page['htmlhead'] .= '
function restore_boxes(){
$.cookie("close_pages","2", { expires: 365, path: "/" });
$.cookie("close_helpers","2", { expires: 365, path: "/" });
$.cookie("close_profiles","2", { expires: 365, path: "/" });
$.cookie("close_services","2", { expires: 365, path: "/" });
$.cookie("close_friends","2", { expires: 365, path: "/" });
$.cookie("close_twitter","2", { expires: 365, path: "/" });
$.cookie("close_lastusers","2", { expires: 365, path: "/" });
$.cookie("close_lastphotos","2", { expires: 365, path: "/" });
$.cookie("close_lastlikes","2", { expires: 365, path: "/" });
@ -433,7 +484,7 @@ $a->page['htmlhead'] .= '
</script>';
if($ccCookie != "7") {
if($ccCookie != "9") {
$a->page['htmlhead'] .= '
<script>
$("right_aside").ready(function(){
@ -443,6 +494,11 @@ $("right_aside").ready(function(){
document.getElementById( "close_pages" ).style.display = "none";
};
if($.cookie("close_profiles") == "1")
{
document.getElementById( "close_profiles" ).style.display = "none";
};
if($.cookie("close_helpers") == "1")
{
document.getElementById( "close_helpers" ).style.display = "none";
@ -458,6 +514,10 @@ $("right_aside").ready(function(){
document.getElementById( "close_friends" ).style.display = "none";
};
if($.cookie("close_twitter") == "1")
{
document.getElementById( "twitter" ).style.display = "none";
};
if($.cookie("close_lastusers") == "1")
{
@ -481,6 +541,11 @@ function close_pages(){
$.cookie("close_pages","1", { expires: 365, path: "/" });
};
function close_profiles(){
document.getElementById( "close_profiles" ).style.display = "none";
$.cookie("close_profiles","1", { expires: 365, path: "/" });
};
function close_helpers(){
document.getElementById( "close_helpers" ).style.display = "none";
$.cookie("close_helpers","1", { expires: 365, path: "/" });
@ -496,6 +561,10 @@ function close_friends(){
$.cookie("close_friends","1", { expires: 365, path: "/" });
};
function close_twitter(){
document.getElementById( "twitter" ).style.display = "none";
$.cookie("close_twitter","1", { expires: 365, path: "/" });
};
function close_lastusers(){
document.getElementById( "close_lastusers" ).style.display = "none";

View file

@ -73,8 +73,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
#nav-buttons{clear:both;list-style:none;padding:0px;margin:0px;height:25px;}#nav-buttons>li{padding:0;display:inline-block;margin:0px -4px 0px 0px;}
.floaterflip{display:block;position:fixed;z-index:110;top:56px;right:19px;width:22px;height:22px;overflow:hidden;margin:0px;background:transparent url(dark/icons.png) -190px -60px no-repeat;}
.search-box{display:inline-block;margin:5px;position:fixed;right:0px;bottom:0px;z-index:100;background:#1d1f1d;border-radius:5px;}
#search-text{border:1px #eec solid;background:#2e2f2e;color:#eec;}
.search-box #search-text{margin:8px;width:10em;height:14px;color:#eec;}
#search-text{border:1px #eec solid;background:#2e2f2e;color:#eec;font-size:8pt;margin:8px;width:10em;height:14px;}
#scrollup{position:fixed;right:5px;bottom:40px;z-index:100;}#scrollup a:hover{text-decoration:none;border:0;}
#user-menu{box-shadow:5px 0 10px 0 #111;display:block;width:75%;margin:3px 0 0 0;position:relative;background-color:#555753;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;background:#555753 url("dark/menu-user-pin.jpg") 98% center no-repeat;clear:both;top:4px;left:10px;padding:2px;}#user-menu>a{vertical-align:top;}
#user-menu-label{font-size:12px;padding:3px 20px 9px 5px;height:10px;}

View file

@ -477,13 +477,11 @@ nav #nav-notifications-linkmenu {
#search-text {
border: 1px #eec solid;
background: #2e2f2e;
color: #eec; }
.search-box #search-text {
color: #eec;
font-size: 8pt;
margin: 8px;
width: 10em;
height: 14px;
color: #eec; }
height: 14px; }
#scrollup {
position: fixed;

View file

@ -73,8 +73,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
#nav-buttons{clear:both;list-style:none;padding:0px;margin:0px;height:25px;}#nav-buttons>li{padding:0;display:inline-block;margin:0px -4px 0px 0px;}
.floaterflip{display:block;position:fixed;z-index:110;top:56px;right:19px;width:22px;height:22px;overflow:hidden;margin:0px;background:transparent url(light/icons.png) -190px -60px no-repeat;}
.search-box{display:inline-block;margin:5px;position:fixed;right:0px;bottom:0px;z-index:100;background:#1d1f1d;border-radius:5px;}
#search-text{border:1px #eec solid;background:#2e3436;color:#eec;}
.search-box #search-text{margin:8px;width:10em;height:14px;color:#eec;}
#search-text{border:1px #eec solid;background:#2e3436;color:#eec;font-size:8pt;margin:8px;width:10em;height:14px;}
#scrollup{position:fixed;right:5px;bottom:40px;z-index:100;}#scrollup a:hover{text-decoration:none;border:0;}
#user-menu{box-shadow:5px 0 10px 0 #111;display:block;width:75%;margin:3px 0 0 0;position:relative;background-color:#555753;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;background:#555753 url("light/menu-user-pin.jpg") 98% center no-repeat;clear:both;top:4px;left:10px;padding:2px;}#user-menu>a{vertical-align:top;}
#user-menu-label{font-size:12px;padding:3px 20px 9px 5px;height:10px;}

View file

@ -478,13 +478,11 @@ nav #nav-notifications-linkmenu {
#search-text {
border: 1px #eec solid;
background: #2e3436;
color: #eec; }
.search-box #search-text {
color: #eec;
font-size: 8pt;
margin: 8px;
width: 10em;
height: 14px;
color: #eec; }
height: 14px; }
#scrollup {
position: fixed;