mirror of
https://github.com/friendica/friendica
synced 2024-12-23 17:20:16 +00:00
Merge remote branch 'friendica/master'
This commit is contained in:
commit
bad66a1154
55 changed files with 1671 additions and 1420 deletions
21
boot.php
21
boot.php
|
@ -9,9 +9,9 @@ require_once('include/nav.php');
|
|||
require_once('include/cache.php');
|
||||
|
||||
define ( 'FRIENDICA_PLATFORM', 'Friendica');
|
||||
define ( 'FRIENDICA_VERSION', '3.0.1351' );
|
||||
define ( 'FRIENDICA_VERSION', '3.0.1360' );
|
||||
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
|
||||
define ( 'DB_UPDATE_VERSION', 1144 );
|
||||
define ( 'DB_UPDATE_VERSION', 1145 );
|
||||
|
||||
define ( 'EOL', "<br />\r\n" );
|
||||
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
||||
|
@ -441,18 +441,15 @@ if(! class_exists('App')) {
|
|||
if(intval($this->config['system']['ssl_policy']) === intval(SSL_POLICY_FULL))
|
||||
$scheme = 'https';
|
||||
|
||||
// We need to populate the $ssl flag across the entire program before turning this on.
|
||||
// Basically, we'll have $ssl = true on any links which can only be seen by a logged in user
|
||||
// Basically, we have $ssl = true on any links which can only be seen by a logged in user
|
||||
// (and also the login link). Anything seen by an outsider will have it turned off.
|
||||
// At present, setting SSL_POLICY_SELFSIGN will only force remote contacts to update their
|
||||
// contact links to this site with "http:" if they are currently using "https:"
|
||||
|
||||
// if($this->config['system']['ssl_policy'] == SSL_POLICY_SELFSIGN) {
|
||||
// if($ssl)
|
||||
// $scheme = 'https';
|
||||
// else
|
||||
// $scheme = 'http';
|
||||
// }
|
||||
if($this->config['system']['ssl_policy'] == SSL_POLICY_SELFSIGN) {
|
||||
if($ssl)
|
||||
$scheme = 'https';
|
||||
else
|
||||
$scheme = 'http';
|
||||
}
|
||||
}
|
||||
|
||||
$this->baseurl = $scheme . "://" . $this->hostname . ((isset($this->path) && strlen($this->path)) ? '/' . $this->path : '' );
|
||||
|
|
|
@ -173,6 +173,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
|
|||
`readonly` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`writable` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`forum` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`prv` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`hidden` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`archive` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`pending` tinyint(1) NOT NULL DEFAULT '1',
|
||||
|
|
|
@ -88,3 +88,6 @@ $a->config['system']['itemcache'] = "";
|
|||
|
||||
// If enabled, the lockpath is used for a lockfile to check if the poller is running
|
||||
$a->config['system']['lockpath'] = "";
|
||||
|
||||
// If enabled, the MyBB fulltext engine is used
|
||||
// $a->config['system']['use_fulltext_engine'] = true;
|
||||
|
|
|
@ -985,10 +985,18 @@
|
|||
$myurl = substr($myurl,strpos($myurl,'://')+3);
|
||||
$myurl = str_replace(array('www.','.'),array('','\\.'),$myurl);
|
||||
$diasp_url = str_replace('/profile/','/u/',$myurl);
|
||||
$sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` regexp '%s' or `tag` regexp '%s' or tag regexp '%s' )) ",
|
||||
dbesc($myurl . '$'),
|
||||
dbesc($myurl . '\\]'),
|
||||
dbesc($diasp_url . '\\]')
|
||||
|
||||
if (get_config('system','use_fulltext_engine'))
|
||||
$sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where (MATCH(`author-link`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(`tag`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode))) ",
|
||||
dbesc(protect_sprintf($myurl)),
|
||||
dbesc(protect_sprintf($myurl)),
|
||||
dbesc(protect_sprintf($diasp_url))
|
||||
);
|
||||
else
|
||||
$sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ",
|
||||
dbesc(protect_sprintf('%' . $myurl)),
|
||||
dbesc(protect_sprintf('%' . $myurl . ']%')),
|
||||
dbesc(protect_sprintf('%' . $diasp_url . ']%'))
|
||||
);
|
||||
|
||||
if ($max_id > 0)
|
||||
|
@ -1251,6 +1259,9 @@
|
|||
else
|
||||
$statustext = trim($statustitle."\n\n".$statusbody);
|
||||
|
||||
if (($item["network"] == NETWORK_FEED) and (strlen($statustext)> 1000))
|
||||
$statustext = substr($statustext, 0, 1000)."... \n".$item["plink"];
|
||||
|
||||
$status = array(
|
||||
'text' => $statustext,
|
||||
'truncated' => False,
|
||||
|
|
|
@ -53,6 +53,8 @@ if((isset($_SESSION)) && (x($_SESSION,'authenticated')) && ((! (x($_POST,'auth-p
|
|||
$check = get_config('system','paranoia');
|
||||
// extra paranoia - if the IP changed, log them out
|
||||
if($check && ($_SESSION['addr'] != $_SERVER['REMOTE_ADDR'])) {
|
||||
logger('Session address changed. Paranoid setting in effect, blocking session. '
|
||||
. $_SESSION['addr'] . ' != ' . $_SERVER['REMOTE_ADDR']);
|
||||
nuke_session();
|
||||
goaway(z_root());
|
||||
}
|
||||
|
|
|
@ -221,13 +221,18 @@ function bb2diaspora($Text,$preserve_nl = false) {
|
|||
|
||||
$Text = preg_replace("/\<(.*?)(src|href)=(.*?)\&\;(.*?)\>/ism",'<$1$2=$3&$4>',$Text);
|
||||
|
||||
$Text = preg_replace('/\[(.*?)\]\((.*?)\\\\_(.*?)\)/ism','[$1]($2_$3)',$Text);
|
||||
$Text = preg_replace_callback('/\[(.*?)\]\((.*?)\)/ism','unescape_underscores_in_links',$Text);
|
||||
|
||||
call_hooks('bb2diaspora',$Text);
|
||||
|
||||
return $Text;
|
||||
}
|
||||
|
||||
function unescape_underscores_in_links($m) {
|
||||
$y = str_replace('\\_','_', $m[2]);
|
||||
return('[' . $m[1] . '](' . $y . ')');
|
||||
}
|
||||
|
||||
function format_event_diaspora($ev) {
|
||||
|
||||
$a = get_app();
|
||||
|
|
|
@ -30,6 +30,9 @@ function load_config($family) {
|
|||
$a->config[$family][$k] = $rr['v'];
|
||||
}
|
||||
}
|
||||
} else if ($rr['cat'] != 'config') {
|
||||
// Negative caching
|
||||
$a->config[$family] = "!<unset>!";
|
||||
}
|
||||
}}
|
||||
|
||||
|
@ -47,6 +50,13 @@ function get_config($family, $key, $instore = false) {
|
|||
global $a;
|
||||
|
||||
if(! $instore) {
|
||||
// Looking if the whole family isn't set
|
||||
if(isset($a->config[$family])) {
|
||||
if($a->config[$family] === '!<unset>!') {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($a->config[$family][$key])) {
|
||||
if($a->config[$family][$key] === '!<unset>!') {
|
||||
return false;
|
||||
|
@ -118,6 +128,9 @@ function load_pconfig($uid,$family) {
|
|||
$k = $rr['k'];
|
||||
$a->config[$uid][$family][$k] = $rr['v'];
|
||||
}
|
||||
} else if ($rr['cat'] != 'config') {
|
||||
// Negative caching
|
||||
$a->config[$uid][$family] = "!<unset>!";
|
||||
}
|
||||
}}
|
||||
|
||||
|
@ -129,6 +142,13 @@ function get_pconfig($uid,$family, $key, $instore = false) {
|
|||
global $a;
|
||||
|
||||
if(! $instore) {
|
||||
// Looking if the whole family isn't set
|
||||
if(isset($a->config[$uid][$family])) {
|
||||
if($a->config[$uid][$family] === '!<unset>!') {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($a->config[$uid][$family][$key])) {
|
||||
if($a->config[$uid][$family][$key] === '!<unset>!') {
|
||||
return false;
|
||||
|
|
|
@ -77,11 +77,17 @@ class dba {
|
|||
|
||||
$this->error = '';
|
||||
|
||||
//if (get_config("system", "db_log") != "")
|
||||
// @file_put_contents(get_config("system", "db_log"), datetime_convert().':'.session_id(). ' Start '.$sql."\n", FILE_APPEND);
|
||||
|
||||
if($this->mysqli)
|
||||
$result = @$this->db->query($sql);
|
||||
else
|
||||
$result = @mysql_query($sql,$this->db);
|
||||
|
||||
//if (get_config("system", "db_log") != "")
|
||||
// @file_put_contents(get_config("system", "db_log"), datetime_convert().':'.session_id(). ' Stop '."\n", FILE_APPEND);
|
||||
|
||||
if($this->mysqli) {
|
||||
if($this->db->errno)
|
||||
$this->error = $this->db->error;
|
||||
|
|
|
@ -288,7 +288,7 @@ function delivery_run($argv, $argc){
|
|||
|
||||
if($normal_mode) {
|
||||
if($item_id == $item['id'] || $item['id'] == $item['parent'])
|
||||
$atom .= atom_entry($item,'text',null,$owner,true);
|
||||
$atom .= atom_entry($item,'text',null,$owner,true,(($top_level) ? $contact['id'] : 0));
|
||||
}
|
||||
else
|
||||
$atom .= atom_entry($item,'text',null,$owner,true);
|
||||
|
|
|
@ -2055,8 +2055,12 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) {
|
|||
$myaddr = $owner['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
|
||||
$theiraddr = $contact['addr'];
|
||||
|
||||
$p = q("select guid from item where parent = %d limit 1",
|
||||
$item['parent']
|
||||
// The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
|
||||
// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
|
||||
// The only item with `parent` and `id` as the parent id is the parent item.
|
||||
$p = q("select guid from item where parent = %d and id = %d limit 1",
|
||||
intval($item['parent']),
|
||||
intval($item['parent'])
|
||||
);
|
||||
if(count($p))
|
||||
$parent_guid = $p[0]['guid'];
|
||||
|
@ -2111,8 +2115,12 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
|
|||
$theiraddr = $contact['addr'];
|
||||
|
||||
|
||||
$p = q("select guid from item where parent = %d limit 1",
|
||||
$item['parent']
|
||||
// The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
|
||||
// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
|
||||
// The only item with `parent` and `id` as the parent id is the parent item.
|
||||
$p = q("select guid from item where parent = %d and id = %d limit 1",
|
||||
intval($item['parent']),
|
||||
intval($item['parent'])
|
||||
);
|
||||
if(count($p))
|
||||
$parent_guid = $p[0]['guid'];
|
||||
|
|
|
@ -13,7 +13,7 @@ function notification($params) {
|
|||
|
||||
$banner = t('Friendica Notification');
|
||||
$product = FRIENDICA_PLATFORM;
|
||||
$siteurl = z_path();
|
||||
$siteurl = $a->get_baseurl(true);
|
||||
$thanks = t('Thank You,');
|
||||
$sitename = get_config('config','sitename');
|
||||
$site_admin = sprintf( t('%s Administrator'), $sitename);
|
||||
|
|
|
@ -42,7 +42,7 @@ function format_event_html($ev) {
|
|||
return $o;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
function parse_event($h) {
|
||||
|
||||
require_once('include/Scrape.php');
|
||||
|
@ -108,7 +108,7 @@ function parse_event($h) {
|
|||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
function format_event_bbcode($ev) {
|
||||
|
||||
|
@ -162,7 +162,6 @@ function bbtoevent($s) {
|
|||
$match = '';
|
||||
if(preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",$s,$match))
|
||||
$ev['adjust'] = $match[1];
|
||||
$match = '';
|
||||
$ev['nofinish'] = (((x($ev, 'start') && $ev['start']) && (!x($ev, 'finish') || !$ev['finish'])) ? 1 : 0);
|
||||
return $ev;
|
||||
|
||||
|
@ -294,10 +293,14 @@ function event_store($arr) {
|
|||
intval($arr['uid'])
|
||||
);
|
||||
|
||||
return $r[0]['id'];
|
||||
$item_id = $r[0]['id'];
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
$item_id = 0;
|
||||
|
||||
call_hooks("event_updated", $arr['id']);
|
||||
|
||||
return $item_id;
|
||||
}
|
||||
else {
|
||||
|
||||
|
@ -361,7 +364,7 @@ function event_store($arr) {
|
|||
$item_arr['body'] = format_event_bbcode($event);
|
||||
|
||||
|
||||
$item_arr['object'] = '<object><type>' . xmlify(ACTIVITY_OBJ_EVENT) . '</type><title></title><id>' . xmlify($uri) . '</id>';
|
||||
$item_arr['object'] = '<object><type>' . xmlify(ACTIVITY_OBJ_EVENT) . '</type><title></title><id>' . xmlify($arr['uri']) . '</id>';
|
||||
$item_arr['object'] .= '<content>' . xmlify(format_event_bbcode($event)) . '</content>';
|
||||
$item_arr['object'] .= '</object>' . "\n";
|
||||
|
||||
|
@ -383,6 +386,8 @@ function event_store($arr) {
|
|||
);
|
||||
}
|
||||
|
||||
call_hooks("event_created", $event['id']);
|
||||
|
||||
return $item_id;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -180,6 +180,10 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0)
|
|||
|
||||
foreach($items as $item) {
|
||||
|
||||
// prevent private email from leaking.
|
||||
if($item['network'] === NETWORK_MAIL)
|
||||
continue;
|
||||
|
||||
// public feeds get html, our own nodes use bbcode
|
||||
|
||||
if($public_feed) {
|
||||
|
@ -1063,9 +1067,6 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
|
|||
|
||||
$a = get_app();
|
||||
|
||||
// if((! strlen($contact['issued-id'])) && (! $contact['duplex']) && (! ($owner['page-flags'] == PAGE_COMMUNITY)))
|
||||
// return 3;
|
||||
|
||||
$idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']);
|
||||
|
||||
if($contact['duplex'] && $contact['dfrn-id'])
|
||||
|
@ -1130,6 +1131,9 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
|
|||
$rino_allowed = ((intval($res->rino) === 1) ? 1 : 0);
|
||||
$page = (($owner['page-flags'] == PAGE_COMMUNITY) ? 1 : 0);
|
||||
|
||||
if($owner['page-flags'] == PAGE_PRVGROUP)
|
||||
$page = 2;
|
||||
|
||||
$final_dfrn_id = '';
|
||||
|
||||
if($perm) {
|
||||
|
@ -1183,7 +1187,7 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
|
|||
$postvars['ssl_policy'] = $ssl_policy;
|
||||
|
||||
if($page)
|
||||
$postvars['page'] = '1';
|
||||
$postvars['page'] = $page;
|
||||
|
||||
if($rino && $rino_allowed && (! $dissolve)) {
|
||||
$key = substr(random_string(),0,16);
|
||||
|
@ -2832,7 +2836,7 @@ function atom_author($tag,$name,$uri,$h,$w,$photo) {
|
|||
return $o;
|
||||
}
|
||||
|
||||
function atom_entry($item,$type,$author,$owner,$comment = false) {
|
||||
function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) {
|
||||
|
||||
$a = get_app();
|
||||
|
||||
|
@ -2844,7 +2848,7 @@ function atom_entry($item,$type,$author,$owner,$comment = false) {
|
|||
|
||||
|
||||
if($item['allow_cid'] || $item['allow_gid'] || $item['deny_cid'] || $item['deny_gid'])
|
||||
$body = fix_private_photos($item['body'],$owner['uid']);
|
||||
$body = fix_private_photos($item['body'],$owner['uid'],$item,$cid);
|
||||
else
|
||||
$body = $item['body'];
|
||||
|
||||
|
@ -2927,14 +2931,17 @@ function atom_entry($item,$type,$author,$owner,$comment = false) {
|
|||
return $o;
|
||||
}
|
||||
|
||||
function fix_private_photos($s,$uid) {
|
||||
function fix_private_photos($s,$uid, $item = null, $cid = 0) {
|
||||
$a = get_app();
|
||||
logger('fix_private_photos');
|
||||
|
||||
if(preg_match("/\[img\](.*?)\[\/img\]/is",$s,$matches)) {
|
||||
$image = $matches[1];
|
||||
logger('fix_private_photos: found photo ' . $image);
|
||||
if(stristr($image ,$a->get_baseurl() . '/photo/')) {
|
||||
logger('fix_private_photos', LOGGER_DEBUG);
|
||||
$site = substr($a->get_baseurl(),strpos($a->get_baseurl(),'://'));
|
||||
|
||||
if(preg_match("/\[img(.*?)\](.*?)\[\/img\]/is",$s,$matches)) {
|
||||
$image = $matches[2];
|
||||
logger('fix_private_photos: found photo ' . $image, LOGGER_DEBUG);
|
||||
if(stristr($image , $site . '/photo/')) {
|
||||
$replace = false;
|
||||
$i = basename($image);
|
||||
$i = str_replace('.jpg','',$i);
|
||||
$x = strpos($i,'-');
|
||||
|
@ -2947,17 +2954,86 @@ function fix_private_photos($s,$uid) {
|
|||
intval($uid)
|
||||
);
|
||||
if(count($r)) {
|
||||
logger('replacing photo');
|
||||
|
||||
// Check to see if we should replace this photo link with an embedded image
|
||||
// 1. No need to do so if the photo is public
|
||||
// 2. If there's a contact-id provided, see if they're in the access list
|
||||
// for the photo. If so, embed it.
|
||||
// 3. Otherwise, if we have an item, see if the item permissions match the photo
|
||||
// permissions, regardless of order but first check to see if they're an exact
|
||||
// match to save some processing overhead.
|
||||
|
||||
// Currently we only embed one private photo per message so as not to hit import
|
||||
// size limits at the receiving end.
|
||||
|
||||
// To embed multiples, we would need to parse out the embedded photos on message
|
||||
// receipt and limit size based only on the text component. Would also need to
|
||||
// ignore all photos during bbcode translation and item localisation, as these
|
||||
// will hit internal regex backtrace limits.
|
||||
|
||||
if(has_permissions($r[0])) {
|
||||
if($cid) {
|
||||
$recips = enumerate_permissions($r[0]);
|
||||
if(in_array($cid, $recips)) {
|
||||
$replace = true;
|
||||
}
|
||||
}
|
||||
elseif($item) {
|
||||
if(compare_permissions($item,$r[0]))
|
||||
$replace = true;
|
||||
}
|
||||
}
|
||||
if($replace) {
|
||||
logger('fix_private_photos: replacing photo', LOGGER_DEBUG);
|
||||
$s = str_replace($image, 'data:image/jpg;base64,' . base64_encode($r[0]['data']), $s);
|
||||
}
|
||||
}
|
||||
logger('fix_private_photos: replaced: ' . $s, LOGGER_DATA);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return($s);
|
||||
}
|
||||
|
||||
|
||||
function has_permissions($obj) {
|
||||
if(($obj['allow_cid'] != '') || ($obj['allow_gid'] != '') || ($obj['deny_cid'] != '') || ($obj['deny_gid'] != ''))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
function compare_permissions($obj1,$obj2) {
|
||||
// first part is easy. Check that these are exactly the same.
|
||||
if(($obj1['allow_cid'] == $obj2['allow_cid'])
|
||||
&& ($obj1['allow_gid'] == $obj2['allow_gid'])
|
||||
&& ($obj1['deny_cid'] == $obj2['deny_cid'])
|
||||
&& ($obj1['deny_gid'] == $obj2['deny_gid']))
|
||||
return true;
|
||||
|
||||
// This is harder. Parse all the permissions and compare the resulting set.
|
||||
|
||||
$recipients1 = enumerate_permissions($obj1);
|
||||
$recipients2 = enumerate_permissions($obj2);
|
||||
sort($recipients1);
|
||||
sort($recipients2);
|
||||
if($recipients1 == $recipients2)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// returns an array of contact-ids that are allowed to see this object
|
||||
|
||||
function enumerate_permissions($obj) {
|
||||
require_once('include/group.php');
|
||||
$allow_people = expand_acl($obj['allow_cid']);
|
||||
$allow_groups = expand_groups(expand_acl($obj['allow_gid']));
|
||||
$deny_people = expand_acl($obj['deny_cid']);
|
||||
$deny_groups = expand_groups(expand_acl($obj['deny_gid']));
|
||||
$recipients = array_unique(array_merge($allow_people,$allow_groups));
|
||||
$deny = array_unique(array_merge($deny_people,$deny_groups));
|
||||
$recipients = array_diff($recipients,$deny);
|
||||
return $recipients;
|
||||
}
|
||||
|
||||
function item_getfeedtags($item) {
|
||||
$ret = array();
|
||||
|
@ -3004,13 +3080,20 @@ function item_getfeedattach($item) {
|
|||
|
||||
function item_expire($uid,$days) {
|
||||
|
||||
if((! $uid) || (! $days))
|
||||
if((! $uid) || ($days < 1))
|
||||
return;
|
||||
|
||||
// $expire_network_only = save your own wall posts
|
||||
// and just expire conversations started by others
|
||||
|
||||
$expire_network_only = get_pconfig($uid,'expire','network_only');
|
||||
$sql_extra = ((intval($expire_network_only)) ? " AND wall = 0 " : "");
|
||||
|
||||
$r = q("SELECT * FROM `item`
|
||||
WHERE `uid` = %d
|
||||
AND `created` < UTC_TIMESTAMP() - INTERVAL %d DAY
|
||||
AND `id` = `parent`
|
||||
$sql_extra
|
||||
AND `deleted` = 0",
|
||||
intval($uid),
|
||||
intval($days)
|
||||
|
|
|
@ -117,7 +117,7 @@ function nav(&$a) {
|
|||
|
||||
/* only show friend requests for normal pages. Other page types have automatic friendship. */
|
||||
|
||||
if($_SESSION['page_flags'] == PAGE_NORMAL) {
|
||||
if($_SESSION['page_flags'] == PAGE_NORMAL || $_SESSION['page_flags'] == PAGE_PRVGROUP) {
|
||||
$nav['introductions'] = array('notifications/intros', t('Introductions'), "", t('Friend Requests'));
|
||||
$nav['notifications'] = array('notifications', t('Notifications'), "", t('Notifications'));
|
||||
$nav['notifications']['all']=array('notifications/system', t('See all notifications'), "", "");
|
||||
|
|
|
@ -345,7 +345,7 @@ function notifier_run($argv, $argc){
|
|||
if($mail) {
|
||||
$public_message = false; // mail is not public
|
||||
|
||||
$body = fix_private_photos($item['body'],$owner['uid']);
|
||||
$body = fix_private_photos($item['body'],$owner['uid'],null,$message[0]['contact-id']);
|
||||
|
||||
$atom .= replace_macros($mail_template, array(
|
||||
'$name' => xmlify($owner['name']),
|
||||
|
|
|
@ -25,7 +25,7 @@ function advanced_profile(&$a) {
|
|||
|
||||
$val = ((intval($a->profile['dob']))
|
||||
? day_translate(datetime_convert('UTC','UTC',$a->profile['dob'] . ' 00:00 +00:00',$year_bd_format))
|
||||
: day_translate(datetime_convert('UTC','UTC','2001-' . substr($a->profile['dob'],6) . ' 00:00 +00:00',$short_bd_format)));
|
||||
: day_translate(datetime_convert('UTC','UTC','2001-' . substr($a->profile['dob'],5) . ' 00:00 +00:00',$short_bd_format)));
|
||||
|
||||
$profile['birthday'] = array( t('Birthday:'), $val);
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@ function gender_selector($current="",$suffix="") {
|
|||
$o = '';
|
||||
$select = array('', t('Male'), t('Female'), t('Currently Male'), t('Currently Female'), t('Mostly Male'), t('Mostly Female'), t('Transgender'), t('Intersex'), t('Transsexual'), t('Hermaphrodite'), t('Neuter'), t('Non-specific'), t('Other'), t('Undecided'));
|
||||
|
||||
call_hooks('gender_selector', $select);
|
||||
|
||||
$o .= "<select name=\"gender$suffix\" id=\"gender-select$suffix\" size=\"1\" >";
|
||||
foreach($select as $selection) {
|
||||
if($selection !== 'NOTRANSLATION') {
|
||||
|
@ -20,6 +22,9 @@ function sexpref_selector($current="",$suffix="") {
|
|||
$o = '';
|
||||
$select = array('', t('Males'), t('Females'), t('Gay'), t('Lesbian'), t('No Preference'), t('Bisexual'), t('Autosexual'), t('Abstinent'), t('Virgin'), t('Deviant'), t('Fetish'), t('Oodles'), t('Nonsexual'));
|
||||
|
||||
|
||||
call_hooks('sexpref_selector', $select);
|
||||
|
||||
$o .= "<select name=\"sexual$suffix\" id=\"sexual-select$suffix\" size=\"1\" >";
|
||||
foreach($select as $selection) {
|
||||
if($selection !== 'NOTRANSLATION') {
|
||||
|
@ -36,6 +41,8 @@ function marital_selector($current="",$suffix="") {
|
|||
$o = '';
|
||||
$select = array('', t('Single'), t('Lonely'), t('Available'), t('Unavailable'), t('Has crush'), t('Infatuated'), t('Dating'), t('Unfaithful'), t('Sex Addict'), t('Friends'), t('Friends/Benefits'), t('Casual'), t('Engaged'), t('Married'), t('Imaginarily married'), t('Partners'), t('Cohabiting'), t('Common law'), t('Happy'), t('Not looking'), t('Swinger'), t('Betrayed'), t('Separated'), t('Unstable'), t('Divorced'), t('Imaginarily divorced'), t('Widowed'), t('Uncertain'), t('It\'s complicated'), t('Don\'t care'), t('Ask me') );
|
||||
|
||||
call_hooks('marital_selector', $select);
|
||||
|
||||
$o .= "<select name=\"marital\" id=\"marital-select\" size=\"1\" >";
|
||||
foreach($select as $selection) {
|
||||
if($selection !== 'NOTRANSLATION') {
|
||||
|
|
|
@ -742,6 +742,8 @@ function smilies($s, $sample = false) {
|
|||
':homebrew',
|
||||
':coffee',
|
||||
':facepalm',
|
||||
':like',
|
||||
':dislike',
|
||||
'~friendika',
|
||||
'~friendica'
|
||||
|
||||
|
@ -778,6 +780,8 @@ function smilies($s, $sample = false) {
|
|||
'<img src="' . $a->get_baseurl() . '/images/beer_mug.gif" alt=":homebrew" />',
|
||||
'<img src="' . $a->get_baseurl() . '/images/coffee.gif" alt=":coffee" />',
|
||||
'<img src="' . $a->get_baseurl() . '/images/smiley-facepalm.gif" alt=":facepalm" />',
|
||||
'<img src="' . $a->get_baseurl() . '/images/like.gif" alt=":like" />',
|
||||
'<img src="' . $a->get_baseurl() . '/images/dislike.gif" alt=":dislike" />',
|
||||
'<a href="http://project.friendika.com">~friendika <img src="' . $a->get_baseurl() . '/images/friendika-16.png" alt="~friendika" /></a>',
|
||||
'<a href="http://friendica.com">~friendica <img src="' . $a->get_baseurl() . '/images/friendica-16.png" alt="~friendica" /></a>'
|
||||
);
|
||||
|
|
325
include/user.php
Normal file
325
include/user.php
Normal file
|
@ -0,0 +1,325 @@
|
|||
<?php
|
||||
|
||||
require_once('include/config.php');
|
||||
require_once('include/network.php');
|
||||
require_once('include/plugin.php');
|
||||
require_once('include/text.php');
|
||||
require_once('include/pgettext.php');
|
||||
require_once('include/datetime.php');
|
||||
|
||||
function create_user($arr) {
|
||||
|
||||
// Required: { username, nickname, email } or { openid_url }
|
||||
|
||||
$a = get_app();
|
||||
$result = array('success' => false, 'user' => null, 'password' => '', 'message' => '');
|
||||
|
||||
$using_invites = get_config('system','invitation_only');
|
||||
$num_invites = get_config('system','number_invites');
|
||||
|
||||
|
||||
$invite_id = ((x($arr,'invite_id')) ? notags(trim($arr['invite_id'])) : '');
|
||||
$username = ((x($arr,'username')) ? notags(trim($arr['username'])) : '');
|
||||
$nickname = ((x($arr,'nickname')) ? notags(trim($arr['nickname'])) : '');
|
||||
$email = ((x($arr,'email')) ? notags(trim($arr['email'])) : '');
|
||||
$openid_url = ((x($arr,'openid_url')) ? notags(trim($arr['openid_url'])) : '');
|
||||
$photo = ((x($arr,'photo')) ? notags(trim($arr['photo'])) : '');
|
||||
$publish = ((x($arr,'profile_publish_reg') && intval($arr['profile_publish_reg'])) ? 1 : 0);
|
||||
$password = ((x($arr,'password')) ? trim($arr['password']) : '');
|
||||
|
||||
$netpublish = ((strlen(get_config('system','directory_submit_url'))) ? $publish : 0);
|
||||
|
||||
$tmp_str = $openid_url;
|
||||
|
||||
if($using_invites) {
|
||||
if(! $invite_id) {
|
||||
$result['message'] .= t('An invitation is required.') . EOL;
|
||||
return $result;
|
||||
}
|
||||
$r = q("select * from register where `hash` = '%s' limit 1", dbesc($invite_id));
|
||||
if(! results($r)) {
|
||||
$result['message'] .= t('Invitation could not be verified.') . EOL;
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
if((! x($username)) || (! x($email)) || (! x($nickname))) {
|
||||
if($openid_url) {
|
||||
if(! validate_url($tmp_str)) {
|
||||
$result['message'] .= t('Invalid OpenID url') . EOL;
|
||||
return $result;
|
||||
}
|
||||
$_SESSION['register'] = 1;
|
||||
$_SESSION['openid'] = $openid_url;
|
||||
require_once('library/openid.php');
|
||||
$openid = new LightOpenID;
|
||||
$openid->identity = $openid_url;
|
||||
$openid->returnUrl = $a->get_baseurl() . '/openid';
|
||||
$openid->required = array('namePerson/friendly', 'contact/email', 'namePerson');
|
||||
$openid->optional = array('namePerson/first','media/image/aspect11','media/image/default');
|
||||
goaway($openid->authUrl());
|
||||
// NOTREACHED
|
||||
}
|
||||
|
||||
notice( t('Please enter the required information.') . EOL );
|
||||
return;
|
||||
}
|
||||
|
||||
if(! validate_url($tmp_str))
|
||||
$openid_url = '';
|
||||
|
||||
|
||||
$err = '';
|
||||
|
||||
// collapse multiple spaces in name
|
||||
$username = preg_replace('/ +/',' ',$username);
|
||||
|
||||
if(mb_strlen($username) > 48)
|
||||
$result['message'] .= t('Please use a shorter name.') . EOL;
|
||||
if(mb_strlen($username) < 3)
|
||||
$result['message'] .= t('Name too short.') . EOL;
|
||||
|
||||
// I don't really like having this rule, but it cuts down
|
||||
// on the number of auto-registrations by Russian spammers
|
||||
|
||||
// Using preg_match was completely unreliable, due to mixed UTF-8 regex support
|
||||
// $no_utf = get_config('system','no_utf');
|
||||
// $pat = (($no_utf) ? '/^[a-zA-Z]* [a-zA-Z]*$/' : '/^\p{L}* \p{L}*$/u' );
|
||||
|
||||
// So now we are just looking for a space in the full name.
|
||||
|
||||
$loose_reg = get_config('system','no_regfullname');
|
||||
if(! $loose_reg) {
|
||||
$username = mb_convert_case($username,MB_CASE_TITLE,'UTF-8');
|
||||
if(! strpos($username,' '))
|
||||
$result['message'] .= t("That doesn't appear to be your full \x28First Last\x29 name.") . EOL;
|
||||
}
|
||||
|
||||
|
||||
if(! allowed_email($email))
|
||||
$result['message'] .= t('Your email domain is not among those allowed on this site.') . EOL;
|
||||
|
||||
if((! valid_email($email)) || (! validate_email($email)))
|
||||
$result['message'] .= t('Not a valid email address.') . EOL;
|
||||
|
||||
// Disallow somebody creating an account using openid that uses the admin email address,
|
||||
// since openid bypasses email verification. We'll allow it if there is not yet an admin account.
|
||||
|
||||
if((x($a->config,'admin_email')) && (strcasecmp($email,$a->config['admin_email']) == 0) && strlen($openid_url)) {
|
||||
$r = q("SELECT * FROM `user` WHERE `email` = '%s' LIMIT 1",
|
||||
dbesc($email)
|
||||
);
|
||||
if(count($r))
|
||||
$result['message'] .= t('Cannot use that email.') . EOL;
|
||||
}
|
||||
|
||||
$nickname = $arr['nickname'] = strtolower($nickname);
|
||||
|
||||
if(! preg_match("/^[a-z][a-z0-9\-\_]*$/",$nickname))
|
||||
$result['message'] .= t('Your "nickname" can only contain "a-z", "0-9", "-", and "_", and must also begin with a letter.') . EOL;
|
||||
$r = q("SELECT `uid` FROM `user`
|
||||
WHERE `nickname` = '%s' LIMIT 1",
|
||||
dbesc($nickname)
|
||||
);
|
||||
if(count($r))
|
||||
$result['message'] .= t('Nickname is already registered. Please choose another.') . EOL;
|
||||
|
||||
// Check deleted accounts that had this nickname. Doesn't matter to us,
|
||||
// but could be a security issue for federated platforms.
|
||||
|
||||
$r = q("SELECT * FROM `userd`
|
||||
WHERE `username` = '%s' LIMIT 1",
|
||||
dbesc($nickname)
|
||||
);
|
||||
if(count($r))
|
||||
$result['message'] .= t('Nickname was once registered here and may not be re-used. Please choose another.') . EOL;
|
||||
|
||||
if(strlen($result['message'])) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
$new_password = ((strlen($password)) ? $password : autoname(6) . mt_rand(100,9999));
|
||||
$new_password_encoded = hash('whirlpool',$new_password);
|
||||
|
||||
$result['password'] = $new_password;
|
||||
|
||||
require_once('include/crypto.php');
|
||||
|
||||
$keys = new_keypair(1024);
|
||||
|
||||
if($keys === false) {
|
||||
$result['message'] .= t('SERIOUS ERROR: Generation of security keys failed.') . EOL;
|
||||
return $result;
|
||||
}
|
||||
|
||||
$prvkey = $keys['prvkey'];
|
||||
$pubkey = $keys['pubkey'];
|
||||
|
||||
/**
|
||||
*
|
||||
* Create another keypair for signing/verifying
|
||||
* salmon protocol messages. We have to use a slightly
|
||||
* less robust key because this won't be using openssl
|
||||
* but the phpseclib. Since it is PHP interpreted code
|
||||
* it is not nearly as efficient, and the larger keys
|
||||
* will take several minutes each to process.
|
||||
*
|
||||
*/
|
||||
|
||||
$sres = new_keypair(512);
|
||||
$sprvkey = $sres['prvkey'];
|
||||
$spubkey = $sres['pubkey'];
|
||||
|
||||
$r = q("INSERT INTO `user` ( `guid`, `username`, `password`, `email`, `openid`, `nickname`,
|
||||
`pubkey`, `prvkey`, `spubkey`, `sprvkey`, `register_date`, `verified`, `blocked`, `timezone` )
|
||||
VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, 'UTC' )",
|
||||
dbesc(generate_user_guid()),
|
||||
dbesc($username),
|
||||
dbesc($new_password_encoded),
|
||||
dbesc($email),
|
||||
dbesc($openid_url),
|
||||
dbesc($nickname),
|
||||
dbesc($pubkey),
|
||||
dbesc($prvkey),
|
||||
dbesc($spubkey),
|
||||
dbesc($sprvkey),
|
||||
dbesc(datetime_convert()),
|
||||
intval($verified),
|
||||
intval($blocked)
|
||||
);
|
||||
|
||||
if($r) {
|
||||
$r = q("SELECT * FROM `user`
|
||||
WHERE `username` = '%s' AND `password` = '%s' LIMIT 1",
|
||||
dbesc($username),
|
||||
dbesc($new_password_encoded)
|
||||
);
|
||||
if($r !== false && count($r)) {
|
||||
$u = $r[0];
|
||||
$newuid = intval($r[0]['uid']);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$result['message'] .= t('An error occurred during registration. Please try again.') . EOL ;
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* if somebody clicked submit twice very quickly, they could end up with two accounts
|
||||
* due to race condition. Remove this one.
|
||||
*/
|
||||
|
||||
$r = q("SELECT `uid` FROM `user`
|
||||
WHERE `nickname` = '%s' ",
|
||||
dbesc($nickname)
|
||||
);
|
||||
if((count($r) > 1) && $newuid) {
|
||||
$result['message'] .= t('Nickname is already registered. Please choose another.') . EOL;
|
||||
q("DELETE FROM `user` WHERE `uid` = %d LIMIT 1",
|
||||
intval($newuid)
|
||||
);
|
||||
return $result;
|
||||
}
|
||||
|
||||
if(x($newuid) !== false) {
|
||||
$r = q("INSERT INTO `profile` ( `uid`, `profile-name`, `is-default`, `name`, `photo`, `thumb`, `publish`, `net-publish` )
|
||||
VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, %d ) ",
|
||||
intval($newuid),
|
||||
t('default'),
|
||||
1,
|
||||
dbesc($username),
|
||||
dbesc($a->get_baseurl() . "/photo/profile/{$newuid}.jpg"),
|
||||
dbesc($a->get_baseurl() . "/photo/avatar/{$newuid}.jpg"),
|
||||
intval($publish),
|
||||
intval($netpublish)
|
||||
|
||||
);
|
||||
if($r === false) {
|
||||
$result['message'] .= t('An error occurred creating your default profile. Please try again.') . EOL;
|
||||
// Start fresh next time.
|
||||
$r = q("DELETE FROM `user` WHERE `uid` = %d",
|
||||
intval($newuid));
|
||||
return $result;
|
||||
}
|
||||
$r = q("INSERT INTO `contact` ( `uid`, `created`, `self`, `name`, `nick`, `photo`, `thumb`, `micro`, `blocked`, `pending`, `url`, `nurl`,
|
||||
`request`, `notify`, `poll`, `confirm`, `poco`, `name-date`, `uri-date`, `avatar-date`, `closeness` )
|
||||
VALUES ( %d, '%s', 1, '%s', '%s', '%s', '%s', '%s', 0, 0, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 0 ) ",
|
||||
intval($newuid),
|
||||
datetime_convert(),
|
||||
dbesc($username),
|
||||
dbesc($nickname),
|
||||
dbesc($a->get_baseurl() . "/photo/profile/{$newuid}.jpg"),
|
||||
dbesc($a->get_baseurl() . "/photo/avatar/{$newuid}.jpg"),
|
||||
dbesc($a->get_baseurl() . "/photo/micro/{$newuid}.jpg"),
|
||||
dbesc($a->get_baseurl() . "/profile/$nickname"),
|
||||
dbesc(normalise_link($a->get_baseurl() . "/profile/$nickname")),
|
||||
dbesc($a->get_baseurl() . "/dfrn_request/$nickname"),
|
||||
dbesc($a->get_baseurl() . "/dfrn_notify/$nickname"),
|
||||
dbesc($a->get_baseurl() . "/dfrn_poll/$nickname"),
|
||||
dbesc($a->get_baseurl() . "/dfrn_confirm/$nickname"),
|
||||
dbesc($a->get_baseurl() . "/poco/$nickname"),
|
||||
dbesc(datetime_convert()),
|
||||
dbesc(datetime_convert()),
|
||||
dbesc(datetime_convert())
|
||||
);
|
||||
|
||||
// Create a group with no members. This allows somebody to use it
|
||||
// right away as a default group for new contacts.
|
||||
|
||||
require_once('include/group.php');
|
||||
group_add($newuid, t('Friends'));
|
||||
|
||||
}
|
||||
|
||||
// if we have no OpenID photo try to look up an avatar
|
||||
if(! strlen($photo))
|
||||
$photo = avatar_img($email);
|
||||
|
||||
// unless there is no avatar-plugin loaded
|
||||
if(strlen($photo)) {
|
||||
require_once('include/Photo.php');
|
||||
$photo_failure = false;
|
||||
|
||||
$filename = basename($photo);
|
||||
$img_str = fetch_url($photo,true);
|
||||
$img = new Photo($img_str);
|
||||
if($img->is_valid()) {
|
||||
|
||||
$img->scaleImageSquare(175);
|
||||
|
||||
$hash = photo_new_resource();
|
||||
|
||||
$r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 4 );
|
||||
|
||||
if($r === false)
|
||||
$photo_failure = true;
|
||||
|
||||
$img->scaleImage(80);
|
||||
|
||||
$r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 5 );
|
||||
|
||||
if($r === false)
|
||||
$photo_failure = true;
|
||||
|
||||
$img->scaleImage(48);
|
||||
|
||||
$r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 6 );
|
||||
|
||||
if($r === false)
|
||||
$photo_failure = true;
|
||||
|
||||
if(! $photo_failure) {
|
||||
q("UPDATE `photo` SET `profile` = 1 WHERE `resource-id` = '%s' ",
|
||||
dbesc($hash)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
call_hooks('register_account', $newuid);
|
||||
|
||||
$result['success'] = true;
|
||||
$result['user'] = $u;
|
||||
return $result;
|
||||
|
||||
}
|
|
@ -275,7 +275,7 @@ aStates[249]="|'Adan|'Ataq|Abyan|Al Bayda'|Al Hudaydah|Al Jawf|Al Mahrah|Al Mahw
|
|||
aStates[250]="|Kosovo|Montenegro|Serbia|Vojvodina";
|
||||
aStates[251]="|Central|Copperbelt|Eastern|Luapula|Lusaka|North-Western|Northern|Southern|Western";
|
||||
aStates[252]="|Bulawayo|Harare|ManicalandMashonaland Central|Mashonaland East|Mashonaland West|Masvingo|Matabeleland North|Matabeleland South|Midlands";
|
||||
aStates[253]="Self Hosted|Private Server|Architects Of Sleep|DFRN|Distributed Friend Network|Free-Beer.ch|Foojbook|Free-Haven|Friendica.eu|Friendika.me.4.it|Friendika - I Ask Questions|Frndc.com|Hipatia|Hungerfreunde|Kaluguran Community|Kak Ste?|Karl.Markx.pm|Loozah Social Club|MyFriendica.net|MyFriendNetwork|Oi!|OpenMindSpace|Oradons Friendica|Recolutionari.es|Sysfu Social Club|theshi.re|Tumpambae|Uzmiac|Other";
|
||||
aStates[253]="|Self Hosted|Private Server|Architects Of Sleep|DFRN|Distributed Friend Network|Free-Beer.ch|Foojbook|Free-Haven|Friendica.eu|Friendika.me.4.it|Friendika - I Ask Questions|Frndc.com|Hipatia|Hungerfreunde|Kaluguran Community|Kak Ste?|Karl.Markx.pm|Loozah Social Club|MyFriendica.net|MyFriendNetwork|Oi!|OpenMindSpace|Recolutionari.es|Sysfu Social Club|theshi.re|Tumpambae|Uzmiac|Other";
|
||||
/*
|
||||
* gArCountryInfo
|
||||
* (0) Country name
|
||||
|
|
|
@ -135,7 +135,7 @@ function acl_init(&$a){
|
|||
foreach($r as $g) {
|
||||
$x['photos'][] = $g['micro'];
|
||||
$x['links'][] = $g['url'];
|
||||
$x['suggestions'][] = $g['name']; // sprintf( t('%s [%s]'),$g['name'],$g['url']);
|
||||
$x['suggestions'][] = $g['name'];
|
||||
$x['data'][] = intval($g['id']);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -202,6 +202,8 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
|
||||
if($user[0]['page-flags'] == PAGE_COMMUNITY)
|
||||
$params['page'] = 1;
|
||||
if($user[0]['page-flags'] == PAGE_PRVGROUP)
|
||||
$params['page'] = 2;
|
||||
|
||||
logger('dfrn_confirm: Confirm: posting data to ' . $dfrn_confirm . ': ' . print_r($params,true), LOGGER_DATA);
|
||||
|
||||
|
@ -500,7 +502,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
);
|
||||
if($contact && $g && intval($g[0]['def_gid'])) {
|
||||
require_once('include/group.php');
|
||||
group_add_member($uid,'',$contact[0]['id'],$g[0]['def_gid']);
|
||||
group_add_member($uid,'',$contact['id'],$g[0]['def_gid']);
|
||||
}
|
||||
|
||||
// Let's send our user to the contact editor in case they want to
|
||||
|
@ -537,6 +539,9 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
$page = ((x($_POST,'page')) ? intval($_POST['page']) : 0 );
|
||||
$version_id = ((x($_POST,'dfrn_version')) ? (float) $_POST['dfrn_version'] : 2.0);
|
||||
|
||||
$forum = (($page == 1) ? 1 : 0);
|
||||
$prv = (($page == 2) ? 1 : 0);
|
||||
|
||||
logger('dfrn_confirm: requestee contacted: ' . $node);
|
||||
|
||||
logger('dfrn_confirm: request: POST=' . print_r($_POST,true), LOGGER_DATA);
|
||||
|
@ -691,6 +696,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
`pending` = 0,
|
||||
`duplex` = %d,
|
||||
`forum` = %d,
|
||||
`prv` = %d,
|
||||
`network` = '%s' WHERE `id` = %d LIMIT 1
|
||||
",
|
||||
dbesc($photos[0]),
|
||||
|
@ -701,7 +707,8 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
dbesc(datetime_convert()),
|
||||
dbesc(datetime_convert()),
|
||||
intval($duplex),
|
||||
intval($page),
|
||||
intval($forum),
|
||||
intval($prv),
|
||||
dbesc(NETWORK_DFRN),
|
||||
intval($dfrn_record)
|
||||
);
|
||||
|
|
|
@ -17,6 +17,9 @@ function dfrn_notify_post(&$a) {
|
|||
$ssl_policy = ((x($_POST,'ssl_policy')) ? notags(trim($_POST['ssl_policy'])): 'none');
|
||||
$page = ((x($_POST,'page')) ? intval($_POST['page']) : 0);
|
||||
|
||||
$forum = (($page == 1) ? 1 : 0);
|
||||
$prv = (($page == 2) ? 1 : 0);
|
||||
|
||||
$writable = (-1);
|
||||
if($dfrn_version >= 2.21) {
|
||||
$writable = (($perm === 'rw') ? 1 : 0);
|
||||
|
@ -88,10 +91,11 @@ function dfrn_notify_post(&$a) {
|
|||
|
||||
$importer = $r[0];
|
||||
|
||||
if((($writable != (-1)) && ($writable != $importer['writable'])) || ($importer['forum'] != $page)) {
|
||||
q("UPDATE `contact` SET `writable` = %d, forum = %d WHERE `id` = %d LIMIT 1",
|
||||
if((($writable != (-1)) && ($writable != $importer['writable'])) || ($importer['forum'] != $forum) || ($importer['prv'] != $prv)) {
|
||||
q("UPDATE `contact` SET `writable` = %d, forum = %d, prv = %d WHERE `id` = %d LIMIT 1",
|
||||
intval(($writable == (-1)) ? $importer['writable'] : $writable),
|
||||
intval($page),
|
||||
intval($forum),
|
||||
intval($prv),
|
||||
intval($importer['id'])
|
||||
);
|
||||
if($writable != (-1))
|
||||
|
|
|
@ -68,7 +68,7 @@ function dfrn_request_post(&$a) {
|
|||
$dfrn_url = notags(trim($_POST['dfrn_url']));
|
||||
$aes_allow = (((x($_POST,'aes_allow')) && ($_POST['aes_allow'] == 1)) ? 1 : 0);
|
||||
$confirm_key = ((x($_POST,'confirm_key')) ? $_POST['confirm_key'] : "");
|
||||
|
||||
$hidden = ((x($_POST,'hidden-contact')) ? intval($_POST['hidden-contact']) : 0);
|
||||
$contact_record = null;
|
||||
|
||||
if(x($dfrn_url)) {
|
||||
|
@ -98,8 +98,9 @@ function dfrn_request_post(&$a) {
|
|||
}
|
||||
|
||||
if(is_array($contact_record)) {
|
||||
$r = q("UPDATE `contact` SET `ret-aes` = %d WHERE `id` = %d LIMIT 1",
|
||||
$r = q("UPDATE `contact` SET `ret-aes` = %d, hidden = %d WHERE `id` = %d LIMIT 1",
|
||||
intval($aes_allow),
|
||||
intval($hidden),
|
||||
intval($contact_record['id'])
|
||||
);
|
||||
}
|
||||
|
@ -144,8 +145,8 @@ function dfrn_request_post(&$a) {
|
|||
*/
|
||||
|
||||
$r = q("INSERT INTO `contact` ( `uid`, `created`,`url`, `nurl`, `name`, `nick`, `photo`, `site-pubkey`,
|
||||
`request`, `confirm`, `notify`, `poll`, `poco`, `network`, `aes_allow`)
|
||||
VALUES ( %d, '%s', '%s', '%s', '%s' , '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d)",
|
||||
`request`, `confirm`, `notify`, `poll`, `poco`, `network`, `aes_allow`, `hidden`)
|
||||
VALUES ( %d, '%s', '%s', '%s', '%s' , '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d)",
|
||||
intval(local_user()),
|
||||
datetime_convert(),
|
||||
dbesc($dfrn_url),
|
||||
|
@ -160,7 +161,8 @@ function dfrn_request_post(&$a) {
|
|||
$parms['dfrn-poll'],
|
||||
$parms['dfrn-poco'],
|
||||
dbesc(NETWORK_DFRN),
|
||||
intval($aes_allow)
|
||||
intval($aes_allow),
|
||||
intval($hidden)
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -649,6 +651,8 @@ function dfrn_request_content(&$a) {
|
|||
$o = replace_macros($tpl,array(
|
||||
'$dfrn_url' => $dfrn_url,
|
||||
'$aes_allow' => (($aes_allow) ? '<input type="hidden" name="aes_allow" value="1" />' : "" ),
|
||||
'$hidethem' => t('Hide this contact'),
|
||||
'$hidechecked' => '',
|
||||
'$confirm_key' => $confirm_key,
|
||||
'$welcome' => sprintf( t('Welcome home %s.'), $a->user['username']),
|
||||
'$please' => sprintf( t('Please confirm your introduction/connection request to %s.'), $dfrn_url),
|
||||
|
@ -680,7 +684,7 @@ function dfrn_request_content(&$a) {
|
|||
$auto_confirm = false;
|
||||
|
||||
if(count($r)) {
|
||||
if($r[0]['page-flags'] != PAGE_NORMAL)
|
||||
if(($r[0]['page-flags'] != PAGE_NORMAL) && ($r[0]['page-flags'] != PAGE_PRVGROUP))
|
||||
$auto_confirm = true;
|
||||
|
||||
if(! $auto_confirm) {
|
||||
|
|
21
mod/item.php
21
mod/item.php
|
@ -355,13 +355,15 @@ function item_post(&$a) {
|
|||
$image_uri = substr($image_uri,0, strpos($image_uri,'-'));
|
||||
if(! strlen($image_uri))
|
||||
continue;
|
||||
$srch = '<' . intval($contact_record['id']) . '>';
|
||||
$srch = '<' . intval($contact_id) . '>';
|
||||
|
||||
$r = q("SELECT `id` FROM `photo` WHERE `allow_cid` = '%s' AND `allow_gid` = '' AND `deny_cid` = '' AND `deny_gid` = ''
|
||||
AND `resource-id` = '%s' AND `uid` = %d LIMIT 1",
|
||||
dbesc($srch),
|
||||
dbesc($image_uri),
|
||||
intval($profile_uid)
|
||||
);
|
||||
|
||||
if(! count($r))
|
||||
continue;
|
||||
|
||||
|
@ -451,6 +453,7 @@ function item_post(&$a) {
|
|||
|
||||
$tagged = array();
|
||||
|
||||
$private_forum = false;
|
||||
|
||||
if(count($tags)) {
|
||||
foreach($tags as $tag) {
|
||||
|
@ -469,10 +472,21 @@ function item_post(&$a) {
|
|||
continue;
|
||||
|
||||
$success = handle_tag($a, $body, $inform, $str_tags, (local_user()) ? local_user() : $profile_uid , $tag);
|
||||
if($success)
|
||||
if($success['replaced'])
|
||||
$tagged[] = $tag;
|
||||
if(is_array($success['contact']) && intval($success['contact']['prv'])) {
|
||||
$private_forum = true;
|
||||
$private_id = $success['contact']['id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(($private_forum) && (! $parent) && (! $private)) {
|
||||
// we tagged a private forum in a top level post and the message was public.
|
||||
// Restrict it.
|
||||
$private = 1;
|
||||
$str_contact_allow = '<' . $private_id . '>';
|
||||
}
|
||||
|
||||
$attachments = '';
|
||||
$match = false;
|
||||
|
@ -891,6 +905,7 @@ function item_content(&$a) {
|
|||
function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) {
|
||||
|
||||
$replaced = false;
|
||||
$r = null;
|
||||
|
||||
//is it a hash tag?
|
||||
if(strpos($tag,'#') === 0) {
|
||||
|
@ -1021,5 +1036,5 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) {
|
|||
}
|
||||
}
|
||||
|
||||
return $replaced;
|
||||
return array('replaced' => $replaced, 'contact' => $r[0]);
|
||||
}
|
||||
|
|
|
@ -402,11 +402,23 @@ function network_content(&$a, $update = 0) {
|
|||
|
||||
if(x($_GET,'search')) {
|
||||
$search = escape_tags($_GET['search']);
|
||||
if (get_config('system','use_fulltext_engine')) {
|
||||
if(strpos($search,'#') === 0)
|
||||
$sql_extra .= sprintf(" AND (MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode)) ",
|
||||
dbesc(protect_sprintf($search))
|
||||
);
|
||||
else
|
||||
$sql_extra .= sprintf(" AND (MATCH(`item`.`body`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode)) ",
|
||||
dbesc(protect_sprintf($search)),
|
||||
dbesc(protect_sprintf($search))
|
||||
);
|
||||
} else {
|
||||
$sql_extra .= sprintf(" AND ( `item`.`body` like '%s' OR `item`.`tag` like '%s' ) ",
|
||||
dbesc(protect_sprintf('%' . $search . '%')),
|
||||
dbesc(protect_sprintf('%]' . $search . '[%'))
|
||||
);
|
||||
}
|
||||
}
|
||||
if(strlen($file)) {
|
||||
$sql_extra .= file_tag_file_query('item',unxmlify($file));
|
||||
}
|
||||
|
@ -414,15 +426,22 @@ function network_content(&$a, $update = 0) {
|
|||
if($conv) {
|
||||
$myurl = $a->get_baseurl() . '/profile/'. $a->user['nickname'];
|
||||
$myurl = substr($myurl,strpos($myurl,'://')+3);
|
||||
$myurl = str_replace(array('www.','.'),array('','\\.'),$myurl);
|
||||
$myurl = str_replace('www.','',$myurl);
|
||||
$diasp_url = str_replace('/profile/','/u/',$myurl);
|
||||
$sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ",
|
||||
dbesc(protect_sprintf('%s' . $myurl)),
|
||||
dbesc(protect_sprintf('%' . $myurl . '\\]%')),
|
||||
dbesc(protect_sprintf('%' . $diasp_url . '\\]%'))
|
||||
if (get_config('system','use_fulltext_engine'))
|
||||
$sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where (MATCH(`author-link`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(`tag`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode))) ",
|
||||
dbesc(protect_sprintf($myurl)),
|
||||
dbesc(protect_sprintf($myurl)),
|
||||
dbesc(protect_sprintf($diasp_url))
|
||||
);
|
||||
else
|
||||
$sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ",
|
||||
dbesc(protect_sprintf('%' . $myurl)),
|
||||
dbesc(protect_sprintf('%' . $myurl . ']%')),
|
||||
dbesc(protect_sprintf('%' . $diasp_url . ']%'))
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if($update) {
|
||||
|
||||
|
|
|
@ -80,7 +80,8 @@ function notes_content(&$a,$update = false) {
|
|||
|
||||
$r = q("SELECT COUNT(*) AS `total`
|
||||
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 and `item`.`moderated` = 0 AND `item`.`deleted` = 0
|
||||
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 and `item`.`moderated` = 0
|
||||
AND `item`.`deleted` = 0 AND `item`.`type` = 'note'
|
||||
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `contact`.`self` = 1
|
||||
AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 0
|
||||
$sql_extra ",
|
||||
|
@ -95,7 +96,8 @@ function notes_content(&$a,$update = false) {
|
|||
|
||||
$r = q("SELECT `item`.`id` AS `item_id`, `contact`.`uid` AS `contact-uid`
|
||||
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
|
||||
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
|
||||
and `item`.`moderated` = 0 AND `item`.`type` = 'note'
|
||||
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `contact`.`self` = 1
|
||||
AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 0
|
||||
$sql_extra
|
||||
|
|
|
@ -146,7 +146,7 @@ function profiles_post(&$a) {
|
|||
$value = $marital;
|
||||
}
|
||||
if($withchanged) {
|
||||
$changes[] = '♥ ' . t('Romantic Partner');
|
||||
$changes[] = '[color=#ff0000]♥[/color] ' . t('Romantic Partner');
|
||||
$value = strip_tags($with);
|
||||
}
|
||||
if($work != $orig[0]['work']) {
|
||||
|
@ -176,9 +176,18 @@ function profiles_post(&$a) {
|
|||
$changes[] = t('Interests');
|
||||
$value = $interest;
|
||||
}
|
||||
if($address != $orig[0]['address'] || $locality != $orig[0]['locality'] || $region != $orig[0]['region']
|
||||
if($address != $orig[0]['address']) {
|
||||
$changes[] = t('Address');
|
||||
// New address not sent in notifications, potential privacy issues
|
||||
// in case this leaks to unintended recipients. Yes, it's in the public
|
||||
// profile but that doesn't mean we have to broadcast it to everybody.
|
||||
}
|
||||
if($locality != $orig[0]['locality'] || $region != $orig[0]['region']
|
||||
|| $country_name != $orig[0]['country-name']) {
|
||||
$changes[] = t('Location');
|
||||
$comma1 = ((($locality) && ($region || $country_name)) ? ', ' : ' ');
|
||||
$comma2 = (($region && $country_name) ? ', ' : '');
|
||||
$value = $locality . $comma1 . $region . $comma2 . $country_name;
|
||||
}
|
||||
|
||||
profile_activity($changes,$value);
|
||||
|
|
326
mod/register.php
326
mod/register.php
|
@ -43,326 +43,44 @@ function register_post(&$a) {
|
|||
break;
|
||||
}
|
||||
|
||||
$using_invites = get_config('system','invitation_only');
|
||||
$num_invites = get_config('system','number_invites');
|
||||
require_once('include/user.php');
|
||||
|
||||
$result = create_user($_POST);
|
||||
|
||||
$invite_id = ((x($_POST,'invite_id')) ? notags(trim($_POST['invite_id'])) : '');
|
||||
$username = ((x($_POST,'username')) ? notags(trim($_POST['username'])) : '');
|
||||
$nickname = ((x($_POST,'nickname')) ? notags(trim($_POST['nickname'])) : '');
|
||||
$email = ((x($_POST,'email')) ? notags(trim($_POST['email'])) : '');
|
||||
$openid_url = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url'])) : '');
|
||||
$photo = ((x($_POST,'photo')) ? notags(trim($_POST['photo'])) : '');
|
||||
$publish = ((x($_POST,'profile_publish_reg') && intval($_POST['profile_publish_reg'])) ? 1 : 0);
|
||||
|
||||
$netpublish = ((strlen(get_config('system','directory_submit_url'))) ? $publish : 0);
|
||||
|
||||
$tmp_str = $openid_url;
|
||||
|
||||
if($using_invites) {
|
||||
if(! $invite_id) {
|
||||
notice( t('An invitation is required.') . EOL);
|
||||
return;
|
||||
}
|
||||
$r = q("select * from register where `hash` = '%s' limit 1", dbesc($invite_id));
|
||||
if(! results($r)) {
|
||||
notice( t('Invitation could not be verified.') . EOL);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if((! x($username)) || (! x($email)) || (! x($nickname))) {
|
||||
if($openid_url) {
|
||||
if(! validate_url($tmp_str)) {
|
||||
notice( t('Invalid OpenID url') . EOL);
|
||||
return;
|
||||
}
|
||||
$_SESSION['register'] = 1;
|
||||
$_SESSION['openid'] = $openid_url;
|
||||
require_once('library/openid.php');
|
||||
$openid = new LightOpenID;
|
||||
$openid->identity = $openid_url;
|
||||
$openid->returnUrl = $a->get_baseurl() . '/openid';
|
||||
$openid->required = array('namePerson/friendly', 'contact/email', 'namePerson');
|
||||
$openid->optional = array('namePerson/first','media/image/aspect11','media/image/default');
|
||||
goaway($openid->authUrl());
|
||||
// NOTREACHED
|
||||
}
|
||||
|
||||
notice( t('Please enter the required information.') . EOL );
|
||||
if(! $result['success']) {
|
||||
notice($result['message']);
|
||||
return;
|
||||
}
|
||||
|
||||
if(! validate_url($tmp_str))
|
||||
$openid_url = '';
|
||||
|
||||
|
||||
$err = '';
|
||||
|
||||
// collapse multiple spaces in name
|
||||
$username = preg_replace('/ +/',' ',$username);
|
||||
|
||||
if(mb_strlen($username) > 48)
|
||||
$err .= t('Please use a shorter name.') . EOL;
|
||||
if(mb_strlen($username) < 3)
|
||||
$err .= t('Name too short.') . EOL;
|
||||
|
||||
// I don't really like having this rule, but it cuts down
|
||||
// on the number of auto-registrations by Russian spammers
|
||||
|
||||
// Using preg_match was completely unreliable, due to mixed UTF-8 regex support
|
||||
// $no_utf = get_config('system','no_utf');
|
||||
// $pat = (($no_utf) ? '/^[a-zA-Z]* [a-zA-Z]*$/' : '/^\p{L}* \p{L}*$/u' );
|
||||
|
||||
// So now we are just looking for a space in the full name.
|
||||
|
||||
$loose_reg = get_config('system','no_regfullname');
|
||||
if(! $loose_reg) {
|
||||
$username = mb_convert_case($username,MB_CASE_TITLE,'UTF-8');
|
||||
if(! strpos($username,' '))
|
||||
$err .= t("That doesn't appear to be your full \x28First Last\x29 name.") . EOL;
|
||||
}
|
||||
|
||||
|
||||
if(! allowed_email($email))
|
||||
$err .= t('Your email domain is not among those allowed on this site.') . EOL;
|
||||
|
||||
if((! valid_email($email)) || (! validate_email($email)))
|
||||
$err .= t('Not a valid email address.') . EOL;
|
||||
|
||||
// Disallow somebody creating an account using openid that uses the admin email address,
|
||||
// since openid bypasses email verification. We'll allow it if there is not yet an admin account.
|
||||
|
||||
if((x($a->config,'admin_email')) && (strcasecmp($email,$a->config['admin_email']) == 0) && strlen($openid_url)) {
|
||||
$r = q("SELECT * FROM `user` WHERE `email` = '%s' LIMIT 1",
|
||||
dbesc($email)
|
||||
);
|
||||
if(count($r))
|
||||
$err .= t('Cannot use that email.') . EOL;
|
||||
}
|
||||
|
||||
$nickname = $_POST['nickname'] = strtolower($nickname);
|
||||
|
||||
if(! preg_match("/^[a-z][a-z0-9\-\_]*$/",$nickname))
|
||||
$err .= t('Your "nickname" can only contain "a-z", "0-9", "-", and "_", and must also begin with a letter.') . EOL;
|
||||
$r = q("SELECT `uid` FROM `user`
|
||||
WHERE `nickname` = '%s' LIMIT 1",
|
||||
dbesc($nickname)
|
||||
);
|
||||
if(count($r))
|
||||
$err .= t('Nickname is already registered. Please choose another.') . EOL;
|
||||
|
||||
// Check deleted accounts that had this nickname. Doesn't matter to us,
|
||||
// but could be a security issue for federated platforms.
|
||||
|
||||
$r = q("SELECT * FROM `userd`
|
||||
WHERE `username` = '%s' LIMIT 1",
|
||||
dbesc($nickname)
|
||||
);
|
||||
if(count($r))
|
||||
$err .= t('Nickname was once registered here and may not be re-used. Please choose another.') . EOL;
|
||||
|
||||
if(strlen($err)) {
|
||||
notice( $err );
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
$new_password = autoname(6) . mt_rand(100,9999);
|
||||
$new_password_encoded = hash('whirlpool',$new_password);
|
||||
|
||||
require_once('include/crypto.php');
|
||||
|
||||
$result = new_keypair(1024);
|
||||
|
||||
if($result === false) {
|
||||
notice( t('SERIOUS ERROR: Generation of security keys failed.') . EOL);
|
||||
return;
|
||||
}
|
||||
|
||||
$prvkey = $result['prvkey'];
|
||||
$pubkey = $result['pubkey'];
|
||||
|
||||
/**
|
||||
*
|
||||
* Create another keypair for signing/verifying
|
||||
* salmon protocol messages. We have to use a slightly
|
||||
* less robust key because this won't be using openssl
|
||||
* but the phpseclib. Since it is PHP interpreted code
|
||||
* it is not nearly as efficient, and the larger keys
|
||||
* will take several minutes each to process.
|
||||
*
|
||||
*/
|
||||
|
||||
$sres = new_keypair(512);
|
||||
$sprvkey = $sres['prvkey'];
|
||||
$spubkey = $sres['pubkey'];
|
||||
|
||||
$r = q("INSERT INTO `user` ( `guid`, `username`, `password`, `email`, `openid`, `nickname`,
|
||||
`pubkey`, `prvkey`, `spubkey`, `sprvkey`, `register_date`, `verified`, `blocked`, `timezone` )
|
||||
VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, 'UTC' )",
|
||||
dbesc(generate_user_guid()),
|
||||
dbesc($username),
|
||||
dbesc($new_password_encoded),
|
||||
dbesc($email),
|
||||
dbesc($openid_url),
|
||||
dbesc($nickname),
|
||||
dbesc($pubkey),
|
||||
dbesc($prvkey),
|
||||
dbesc($spubkey),
|
||||
dbesc($sprvkey),
|
||||
dbesc(datetime_convert()),
|
||||
intval($verified),
|
||||
intval($blocked)
|
||||
);
|
||||
|
||||
if($r) {
|
||||
$r = q("SELECT `uid` FROM `user`
|
||||
WHERE `username` = '%s' AND `password` = '%s' LIMIT 1",
|
||||
dbesc($username),
|
||||
dbesc($new_password_encoded)
|
||||
);
|
||||
if($r !== false && count($r))
|
||||
$newuid = intval($r[0]['uid']);
|
||||
}
|
||||
else {
|
||||
notice( t('An error occurred during registration. Please try again.') . EOL );
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* if somebody clicked submit twice very quickly, they could end up with two accounts
|
||||
* due to race condition. Remove this one.
|
||||
*/
|
||||
|
||||
$r = q("SELECT `uid` FROM `user`
|
||||
WHERE `nickname` = '%s' ",
|
||||
dbesc($nickname)
|
||||
);
|
||||
if((count($r) > 1) && $newuid) {
|
||||
$err .= t('Nickname is already registered. Please choose another.') . EOL;
|
||||
q("DELETE FROM `user` WHERE `uid` = %d LIMIT 1",
|
||||
intval($newuid)
|
||||
);
|
||||
notice ($err);
|
||||
return;
|
||||
}
|
||||
|
||||
if(x($newuid) !== false) {
|
||||
$r = q("INSERT INTO `profile` ( `uid`, `profile-name`, `is-default`, `name`, `photo`, `thumb`, `publish`, `net-publish` )
|
||||
VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, %d ) ",
|
||||
intval($newuid),
|
||||
'default',
|
||||
1,
|
||||
dbesc($username),
|
||||
dbesc($a->get_baseurl() . "/photo/profile/{$newuid}.jpg"),
|
||||
dbesc($a->get_baseurl() . "/photo/avatar/{$newuid}.jpg"),
|
||||
intval($publish),
|
||||
intval($netpublish)
|
||||
|
||||
);
|
||||
if($r === false) {
|
||||
notice( t('An error occurred creating your default profile. Please try again.') . EOL );
|
||||
// Start fresh next time.
|
||||
$r = q("DELETE FROM `user` WHERE `uid` = %d",
|
||||
intval($newuid));
|
||||
return;
|
||||
}
|
||||
$r = q("INSERT INTO `contact` ( `uid`, `created`, `self`, `name`, `nick`, `photo`, `thumb`, `micro`, `blocked`, `pending`, `url`, `nurl`,
|
||||
`request`, `notify`, `poll`, `confirm`, `poco`, `name-date`, `uri-date`, `avatar-date`, `closeness` )
|
||||
VALUES ( %d, '%s', 1, '%s', '%s', '%s', '%s', '%s', 0, 0, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 0 ) ",
|
||||
intval($newuid),
|
||||
datetime_convert(),
|
||||
dbesc($username),
|
||||
dbesc($nickname),
|
||||
dbesc($a->get_baseurl() . "/photo/profile/{$newuid}.jpg"),
|
||||
dbesc($a->get_baseurl() . "/photo/avatar/{$newuid}.jpg"),
|
||||
dbesc($a->get_baseurl() . "/photo/micro/{$newuid}.jpg"),
|
||||
dbesc($a->get_baseurl() . "/profile/$nickname"),
|
||||
dbesc(normalise_link($a->get_baseurl() . "/profile/$nickname")),
|
||||
dbesc($a->get_baseurl() . "/dfrn_request/$nickname"),
|
||||
dbesc($a->get_baseurl() . "/dfrn_notify/$nickname"),
|
||||
dbesc($a->get_baseurl() . "/dfrn_poll/$nickname"),
|
||||
dbesc($a->get_baseurl() . "/dfrn_confirm/$nickname"),
|
||||
dbesc($a->get_baseurl() . "/poco/$nickname"),
|
||||
dbesc(datetime_convert()),
|
||||
dbesc(datetime_convert()),
|
||||
dbesc(datetime_convert())
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
// if we have no OpenID photo try to look up an avatar
|
||||
if(! strlen($photo))
|
||||
$photo = avatar_img($email);
|
||||
|
||||
// unless there is no avatar-plugin loaded
|
||||
if(strlen($photo)) {
|
||||
require_once('include/Photo.php');
|
||||
$photo_failure = false;
|
||||
|
||||
$filename = basename($photo);
|
||||
$img_str = fetch_url($photo,true);
|
||||
$img = new Photo($img_str);
|
||||
if($img->is_valid()) {
|
||||
|
||||
$img->scaleImageSquare(175);
|
||||
|
||||
$hash = photo_new_resource();
|
||||
|
||||
$r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 4 );
|
||||
|
||||
if($r === false)
|
||||
$photo_failure = true;
|
||||
|
||||
$img->scaleImage(80);
|
||||
|
||||
$r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 5 );
|
||||
|
||||
if($r === false)
|
||||
$photo_failure = true;
|
||||
|
||||
$img->scaleImage(48);
|
||||
|
||||
$r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 6 );
|
||||
|
||||
if($r === false)
|
||||
$photo_failure = true;
|
||||
|
||||
if(! $photo_failure) {
|
||||
q("UPDATE `photo` SET `profile` = 1 WHERE `resource-id` = '%s' ",
|
||||
dbesc($hash)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
$user = $result['user'];
|
||||
|
||||
if($netpublish && $a->config['register_policy'] != REGISTER_APPROVE) {
|
||||
$url = $a->get_baseurl() . "/profile/$nickname";
|
||||
$url = $a->get_baseurl() . '/profile/' . $user['nickname'];
|
||||
proc_run('php',"include/directory.php","$url");
|
||||
}
|
||||
|
||||
$using_invites = get_config('system','invitation_only');
|
||||
$num_invites = get_config('system','number_invites');
|
||||
$invite_id = ((x($_POST,'invite_id')) ? notags(trim($_POST['invite_id'])) : '');
|
||||
|
||||
call_hooks('register_account', $newuid);
|
||||
|
||||
if( $a->config['register_policy'] == REGISTER_OPEN ) {
|
||||
|
||||
if($using_invites && $invite_id) {
|
||||
q("delete * from register where hash = '%s' limit 1", dbesc($invite_id));
|
||||
set_pconfig($newuid,'system','invites_remaining',$num_invites);
|
||||
set_pconfig($user['uid'],'system','invites_remaining',$num_invites);
|
||||
}
|
||||
|
||||
$email_tpl = get_intltext_template("register_open_eml.tpl");
|
||||
$email_tpl = replace_macros($email_tpl, array(
|
||||
'$sitename' => $a->config['sitename'],
|
||||
'$siteurl' => $a->get_baseurl(),
|
||||
'$username' => $username,
|
||||
'$email' => $email,
|
||||
'$password' => $new_password,
|
||||
'$uid' => $newuid ));
|
||||
'$username' => $user['username'],
|
||||
'$email' => $user['email'],
|
||||
'$password' => $result['password'],
|
||||
'$uid' => $user['uid'] ));
|
||||
|
||||
$res = mail($email, sprintf(t('Registration details for %s'), $a->config['sitename']),
|
||||
$res = mail($user['email'], sprintf(t('Registration details for %s'), $a->config['sitename']),
|
||||
$email_tpl,
|
||||
'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
|
||||
. 'Content-type: text/plain; charset=UTF-8' . "\n"
|
||||
|
@ -387,8 +105,8 @@ function register_post(&$a) {
|
|||
$r = q("INSERT INTO `register` ( `hash`, `created`, `uid`, `password`, `language` ) VALUES ( '%s', '%s', %d, '%s', '%s' ) ",
|
||||
dbesc($hash),
|
||||
dbesc(datetime_convert()),
|
||||
intval($newuid),
|
||||
dbesc($new_password),
|
||||
intval($user['uid']),
|
||||
dbesc($result['password']),
|
||||
dbesc($lang)
|
||||
);
|
||||
|
||||
|
@ -402,17 +120,17 @@ function register_post(&$a) {
|
|||
|
||||
if($using_invites && $invite_id) {
|
||||
q("delete * from register where hash = '%s' limit 1", dbesc($invite_id));
|
||||
set_pconfig($newuid,'system','invites_remaining',$num_invites);
|
||||
set_pconfig($user['uid'],'system','invites_remaining',$num_invites);
|
||||
}
|
||||
|
||||
$email_tpl = get_intltext_template("register_verify_eml.tpl");
|
||||
$email_tpl = replace_macros($email_tpl, array(
|
||||
'$sitename' => $a->config['sitename'],
|
||||
'$siteurl' => $a->get_baseurl(),
|
||||
'$username' => $username,
|
||||
'$email' => $email,
|
||||
'$password' => $new_password,
|
||||
'$uid' => $newuid,
|
||||
'$username' => $user['username'],
|
||||
'$email' => $user['email'],
|
||||
'$password' => $result['password'],
|
||||
'$uid' => $user['uid'],
|
||||
'$hash' => $hash
|
||||
));
|
||||
|
||||
|
|
|
@ -96,7 +96,6 @@ function search_content(&$a) {
|
|||
|
||||
$o .= search($search,'search-box','/search',((local_user()) ? true : false));
|
||||
|
||||
|
||||
if(strpos($search,'#') === 0) {
|
||||
$tag = true;
|
||||
$search = substr($search,1);
|
||||
|
@ -109,10 +108,17 @@ function search_content(&$a) {
|
|||
if(! $search)
|
||||
return $o;
|
||||
|
||||
if (get_config('system','use_fulltext_engine')) {
|
||||
if($tag)
|
||||
$sql_extra = sprintf(" AND `item`.`tag` REGEXP '%s' ", dbesc('\\]' . preg_quote($search) . '\\['));
|
||||
$sql_extra = sprintf(" AND MATCH (`item`.`tag`) AGAINST ('".'"%s"'."' in boolean mode) ", '#'.dbesc(protect_sprintf($search)));
|
||||
else
|
||||
$sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(preg_quote($search)));
|
||||
$sql_extra = sprintf(" AND MATCH (`item`.`body`) AGAINST ('".'"%s"'."' in boolean mode) ", dbesc(protect_sprintf($search)));
|
||||
} else {
|
||||
if($tag)
|
||||
$sql_extra = sprintf(" AND `item`.`tag` REGEXP '%s' ", dbesc('\\]' . protect_sprintf(preg_quote($search)) . '\\['));
|
||||
else
|
||||
$sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(protect_sprintf(preg_quote($search))));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ function get_theme_config_file($theme){
|
|||
}
|
||||
|
||||
function settings_init(&$a) {
|
||||
|
||||
// These lines provide the javascript needed by the acl selector
|
||||
|
||||
$a->page['htmlhead'] .= "<script> var ispublic = '" . t('everybody') . "';" ;
|
||||
|
@ -86,6 +87,7 @@ EOT;
|
|||
$tabtpl = get_markup_template("generic_links_widget.tpl");
|
||||
$a->page['aside'] = replace_macros($tabtpl, array(
|
||||
'$title' => t('Settings'),
|
||||
'$class' => 'settings-widget',
|
||||
'$items' => $tabs,
|
||||
));
|
||||
|
||||
|
@ -337,8 +339,7 @@ function settings_post(&$a) {
|
|||
$expire_notes = ((x($_POST,'expire_notes')) ? intval($_POST['expire_notes']) : 0);
|
||||
$expire_starred = ((x($_POST,'expire_starred')) ? intval($_POST['expire_starred']) : 0);
|
||||
$expire_photos = ((x($_POST,'expire_photos'))? intval($_POST['expire_photos']) : 0);
|
||||
|
||||
|
||||
$expire_network_only = ((x($_POST,'expire_network_only'))? intval($_POST['expire_network_only']) : 0);
|
||||
|
||||
$allow_location = (((x($_POST,'allow_location')) && (intval($_POST['allow_location']) == 1)) ? 1: 0);
|
||||
$publish = (((x($_POST,'profile_in_directory')) && (intval($_POST['profile_in_directory']) == 1)) ? 1: 0);
|
||||
|
@ -434,6 +435,7 @@ function settings_post(&$a) {
|
|||
set_pconfig(local_user(),'expire','notes', $expire_notes);
|
||||
set_pconfig(local_user(),'expire','starred', $expire_starred);
|
||||
set_pconfig(local_user(),'expire','photos', $expire_photos);
|
||||
set_pconfig(local_user(),'expire','network_only', $expire_network_only);
|
||||
|
||||
set_pconfig(local_user(),'system','suggestme', $suggestme);
|
||||
set_pconfig(local_user(),'system','post_newfriend', $post_newfriend);
|
||||
|
@ -443,7 +445,7 @@ function settings_post(&$a) {
|
|||
|
||||
if($page_flags == PAGE_PRVGROUP) {
|
||||
$hidewall = 1;
|
||||
if((! str_contact_allow) && (! str_group_allow) && (! str_contact_deny) && (! $str_group_deny)) {
|
||||
if((! $str_contact_allow) && (! $str_group_allow) && (! $str_contact_deny) && (! $str_group_deny)) {
|
||||
if($def_gid) {
|
||||
info( t('Private forum has no privacy permissions. Using default privacy group.'). EOL);
|
||||
$str_group_allow = '<' . $def_gid . '>';
|
||||
|
@ -811,6 +813,9 @@ function settings_content(&$a) {
|
|||
$expire_photos = get_pconfig(local_user(), 'expire','photos');
|
||||
$expire_photos = (($expire_photos===false)? '0' : $expire_photos); // default if not set: 0
|
||||
|
||||
$expire_network_only = get_pconfig(local_user(), 'expire','network_only');
|
||||
$expire_network_only = (($expire_network_only===false)? '0' : $expire_network_only); // default if not set: 0
|
||||
|
||||
|
||||
$suggestme = get_pconfig(local_user(), 'system','suggestme');
|
||||
$suggestme = (($suggestme===false)? '0': $suggestme); // default if not set: 0
|
||||
|
@ -832,27 +837,26 @@ function settings_content(&$a) {
|
|||
|
||||
$pageset_tpl = get_markup_template('pagetypes.tpl');
|
||||
$pagetype = replace_macros($pageset_tpl,array(
|
||||
'$page_normal' => array('page-flags', t('Normal Account'), PAGE_NORMAL,
|
||||
'$page_normal' => array('page-flags', t('Normal Account Page'), PAGE_NORMAL,
|
||||
t('This account is a normal personal profile'),
|
||||
($a->user['page-flags'] == PAGE_NORMAL)),
|
||||
|
||||
'$page_soapbox' => array('page-flags', t('Soapbox Account'), PAGE_SOAPBOX,
|
||||
'$page_soapbox' => array('page-flags', t('Soapbox Page'), PAGE_SOAPBOX,
|
||||
t('Automatically approve all connection/friend requests as read-only fans'),
|
||||
($a->user['page-flags'] == PAGE_SOAPBOX)),
|
||||
|
||||
'$page_community' => array('page-flags', t('Community/Celebrity Account'), PAGE_COMMUNITY,
|
||||
'$page_community' => array('page-flags', t('Community Forum/Celebrity Account'), PAGE_COMMUNITY,
|
||||
t('Automatically approve all connection/friend requests as read-write fans'),
|
||||
($a->user['page-flags'] == PAGE_COMMUNITY)),
|
||||
|
||||
'$page_freelove' => array('page-flags', t('Automatic Friend Account'), PAGE_FREELOVE,
|
||||
'$page_freelove' => array('page-flags', t('Automatic Friend Page'), PAGE_FREELOVE,
|
||||
t('Automatically approve all connection/friend requests as friends'),
|
||||
($a->user['page-flags'] == PAGE_FREELOVE)),
|
||||
|
||||
'$page_prvgroup' => array('page-flags', t('Private Forum'), PAGE_PRVGROUP,
|
||||
t('Private forum - approved members only [Experimental]'),
|
||||
'$page_prvgroup' => array('page-flags', t('Private Forum [Experimental]'), PAGE_PRVGROUP,
|
||||
t('Private forum - approved members only'),
|
||||
($a->user['page-flags'] == PAGE_PRVGROUP)),
|
||||
|
||||
'$experimental' => ( (intval(get_config('system','prvgroup_testing'))) ? 'true' : ''),
|
||||
|
||||
));
|
||||
|
||||
|
@ -953,6 +957,7 @@ function settings_content(&$a) {
|
|||
'notes' => array('expire_notes', t("Expire personal notes:"), $expire_notes, '', array(t('No'),t('Yes'))),
|
||||
'starred' => array('expire_starred', t("Expire starred posts:"), $expire_starred, '', array(t('No'),t('Yes'))),
|
||||
'photos' => array('expire_photos', t("Expire photos:"), $expire_photos, '', array(t('No'),t('Yes'))),
|
||||
'network_only' => array('expire_network_only', t("Only expire posts by others:"), $expire_network_only, '', array(t('No'),t('Yes'))),
|
||||
);
|
||||
|
||||
require_once('include/group.php');
|
||||
|
@ -1020,7 +1025,8 @@ function settings_content(&$a) {
|
|||
'$notify7' => array('notify7', t('You are tagged in a post'), ($notify & NOTIFY_TAGSELF), NOTIFY_TAGSELF, ''),
|
||||
|
||||
|
||||
'$h_advn' => t('Advanced Page Settings'),
|
||||
'$h_advn' => t('Advanced Account/Page Type Settings'),
|
||||
'$h_descadvn' => t('Change the behaviour of this account for special situations'),
|
||||
'$pagetype' => $pagetype,
|
||||
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ function wallmessage_post(&$a) {
|
|||
}
|
||||
|
||||
// Work around doubled linefeeds in Tinymce 3.5b2
|
||||
dbg(1);
|
||||
|
||||
$body = str_replace("\r\n","\n",$body);
|
||||
$body = str_replace("\n\n","\n",$body);
|
||||
|
||||
|
@ -67,7 +67,7 @@ dbg(1);
|
|||
default:
|
||||
info( t('Message sent.') . EOL );
|
||||
}
|
||||
dbg(0);
|
||||
|
||||
// goaway($a->get_baseurl() . '/profile/' . $user['nickname']);
|
||||
|
||||
}
|
||||
|
|
10
update.php
10
update.php
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
define( 'UPDATE_VERSION' , 1144 );
|
||||
define( 'UPDATE_VERSION' , 1145 );
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -1253,5 +1253,9 @@ function update_1143() {
|
|||
return UPDATE_SUCCESS ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
function update_1144() {
|
||||
$r = q("alter table contact add prv tinyint(1) not null default '0' after forum");
|
||||
if(! $r)
|
||||
return UPDATE_FAILED ;
|
||||
return UPDATE_SUCCESS ;
|
||||
}
|
||||
|
|
1254
util/messages.po
1254
util/messages.po
File diff suppressed because it is too large
Load diff
|
@ -11,6 +11,10 @@ $please
|
|||
<input type="hidden" name="localconfirm" value="1" />
|
||||
$aes_allow
|
||||
|
||||
<label id="dfrn-request-homecoming-hide-label" for="dfrn-request-homecoming-hide">$hidethem</label>
|
||||
<input type="checkbox" name="hidden-contact" value="1" {{ if $hidechecked }}checked="checked" {{ endif }} />
|
||||
|
||||
|
||||
<div id="dfrn-request-homecoming-submit-wrapper" >
|
||||
<input id="dfrn-request-homecoming-submit" type="submit" name="submit" value="$submit" />
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div class="widget">
|
||||
<div class="widget{{ if $class }} $class{{ endif }}">
|
||||
{{if $title}}<h3>$title</h3>{{endif}}
|
||||
{{if $desc}}<div class="desc">$desc</div>{{endif}}
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
{{inc field_radio.tpl with $field=$page_normal }}{{endinc}}
|
||||
{{inc field_radio.tpl with $field=$page_soapbox }}{{endinc}}
|
||||
{{inc field_radio.tpl with $field=$page_community }}{{endinc}}
|
||||
{{inc field_radio.tpl with $field=$page_freelove }}{{endinc}}
|
||||
{{ if $experimental }}
|
||||
{{inc field_radio.tpl with $field=$page_prvgroup }}{{endinc}}
|
||||
{{ endif }}
|
||||
{{inc field_radio.tpl with $field=$page_soapbox }}{{endinc}}
|
||||
{{inc field_radio.tpl with $field=$page_freelove }}{{endinc}}
|
||||
|
|
|
@ -70,6 +70,7 @@ $unkmail
|
|||
{{ inc field_yesno.tpl with $field=$expire.items }}{{endinc}}
|
||||
{{ inc field_yesno.tpl with $field=$expire.notes }}{{endinc}}
|
||||
{{ inc field_yesno.tpl with $field=$expire.starred }}{{endinc}}
|
||||
{{ inc field_yesno.tpl with $field=$expire.network_only }}{{endinc}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -103,15 +104,16 @@ $group_select
|
|||
|
||||
|
||||
<h3 class="settings-heading">$h_not</h3>
|
||||
<div id="settings-notifications">
|
||||
|
||||
<strong>$activity_options</strong>
|
||||
<div id="settings-activity-desc">$activity_options</div>
|
||||
|
||||
{{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}}
|
||||
|
||||
|
||||
<div id="settings-notify-desc"><strong>$lbl_not </strong></div>
|
||||
<div id="settings-notify-desc">$lbl_not</div>
|
||||
|
||||
<div class="group">
|
||||
{{inc field_intcheckbox.tpl with $field=$notify1 }}{{endinc}}
|
||||
|
@ -123,6 +125,7 @@ $group_select
|
|||
{{inc field_intcheckbox.tpl with $field=$notify7 }}{{endinc}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="settings-submit-wrapper" >
|
||||
<input type="submit" name="submit" class="settings-submit" value="$submit" />
|
||||
|
@ -130,6 +133,7 @@ $group_select
|
|||
|
||||
|
||||
<h3 class="settings-heading">$h_advn</h3>
|
||||
<div id="settings-pagetype-desc">$h_descadvn</div>
|
||||
|
||||
$pagetype
|
||||
|
||||
|
|
|
@ -18,6 +18,11 @@ $a->page['htmlhead'] .= sprintf('<META NAME=generator CONTENT="%s"/>', $diabook_
|
|||
|
||||
//init css on network and profilepages
|
||||
$cssFile = null;
|
||||
|
||||
// Preload config
|
||||
load_config("diabook");
|
||||
load_pconfig(local_user(), "diabook");
|
||||
|
||||
//get statuses of boxes at right-hand-column
|
||||
$close_pages = false;
|
||||
$site_close_pages = get_config("diabook", "close_pages" );
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
<div>$page</div>
|
||||
{{ endif }}
|
||||
|
||||
{{ if $lastusers_title }}
|
||||
<h3 id="extra-help-header">Help or '@NewHere'?</h3>
|
||||
<div id="extra-help">
|
||||
<a href="https://helpers.pyxis.uberspace.de/profile/helpers"
|
||||
|
@ -13,27 +12,24 @@
|
|||
title="Local Friendica" target="_blank">Local Friendica</a><br />
|
||||
<a href="http://kakste.com/profile/newhere" title="@NewHere" target="_blank">NewHere</a>
|
||||
</div>
|
||||
{{ endif }}
|
||||
|
||||
{{ if $lastusers_title }}
|
||||
<h3 id="connect-services-header">Connectable Services</h3>
|
||||
<div id="connect-services">
|
||||
<a href="$url/facebook"><img alt="Facebook"
|
||||
src="view/theme/dispy/icons/facebook.png" title="Facebook" /></a>
|
||||
<a href="$url/settings/connectors"><img
|
||||
alt="StatusNet" src="view/theme/dispy/icons/StatusNet.png?" title="StatusNet" /></a>
|
||||
<a href="$url/settings/connectors"><img
|
||||
alt="LiveJournal" src="view/theme/dispy/icons/livejournal.png?" title="LiveJournal" /></a>
|
||||
<a href="$url/settings/connectors"><img
|
||||
alt="Posterous" src="view/theme/dispy/icons/posterous.png?" title="Posterous" /></a><br />
|
||||
<a href="$url/settings/connectors"><img
|
||||
alt="Tumblr" src="view/theme/dispy/icons/tumblr.png?" title="Tumblr" /></a>
|
||||
<a href="$url/settings/connectors"><img
|
||||
alt="Twitter" src="view/theme/dispy/icons/twitter.png?" title="Twitter" /></a>
|
||||
<a href="$url/settings/connectors"><img
|
||||
alt="WordPress" src="view/theme/dispy/icons/wordpress.png?" title="WordPress" /></a>
|
||||
<a href="$url/settings/connectors"><img
|
||||
alt="E-Mail" src="view/theme/dispy/icons/email.png?" title="E-Mail" /></a>
|
||||
</div>
|
||||
{{ endif }}
|
||||
<ul id="connect-services">
|
||||
<li><a href="$url/facebook"><img alt="Facebook"
|
||||
src="view/theme/dispy/icons/facebook.png" title="Facebook" /></a></li>
|
||||
<li><a href="$url/settings/connectors"><img
|
||||
alt="StatusNet" src="view/theme/dispy/icons/StatusNet.png" title="StatusNet" /></a></li>
|
||||
<li><a href="$url/settings/connectors"><img
|
||||
alt="LiveJournal" src="view/theme/dispy/icons/livejournal.png" title="LiveJournal" /></a></li>
|
||||
<li><a href="$url/settings/connectors"><img
|
||||
alt="Posterous" src="view/theme/dispy/icons/posterous.png" title="Posterous" /></a></li>
|
||||
<li><a href="$url/settings/connectors"><img
|
||||
alt="Tumblr" src="view/theme/dispy/icons/tumblr.png" title="Tumblr" /></a></li>
|
||||
<li><a href="$url/settings/connectors"><img
|
||||
alt="Twitter" src="view/theme/dispy/icons/twitter.png" title="Twitter" /></a></li>
|
||||
<li><a href="$url/settings/connectors"><img
|
||||
alt="WordPress" src="view/theme/dispy/icons/wordpress.png" title="WordPress" /></a></li>
|
||||
<li><a href="$url/settings/connectors"><img
|
||||
alt="E-Mail" src="view/theme/dispy/icons/email.png" title="E-Mail" /></a></li>
|
||||
</ul>
|
||||
|
||||
|
|
|
@ -41,17 +41,17 @@ function theme_admin_post(&$a) {
|
|||
|
||||
function dispy_form(&$a, $font_size, $line_height, $colour) {
|
||||
$line_heights = array(
|
||||
"1.3"=>"1.3",
|
||||
"---"=>"---",
|
||||
"1.6"=>"1.6",
|
||||
"1.5"=>"1.5",
|
||||
"1.4"=>"1.4",
|
||||
"1.2"=>"1.2",
|
||||
"1.1"=>"1.1",
|
||||
"1.3" => "1.3",
|
||||
"---" => "---",
|
||||
"1.6" => "1.6",
|
||||
"1.5" => "1.5",
|
||||
"1.4" => "1.4",
|
||||
"1.2" => "1.2",
|
||||
"1.1" => "1.1",
|
||||
);
|
||||
$font_sizes = array(
|
||||
'12' => '12',
|
||||
'14' =>'14',
|
||||
'14' => '14',
|
||||
"---" => "---",
|
||||
"16" => "16",
|
||||
"15" => "15",
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
{{ if $dropping }}
|
||||
<div class="delete-checked">
|
||||
<a href="#" onclick="deleteCheckedItems();return false;"><span class="icon delete"></span><span class="s22 text">$dropping</span></a>
|
||||
<a href="#" onclick="deleteCheckedItems();return false;"><span class="icon delete"></span><span class="s22 text" onmouseover="imgbright(this);" onmouseout="imgdull(this);">$dropping</span></a>
|
||||
</div>
|
||||
<div id="item-delete-selected-end"></div>
|
||||
{{ endif }}
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
@import "../css/reset";
|
||||
|
||||
//* backgrounds */
|
||||
@lt_bg_colour: lighten(@bg_colour, 10%);
|
||||
@dk_bg_colour: #1d1f1d;
|
||||
@bg_colour: #2e2f2e;
|
||||
@bg_alt_colour: #2e302e;
|
||||
|
@ -24,8 +25,9 @@
|
|||
@menu_bg_colour: #555753;
|
||||
|
||||
//* font colour, aka color: */
|
||||
@lt_main_colour: #ffff99;
|
||||
@lt_main_colour: lighten(@main_colour, 10%);
|
||||
@main_colour: #eeeecc;
|
||||
@dk_main_colour: darken(@main_colour, 20%);
|
||||
@main_alt_colour: #eeeeee;
|
||||
// darken(@main_alt_colour, 13%) > #cdcdcd
|
||||
// darken(@main_alt_colour, 13.5%) > #cccccc
|
||||
|
@ -56,9 +58,6 @@
|
|||
@info: #1353b1;
|
||||
@alert: #ff0000;
|
||||
|
||||
@lt_main_colour: lighten(@bg_colour, 10%);
|
||||
@dk_main_colour: darken(@bg_colour, 10%);
|
||||
|
||||
//* links */
|
||||
@link_colour: #88a9d2;
|
||||
@dk_link_colour: darken(@link_colour, 10%);
|
||||
|
@ -137,7 +136,19 @@
|
|||
-webkit-text-overflow: @t;
|
||||
text-overflow: @t;
|
||||
}
|
||||
|
||||
.lin_gradient(@x1: left, @x2: right, @y1: top, @y2: bottom, @c1: @bg_colour, @c2: @dk_bg_colour) {
|
||||
// w3c
|
||||
background: linear-gradient(@x1 @y2, @c1, @c2);
|
||||
// webkit
|
||||
// -webkit-gradient(<type>, <point> [, <radius>]?, <point> [, <radius>]? [, <stop>]*)
|
||||
background: -webkit-gradient(linear, @x1 @y1, @x2 @y2, from(@c1), to(@c2));
|
||||
// mozilla
|
||||
// -moz-linear-gradient([<point> || <angle>,]? <stop>, <stop> [, <stop>])
|
||||
background: -moz-linear-gradient(@x1 @y2, @c1, @c2);
|
||||
// opera
|
||||
//background: -o-linear-gradient([<point> || <angle>,]? <stop>, <stop> [, <stop>]);
|
||||
background: -o-linear-gradient(@x1, @c1, @c2);
|
||||
}
|
||||
//* pre wrap */
|
||||
.wrap () {
|
||||
white-space: pre-wrap;
|
||||
|
|
|
@ -20,7 +20,7 @@ tr:nth-child(even){background-color:#474947;}
|
|||
:focus{outline:none;}
|
||||
a:focus{outline:invert, dashed, thin;}
|
||||
[disabled="disabled"]{background:#4e4f4e;color:#ddddbb;}
|
||||
ins,mark{background-color:#2e302e;color:#474947;}
|
||||
ins,mark{background-color:#2e302e;color:#fbfbf2;}
|
||||
ins{text-decoration:none;}
|
||||
mark{font-style:italic;font-weight:bold;}
|
||||
pre,code,kbd,samp,.wall-item-body code{font-family:monospace, monospace;_font-family:monospace;font-size:1em;}
|
||||
|
@ -58,7 +58,7 @@ h6{font-size:xx-small;}
|
|||
#articlemain{width:100%;height:100%;margin:0 auto;}
|
||||
.button{color:#eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;padding:5px;cursor:pointer;}.button a{color:#eeeecc;font-weight:bold;}
|
||||
#profile-listing-desc a{color:#eeeecc;font-weight:bold;}
|
||||
[class$="-desc"],[id$="-desc"]{color:#eeeecc;background:#2e2f2e;border:3px ridge #eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:3px 10px 7px 0;padding:5px;font-weight:bold;font-size:smaller;}
|
||||
[class$="-desc"],[id$="-desc"]{color:#eeeecc;background:#2e2f2e;border:2px outset #d4d580;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:3px 10px 7px 0;padding:5px;font-weight:bold;font-size:smaller;}
|
||||
#item-delete-selected-desc{float:left;margin-right:5px;}#item-delete-selected-desc:hover{text-decoration:underline;}
|
||||
.intro-approve-as-friend-desc{margin-top:10px;}
|
||||
.intro-desc{margin-bottom:20px;font-weight:bold;}
|
||||
|
@ -103,7 +103,7 @@ div.jGrowl div.info{background:#1353b1 url("../../../images/icons/48/info.png")
|
|||
nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkmenu.selected .icon.s22.notify{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAQAAABuvaSwAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAUJcAAFCXAZtv64UAAAHuSURBVCjPbZPbTlNBFIYHLixXRIhEQGNRMUopJAJyAyZ4Z2l8B+XwEBqKtjwOp8oDIAJKIJFUjdFIQCUYrRytdyb0459ht8wG9rrYs9b618y/TsYEH4ZK4qRYYIdDybZOI7TKakIfVhrJ8J2i5IBNyV93/kaaBuv3oV3MgwCTPKGHPkkPA0xRUMBrOgN4AP0o6BseEpF2m3es0qJTFQneyvMhgDsC9tZprnEcGuOPeMcDLUpW3jlLxlDBmJTFY6gLvsVv8tyh9G7U3Z6mwtCuJAoiECSh/w1+8otmTjLqF2KDNsNzRY1bruV0o6rFFtc9S5USh5RRWvAYv4xX9dYPS8ur1oBQC4Y99m2uHriRNda5ErLdU1l3jCI2xdJ3XOYLX6kP2W6K2OF54Et84jN154F31d6ukKOG92pSbcjWLRrbRhVGLTZeOtXqX46LoQSHhJo3jOo3ESrdBQbljIRKNyXUiKHNNSXhTdbZiUzyT/WJ23Zn3BBFy+2u4ZHc1eV2N7EkxAvbbqMRmZOSlbE0g/uajRgl6Iy8r1wpnaFTQ4ji+8XOEsuxYmdDWpJleXJ0+BPdoduL4p5Vavd5IOllmJfiWmSWu6d3pV4jteFWqaAGbLkdKSqtUXXUnN3DSvF8phfy/JfkxfOp9sVb2COz+hY/T0qkwwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMS0wOS0xNlQwOTozOTowMCswMjowMC9Oi90AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTEtMDktMTZUMDk6Mzk6MDArMDI6MDBeEzNhAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAABJRU5ErkJggg==");}
|
||||
.show{display:block;}
|
||||
#notifications{width:170px;height:20px;font-size:small;top:-19px;left:4px;position:absolute;}
|
||||
#nav-floater{position:fixed;top:20px;right:1%;padding:5px;background:#1d1f1d;color:transparent;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;z-index:100;width:300px;height:60px;}
|
||||
#nav-floater{position:fixed;top:20px;right:1%;padding:5px;background:#1d1f1d;color:transparent;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;z-index:100;width:270px;height:60px;}
|
||||
#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;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
|
||||
|
@ -111,7 +111,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
#search-text{border:1px solid #eeeeee;margin:5px 0;}
|
||||
#mini-search-text{font-size:8pt;height:14px;width:10em;margin:5px;}
|
||||
#scrollup{position:fixed;right:5px;bottom:40px;z-index:100;}#scrollup a:hover{text-decoration:none;border:0;}
|
||||
#user-menu{-moz-box-shadow:5px 0 10px 0 #111111;-o-box-shadow:5px 0 10px 0 #111111;-webkit-box-shadow:5px 0 10px 0 #111111;-ms-box-shadow:5px 0 10px 0 #111111;box-shadow:5px 0 10px 0 #111111;display:block;width:75%;margin:3px 0 0 0;position:relative;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;background-color:#555753;background-image:url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q==");background-position:98% center;background-repeat:no-repeat;clear:both;top:4px;left:10px;padding:2px;}#user-menu>a{vertical-align:top;outline:0 none;}
|
||||
#user-menu{-moz-box-shadow:5px 0 10px 0 #111111;-o-box-shadow:5px 0 10px 0 #111111;-webkit-box-shadow:5px 0 10px 0 #111111;-ms-box-shadow:5px 0 10px 0 #111111;box-shadow:5px 0 10px 0 #111111;display:block;width:80%;margin:3px 0 0 0;position:relative;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;background-color:#555753;background-image:url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q==");background-position:98% center;background-repeat:no-repeat;clear:both;top:4px;left:10px;padding:2px;}#user-menu>a{vertical-align:top;outline:0 none;}
|
||||
#user-menu-label{font-size:small;padding:3px 20px 9px 5px;height:10px;}
|
||||
.nav-ajax-update,.nav-ajax-left{width:30px;height:19px;background:transparent url(dark/notifications.png) 0 0 no-repeat;color:#111111;font-weight:bold;font-size:0.8em;padding-top:0.2em;text-align:center;float:left;margin:0 -1px 0 3px;display:block;visibility:hidden;}
|
||||
.nav-ajax-update.show,.nav-ajax-left.show{visibility:visible;}
|
||||
|
@ -133,7 +133,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
#sysmsg_info{position:fixed;bottom:0;-moz-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-o-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-webkit-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-ms-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;padding:10px;background-color:#fcaf3e;border:2px solid #f8911b;border-bottom:0;padding-bottom:50px;z-index:1000;}
|
||||
#sysmsg{position:fixed;bottom:0;-moz-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-o-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-webkit-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-ms-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;padding:10px;background-color:#fcaf3e;border:2px solid #f8911b;border-bottom:0;padding-bottom:50px;z-index:1000;}
|
||||
#sysmsg_info br,#sysmsg br{display:block;margin:2px 0px;border-top:1px solid #eeeecc;}
|
||||
#asidemain{float:left;font-size:small;margin:20px 0 20px 35px;width:25%;display:inline;}
|
||||
#asidemain{float:left;font-size:small;margin:1em;width:25%;display:inline;}
|
||||
#asideright,#asideleft{display:none;}
|
||||
.vcard .fn{font-size:1.5em;font-weight:bold;border-bottom:1px solid #638ec4;padding-bottom:3px;}
|
||||
.vcard #profile-photo-wrapper{margin:20px 0;background-color:#555753;padding:5px;width:175px;height:175px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:3px 3px 10px 0 #111111;-o-box-shadow:3px 3px 10px 0 #111111;-webkit-box-shadow:3px 3px 10px 0 #111111;-ms-box-shadow:3px 3px 10px 0 #111111;box-shadow:3px 3px 10px 0 #111111;}
|
||||
|
@ -187,7 +187,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
#jot-title-display{font-weight:bold;}
|
||||
.jothidden{display:none;}
|
||||
#jot-preview-content{background-color:#2e3436;color:#eeeecc;border:1px solid #2e2f2e;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:5px 0 10px 0px #111111;-o-box-shadow:5px 0 10px 0px #111111;-webkit-box-shadow:5px 0 10px 0px #111111;-ms-box-shadow:5px 0 10px 0px #111111;box-shadow:5px 0 10px 0px #111111;padding:3px 3px 6px 10px;}#jot-preview-content .wall-item-outside-wrapper{border:0;-o-border-radius:0px 0px 0px 0px;-webkit-border-radius:0px 0px 0px 0px;-moz-border-radius:0px 0px 0px 0px;-ms-border-radius:0px 0px 0px 0px;border-radius:0px 0px 0px 0px;-moz-box-shadow:0 0 0 0 #111111;-o-box-shadow:0 0 0 0 #111111;-webkit-box-shadow:0 0 0 0 #111111;-ms-box-shadow:0 0 0 0 #111111;box-shadow:0 0 0 0 #111111;}
|
||||
#sectionmain{margin:20px;font-size:0.8em;min-width:475px;width:67%;float:left;display:inline;}
|
||||
#sectionmain{margin:1em;font-size:0.8em;min-width:475px;width:69%;float:left;display:inline;}
|
||||
.tabs{margin:0px;padding:0px;list-style:none;list-style-position:inside;margin:10px 0;}.tabs li{display:inline;font-size:smaller;}
|
||||
.tab{border:1px solid #638ec4;padding:4px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}.tab:active,.tab:hover{background:#2e3436;color:#eeeecc;border:1px solid #638ec4;}
|
||||
.tab a{border:0;text-decoration:none;}
|
||||
|
@ -203,7 +203,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
[id^="tread-wrapper"],[class^="tread-wrapper"]{margin:1.2em 0 0 0;padding:0px;}
|
||||
.wall-item-photo-menu{display:none;}
|
||||
.wall-item-photo-menu-button{display:none;text-indent:-99999px;background:#555753 url(dark/menu-user-pin.jpg) no-repeat 75px center;position:absolute;overflow:hidden;width:90px;height:20px;top:85px;left:0;-o-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;}
|
||||
.wall-item-info{float:left;width:8em;position:relative;}
|
||||
.wall-item-info{float:left;width:7em;position:relative;}
|
||||
.wall-item-photo-wrapper{width:80px;height:80px;position:relative;padding:5px;background-color:#555753;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
|
||||
[class^="wall-item-tools"] *{}[class^="wall-item-tools"] *>*{}
|
||||
.wall-item-tools{float:right;opacity:0.4;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;}.wall-item-tools:hover{opacity:1;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;}
|
||||
|
@ -223,14 +223,16 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
.wall-item-arrowphoto-wrapper{position:absolute;left:35px;top:80px;z-index:10002;}
|
||||
.wall-item-photo-menu{min-width:92px;font-size:0.75em;border:2px solid #555753;border-top:0px;background:#555753;position:absolute;left:-2px;top:101px;display:none;z-index:10003;-o-border-radius:0 5px 5px 5px;-webkit-border-radius:0 5px 5px 5px;-moz-border-radius:0 5px 5px 5px;-ms-border-radius:0 5px 5px 5px;border-radius:0 5px 5px 5px;}.wall-item-photo-menu li a{white-space:nowrap;display:block;padding:5px 6px;color:#eeeeee;}.wall-item-photo-menu li a:hover{color:#555753;background:#eeeeee;}
|
||||
#item-delete-selected{overflow:auto;width:100%;}
|
||||
#connect-services-header,#connect-services,#extra-help-header,#extra-help,#postit-header,#postit{margin:5px 0 0 0;}
|
||||
#connect-services-header,#extra-help-header{margin:1.5em 0 0 0;}
|
||||
#connect-services,#extra-help{margin:0px;padding:0px;list-style:none;list-style-position:inside;margin:1em 0 0 0;}#connect-services li,#extra-help li{display:inline;}
|
||||
.ccollapse-wrapper{font-size:0.9em;margin-left:5em;}
|
||||
.hide-comments-outer{font-size:small;}
|
||||
.wall-item-outside-wrapper.comment{margin-left:5em;}.wall-item-outside-wrapper.comment .wall-item-photo{width:40px !important;height:40px !important;}
|
||||
.wall-item-outside-wrapper.comment{margin-left:5em;}.wall-item-outside-wrapper.comment .wall-item-info{width:5em;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo{width:40px !important;height:40px !important;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo-wrapper{width:40px;height:40px;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo-menu-button{width:50px;top:45px;background-position:35px center;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo-menu-button{width:4,5em;top:4em;background-position:35px center;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-author{margin-left:0.2em;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo-menu{min-width:50px;top:60px;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo-menu{min-width:4.5em;top:5.5em;}
|
||||
.comment-wwedit-wrapper{border:1px solid #eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:5px;}
|
||||
.comment-edit-wrapper{border-top:1px #aaa solid;}
|
||||
[class^="comment-edit-bb"]{margin:0px;padding:0px;list-style:none;list-style-position:inside;display:none;margin:-40px 0 5px 60px;width:75%;}[class^="comment-edit-bb"]>li{display:inline-block;margin:0 10px 0 0;visibility:none;}
|
||||
|
|
|
@ -315,7 +315,7 @@ h6 {
|
|||
[id$="-desc"] {
|
||||
color: @main_colour;
|
||||
background: @bg_colour;
|
||||
.borders(3px, ridge, @main_colour);
|
||||
.borders(2px, outset, @dk_main_colour);
|
||||
.rounded_corners;
|
||||
// .box_shadow(3px, 3px, 5px);
|
||||
margin: 3px 10px 7px 0;
|
||||
|
@ -639,7 +639,7 @@ nav #nav-notifications-linkmenu {
|
|||
color: transparent;
|
||||
.rounded_corners;
|
||||
z-index: 100;
|
||||
.box(300px, 60px);
|
||||
.box(270px, 60px);
|
||||
}
|
||||
#nav-buttons {
|
||||
clear: both;
|
||||
|
@ -702,7 +702,7 @@ nav #nav-notifications-linkmenu {
|
|||
#user-menu {
|
||||
.box_shadow(5px, 0, 10px, 0);
|
||||
display: block;
|
||||
width: 75%;
|
||||
width: 80%;
|
||||
margin: 3px 0 0 0;
|
||||
position: relative;
|
||||
.rounded_corners;
|
||||
|
@ -872,7 +872,7 @@ nav #nav-notifications-linkmenu {
|
|||
#asidemain {
|
||||
float: left;
|
||||
font-size: small;
|
||||
margin: 20px 0 20px 35px;
|
||||
margin: 1em;
|
||||
width: 25%;
|
||||
display: inline;
|
||||
}
|
||||
|
@ -1229,10 +1229,10 @@ nav #nav-notifications-linkmenu {
|
|||
* section
|
||||
*/
|
||||
#sectionmain {
|
||||
margin: 20px;
|
||||
margin: 1em;
|
||||
font-size: 0.8em;
|
||||
min-width: 475px;
|
||||
width: 67%;
|
||||
width: 69%;
|
||||
float: left;
|
||||
display: inline;
|
||||
}
|
||||
|
@ -1348,7 +1348,7 @@ nav #nav-notifications-linkmenu {
|
|||
}
|
||||
.wall-item-info {
|
||||
float: left;
|
||||
width: 8em;
|
||||
width: 7em;
|
||||
position: relative;
|
||||
}
|
||||
.wall-item-photo-wrapper {
|
||||
|
@ -1501,12 +1501,16 @@ nav #nav-notifications-linkmenu {
|
|||
width: 100%;
|
||||
}
|
||||
#connect-services-header,
|
||||
#extra-help-header {
|
||||
margin: 1.5em 0 0 0;
|
||||
}
|
||||
#connect-services,
|
||||
#extra-help-header,
|
||||
#extra-help,
|
||||
#postit-header,
|
||||
#postit {
|
||||
margin: 5px 0 0 0;
|
||||
#extra-help {
|
||||
.list_reset;
|
||||
margin: 1em 0 0 0;
|
||||
li {
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -1522,6 +1526,9 @@ nav #nav-notifications-linkmenu {
|
|||
}
|
||||
.wall-item-outside-wrapper.comment {
|
||||
margin-left: 5em;
|
||||
.wall-item-info {
|
||||
width: 5em;
|
||||
}
|
||||
.wall-item-photo {
|
||||
width: 40px !important;
|
||||
height: 40px !important;
|
||||
|
@ -1530,16 +1537,16 @@ nav #nav-notifications-linkmenu {
|
|||
.box(40px, 40px);
|
||||
}
|
||||
.wall-item-photo-menu-button {
|
||||
width: 50px;
|
||||
top: 45px;
|
||||
width: 4,5em;
|
||||
top: 4em;
|
||||
background-position: 35px center;
|
||||
}
|
||||
.wall-item-author {
|
||||
margin-left: 0.2em;
|
||||
}
|
||||
.wall-item-photo-menu {
|
||||
min-width: 50px;
|
||||
top: 60px;
|
||||
min-width: 4.5em;
|
||||
top: 5.5em;
|
||||
}
|
||||
}
|
||||
.comment-wwedit-wrapper {
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
/*
|
||||
* Name: Dispy Dark
|
||||
* Description: Dispy Dark: Dark, Spartan, Sleek, and Functional
|
||||
* Version: 1.2.1
|
||||
* Author: Simon <http://simon.kisikew.org/>
|
||||
* Maintainer: Simon <http://simon.kisikew.org/>
|
||||
* Screenshot: <a href="screenshot.jpg">Screenshot</a>
|
||||
|
@ -13,7 +12,6 @@ $a = get_app();
|
|||
$a->theme_info = array(
|
||||
'family' => 'dispy',
|
||||
'name' => 'dark',
|
||||
'version' => '1.2.1'
|
||||
);
|
||||
|
||||
function dispy_dark_init(&$a) {
|
||||
|
|
|
@ -24,8 +24,9 @@
|
|||
@menu_bg_colour: #555753;
|
||||
|
||||
//* font colour, aka color: */
|
||||
@lt_main_colour: #ffff99;
|
||||
@lt_main_colour: lighten(@bg_colour, 10%);
|
||||
@main_colour: #111;
|
||||
@dk_main_colour: darken(@bg_colour, 10%);
|
||||
@main_alt_colour: #999999;
|
||||
// darken(@main_alt_colour, 6.5%) > #888888
|
||||
// //#9eabb0
|
||||
|
@ -55,9 +56,6 @@
|
|||
@info: #364e59;
|
||||
@alert: #ff0000;
|
||||
|
||||
@lt_main_colour: lighten(@bg_colour, 10%);
|
||||
@dk_main_colour: darken(@bg_colour, 10%);
|
||||
|
||||
//* links */
|
||||
// yes our link colour is "friendica blue" ;)
|
||||
@link_colour: @friendica_blue;
|
||||
|
@ -137,7 +135,19 @@
|
|||
-webkit-text-overflow: @t;
|
||||
text-overflow: @t;
|
||||
}
|
||||
|
||||
.lin_gradient(@x1: left, @x2: right, @y1: top, @y2: bottom, @c1: @bg_colour, @c2: @dk_bg_colour) {
|
||||
// w3c
|
||||
background: linear-gradient(@x1 @y2, @c1, @c2);
|
||||
// webkit
|
||||
// -webkit-gradient(<type>, <point> [, <radius>]?, <point> [, <radius>]? [, <stop>]*)
|
||||
background: -webkit-gradient(linear, @x1 @y1, @x2 @y2, from(@c1), to(@c2));
|
||||
// mozilla
|
||||
// -moz-linear-gradient([<point> || <angle>,]? <stop>, <stop> [, <stop>])
|
||||
background: -moz-linear-gradient(@x1 @y2, @c1, @c2);
|
||||
// opera
|
||||
//background: -o-linear-gradient([<point> || <angle>,]? <stop>, <stop> [, <stop>]);
|
||||
background: -o-linear-gradient(@x1, @c1, @c2);
|
||||
}
|
||||
//* pre wrap */
|
||||
.wrap () {
|
||||
white-space: pre-wrap;
|
||||
|
|
|
@ -58,7 +58,7 @@ h6{font-size:xx-small;}
|
|||
#articlemain{width:100%;height:100%;margin:0 auto;}
|
||||
.button{color:#111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;padding:5px;cursor:pointer;}.button a{color:#111111;font-weight:bold;}
|
||||
#profile-listing-desc a{color:#eeeeec;font-weight:bold;}
|
||||
[class$="-desc"],[id$="-desc"]{color:#eeeeec;background:#2e3436;border:3px ridge #111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:3px 10px 7px 0;padding:5px;font-weight:bold;font-size:smaller;}
|
||||
[class$="-desc"],[id$="-desc"]{color:#eeeeec;background:#2e3436;border:2px outset #111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:3px 10px 7px 0;padding:5px;font-weight:bold;font-size:smaller;}
|
||||
#item-delete-selected-desc{float:left;margin-right:5px;}#item-delete-selected-desc:hover{text-decoration:underline;}
|
||||
.intro-approve-as-friend-desc{margin-top:10px;}
|
||||
.intro-desc{margin-bottom:20px;font-weight:bold;}
|
||||
|
@ -103,7 +103,7 @@ div.jGrowl div.info{background:#364e59 url("../../../images/icons/48/info.png")
|
|||
nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkmenu.selected .icon.s22.notify{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAQAAABuvaSwAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAUJcAAFCXAZtv64UAAAHuSURBVCjPbZPbTlNBFIYHLixXRIhEQGNRMUopJAJyAyZ4Z2l8B+XwEBqKtjwOp8oDIAJKIJFUjdFIQCUYrRytdyb0459ht8wG9rrYs9b618y/TsYEH4ZK4qRYYIdDybZOI7TKakIfVhrJ8J2i5IBNyV93/kaaBuv3oV3MgwCTPKGHPkkPA0xRUMBrOgN4AP0o6BseEpF2m3es0qJTFQneyvMhgDsC9tZprnEcGuOPeMcDLUpW3jlLxlDBmJTFY6gLvsVv8tyh9G7U3Z6mwtCuJAoiECSh/w1+8otmTjLqF2KDNsNzRY1bruV0o6rFFtc9S5USh5RRWvAYv4xX9dYPS8ur1oBQC4Y99m2uHriRNda5ErLdU1l3jCI2xdJ3XOYLX6kP2W6K2OF54Et84jN154F31d6ukKOG92pSbcjWLRrbRhVGLTZeOtXqX46LoQSHhJo3jOo3ESrdBQbljIRKNyXUiKHNNSXhTdbZiUzyT/WJ23Zn3BBFy+2u4ZHc1eV2N7EkxAvbbqMRmZOSlbE0g/uajRgl6Iy8r1wpnaFTQ4ji+8XOEsuxYmdDWpJleXJ0+BPdoduL4p5Vavd5IOllmJfiWmSWu6d3pV4jteFWqaAGbLkdKSqtUXXUnN3DSvF8phfy/JfkxfOp9sVb2COz+hY/T0qkwwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMS0wOS0xNlQwOTozOTowMCswMjowMC9Oi90AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTEtMDktMTZUMDk6Mzk6MDArMDI6MDBeEzNhAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAABJRU5ErkJggg==");}
|
||||
.show{display:block;}
|
||||
#notifications{width:170px;height:20px;font-size:small;top:-19px;left:4px;position:absolute;}
|
||||
#nav-floater{position:fixed;top:20px;right:1%;padding:5px;background:#2e3436;color:transparent;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;z-index:100;width:300px;height:60px;}
|
||||
#nav-floater{position:fixed;top:20px;right:1%;padding:5px;background:#2e3436;color:transparent;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;z-index:100;width:270px;height:60px;}
|
||||
#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:#2e3436;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
|
||||
|
@ -111,7 +111,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
#search-text{border:1px solid #999999;margin:5px 0;}
|
||||
#mini-search-text{font-size:8pt;height:14px;width:10em;margin:5px;}
|
||||
#scrollup{position:fixed;right:5px;bottom:40px;z-index:100;}#scrollup a:hover{text-decoration:none;border:0;}
|
||||
#user-menu{-moz-box-shadow:5px 0 10px 0 #111111;-o-box-shadow:5px 0 10px 0 #111111;-webkit-box-shadow:5px 0 10px 0 #111111;-ms-box-shadow:5px 0 10px 0 #111111;box-shadow:5px 0 10px 0 #111111;display:block;width:75%;margin:3px 0 0 0;position:relative;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;background-color:#555753;background-image:url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q==");background-position:98% center;background-repeat:no-repeat;clear:both;top:4px;left:10px;padding:2px;}#user-menu>a{vertical-align:top;outline:0 none;}
|
||||
#user-menu{-moz-box-shadow:5px 0 10px 0 #111111;-o-box-shadow:5px 0 10px 0 #111111;-webkit-box-shadow:5px 0 10px 0 #111111;-ms-box-shadow:5px 0 10px 0 #111111;box-shadow:5px 0 10px 0 #111111;display:block;width:80%;margin:3px 0 0 0;position:relative;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;background-color:#555753;background-image:url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q==");background-position:98% center;background-repeat:no-repeat;clear:both;top:4px;left:10px;padding:2px;}#user-menu>a{vertical-align:top;outline:0 none;}
|
||||
#user-menu-label{font-size:small;padding:3px 20px 9px 5px;height:10px;}
|
||||
.nav-ajax-update,.nav-ajax-left{width:30px;height:19px;background:transparent url(light/notifications.png) 0 0 no-repeat;color:#111111;font-weight:bold;font-size:0.8em;padding-top:0.2em;text-align:center;float:left;margin:0 -1px 0 3px;display:block;visibility:hidden;}
|
||||
.nav-ajax-update.show,.nav-ajax-left.show{visibility:visible;}
|
||||
|
@ -133,7 +133,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
#sysmsg_info{position:fixed;bottom:0;-moz-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-o-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-webkit-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-ms-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;padding:10px;background-color:#fcaf3e;border:2px solid #f8911b;border-bottom:0;padding-bottom:50px;z-index:1000;}
|
||||
#sysmsg{position:fixed;bottom:0;-moz-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-o-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-webkit-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-ms-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;padding:10px;background-color:#fcaf3e;border:2px solid #f8911b;border-bottom:0;padding-bottom:50px;z-index:1000;}
|
||||
#sysmsg_info br,#sysmsg br{display:block;margin:2px 0px;border-top:1px solid #eeeeec;}
|
||||
#asidemain{float:left;font-size:small;margin:20px 0 20px 35px;width:25%;display:inline;}
|
||||
#asidemain{float:left;font-size:small;margin:1em;width:25%;display:inline;}
|
||||
#asideright,#asideleft{display:none;}
|
||||
.vcard .fn{font-size:1.5em;font-weight:bold;border-bottom:1px solid #284d7d;padding-bottom:3px;}
|
||||
.vcard #profile-photo-wrapper{margin:20px 0;background-color:#555753;padding:5px;width:175px;height:175px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:3px 3px 10px 0 #111111;-o-box-shadow:3px 3px 10px 0 #111111;-webkit-box-shadow:3px 3px 10px 0 #111111;-ms-box-shadow:3px 3px 10px 0 #111111;box-shadow:3px 3px 10px 0 #111111;}
|
||||
|
@ -187,7 +187,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
#jot-title-display{font-weight:bold;}
|
||||
.jothidden{display:none;}
|
||||
#jot-preview-content{background-color:#f2f2c3;color:#111111;border:1px solid #111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:5px 0 10px 0px #111111;-o-box-shadow:5px 0 10px 0px #111111;-webkit-box-shadow:5px 0 10px 0px #111111;-ms-box-shadow:5px 0 10px 0px #111111;box-shadow:5px 0 10px 0px #111111;padding:3px 3px 6px 10px;}#jot-preview-content .wall-item-outside-wrapper{border:0;-o-border-radius:0px 0px 0px 0px;-webkit-border-radius:0px 0px 0px 0px;-moz-border-radius:0px 0px 0px 0px;-ms-border-radius:0px 0px 0px 0px;border-radius:0px 0px 0px 0px;-moz-box-shadow:0 0 0 0 #111111;-o-box-shadow:0 0 0 0 #111111;-webkit-box-shadow:0 0 0 0 #111111;-ms-box-shadow:0 0 0 0 #111111;box-shadow:0 0 0 0 #111111;}
|
||||
#sectionmain{margin:20px;font-size:0.8em;min-width:475px;width:67%;float:left;display:inline;}
|
||||
#sectionmain{margin:1em;font-size:0.8em;min-width:475px;width:69%;float:left;display:inline;}
|
||||
.tabs{margin:0px;padding:0px;list-style:none;list-style-position:inside;margin:10px 0;}.tabs li{display:inline;font-size:smaller;}
|
||||
.tab{border:1px solid #284d7d;padding:4px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}.tab:active,.tab:hover{background:#f2f2c3;color:#111111;border:1px solid #284d7d;}
|
||||
.tab a{border:0;text-decoration:none;}
|
||||
|
@ -203,7 +203,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
[id^="tread-wrapper"],[class^="tread-wrapper"]{margin:1.2em 0 0 0;padding:0px;}
|
||||
.wall-item-photo-menu{display:none;}
|
||||
.wall-item-photo-menu-button{display:none;text-indent:-99999px;background:#555753 url(light/menu-user-pin.jpg) no-repeat 75px center;position:absolute;overflow:hidden;width:90px;height:20px;top:85px;left:0;-o-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;}
|
||||
.wall-item-info{float:left;width:8em;position:relative;}
|
||||
.wall-item-info{float:left;width:7em;position:relative;}
|
||||
.wall-item-photo-wrapper{width:80px;height:80px;position:relative;padding:5px;background-color:#555753;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
|
||||
[class^="wall-item-tools"] *{}[class^="wall-item-tools"] *>*{}
|
||||
.wall-item-tools{float:right;opacity:0.4;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;}.wall-item-tools:hover{opacity:1;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;}
|
||||
|
@ -223,14 +223,16 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
|
|||
.wall-item-arrowphoto-wrapper{position:absolute;left:35px;top:80px;z-index:10002;}
|
||||
.wall-item-photo-menu{min-width:92px;font-size:0.75em;border:2px solid #555753;border-top:0px;background:#555753;position:absolute;left:-2px;top:101px;display:none;z-index:10003;-o-border-radius:0 5px 5px 5px;-webkit-border-radius:0 5px 5px 5px;-moz-border-radius:0 5px 5px 5px;-ms-border-radius:0 5px 5px 5px;border-radius:0 5px 5px 5px;}.wall-item-photo-menu li a{white-space:nowrap;display:block;padding:5px 6px;color:#eeeeec;}.wall-item-photo-menu li a:hover{color:#555753;background:#eeeeec;}
|
||||
#item-delete-selected{overflow:auto;width:100%;}
|
||||
#connect-services-header,#connect-services,#extra-help-header,#extra-help,#postit-header,#postit{margin:5px 0 0 0;}
|
||||
#connect-services-header,#extra-help-header{margin:1.5em 0 0 0;}
|
||||
#connect-services,#extra-help{margin:0px;padding:0px;list-style:none;list-style-position:inside;margin:1em 0 0 0;}#connect-services li,#extra-help li{display:inline;}
|
||||
.ccollapse-wrapper{font-size:0.9em;margin-left:5em;}
|
||||
.hide-comments-outer{font-size:small;}
|
||||
.wall-item-outside-wrapper.comment{margin-left:5em;}.wall-item-outside-wrapper.comment .wall-item-photo{width:40px !important;height:40px !important;}
|
||||
.wall-item-outside-wrapper.comment{margin-left:5em;}.wall-item-outside-wrapper.comment .wall-item-info{width:5em;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo{width:40px !important;height:40px !important;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo-wrapper{width:40px;height:40px;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo-menu-button{width:50px;top:45px;background-position:35px center;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo-menu-button{width:4,5em;top:4em;background-position:35px center;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-author{margin-left:0.2em;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo-menu{min-width:50px;top:60px;}
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo-menu{min-width:4.5em;top:5.5em;}
|
||||
.comment-wwedit-wrapper{border:1px solid #111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:5px;}
|
||||
.comment-edit-wrapper{border-top:1px #aaa solid;}
|
||||
[class^="comment-edit-bb"]{margin:0px;padding:0px;list-style:none;list-style-position:inside;display:none;margin:-40px 0 5px 60px;width:75%;}[class^="comment-edit-bb"]>li{display:inline-block;margin:0 10px 0 0;visibility:none;}
|
||||
|
|
|
@ -316,7 +316,7 @@ h6 {
|
|||
[id$="-desc"] {
|
||||
color: @bg_colour;
|
||||
background: @dk_bg_colour;
|
||||
.borders(3px, ridge, @main_colour);
|
||||
.borders(2px, outset, @main_colour);
|
||||
.rounded_corners;
|
||||
// .box_shadow(3px, 3px, 5px);
|
||||
margin: 3px 10px 7px 0;
|
||||
|
@ -640,7 +640,7 @@ nav #nav-notifications-linkmenu {
|
|||
color: transparent;
|
||||
.rounded_corners;
|
||||
z-index: 100;
|
||||
.box(300px, 60px);
|
||||
.box(270px, 60px);
|
||||
}
|
||||
#nav-buttons {
|
||||
clear: both;
|
||||
|
@ -703,7 +703,7 @@ nav #nav-notifications-linkmenu {
|
|||
#user-menu {
|
||||
.box_shadow(5px, 0, 10px, 0);
|
||||
display: block;
|
||||
width: 75%;
|
||||
width: 80%;
|
||||
margin: 3px 0 0 0;
|
||||
position: relative;
|
||||
.rounded_corners;
|
||||
|
@ -873,7 +873,7 @@ nav #nav-notifications-linkmenu {
|
|||
#asidemain {
|
||||
float: left;
|
||||
font-size: small;
|
||||
margin: 20px 0 20px 35px;
|
||||
margin: 1em;
|
||||
width: 25%;
|
||||
display: inline;
|
||||
}
|
||||
|
@ -1230,10 +1230,10 @@ nav #nav-notifications-linkmenu {
|
|||
* section
|
||||
*/
|
||||
#sectionmain {
|
||||
margin: 20px;
|
||||
margin: 1em;
|
||||
font-size: 0.8em;
|
||||
min-width: 475px;
|
||||
width: 67%;
|
||||
width: 69%;
|
||||
float: left;
|
||||
display: inline;
|
||||
}
|
||||
|
@ -1349,7 +1349,7 @@ nav #nav-notifications-linkmenu {
|
|||
}
|
||||
.wall-item-info {
|
||||
float: left;
|
||||
width: 8em;
|
||||
width: 7em;
|
||||
position: relative;
|
||||
}
|
||||
.wall-item-photo-wrapper {
|
||||
|
@ -1502,12 +1502,16 @@ nav #nav-notifications-linkmenu {
|
|||
width: 100%;
|
||||
}
|
||||
#connect-services-header,
|
||||
#extra-help-header {
|
||||
margin: 1.5em 0 0 0;
|
||||
}
|
||||
#connect-services,
|
||||
#extra-help-header,
|
||||
#extra-help,
|
||||
#postit-header,
|
||||
#postit {
|
||||
margin: 5px 0 0 0;
|
||||
#extra-help {
|
||||
.list_reset;
|
||||
margin: 1em 0 0 0;
|
||||
li {
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -1523,6 +1527,9 @@ nav #nav-notifications-linkmenu {
|
|||
}
|
||||
.wall-item-outside-wrapper.comment {
|
||||
margin-left: 5em;
|
||||
.wall-item-info {
|
||||
width: 5em;
|
||||
}
|
||||
.wall-item-photo {
|
||||
width: 40px !important;
|
||||
height: 40px !important;
|
||||
|
@ -1531,16 +1538,16 @@ nav #nav-notifications-linkmenu {
|
|||
.box(40px, 40px);
|
||||
}
|
||||
.wall-item-photo-menu-button {
|
||||
width: 50px;
|
||||
top: 45px;
|
||||
width: 4,5em;
|
||||
top: 4em;
|
||||
background-position: 35px center;
|
||||
}
|
||||
.wall-item-author {
|
||||
margin-left: 0.2em;
|
||||
}
|
||||
.wall-item-photo-menu {
|
||||
min-width: 50px;
|
||||
top: 60px;
|
||||
min-width: 4.5em;
|
||||
top: 5.5em;
|
||||
}
|
||||
}
|
||||
.comment-wwedit-wrapper {
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
/*
|
||||
* Name: Dispy Light
|
||||
* Description: Dispy Light: Light, Spartan, Sleek, and Functional
|
||||
* Version: 1.2.1
|
||||
* Author: Simon <http://simon.kisikew.org/>
|
||||
* Maintainer: Simon <http://simon.kisikew.org/>
|
||||
* Screenshot: <a href="screenshot.jpg">Screenshot</a>
|
||||
|
@ -13,7 +12,6 @@ $a = get_app();
|
|||
$a->theme_info = array(
|
||||
'family' => 'dispy',
|
||||
'name' => 'light',
|
||||
'version' => '1.2.1'
|
||||
);
|
||||
|
||||
function dispy_light_init(&$a) {
|
||||
|
|
|
@ -13,238 +13,94 @@
|
|||
$colour = get_pconfig(local_user(), "dispy", "colour");
|
||||
}
|
||||
|
||||
if ($line_height === false) { $line_height = $site_line_height; }
|
||||
if ($line_height === false) { $line_height = "1.2"; }
|
||||
if ($dispy_font_size === false) { $dispy_font_size = $site_dispy_font_size; }
|
||||
if ($dispy_font_size === false) { $dispy_font_size = "12"; }
|
||||
if ($colour === false) { $colour = $site_colour; }
|
||||
if ($colour === false) { $colour = "light"; }
|
||||
if ($line_height === false) {
|
||||
$line_height = $site_line_height;
|
||||
}
|
||||
if ($line_height === false) {
|
||||
$line_height = "1.2";
|
||||
}
|
||||
if ($dispy_font_size === false) {
|
||||
$dispy_font_size = $site_dispy_font_size;
|
||||
}
|
||||
if ($dispy_font_size === false) {
|
||||
$dispy_font_size = "12";
|
||||
}
|
||||
if ($colour === false) {
|
||||
$colour = $site_colour;
|
||||
}
|
||||
if ($colour === false) {
|
||||
$colour = "light";
|
||||
}
|
||||
|
||||
if($colour == "light") {
|
||||
if (file_exists("$THEMEPATH/light/style.css")) {
|
||||
echo file_get_contents("$THEMEPATH/light/style.css");
|
||||
}
|
||||
if($dispy_font_size == "16") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
font-size: 16px;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
font-size: 16px;
|
||||
}";
|
||||
}
|
||||
if($dispy_font_size == "15") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
font-size: 15px;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
font-size: 15px;
|
||||
}";
|
||||
}
|
||||
if($dispy_font_size == "14") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
font-size: 14px;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
font-size: 14px;
|
||||
}";
|
||||
}
|
||||
if($dispy_font_size == "13.5") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
font-size: 13.5px;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
font-size: 13.5px;
|
||||
}";
|
||||
}
|
||||
if($dispy_font_size == "13") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
font-size: 13px;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
font-size: 13px;
|
||||
}";
|
||||
}
|
||||
if($dispy_font_size == "12.5") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
font-size: 12.5px;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
font-size: 12.5px;
|
||||
}";
|
||||
}
|
||||
if($dispy_font_size == "12") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
font-size: 12px;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
font-size: 12px;
|
||||
}";
|
||||
}
|
||||
if($line_height == "1.5") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
line-height: 1.5;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
line-height: 1.5;
|
||||
}";
|
||||
}
|
||||
if($line_height == "1.4") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
line-height: 1.4;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
line-height: 1.4;
|
||||
}";
|
||||
}
|
||||
if($line_height == "1.3") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
line-height: 1.3;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
line-height: 1.3;
|
||||
}";
|
||||
}
|
||||
if($line_height == "1.2") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
line-height: 1.2;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
line-height: 1.2;
|
||||
}";
|
||||
}
|
||||
if($line_height == "1.1") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
line-height: 1.1;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
line-height: 1.1;
|
||||
}";
|
||||
}
|
||||
}
|
||||
|
||||
if($colour == "dark") {
|
||||
if (file_exists("$THEMEPATH/dark/style.css")) {
|
||||
echo file_get_contents("$THEMEPATH/dark/style.css");
|
||||
}
|
||||
if($dispy_font_size == "16") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
font-size: 16px;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
|
||||
if($dispy_font_size == "16") {
|
||||
echo ".wall-item-content {
|
||||
font-size: 16px;
|
||||
}";
|
||||
}
|
||||
if($dispy_font_size == "15") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
font-size: 15px;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
echo ".wall-item-content {
|
||||
font-size: 15px;
|
||||
}";
|
||||
}
|
||||
if($dispy_font_size == "14") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
font-size: 14px;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
echo ".wall-item-content {
|
||||
font-size: 14px;
|
||||
}";
|
||||
}
|
||||
if($dispy_font_size == "13.5") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
font-size: 13.5px;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
echo ".wall-item-content {
|
||||
font-size: 13.5px;
|
||||
}";
|
||||
}
|
||||
if($dispy_font_size == "13") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
font-size: 13px;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
echo ".wall-item-content {
|
||||
font-size: 13px;
|
||||
}";
|
||||
}
|
||||
if($dispy_font_size == "12.5") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
font-size: 12.5px;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
echo ".wall-item-content {
|
||||
font-size: 12.5px;
|
||||
}";
|
||||
}
|
||||
if($dispy_font_size == "12") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
font-size: 12px;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
echo ".wall-item-content {
|
||||
font-size: 12px;
|
||||
}";
|
||||
}
|
||||
if($line_height == "1.5") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
line-height: 1.5;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
echo ".wall-item-content {
|
||||
line-height: 1.5;
|
||||
}";
|
||||
}
|
||||
if($line_height == "1.4"){
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
line-height: 1.4;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
if($line_height == "1.4") {
|
||||
echo ".wall-item-content {
|
||||
line-height: 1.4;
|
||||
}";
|
||||
}
|
||||
if($line_height == "1.3") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
line-height: 1.3;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
echo ".wall-item-content {
|
||||
line-height: 1.3;
|
||||
}";
|
||||
}
|
||||
if($line_height == "1.2") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
line-height: 1.2;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
echo ".wall-item-content {
|
||||
line-height: 1.2;
|
||||
}";
|
||||
}
|
||||
if($line_height == "1.1") {
|
||||
echo "
|
||||
.wall-item-container .wall-item-content {
|
||||
line-height: 1.1;
|
||||
}
|
||||
.wall-item-photo-container .wall-item-content {
|
||||
echo ".wall-item-content {
|
||||
line-height: 1.1;
|
||||
}";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
$a = get_app();
|
||||
$a->theme_info = array(
|
||||
'family' => 'dispy',
|
||||
'version' => '1.2'
|
||||
'version' => '1.2.2'
|
||||
);
|
||||
|
||||
function dispy_init(&$a) {
|
||||
|
|
|
@ -80,6 +80,7 @@ blockquote {
|
|||
.heart {
|
||||
color: #FF0000;
|
||||
font-size: 100%;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
|
||||
|
@ -338,6 +339,15 @@ div.wall-item-content-wrapper.shiny {
|
|||
font-weight: bold;
|
||||
}
|
||||
|
||||
.settings-widget .selected {
|
||||
padding: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
border: 1px solid #CCCCCC;
|
||||
background: #F8F8F8;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.fakelink:hover {
|
||||
color: #3465a4;
|
||||
text-decoration: underline;
|
||||
|
@ -707,7 +717,17 @@ input#dfrn-url {
|
|||
#settings-community {
|
||||
float: left;
|
||||
}
|
||||
|
||||
#settings-notifications label {
|
||||
margin-left: 20px;
|
||||
}
|
||||
#settings-notify-desc, #settings-activity-desc {
|
||||
font-weight: bold;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
#settings-pagetype-desc {
|
||||
color: #666666;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
#profile-in-dir-yes-label,
|
||||
#profile-in-dir-no-label,
|
||||
|
@ -809,8 +829,15 @@ input#dfrn-url {
|
|||
clear: both;
|
||||
}
|
||||
|
||||
.settings-widget ul {
|
||||
list-style-type: none;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
|
||||
.settings-widget li {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
|
||||
#gender-select, #marital-select, #sexual-select {
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
center: '',
|
||||
right: ''
|
||||
},
|
||||
timeFormat: 'H(:mm)',
|
||||
timeFormat: 'HH(:mm)',
|
||||
defaultView: 'basicWeek',
|
||||
height: 50,
|
||||
eventClick: function(calEvent, jsEvent, view) {
|
||||
|
|
|
@ -43,7 +43,7 @@ nav #site-location {
|
|||
#profile-jot-text_parent, .mceLayout {
|
||||
border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
box-shadow: 3px 3px 10px 0 #000000;
|
||||
box-shadow: 4px 4px 3px 0 #444444;
|
||||
}
|
||||
|
||||
#profile-jot-text:hover {
|
||||
|
@ -66,24 +66,34 @@ nav #site-location {
|
|||
.wall-item-photo, .photo, .contact-block-img, .my-comment-photo {
|
||||
border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
box-shadow: 3px 3px 10px 0 #000000;
|
||||
box-shadow: 4px 4px 3px 0 #444444;
|
||||
}
|
||||
|
||||
#sidebar-page-list img {
|
||||
border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
box-shadow: 3px 3px 10px -2px #000000;
|
||||
box-shadow: 4px 4px 3px 0 #444444;
|
||||
}
|
||||
|
||||
.contact-entry-photo img, .profile-match-photo img, #photo-photo img, .directory-photo-img, .photo-album-photo, .photo-top-photo, .fc, .profile-jot-text, .group-selected, .nets-selected, .fileas-selected, #profile-jot-submit, .categories-selected {
|
||||
border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
box-shadow: 3px 3px 10px 0 #000000;
|
||||
box-shadow: 4px 4px 3px 0 #444444;
|
||||
}
|
||||
.settings-widget .selected {
|
||||
border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
box-shadow: 4px 4px 3px 0 #444444;
|
||||
}
|
||||
|
||||
.photo {
|
||||
border: 1px solid #AAAAAA;
|
||||
}
|
||||
|
||||
.photo-top-photo, .photo-album-photo {
|
||||
padding: 10px;
|
||||
max-width: 300px;
|
||||
border: 1px solid #888888;
|
||||
}
|
||||
|
||||
.rotleft1 {
|
||||
|
|
Loading…
Reference in a new issue