Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
f7fbac2e2b
2
boot.php
2
boot.php
|
@ -12,7 +12,7 @@ require_once('library/Mobile_Detect/Mobile_Detect.php');
|
|||
require_once('include/features.php');
|
||||
|
||||
define ( 'FRIENDICA_PLATFORM', 'Friendica');
|
||||
define ( 'FRIENDICA_VERSION', '3.1.1627' );
|
||||
define ( 'FRIENDICA_VERSION', '3.1.1644' );
|
||||
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
|
||||
define ( 'DB_UPDATE_VERSION', 1163 );
|
||||
define ( 'EOL', "<br />\r\n" );
|
||||
|
|
|
@ -643,7 +643,7 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
|
|||
|
||||
// fix any escaped ampersands that may have been converted into links
|
||||
$Text = preg_replace("/\<([^>]*?)(src|href)=(.*?)\&\;(.*?)\>/ism",'<$1$2=$3&$4>',$Text);
|
||||
$Text = preg_replace("/\<([^>]*?)(src|href)=\"[^hfm](.*?)\>/ism",'<$1$2="">',$Text);
|
||||
$Text = preg_replace("/\<([^>]*?)(src|href)=\"(?!http|ftp|mailto|cid)(.*?)\>/ism",'<$1$2="">',$Text);
|
||||
|
||||
if($saved_image)
|
||||
$Text = bb_replace_images($Text, $saved_image);
|
||||
|
|
|
@ -19,10 +19,20 @@ function cronhooks_run(&$argv, &$argc){
|
|||
|
||||
require_once('include/session.php');
|
||||
require_once('include/datetime.php');
|
||||
require_once('include/pidfile.php');
|
||||
|
||||
load_config('config');
|
||||
load_config('system');
|
||||
|
||||
$lockpath = get_config('system','lockpath');
|
||||
if ($lockpath != '') {
|
||||
$pidfile = new pidfile($lockpath, 'cron.lck');
|
||||
if($pidfile->is_already_running()) {
|
||||
logger("cronhooks: Already running");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
$a->set_baseurl(get_config('system','url'));
|
||||
|
||||
load_hooks();
|
||||
|
|
|
@ -223,4 +223,4 @@ function html2plain($html, $wraplength = 75, $compact = false)
|
|||
|
||||
return(trim($message));
|
||||
}
|
||||
?>
|
||||
|
||||
|
|
|
@ -1149,7 +1149,6 @@ function item_store($arr,$force_parent = false) {
|
|||
$arr['deny_gid'] = $deny_gid;
|
||||
$arr['private'] = $private;
|
||||
$arr['deleted'] = $parent_deleted;
|
||||
call_hooks('post_remote_end',$arr);
|
||||
|
||||
// update the commented timestamp on the parent
|
||||
|
||||
|
@ -1195,6 +1194,14 @@ function item_store($arr,$force_parent = false) {
|
|||
logger('item_store: put item '.$current_post.' into cachefile '.$cachefile);
|
||||
}
|
||||
|
||||
$r = q('SELECT * FROM `item` WHERE id = %d', intval($current_post));
|
||||
if (count($r) == 1) {
|
||||
call_hooks('post_remote_end', $r[0]);
|
||||
}
|
||||
else {
|
||||
logger('item_store: new item not found in DB, id ' . $current_post);
|
||||
}
|
||||
|
||||
return $current_post;
|
||||
}
|
||||
|
||||
|
@ -1582,6 +1589,26 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
This function returns true if $update has an edited timestamp newer
|
||||
than $existing, i.e. $update contains new data which should override
|
||||
what's already there. If there is no timestamp yet, the update is
|
||||
assumed to be newer. If the update has no timestamp, the existing
|
||||
item is assumed to be up-to-date. If the timestamps are equal it
|
||||
assumes the update has been seen before and should be ignored.
|
||||
*/
|
||||
function edited_timestamp_is_newer($existing, $update) {
|
||||
if (!x($existing,'edited') || !$existing['edited']) {
|
||||
return true;
|
||||
}
|
||||
if (!x($update,'edited') || !$update['edited']) {
|
||||
return false;
|
||||
}
|
||||
$existing_edited = datetime_convert('UTC', 'UTC', $existing['edited']);
|
||||
$update_edited = datetime_convert('UTC', 'UTC', $update['edited']);
|
||||
return (strcmp($existing_edited, $update_edited) < 0);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* consume_feed - process atom feed and update anything/everything we might need to update
|
||||
|
@ -1995,7 +2022,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
|
|||
// Update content if 'updated' changes
|
||||
|
||||
if(count($r)) {
|
||||
if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) {
|
||||
if (edited_timestamp_is_newer($r[0], $datarray)) {
|
||||
|
||||
// do not accept (ignore) an earlier edit than one we currently have.
|
||||
if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])
|
||||
|
@ -2144,7 +2171,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
|
|||
// Update content if 'updated' changes
|
||||
|
||||
if(count($r)) {
|
||||
if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) {
|
||||
if (edited_timestamp_is_newer($r[0], $datarray)) {
|
||||
|
||||
// do not accept (ignore) an earlier edit than one we currently have.
|
||||
if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])
|
||||
|
@ -2898,7 +2925,7 @@ function local_delivery($importer,$data) {
|
|||
|
||||
if(count($r)) {
|
||||
$iid = $r[0]['id'];
|
||||
if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) {
|
||||
if (edited_timestamp_is_newer($r[0], $datarray)) {
|
||||
|
||||
// do not accept (ignore) an earlier edit than one we currently have.
|
||||
if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])
|
||||
|
@ -3073,7 +3100,7 @@ function local_delivery($importer,$data) {
|
|||
// Update content if 'updated' changes
|
||||
|
||||
if(count($r)) {
|
||||
if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) {
|
||||
if (edited_timestamp_is_newer($r[0], $datarray)) {
|
||||
|
||||
// do not accept (ignore) an earlier edit than one we currently have.
|
||||
if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])
|
||||
|
@ -3249,7 +3276,7 @@ function local_delivery($importer,$data) {
|
|||
// Update content if 'updated' changes
|
||||
|
||||
if(count($r)) {
|
||||
if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) {
|
||||
if (edited_timestamp_is_newer($r[0], $datarray)) {
|
||||
|
||||
// do not accept (ignore) an earlier edit than one we currently have.
|
||||
if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])
|
||||
|
|
|
@ -88,13 +88,13 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_
|
|||
if (($new_location_info["path"] == "") AND ($new_location_info["host"] != ""))
|
||||
$newurl = $new_location_info["scheme"]."://".$new_location_info["host"].$old_location_info["path"];
|
||||
|
||||
//$matches = array();
|
||||
//preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches);
|
||||
//$newurl = trim(array_pop($matches));
|
||||
$matches = array();
|
||||
if (preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches)) {
|
||||
$newurl = trim(array_pop($matches));
|
||||
}
|
||||
if(strpos($newurl,'/') === 0)
|
||||
$newurl = $url . $newurl;
|
||||
$url_parsed = @parse_url($newurl);
|
||||
if (isset($url_parsed)) {
|
||||
if (filter_var($newurl, FILTER_VALIDATE_URL)) {
|
||||
$redirects++;
|
||||
return fetch_url($newurl,$binary,$redirects,$timeout);
|
||||
}
|
||||
|
@ -188,8 +188,7 @@ function post_url($url,$params, $headers = null, &$redirects = 0, $timeout = 0)
|
|||
$newurl = trim(array_pop($matches));
|
||||
if(strpos($newurl,'/') === 0)
|
||||
$newurl = $url . $newurl;
|
||||
$url_parsed = @parse_url($newurl);
|
||||
if (isset($url_parsed)) {
|
||||
if (filter_var($newurl, FILTER_VALIDATE_URL)) {
|
||||
$redirects++;
|
||||
return fetch_url($newurl,false,$redirects,$timeout);
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ function authenticate_success($user_record, $login_initial = false, $interactive
|
|||
$master_record = $r[0];
|
||||
}
|
||||
|
||||
$r = q("SELECT `uid`,`username`,`nickname` FROM `user` WHERE `password` = '%s' AND `email` = '%s'",
|
||||
$r = q("SELECT `uid`,`username`,`nickname` FROM `user` WHERE `password` = '%s' AND `email` = '%s' AND `account_removed` = 0 ",
|
||||
dbesc($master_record['password']),
|
||||
dbesc($master_record['email'])
|
||||
);
|
||||
|
@ -56,8 +56,8 @@ function authenticate_success($user_record, $login_initial = false, $interactive
|
|||
$a->identities = array();
|
||||
|
||||
$r = q("select `user`.`uid`, `user`.`username`, `user`.`nickname`
|
||||
from manage left join user on manage.mid = user.uid
|
||||
where `manage`.`uid` = %d",
|
||||
from manage left join user on manage.mid = user.uid where `user`.`account_removed` = 0
|
||||
and `manage`.`uid` = %d",
|
||||
intval($master_record['uid'])
|
||||
);
|
||||
if($r && count($r))
|
||||
|
|
461
include/text.php
461
include/text.php
|
@ -12,9 +12,18 @@ require_once("include/template_processor.php");
|
|||
require_once("include/friendica_smarty.php");
|
||||
|
||||
if(! function_exists('replace_macros')) {
|
||||
/**
|
||||
* This is our template processor
|
||||
*
|
||||
* @global Template $t
|
||||
* @param string|FriendicaSmarty $s the string requiring macro substitution,
|
||||
* or an instance of FriendicaSmarty
|
||||
* @param array $r key value pairs (search => replace)
|
||||
* @return string substituted string
|
||||
*/
|
||||
function replace_macros($s,$r) {
|
||||
global $t;
|
||||
|
||||
|
||||
$stamp1 = microtime(true);
|
||||
|
||||
$a = get_app();
|
||||
|
@ -59,6 +68,7 @@ function random_string($size = 64,$type = RANDOM_STRING_HEX) {
|
|||
return(substr($s,0,$size));
|
||||
}}
|
||||
|
||||
if(! function_exists('notags')) {
|
||||
/**
|
||||
* This is our primary input filter.
|
||||
*
|
||||
|
@ -73,9 +83,9 @@ function random_string($size = 64,$type = RANDOM_STRING_HEX) {
|
|||
* They will be replaced with safer brackets. This may be filtered further
|
||||
* if these are not allowed either.
|
||||
*
|
||||
* @param string $string Input string
|
||||
* @return string Filtered string
|
||||
*/
|
||||
|
||||
if(! function_exists('notags')) {
|
||||
function notags($string) {
|
||||
|
||||
return(str_replace(array("<",">"), array('[',']'), $string));
|
||||
|
@ -84,10 +94,15 @@ function notags($string) {
|
|||
// return(str_replace(array("<",">","\xBA","\xBC","\xBE"), array('[',']','','',''), $string));
|
||||
}}
|
||||
|
||||
// use this on "body" or "content" input where angle chars shouldn't be removed,
|
||||
// and allow them to be safely displayed.
|
||||
|
||||
|
||||
if(! function_exists('escape_tags')) {
|
||||
/**
|
||||
* use this on "body" or "content" input where angle chars shouldn't be removed,
|
||||
* and allow them to be safely displayed.
|
||||
* @param string $string
|
||||
* @return string
|
||||
*/
|
||||
function escape_tags($string) {
|
||||
|
||||
return(htmlspecialchars($string, ENT_COMPAT, 'UTF-8', false));
|
||||
|
@ -98,6 +113,12 @@ function escape_tags($string) {
|
|||
// used to generate initial passwords
|
||||
|
||||
if(! function_exists('autoname')) {
|
||||
/**
|
||||
* generate a string that's random, but usually pronounceable.
|
||||
* used to generate initial passwords
|
||||
* @param int $len
|
||||
* @return string
|
||||
*/
|
||||
function autoname($len) {
|
||||
|
||||
if($len <= 0)
|
||||
|
@ -173,6 +194,11 @@ function autoname($len) {
|
|||
// returns escaped text.
|
||||
|
||||
if(! function_exists('xmlify')) {
|
||||
/**
|
||||
* escape text ($str) for XML transport
|
||||
* @param string $str
|
||||
* @return string Escaped text.
|
||||
*/
|
||||
function xmlify($str) {
|
||||
/* $buffer = '';
|
||||
|
||||
|
@ -218,10 +244,12 @@ function xmlify($str) {
|
|||
return($buffer);
|
||||
}}
|
||||
|
||||
// undo an xmlify
|
||||
// pass xml escaped text ($s), returns unescaped text
|
||||
|
||||
if(! function_exists('unxmlify')) {
|
||||
/**
|
||||
* undo an xmlify
|
||||
* @param string $s xml escaped text
|
||||
* @return string unescaped text
|
||||
*/
|
||||
function unxmlify($s) {
|
||||
// $ret = str_replace('&','&', $s);
|
||||
// $ret = str_replace(array('<','>','"','''),array('<','>','"',"'"),$ret);
|
||||
|
@ -233,9 +261,12 @@ function unxmlify($s) {
|
|||
return $ret;
|
||||
}}
|
||||
|
||||
// convenience wrapper, reverse the operation "bin2hex"
|
||||
|
||||
if(! function_exists('hex2bin')) {
|
||||
/**
|
||||
* convenience wrapper, reverse the operation "bin2hex"
|
||||
* @param string $s
|
||||
* @return number
|
||||
*/
|
||||
function hex2bin($s) {
|
||||
if(! (is_string($s) && strlen($s)))
|
||||
return '';
|
||||
|
@ -247,17 +278,23 @@ function hex2bin($s) {
|
|||
return(pack("H*",$s));
|
||||
}}
|
||||
|
||||
// Automatic pagination.
|
||||
// To use, get the count of total items.
|
||||
// Then call $a->set_pager_total($number_items);
|
||||
// Optionally call $a->set_pager_itemspage($n) to the number of items to display on each page
|
||||
// Then call paginate($a) after the end of the display loop to insert the pager block on the page
|
||||
// (assuming there are enough items to paginate).
|
||||
// When using with SQL, the setting LIMIT %d, %d => $a->pager['start'],$a->pager['itemspage']
|
||||
// will limit the results to the correct items for the current page.
|
||||
// The actual page handling is then accomplished at the application layer.
|
||||
|
||||
if(! function_exists('paginate')) {
|
||||
/**
|
||||
* Automatic pagination.
|
||||
*
|
||||
* To use, get the count of total items.
|
||||
* Then call $a->set_pager_total($number_items);
|
||||
* Optionally call $a->set_pager_itemspage($n) to the number of items to display on each page
|
||||
* Then call paginate($a) after the end of the display loop to insert the pager block on the page
|
||||
* (assuming there are enough items to paginate).
|
||||
* When using with SQL, the setting LIMIT %d, %d => $a->pager['start'],$a->pager['itemspage']
|
||||
* will limit the results to the correct items for the current page.
|
||||
* The actual page handling is then accomplished at the application layer.
|
||||
*
|
||||
* @param App $a App instance
|
||||
* @return string html for pagination #FIXME remove html
|
||||
*/
|
||||
function paginate(&$a) {
|
||||
$o = '';
|
||||
$stripped = preg_replace('/(&page=[0-9]*)/','',$a->query_string);
|
||||
|
@ -314,6 +351,12 @@ function paginate(&$a) {
|
|||
}}
|
||||
|
||||
if(! function_exists('alt_pager')) {
|
||||
/**
|
||||
* Alternative pager
|
||||
* @param App $a App instance
|
||||
* @param int $i
|
||||
* @return string html for pagination #FIXME remove html
|
||||
*/
|
||||
function alt_pager(&$a, $i) {
|
||||
$o = '';
|
||||
$stripped = preg_replace('/(&page=[0-9]*)/','',$a->query_string);
|
||||
|
@ -338,9 +381,14 @@ function alt_pager(&$a, $i) {
|
|||
return $o;
|
||||
}}
|
||||
|
||||
// Turn user/group ACLs stored as angle bracketed text into arrays
|
||||
|
||||
if(! function_exists('expand_acl')) {
|
||||
/**
|
||||
* Turn user/group ACLs stored as angle bracketed text into arrays
|
||||
*
|
||||
* @param string $s
|
||||
* @return array
|
||||
*/
|
||||
function expand_acl($s) {
|
||||
// turn string array of angle-bracketed elements into numeric array
|
||||
// e.g. "<1><2><3>" => array(1,2,3);
|
||||
|
@ -357,9 +405,11 @@ function expand_acl($s) {
|
|||
return $ret;
|
||||
}}
|
||||
|
||||
// Used to wrap ACL elements in angle brackets for storage
|
||||
|
||||
if(! function_exists('sanitise_acl')) {
|
||||
/**
|
||||
* Wrap ACL elements in angle brackets for storage
|
||||
* @param string $item
|
||||
*/
|
||||
function sanitise_acl(&$item) {
|
||||
if(intval($item))
|
||||
$item = '<' . intval(notags(trim($item))) . '>';
|
||||
|
@ -368,14 +418,18 @@ function sanitise_acl(&$item) {
|
|||
}}
|
||||
|
||||
|
||||
// Convert an ACL array to a storable string
|
||||
// Normally ACL permissions will be an array.
|
||||
// We'll also allow a comma-separated string.
|
||||
|
||||
if(! function_exists('perms2str')) {
|
||||
/**
|
||||
* Convert an ACL array to a storable string
|
||||
*
|
||||
* Normally ACL permissions will be an array.
|
||||
* We'll also allow a comma-separated string.
|
||||
*
|
||||
* @param string|array $p
|
||||
* @return string
|
||||
*/
|
||||
function perms2str($p) {
|
||||
$ret = '';
|
||||
|
||||
if(is_array($p))
|
||||
$tmp = $p;
|
||||
else
|
||||
|
@ -388,10 +442,16 @@ function perms2str($p) {
|
|||
return $ret;
|
||||
}}
|
||||
|
||||
// generate a guaranteed unique (for this domain) item ID for ATOM
|
||||
// safe from birthday paradox
|
||||
|
||||
if(! function_exists('item_new_uri')) {
|
||||
/**
|
||||
* generate a guaranteed unique (for this domain) item ID for ATOM
|
||||
* safe from birthday paradox
|
||||
*
|
||||
* @param string $hostname
|
||||
* @param int $uid
|
||||
* @return string
|
||||
*/
|
||||
function item_new_uri($hostname,$uid) {
|
||||
|
||||
do {
|
||||
|
@ -412,6 +472,12 @@ function item_new_uri($hostname,$uid) {
|
|||
// safe from birthday paradox
|
||||
|
||||
if(! function_exists('photo_new_resource')) {
|
||||
/**
|
||||
* Generate a guaranteed unique photo ID.
|
||||
* safe from birthday paradox
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function photo_new_resource() {
|
||||
|
||||
do {
|
||||
|
@ -427,12 +493,17 @@ function photo_new_resource() {
|
|||
}}
|
||||
|
||||
|
||||
// wrapper to load a view template, checking for alternate
|
||||
// languages before falling back to the default
|
||||
|
||||
// obsolete, deprecated.
|
||||
|
||||
if(! function_exists('load_view_file')) {
|
||||
/**
|
||||
* @deprecated
|
||||
* wrapper to load a view template, checking for alternate
|
||||
* languages before falling back to the default
|
||||
*
|
||||
* @global string $lang
|
||||
* @global App $a
|
||||
* @param string $s view name
|
||||
* @return string
|
||||
*/
|
||||
function load_view_file($s) {
|
||||
global $lang, $a;
|
||||
if(! isset($lang))
|
||||
|
@ -462,6 +533,14 @@ function load_view_file($s) {
|
|||
}}
|
||||
|
||||
if(! function_exists('get_intltext_template')) {
|
||||
/**
|
||||
* load a view template, checking for alternate
|
||||
* languages before falling back to the default
|
||||
*
|
||||
* @global string $lang
|
||||
* @param string $s view path
|
||||
* @return string
|
||||
*/
|
||||
function get_intltext_template($s) {
|
||||
global $lang;
|
||||
|
||||
|
@ -492,6 +571,13 @@ function get_intltext_template($s) {
|
|||
}}
|
||||
|
||||
if(! function_exists('get_markup_template')) {
|
||||
/**
|
||||
* load template $s
|
||||
*
|
||||
* @param string $s
|
||||
* @param string $root
|
||||
* @return string
|
||||
*/
|
||||
function get_markup_template($s, $root = '') {
|
||||
$stamp1 = microtime(true);
|
||||
|
||||
|
@ -519,6 +605,13 @@ function get_markup_template($s, $root = '') {
|
|||
}}
|
||||
|
||||
if(! function_exists("get_template_file")) {
|
||||
/**
|
||||
*
|
||||
* @param App $a
|
||||
* @param string $filename
|
||||
* @param string $root
|
||||
* @return string
|
||||
*/
|
||||
function get_template_file($a, $filename, $root = '') {
|
||||
$theme = current_theme();
|
||||
|
||||
|
@ -540,16 +633,23 @@ function get_template_file($a, $filename, $root = '') {
|
|||
|
||||
|
||||
|
||||
// for html,xml parsing - let's say you've got
|
||||
// an attribute foobar="class1 class2 class3"
|
||||
// and you want to find out if it contains 'class3'.
|
||||
// you can't use a normal sub string search because you
|
||||
// might match 'notclass3' and a regex to do the job is
|
||||
// possible but a bit complicated.
|
||||
// pass the attribute string as $attr and the attribute you
|
||||
// are looking for as $s - returns true if found, otherwise false
|
||||
|
||||
|
||||
if(! function_exists('attribute_contains')) {
|
||||
/**
|
||||
* for html,xml parsing - let's say you've got
|
||||
* an attribute foobar="class1 class2 class3"
|
||||
* and you want to find out if it contains 'class3'.
|
||||
* you can't use a normal sub string search because you
|
||||
* might match 'notclass3' and a regex to do the job is
|
||||
* possible but a bit complicated.
|
||||
* pass the attribute string as $attr and the attribute you
|
||||
* are looking for as $s - returns true if found, otherwise false
|
||||
*
|
||||
* @param string $attr attribute value
|
||||
* @param string $s string to search
|
||||
* @return boolean True if found, False otherwise
|
||||
*/
|
||||
function attribute_contains($attr,$s) {
|
||||
$a = explode(' ', $attr);
|
||||
if(count($a) && in_array($s,$a))
|
||||
|
@ -558,6 +658,19 @@ function attribute_contains($attr,$s) {
|
|||
}}
|
||||
|
||||
if(! function_exists('logger')) {
|
||||
/**
|
||||
* log levels:
|
||||
* LOGGER_NORMAL (default)
|
||||
* LOGGER_TRACE
|
||||
* LOGGER_DEBUG
|
||||
* LOGGER_DATA
|
||||
* LOGGER_ALL
|
||||
*
|
||||
* @global App $a
|
||||
* @global dba $db
|
||||
* @param string $msg
|
||||
* @param int $level
|
||||
*/
|
||||
function logger($msg,$level = 0) {
|
||||
// turn off logger in install mode
|
||||
global $a;
|
||||
|
@ -580,6 +693,13 @@ function logger($msg,$level = 0) {
|
|||
|
||||
|
||||
if(! function_exists('activity_match')) {
|
||||
/**
|
||||
* Compare activity uri. Knows about activity namespace.
|
||||
*
|
||||
* @param string $haystack
|
||||
* @param string $needle
|
||||
* @return boolean
|
||||
*/
|
||||
function activity_match($haystack,$needle) {
|
||||
if(($haystack === $needle) || ((basename($needle) === $haystack) && strstr($needle,NAMESPACE_ACTIVITY_SCHEMA)))
|
||||
return true;
|
||||
|
@ -587,15 +707,18 @@ function activity_match($haystack,$needle) {
|
|||
}}
|
||||
|
||||
|
||||
// Pull out all #hashtags and @person tags from $s;
|
||||
// We also get @person@domain.com - which would make
|
||||
// the regex quite complicated as tags can also
|
||||
// end a sentence. So we'll run through our results
|
||||
// and strip the period from any tags which end with one.
|
||||
// Returns array of tags found, or empty array.
|
||||
|
||||
|
||||
if(! function_exists('get_tags')) {
|
||||
/**
|
||||
* Pull out all #hashtags and @person tags from $s;
|
||||
* We also get @person@domain.com - which would make
|
||||
* the regex quite complicated as tags can also
|
||||
* end a sentence. So we'll run through our results
|
||||
* and strip the period from any tags which end with one.
|
||||
* Returns array of tags found, or empty array.
|
||||
*
|
||||
* @param string $s
|
||||
* @return array
|
||||
*/
|
||||
function get_tags($s) {
|
||||
$ret = array();
|
||||
|
||||
|
@ -648,9 +771,15 @@ function get_tags($s) {
|
|||
}}
|
||||
|
||||
|
||||
// quick and dirty quoted_printable encoding
|
||||
//
|
||||
|
||||
if(! function_exists('qp')) {
|
||||
/**
|
||||
* quick and dirty quoted_printable encoding
|
||||
*
|
||||
* @param string $s
|
||||
* @return string
|
||||
*/
|
||||
function qp($s) {
|
||||
return str_replace ("%","=",rawurlencode($s));
|
||||
}}
|
||||
|
@ -658,6 +787,10 @@ return str_replace ("%","=",rawurlencode($s));
|
|||
|
||||
|
||||
if(! function_exists('get_mentions')) {
|
||||
/**
|
||||
* @param array $item
|
||||
* @return string html for mentions #FIXME: remove html
|
||||
*/
|
||||
function get_mentions($item) {
|
||||
$o = '';
|
||||
if(! strlen($item['tag']))
|
||||
|
@ -675,6 +808,13 @@ function get_mentions($item) {
|
|||
}}
|
||||
|
||||
if(! function_exists('contact_block')) {
|
||||
/**
|
||||
* Get html for contact block.
|
||||
*
|
||||
* @template contact_block.tpl
|
||||
* @hook contact_block_end (contacts=>array, output=>string)
|
||||
* @return string
|
||||
*/
|
||||
function contact_block() {
|
||||
$o = '';
|
||||
$a = get_app();
|
||||
|
@ -727,6 +867,14 @@ function contact_block() {
|
|||
}}
|
||||
|
||||
if(! function_exists('micropro')) {
|
||||
/**
|
||||
*
|
||||
* @param array $contact
|
||||
* @param boolean $redirect
|
||||
* @param string $class
|
||||
* @param boolean $textmode
|
||||
* @return string #FIXME: remove html
|
||||
*/
|
||||
function micropro($contact, $redirect = false, $class = '', $textmode = false) {
|
||||
|
||||
if($class)
|
||||
|
@ -771,6 +919,15 @@ function micropro($contact, $redirect = false, $class = '', $textmode = false) {
|
|||
|
||||
|
||||
if(! function_exists('search')) {
|
||||
/**
|
||||
* search box
|
||||
*
|
||||
* @param string $s search query
|
||||
* @param string $id html id
|
||||
* @param string $url search url
|
||||
* @param boolean $save show save search button
|
||||
* @return string html for search box #FIXME: remove html
|
||||
*/
|
||||
function search($s,$id='search-box',$url='/search',$save = false) {
|
||||
$a = get_app();
|
||||
$o = '<div id="' . $id . '">';
|
||||
|
@ -784,6 +941,12 @@ function search($s,$id='search-box',$url='/search',$save = false) {
|
|||
}}
|
||||
|
||||
if(! function_exists('valid_email')) {
|
||||
/**
|
||||
* Check if $x is a valid email string
|
||||
*
|
||||
* @param string $x
|
||||
* @return boolean
|
||||
*/
|
||||
function valid_email($x){
|
||||
|
||||
if(get_config('system','disable_email_validation'))
|
||||
|
@ -795,21 +958,26 @@ function valid_email($x){
|
|||
}}
|
||||
|
||||
|
||||
if(! function_exists('linkify')) {
|
||||
/**
|
||||
*
|
||||
* Function: linkify
|
||||
*
|
||||
* Replace naked text hyperlink with HTML formatted hyperlink
|
||||
*
|
||||
* @param string $s
|
||||
*/
|
||||
|
||||
if(! function_exists('linkify')) {
|
||||
function linkify($s) {
|
||||
$s = preg_replace("/(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\'\%\$\!\+]*)/", ' <a href="$1" target="external-link">$1</a>', $s);
|
||||
$s = preg_replace("/\<(.*?)(src|href)=(.*?)\&\;(.*?)\>/ism",'<$1$2=$3&$4>',$s);
|
||||
return($s);
|
||||
}}
|
||||
|
||||
|
||||
/**
|
||||
* Load poke verbs
|
||||
*
|
||||
* @return array index is present tense verb
|
||||
value is array containing past tense verb, translation of present, translation of past
|
||||
* @hook poke_verbs pokes array
|
||||
*/
|
||||
function get_poke_verbs() {
|
||||
|
||||
// index is present tense verb
|
||||
|
@ -827,11 +995,13 @@ function get_poke_verbs() {
|
|||
return $arr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load moods
|
||||
* @return array index is mood, value is translated mood
|
||||
* @hook mood_verbs moods array
|
||||
*/
|
||||
function get_mood_verbs() {
|
||||
|
||||
// index is present tense verb
|
||||
// value is array containing past tense verb, translation of present, translation of past
|
||||
|
||||
$arr = array(
|
||||
'happy' => t('happy'),
|
||||
'sad' => t('sad'),
|
||||
|
@ -860,17 +1030,11 @@ function get_mood_verbs() {
|
|||
}
|
||||
|
||||
|
||||
|
||||
if(! function_exists('smilies')) {
|
||||
/**
|
||||
*
|
||||
* Function: smilies
|
||||
*
|
||||
* Description:
|
||||
* Replaces text emoticons with graphical images
|
||||
*
|
||||
* @Parameter: string $s
|
||||
*
|
||||
* Returns string
|
||||
*
|
||||
* It is expected that this function will be called using HTML text.
|
||||
* We will escape text between HTML pre and code blocks from being
|
||||
* processed.
|
||||
|
@ -879,11 +1043,12 @@ function get_mood_verbs() {
|
|||
* function from being executed by the prepare_text() routine when preparing
|
||||
* bbcode source for HTML display
|
||||
*
|
||||
* @param string $s
|
||||
* @param boolean $sample
|
||||
* @return string
|
||||
* @hook smilie ('texts' => smilies texts array, 'icons' => smilies html array, 'string' => $s)
|
||||
*/
|
||||
|
||||
if(! function_exists('smilies')) {
|
||||
function smilies($s, $sample = false) {
|
||||
|
||||
$a = get_app();
|
||||
|
||||
if(intval(get_config('system','no_smilies'))
|
||||
|
@ -995,8 +1160,13 @@ function smile_decode($m) {
|
|||
return(str_replace($m[1],base64url_decode($m[1]),$m[0]));
|
||||
}
|
||||
|
||||
// expand <3333 to the correct number of hearts
|
||||
|
||||
/**
|
||||
* expand <3333 to the correct number of hearts
|
||||
*
|
||||
* @param string $x
|
||||
* @return string
|
||||
*/
|
||||
function preg_heart($x) {
|
||||
$a = get_app();
|
||||
if(strlen($x[1]) == 1)
|
||||
|
@ -1010,6 +1180,12 @@ function preg_heart($x) {
|
|||
|
||||
|
||||
if(! function_exists('day_translate')) {
|
||||
/**
|
||||
* Translate days and months names
|
||||
*
|
||||
* @param string $s
|
||||
* @return string
|
||||
*/
|
||||
function day_translate($s) {
|
||||
$ret = str_replace(array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'),
|
||||
array( t('Monday'), t('Tuesday'), t('Wednesday'), t('Thursday'), t('Friday'), t('Saturday'), t('Sunday')),
|
||||
|
@ -1024,23 +1200,31 @@ function day_translate($s) {
|
|||
|
||||
|
||||
if(! function_exists('normalise_link')) {
|
||||
/**
|
||||
* Normalize url
|
||||
*
|
||||
* @param string $url
|
||||
* @return string
|
||||
*/
|
||||
function normalise_link($url) {
|
||||
$ret = str_replace(array('https:','//www.'), array('http:','//'), $url);
|
||||
return(rtrim($ret,'/'));
|
||||
}}
|
||||
|
||||
|
||||
|
||||
if(! function_exists('link_compare')) {
|
||||
/**
|
||||
*
|
||||
* Compare two URLs to see if they are the same, but ignore
|
||||
* slight but hopefully insignificant differences such as if one
|
||||
* is https and the other isn't, or if one is www.something and
|
||||
* the other isn't - and also ignore case differences.
|
||||
*
|
||||
* Return true if the URLs match, otherwise false.
|
||||
* @param string $a first url
|
||||
* @param string $b second url
|
||||
* @return boolean True if the URLs match, otherwise False
|
||||
*
|
||||
*/
|
||||
|
||||
if(! function_exists('link_compare')) {
|
||||
*/
|
||||
function link_compare($a,$b) {
|
||||
if(strcasecmp(normalise_link($a),normalise_link($b)) === 0)
|
||||
return true;
|
||||
|
@ -1048,9 +1232,13 @@ function link_compare($a,$b) {
|
|||
}}
|
||||
|
||||
|
||||
// Find any non-embedded images in private items and add redir links to them
|
||||
|
||||
if(! function_exists('redir_private_images')) {
|
||||
/**
|
||||
* Find any non-embedded images in private items and add redir links to them
|
||||
*
|
||||
* @param App $a
|
||||
* @param array $item
|
||||
*/
|
||||
function redir_private_images($a, &$item) {
|
||||
|
||||
$matches = false;
|
||||
|
@ -1076,6 +1264,17 @@ function redir_private_images($a, &$item) {
|
|||
// If attach is true, also add icons for item attachments
|
||||
|
||||
if(! function_exists('prepare_body')) {
|
||||
/**
|
||||
* Given an item array, convert the body element from bbcode to html and add smilie icons.
|
||||
* If attach is true, also add icons for item attachments
|
||||
*
|
||||
* @param array $item
|
||||
* @param boolean $attach
|
||||
* @return string item body html
|
||||
* @hook prepare_body_init item array before any work
|
||||
* @hook prepare_body ('item'=>item array, 'html'=>body string) after first bbcode to html
|
||||
* @hook prepare_body_final ('item'=>item array, 'html'=>body string) after attach icons and blockquote special case handling (spoiler, author)
|
||||
*/
|
||||
function prepare_body($item,$attach = false) {
|
||||
|
||||
$a = get_app();
|
||||
|
@ -1201,9 +1400,13 @@ function prepare_body($item,$attach = false) {
|
|||
}}
|
||||
|
||||
|
||||
// Given a text string, convert from bbcode to html and add smilie icons.
|
||||
|
||||
if(! function_exists('prepare_text')) {
|
||||
/**
|
||||
* Given a text string, convert from bbcode to html and add smilie icons.
|
||||
*
|
||||
* @param string $text
|
||||
* @return string
|
||||
*/
|
||||
function prepare_text($text) {
|
||||
|
||||
require_once('include/bbcode.php');
|
||||
|
@ -1217,19 +1420,25 @@ function prepare_text($text) {
|
|||
}}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* returns
|
||||
* [
|
||||
* //categories [
|
||||
* return array with details for categories and folders for an item
|
||||
*
|
||||
* @param array $item
|
||||
* @return array
|
||||
*
|
||||
* [
|
||||
* [ // categories array
|
||||
* {
|
||||
* 'name': 'category name',
|
||||
* 'removeurl': 'url to remove this category',
|
||||
* 'first': 'is the first in this array? true/false',
|
||||
* 'removeurl': 'url to remove this category',
|
||||
* 'first': 'is the first in this array? true/false',
|
||||
* 'last': 'is the last in this array? true/false',
|
||||
* } ,
|
||||
* ....
|
||||
* ],
|
||||
* // folders [
|
||||
* [ //folders array
|
||||
* {
|
||||
* 'name': 'folder name',
|
||||
* 'removeurl': 'url to remove this folder',
|
||||
* 'first': 'is the first in this array? true/false',
|
||||
|
@ -1237,9 +1446,10 @@ function prepare_text($text) {
|
|||
* } ,
|
||||
* ....
|
||||
* ]
|
||||
* ]
|
||||
* ]
|
||||
*/
|
||||
function get_cats_and_terms($item) {
|
||||
|
||||
$a = get_app();
|
||||
$categories = array();
|
||||
$folders = array();
|
||||
|
@ -1284,11 +1494,12 @@ function get_cats_and_terms($item) {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* return atom link elements for all of our hubs
|
||||
*/
|
||||
|
||||
if(! function_exists('feed_hublinks')) {
|
||||
/**
|
||||
* return atom link elements for all of our hubs
|
||||
* @return string hub link xml elements
|
||||
*/
|
||||
function feed_hublinks() {
|
||||
|
||||
$hub = get_config('system','huburl');
|
||||
|
@ -1308,9 +1519,13 @@ function feed_hublinks() {
|
|||
return $hubxml;
|
||||
}}
|
||||
|
||||
/* return atom link elements for salmon endpoints */
|
||||
|
||||
if(! function_exists('feed_salmonlinks')) {
|
||||
/**
|
||||
* return atom link elements for salmon endpoints
|
||||
* @param string $nick user nickname
|
||||
* @return string salmon link xml elements
|
||||
*/
|
||||
function feed_salmonlinks($nick) {
|
||||
|
||||
$a = get_app();
|
||||
|
@ -1325,6 +1540,11 @@ function feed_salmonlinks($nick) {
|
|||
}}
|
||||
|
||||
if(! function_exists('get_plink')) {
|
||||
/**
|
||||
* get private link for item
|
||||
* @param array $item
|
||||
* @return boolean|array False if item has not plink, otherwise array('href'=>plink url, 'title'=>translated title)
|
||||
*/
|
||||
function get_plink($item) {
|
||||
$a = get_app();
|
||||
if (x($item,'plink') && ($item['private'] != 1)) {
|
||||
|
@ -1339,6 +1559,11 @@ function get_plink($item) {
|
|||
}}
|
||||
|
||||
if(! function_exists('unamp')) {
|
||||
/**
|
||||
* replace html amp entity with amp char
|
||||
* @param string $s
|
||||
* @return string
|
||||
*/
|
||||
function unamp($s) {
|
||||
return str_replace('&', '&', $s);
|
||||
}}
|
||||
|
@ -1347,6 +1572,12 @@ function unamp($s) {
|
|||
|
||||
|
||||
if(! function_exists('lang_selector')) {
|
||||
/**
|
||||
* get html for language selector
|
||||
* @global string $lang
|
||||
* @return string
|
||||
* @template lang_selector.tpl
|
||||
*/
|
||||
function lang_selector() {
|
||||
global $lang;
|
||||
|
||||
|
@ -1383,6 +1614,11 @@ function lang_selector() {
|
|||
|
||||
|
||||
if(! function_exists('return_bytes')) {
|
||||
/**
|
||||
* return number of bytes in size (K, M, G)
|
||||
* @param string $size_str
|
||||
* @return number
|
||||
*/
|
||||
function return_bytes ($size_str) {
|
||||
switch (substr ($size_str, -1))
|
||||
{
|
||||
|
@ -1393,6 +1629,9 @@ function return_bytes ($size_str) {
|
|||
}
|
||||
}}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
function generate_user_guid() {
|
||||
$found = true;
|
||||
do {
|
||||
|
@ -1407,7 +1646,11 @@ function generate_user_guid() {
|
|||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param string $s
|
||||
* @param boolean $strip_padding
|
||||
* @return string
|
||||
*/
|
||||
function base64url_encode($s, $strip_padding = false) {
|
||||
|
||||
$s = strtr(base64_encode($s),'+/','-_');
|
||||
|
@ -1418,6 +1661,10 @@ function base64url_encode($s, $strip_padding = false) {
|
|||
return $s;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $s
|
||||
* @return string
|
||||
*/
|
||||
function base64url_decode($s) {
|
||||
|
||||
if(is_array($s)) {
|
||||
|
@ -1446,6 +1693,16 @@ function base64url_decode($s) {
|
|||
|
||||
|
||||
if (!function_exists('str_getcsv')) {
|
||||
/**
|
||||
* Parse csv string
|
||||
*
|
||||
* @param string $input
|
||||
* @param string $delimiter
|
||||
* @param string $enclosure
|
||||
* @param string $escape
|
||||
* @param string $eol
|
||||
* @return boolean|array False on error, otherwise array[row][column]
|
||||
*/
|
||||
function str_getcsv($input, $delimiter = ',', $enclosure = '"', $escape = '\\', $eol = '\n') {
|
||||
if (is_string($input) && !empty($input)) {
|
||||
$output = array();
|
||||
|
@ -1502,6 +1759,11 @@ if (!function_exists('str_getcsv')) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* return div element with class 'clear'
|
||||
* @return string
|
||||
* @deprecated
|
||||
*/
|
||||
function cleardiv() {
|
||||
return '<div class="clear"></div>';
|
||||
}
|
||||
|
@ -1538,6 +1800,8 @@ function html2bb_video($s) {
|
|||
|
||||
/**
|
||||
* apply xmlify() to all values of array $val, recursively
|
||||
* @param array $val
|
||||
* @return array
|
||||
*/
|
||||
function array_xmlify($val){
|
||||
if (is_bool($val)) return $val?"true":"false";
|
||||
|
@ -1546,6 +1810,13 @@ function array_xmlify($val){
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* transorm link href and img src from relative to absolute
|
||||
*
|
||||
* @param string $text
|
||||
* @param string $base base url
|
||||
* @return string
|
||||
*/
|
||||
function reltoabs($text, $base)
|
||||
{
|
||||
if (empty($base))
|
||||
|
@ -1578,6 +1849,12 @@ function reltoabs($text, $base)
|
|||
return $text;
|
||||
}
|
||||
|
||||
/**
|
||||
* get translated item type
|
||||
*
|
||||
* @param array $itme
|
||||
* @return string
|
||||
*/
|
||||
function item_post_type($item) {
|
||||
if(intval($item['event-id']))
|
||||
return t('event');
|
||||
|
|
|
@ -274,6 +274,7 @@ function admin_page_site_post(&$a){
|
|||
$maxloadavg = ((x($_POST,'maxloadavg')) ? intval(trim($_POST['maxloadavg'])) : 50);
|
||||
$dfrn_only = ((x($_POST,'dfrn_only')) ? True : False);
|
||||
$ostatus_disabled = !((x($_POST,'ostatus_disabled')) ? True : False);
|
||||
$ostatus_poll_interval = ((x($_POST,'ostatus_poll_interval')) ? intval(trim($_POST['ostatus_poll_interval'])) : 0);
|
||||
$diaspora_enabled = ((x($_POST,'diaspora_enabled')) ? True : False);
|
||||
$ssl_policy = ((x($_POST,'ssl_policy')) ? intval($_POST['ssl_policy']) : 0);
|
||||
$new_share = ((x($_POST,'new_share')) ? True : False);
|
||||
|
@ -388,6 +389,7 @@ function admin_page_site_post(&$a){
|
|||
set_config('system','curl_timeout', $timeout);
|
||||
set_config('system','dfrn_only', $dfrn_only);
|
||||
set_config('system','ostatus_disabled', $ostatus_disabled);
|
||||
set_config('system','ostatus_poll_interval', $ostatus_poll_interval);
|
||||
set_config('system','diaspora_enabled', $diaspora_enabled);
|
||||
set_config('config','private_addons', $private_addons);
|
||||
|
||||
|
@ -442,7 +444,16 @@ function admin_page_site(&$a) {
|
|||
$theme_choices[$f] = $theme_name;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* OStatus conversation poll choices */
|
||||
$ostatus_poll_choices = array(
|
||||
"-1" => t("Never"),
|
||||
"0" => t("Frequently"),
|
||||
"60" => t("Hourly"),
|
||||
"720" => t("Twice daily"),
|
||||
"1440" => t("Daily")
|
||||
);
|
||||
|
||||
/* get user names to make the install a personal install of X */
|
||||
$user_names = array();
|
||||
|
@ -520,6 +531,7 @@ function admin_page_site(&$a) {
|
|||
'$no_utf' => array('no_utf', t("UTF-8 Regular expressions"), !get_config('system','no_utf'), t("Use PHP UTF8 regular expressions")),
|
||||
'$no_community_page' => array('no_community_page', t("Show Community Page"), !get_config('system','no_community_page'), t("Display a Community page showing all recent public postings on this site.")),
|
||||
'$ostatus_disabled' => array('ostatus_disabled', t("Enable OStatus support"), !get_config('system','ostatus_disabled'), t("Provide built-in OStatus \x28identi.ca, status.net, etc.\x29 compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed.")),
|
||||
'$ostatus_poll_interval' => array('ostatus_poll_interval', t("OStatus conversation completion interval"), (string) intval(get_config('system','ostatus_poll_interval')), t("How often shall the poller check for new entries in OStatus conversations? This can be a very ressource task."), $ostatus_poll_choices),
|
||||
'$diaspora_enabled' => array('diaspora_enabled', t("Enable Diaspora support"), get_config('system','diaspora_enabled'), t("Provide built-in Diaspora network compatibility.")),
|
||||
'$dfrn_only' => array('dfrn_only', t('Only allow Friendica contacts'), get_config('system','dfrn_only'), t("All contacts must use Friendica protocols. All other built-in communication protocols disabled.")),
|
||||
'$verifyssl' => array('verifyssl', t("Verify SSL"), get_config('system','verifyssl'), t("If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites.")),
|
||||
|
@ -1181,7 +1193,7 @@ readable.");
|
|||
'$logname' => get_config('system','logfile'),
|
||||
|
||||
// name, label, value, help string, extra data...
|
||||
'$debugging' => array('debugging', t("Debugging"),get_config('system','debugging'), ""),
|
||||
'$debugging' => array('debugging', t("Enable Debugging"),get_config('system','debugging'), ""),
|
||||
'$logfile' => array('logfile', t("Log file"), get_config('system','logfile'), t("Must be writable by web server. Relative to your Friendica top-level directory.")),
|
||||
'$loglevel' => array('loglevel', t("Log level"), get_config('system','loglevel'), "", $log_choices),
|
||||
|
||||
|
|
|
@ -172,6 +172,9 @@ function display_content(&$a, $update = 0) {
|
|||
$description = trim(html2plain(bbcode($r[0]["body"], false, false), 0, true));
|
||||
$title = trim(html2plain(bbcode($r[0]["title"], false, false), 0, true));
|
||||
|
||||
$description = htmlspecialchars($description, ENT_COMPAT, 'UTF-8', true); // allow double encoding here
|
||||
$title = htmlspecialchars($title, ENT_COMPAT, 'UTF-8', true); // allow double encoding here
|
||||
|
||||
if ($title == "")
|
||||
$title = $r[0]["author-name"];
|
||||
|
||||
|
|
|
@ -971,7 +971,7 @@ function item_content(&$a) {
|
|||
if (is_ajax()){
|
||||
// ajax return: [<item id>, 0 (no perm) | <owner id>]
|
||||
echo json_encode(array(intval($a->argv[2]), intval($o)));
|
||||
kllme();
|
||||
killme();
|
||||
}
|
||||
}
|
||||
return $o;
|
||||
|
|
|
@ -594,7 +594,7 @@ function network_content(&$a, $update = 0) {
|
|||
if($update)
|
||||
killme();
|
||||
notice( t('No such group') . EOL );
|
||||
goaway($a->get_baseurl(true) . '/network');
|
||||
goaway($a->get_baseurl(true) . '/network/0');
|
||||
// NOTREACHED
|
||||
}
|
||||
|
||||
|
|
12484
util/messages.po
12484
util/messages.po
File diff suppressed because it is too large
Load diff
|
@ -79,6 +79,7 @@
|
|||
{{ inc field_checkbox.tpl with $field=$force_publish }}{{ endinc }}
|
||||
{{ inc field_checkbox.tpl with $field=$no_community_page }}{{ endinc }}
|
||||
{{ inc field_checkbox.tpl with $field=$ostatus_disabled }}{{ endinc }}
|
||||
{{ inc field_select.tpl with $field=$ostatus_poll_interval }}{{ endinc }}
|
||||
{{ inc field_checkbox.tpl with $field=$diaspora_enabled }}{{ endinc }}
|
||||
{{ inc field_checkbox.tpl with $field=$dfrn_only }}{{ endinc }}
|
||||
{{ inc field_input.tpl with $field=$global_directory }}{{ endinc }}
|
||||
|
|
12713
view/de/messages.po
12713
view/de/messages.po
File diff suppressed because it is too large
Load diff
2411
view/de/strings.php
2411
view/de/strings.php
File diff suppressed because it is too large
Load diff
7167
view/pl/messages.po
7167
view/pl/messages.po
File diff suppressed because it is too large
Load diff
1375
view/pl/strings.php
1375
view/pl/strings.php
File diff suppressed because it is too large
Load diff
14391
view/ru/messages.po
14391
view/ru/messages.po
File diff suppressed because it is too large
Load diff
3184
view/ru/strings.php
3184
view/ru/strings.php
File diff suppressed because it is too large
Load diff
|
@ -84,6 +84,7 @@
|
|||
{{include file="field_checkbox.tpl" field=$force_publish}}
|
||||
{{include file="field_checkbox.tpl" field=$no_community_page}}
|
||||
{{include file="field_checkbox.tpl" field=$ostatus_disabled}}
|
||||
{{include file="field_select.tpl" field=$ostatus_poll_interval}}
|
||||
{{include file="field_checkbox.tpl" field=$diaspora_enabled}}
|
||||
{{include file="field_checkbox.tpl" field=$dfrn_only}}
|
||||
{{include file="field_input.tpl" field=$global_directory}}
|
||||
|
|
|
@ -255,6 +255,9 @@ a:focus {
|
|||
img,
|
||||
figure {
|
||||
border: 0 none;
|
||||
border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
max-width: 550px;
|
||||
margin: 0;
|
||||
}
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
<img style="float:left; margin:5px 20px 0 0" src="/images/friendica-128.png" title="friendica">
|
||||
<div class="login-form">
|
||||
<form action="$dest_url" method="post" >
|
||||
<input type="hidden" name="auth-params" value="login" />
|
||||
|
||||
<div id="login_standard">
|
||||
{{ inc field_input.tpl with $field=$lname }}{{ endinc }}
|
||||
{{ inc field_password.tpl with $field=$lpassword }}{{ endinc }}
|
||||
</div>
|
||||
|
||||
{{ if $openid }}
|
||||
<div id="login_openid">
|
||||
{{ inc field_openid.tpl with $field=$lopenid }}{{ endinc }}
|
||||
</div>
|
||||
{{ endif }}
|
||||
|
||||
<div id="login-submit-wrapper" >
|
||||
<input type="submit" name="submit" id="login-submit-button" value="$login" />
|
||||
</div>
|
||||
|
||||
<br /><br />
|
||||
<div class="login-extra-links">
|
||||
{{ if $register }}
|
||||
<a href="register" title="$register.title" id="register-link">$register.desc</a><br />
|
||||
<a href="lostpass" title="$lostpass" id="lost-password-link" >$lostlink</a>
|
||||
{{ endif }}
|
||||
</div>
|
||||
|
||||
{{ for $hiddens as $k=>$v }}
|
||||
<input type="hidden" name="$k" value="$v" />
|
||||
{{ endfor }}
|
||||
|
||||
|
||||
</form>
|
||||
</div>
|
||||
<script type="text/javascript">window.loginName = "$lname.0";</script>
|
|
@ -1,41 +0,0 @@
|
|||
{{*
|
||||
* AUTOMATICALLY GENERATED TEMPLATE
|
||||
* DO NOT EDIT THIS FILE, CHANGES WILL BE OVERWRITTEN
|
||||
*
|
||||
*}}
|
||||
<img style="float:left; margin:5px 20px 0 0" src="/images/friendica-128.png" title="friendica">
|
||||
<div class="login-form">
|
||||
<form action="{{$dest_url}}" method="post" >
|
||||
<input type="hidden" name="auth-params" value="login" />
|
||||
|
||||
<div id="login_standard">
|
||||
{{include file="field_input.tpl" field=$lname}}
|
||||
{{include file="field_password.tpl" field=$lpassword}}
|
||||
</div>
|
||||
|
||||
{{if $openid}}
|
||||
<div id="login_openid">
|
||||
{{include file="field_openid.tpl" field=$lopenid}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div id="login-submit-wrapper" >
|
||||
<input type="submit" name="submit" id="login-submit-button" value="{{$login}}" />
|
||||
</div>
|
||||
|
||||
<br /><br />
|
||||
<div class="login-extra-links">
|
||||
{{if $register}}
|
||||
<a href="register" title="{{$register.title}}" id="register-link">{{$register.desc}}</a><br />
|
||||
<a href="lostpass" title="{{$lostpass}}" id="lost-password-link" >{{$lostlink}}</a>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{foreach $hiddens as $k=>$v}}
|
||||
<input type="hidden" name="{{$k}}" value="{{$v}}" />
|
||||
{{/foreach}}
|
||||
|
||||
|
||||
</form>
|
||||
</div>
|
||||
<script type="text/javascript">window.loginName = "{{$lname.0}}";</script>
|
|
@ -2,7 +2,7 @@
|
|||
style.css
|
||||
Smoothly
|
||||
|
||||
Created by alex@friendica.pixelbits.de on 2013-02-27
|
||||
Created by alex@friendica.pixelbits.de on 2013-03-27
|
||||
|
||||
** Colors **
|
||||
Blue links - #1873a2
|
||||
|
@ -70,8 +70,8 @@ input[type=submit]:hover {
|
|||
color: #efefef;
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
|
@ -119,7 +119,7 @@ section {
|
|||
}
|
||||
|
||||
.lframe {
|
||||
border: 1px solid #dddddd;
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 3px 3px 6px #959494;
|
||||
-moz-box-shadow: 3px 3px 6px #959494;
|
||||
-webkit-box-shadow: 3px 3px 6px #959494;
|
||||
|
@ -128,15 +128,15 @@ section {
|
|||
}
|
||||
|
||||
.mframe {
|
||||
padding: 3px;
|
||||
background: none repeat scroll 0 0 #FFFFFF;
|
||||
border: 1px solid #C5C5C5;
|
||||
padding: 0;
|
||||
/*background: none repeat scroll 0 0 #FFFFFF;
|
||||
border: 1px solid #7C7D7B;
|
||||
border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;*/
|
||||
}
|
||||
|
||||
#wall-item-lock {
|
||||
|
@ -160,8 +160,8 @@ section {
|
|||
.button:hover {
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
|
@ -197,25 +197,17 @@ section {
|
|||
}
|
||||
|
||||
#login-extra-links {
|
||||
width: 90px;
|
||||
width: auto;
|
||||
margin-top: 20px;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.login-extra-links {
|
||||
width: 100%;
|
||||
margin-left: 145px;
|
||||
margin-left: 0px;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#login-extra-links a {
|
||||
display: block;
|
||||
margin: 10px;
|
||||
padding: 5px 0px 5px 0px;
|
||||
text-align: center;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
#login-extra-filler {
|
||||
display: none;
|
||||
}
|
||||
|
@ -227,25 +219,33 @@ section {
|
|||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
padding: 10px;
|
||||
margin: 10px 0 0 0;
|
||||
padding: 15px 10px 10px 20px;
|
||||
margin: 20px 0 0 210px;
|
||||
}
|
||||
|
||||
#login_openid {
|
||||
width: 300px;
|
||||
margin-left: 150px;
|
||||
#login_openid,
|
||||
#login-extra-links a {
|
||||
width: 460px;
|
||||
float: left;
|
||||
margin: 5px 0 0 230px;
|
||||
}
|
||||
|
||||
#div_id_remember {
|
||||
width: 258px;
|
||||
float: left;
|
||||
margin: 5px 0 0 230px;
|
||||
}
|
||||
|
||||
#login_standard input,
|
||||
#login_openid input {
|
||||
height: 20px;
|
||||
width: 240px;
|
||||
}
|
||||
|
||||
#register-link,
|
||||
#lost-password-link {
|
||||
font-size: 80%;
|
||||
width: 210px;
|
||||
margin-left: 5px;
|
||||
width: 260px;
|
||||
|
||||
}
|
||||
|
||||
#login-name-end,
|
||||
|
@ -257,12 +257,11 @@ section {
|
|||
|
||||
#login-submit-button,
|
||||
#login-submit-wrapper {
|
||||
margin-top: 10px;
|
||||
margin-left: 75px;
|
||||
}
|
||||
|
||||
#login-submit-button {
|
||||
width: 280px;
|
||||
width: 250px;
|
||||
margin: 10px 0 0 230px;
|
||||
}
|
||||
|
||||
.login-form,
|
||||
|
@ -338,11 +337,11 @@ nav {
|
|||
background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) );
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 0px 0px 5px 5px;
|
||||
-moz-border-radius: 0px 0px 5px 5px;
|
||||
-webkit-border-radius: 0px 0px 5px 5px;
|
||||
}
|
||||
|
||||
nav a {
|
||||
|
@ -393,10 +392,13 @@ nav #user-menu {
|
|||
background: -moz-linear-gradient( center top, #797979 5%, #898988 100% );
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#797979', endColorstr='#898988');
|
||||
background-color: #a2a2a2;
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
border: 1px solid #7C7D8B;
|
||||
color: #efefef;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
|
@ -405,8 +407,8 @@ nav #user-menu {
|
|||
nav #user-menu:hover {
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
|
@ -589,7 +591,7 @@ ul#user-menu-popup li a.nav-sep {
|
|||
#sysmsg br {
|
||||
display:block;
|
||||
margin:2px 0px;
|
||||
border-top: 1px solid #dddddd;
|
||||
border-top: 1px solid #7C7D7B;
|
||||
}
|
||||
|
||||
/* ================= */
|
||||
|
@ -634,19 +636,18 @@ aside h4 {
|
|||
|
||||
.vcard #profile-photo-wrapper {
|
||||
margin: 10px 0px;
|
||||
padding: 1px;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
background: none repeat scroll 0 0 #FFFFFF;
|
||||
border: 1px solid #C5C5C5;
|
||||
padding: 0;
|
||||
width: auto;
|
||||
/*background: none repeat scroll 0 0 #FFFFFF;
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;*/
|
||||
}
|
||||
|
||||
|
||||
|
@ -736,7 +737,7 @@ h3 #search:before {
|
|||
|
||||
#network-new-link {
|
||||
background-color: #f3f3f3;
|
||||
border: 1px solid #cdcdcd;
|
||||
border: 1px solid #7C7D7B;
|
||||
margin-bottom: 10px;
|
||||
border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
|
@ -820,7 +821,7 @@ h3 #search:before {
|
|||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
color: #7c7d7b;
|
||||
border: 1px solid #cdcdcd;
|
||||
border: 1px solid #7C7D7B;
|
||||
}
|
||||
|
||||
li.widget-list {
|
||||
|
@ -857,8 +858,8 @@ li.widget-list {
|
|||
background-color: #1873a2;
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
|
@ -903,7 +904,7 @@ li.widget-list {
|
|||
}
|
||||
|
||||
ul .sidebar-group-li {
|
||||
list-style: none;
|
||||
list-style: disc;
|
||||
font-size: 1.0em;
|
||||
}
|
||||
|
||||
|
@ -954,7 +955,7 @@ ul .sidebar-group-li .icon {
|
|||
-moz-border-radius: 5px 5px 0px 0px;
|
||||
-webkit-border-radius: 5px 5px 0px 0px;
|
||||
border: 1px solid #e2e2e2;
|
||||
border-bottom: 1px solid #cdcdcd;
|
||||
border-bottom: 1px solid #7C7D7B;
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
vertical-align: baseline;
|
||||
|
@ -1009,13 +1010,13 @@ ul .sidebar-group-li .icon {
|
|||
width: 47px;
|
||||
height: 47px;
|
||||
margin-right: 2px;
|
||||
border: 1px solid #C5C5C5;
|
||||
border: 1px solid #7C7D7B;
|
||||
border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
}
|
||||
|
||||
.contact-block-div {
|
||||
|
@ -1185,8 +1186,8 @@ ul .sidebar-group-li .icon {
|
|||
background-color: #1873a2;
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
|
@ -1347,6 +1348,13 @@ ul .sidebar-group-li .icon {
|
|||
/* = Posts = */
|
||||
/* ========= */
|
||||
|
||||
.wall-item-name {
|
||||
font-style: bold !important;
|
||||
border: 0px !important;
|
||||
border-radius: 0px !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
.wall-item-outside-wrapper {
|
||||
max-width: 100%;
|
||||
border-bottom: 1px solid #dedede;
|
||||
|
@ -1355,13 +1363,13 @@ ul .sidebar-group-li .icon {
|
|||
padding-right: 10px;
|
||||
padding-left: 12px;
|
||||
background: none repeat scroll 0 0 #FFFFFF;
|
||||
border: 1px solid #CDCDCD;
|
||||
border: 1px solid #7C7D7B;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
}
|
||||
|
||||
.wall-item-outside-wrapper-end {
|
||||
|
@ -1381,19 +1389,19 @@ ul .sidebar-group-li .icon {
|
|||
.wall-item-photo-menu-button {
|
||||
display: none;
|
||||
text-indent: -99999px;
|
||||
background: #eeeeee url("images/menu-user-pin.png") no-repeat 75px center;
|
||||
background: #eeeeee url("images/menu-user-pin.png") no-repeat 35px center;
|
||||
position: absolute;
|
||||
overflow: hidden;
|
||||
height: 20px;
|
||||
width: 100%;
|
||||
top: 85px;
|
||||
left: -1px;
|
||||
border-right: 1px solid #dddddd;
|
||||
border-left: 1px solid #dddddd;
|
||||
border-bottom: 1px solid #dddddd;
|
||||
box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
top: 82px;
|
||||
left: 0;
|
||||
border-right: 1px solid #7C7D7B;
|
||||
border-left: 1px solid #7C7D7B;
|
||||
border-bottom: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 0px 0px 5px 5px;
|
||||
-webkit-border-radius: 0px 0px 5px 5px;
|
||||
-moz-border-radius: 0px 0px 5px 5px;
|
||||
|
@ -1404,26 +1412,29 @@ ul .sidebar-group-li .icon {
|
|||
width: 100px;
|
||||
}
|
||||
|
||||
.wall-item-photo {
|
||||
width: 81px !important;
|
||||
height: 81px !important;
|
||||
border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
}
|
||||
|
||||
.wall-item-photo-wrapper {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
padding: 1px;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
border: 1px solid #dddddd;
|
||||
/*border: 1px solid #7C7D7B;
|
||||
border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;*/
|
||||
}
|
||||
|
||||
.wall-item-photo {
|
||||
|
||||
border: 1px solid #7C7D7B;
|
||||
border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
}
|
||||
|
||||
.wall-item-tools {
|
||||
|
@ -1598,13 +1609,14 @@ ul .sidebar-group-li .icon {
|
|||
}
|
||||
|
||||
.wallwall .wwto {
|
||||
left: 0px;
|
||||
left: -10px;
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
margin: -1px;
|
||||
top: 63px;
|
||||
top: 65px;
|
||||
width: 30px;
|
||||
z-index: 900;
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
.wallwall .wwto img {
|
||||
|
@ -1618,8 +1630,8 @@ ul .sidebar-group-li .icon {
|
|||
|
||||
.wall-item-arrowphoto-wrapper {
|
||||
position: absolute;
|
||||
left: 30px;
|
||||
top: 67px;
|
||||
left: 20px;
|
||||
top: 70px;
|
||||
z-index: 950;
|
||||
}
|
||||
|
||||
|
@ -1629,20 +1641,20 @@ ul .sidebar-group-li .icon {
|
|||
color: #2e3436;
|
||||
border-top: 1px;
|
||||
background: #eeeeee;
|
||||
border-right: 1px solid #dddddd;
|
||||
border-left: 1px solid #dddddd;
|
||||
border-bottom: 1px solid #dddddd;
|
||||
border-right: 1px solid #7C7D7B;
|
||||
border-left: 1px solid #7C7D7B;
|
||||
border-bottom: 1px solid #7C7D7B;
|
||||
position: absolute;
|
||||
left: -1px;
|
||||
left: 0px;
|
||||
top: 101px;
|
||||
display: none;
|
||||
z-index: 10000;
|
||||
border-radius: 0px 5px 5px 5px;
|
||||
-webkit-border-radius: 0px 5px 5px 5px;
|
||||
-moz-border-radius: 0px 5px 5px 5px;
|
||||
box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
|
||||
}
|
||||
|
||||
|
@ -1650,9 +1662,9 @@ ul .sidebar-group-li .icon {
|
|||
-webkit-border-radius: 0px 5px 5px 5px;
|
||||
-moz-border-radius: 0px 5px 5px 5px;
|
||||
border-radius: 0px 5px 5px 5px;
|
||||
box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
}
|
||||
|
||||
.wall-item-photo-menu ul {
|
||||
|
@ -1733,8 +1745,8 @@ code {
|
|||
}
|
||||
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo {
|
||||
width: 41px!important;
|
||||
height: 41px!important;
|
||||
width: 40px!important;
|
||||
height: 40px!important;
|
||||
}
|
||||
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo-wrapper {
|
||||
|
@ -1743,8 +1755,8 @@ code {
|
|||
}
|
||||
|
||||
.wall-item-outside-wrapper.comment .wall-item-photo-menu-button {
|
||||
top: 45px;
|
||||
background-position: 35px center;
|
||||
top: 42px;
|
||||
background-position: 15px center;
|
||||
}
|
||||
|
||||
.wall-item-outside-wrapper.comment .wall-item-info {
|
||||
|
@ -1823,7 +1835,7 @@ code {
|
|||
padding: 5px 5px;
|
||||
background-color: #a2a2a2;
|
||||
color: #eeeeec;
|
||||
border: 1px solid #CDCDCD;
|
||||
border: 1px solid #7C7D7B;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
|
@ -1831,13 +1843,13 @@ code {
|
|||
|
||||
.comment-edit-submit:hover {
|
||||
background-color: #1873a2;
|
||||
border: 1px solid #CDCDCD;
|
||||
border: 1px solid #7C7D7B;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
}
|
||||
|
||||
.comment-edit-submit:active {
|
||||
|
@ -1979,10 +1991,10 @@ div[id$="wrapper"] br {
|
|||
margin-bottom: 70px;
|
||||
margin-right: 29px;
|
||||
background-color: #f6f6f6;
|
||||
border: 1px solid #dddddd;
|
||||
box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
}
|
||||
|
||||
.profile-match-break,
|
||||
|
@ -2021,8 +2033,14 @@ div[id$="wrapper"] br {
|
|||
}
|
||||
|
||||
.photo {
|
||||
height: 200px!important;
|
||||
width: 200px!important;
|
||||
height: 203px !important;
|
||||
width: 203px !important;
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
|
@ -2358,6 +2376,10 @@ input #photo_edit_form {
|
|||
-webkit-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1);
|
||||
-moz-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1);
|
||||
box-shadow: 0 0 5px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1);
|
||||
border: 1px solid #7C7D7B;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
}
|
||||
|
||||
#prvmail-wrapper:before,
|
||||
|
@ -2382,6 +2404,10 @@ input #photo_edit_form {
|
|||
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3);
|
||||
-moz-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3);
|
||||
z-index: -1;
|
||||
border: 1px solid #7C7D7B;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
}
|
||||
|
||||
#prvmail-wrapper:after,
|
||||
|
@ -2394,6 +2420,10 @@ input #photo_edit_form {
|
|||
-moz-transform: skew(5deg) rotate(5deg);
|
||||
-ms-transform: skew(5deg) rotate(5deg);
|
||||
-o-transform: skew(5deg) rotate(5deg);
|
||||
border: 1px solid #7C7D7B;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
}
|
||||
|
||||
.prvmail-text {
|
||||
|
@ -2452,13 +2482,13 @@ margin-left: 0px;
|
|||
float: left;
|
||||
padding: 2px;
|
||||
background-color: #efefef;
|
||||
border: 1px solid #C5C5C5;
|
||||
border: 1px solid #7C7D7B;
|
||||
border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
}
|
||||
|
||||
.mail-list-detail {
|
||||
|
@ -2467,7 +2497,7 @@ margin-left: 0px;
|
|||
min-height: 70px;
|
||||
padding: 20px;
|
||||
padding-top: 10px;
|
||||
border: 1px solid #dddddd;
|
||||
border: 1px solid #7C7D7B;
|
||||
}
|
||||
|
||||
.mail-list-sender-name {
|
||||
|
@ -2516,6 +2546,7 @@ margin-left: 0px;
|
|||
.mail-conv-sender-photo {
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
border-radius: 3px 3px 3px 3px;
|
||||
}
|
||||
|
||||
.mail-conv-sender-name {
|
||||
|
@ -2545,7 +2576,7 @@ margin-left: 0px;
|
|||
margin-bottom: 0px;
|
||||
vertical-align: middle;
|
||||
margin: auto;
|
||||
border: 1px solid #dddddd;
|
||||
border: 1px solid #7C7D7B;
|
||||
}
|
||||
|
||||
.mail-conv-break {
|
||||
|
@ -2561,7 +2592,7 @@ margin-left: 0px;
|
|||
|
||||
#prvmail-subject {
|
||||
font-weight: bold;
|
||||
border: 1px solid #dddddd;
|
||||
border: 1px solid #7C7D7B;
|
||||
}
|
||||
|
||||
/* ================= */
|
||||
|
@ -2667,6 +2698,13 @@ margin-left: 0px;
|
|||
|
||||
.contact-entry-photo {
|
||||
position: relative;
|
||||
/*border: 1px solid #7C7D7B;
|
||||
border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;*/
|
||||
}
|
||||
|
||||
.contact-entry-edit-links .icon {
|
||||
|
@ -2711,8 +2749,8 @@ margin-left: 0px;
|
|||
background-color: #1873a2;
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
|
@ -2857,8 +2895,8 @@ margin-left: 0px;
|
|||
background-color: #1873a2;
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
|
@ -2893,7 +2931,7 @@ margin-left: 0px;
|
|||
font-weight: bold;
|
||||
font-stretch: semi-expanded;
|
||||
background-color: #f3f3f3;
|
||||
border: 1px solid #cdcdcd;
|
||||
border: 1px solid #7C7D7B;
|
||||
padding: 10px;
|
||||
margin-top: 20px;
|
||||
border-radius: 5px;
|
||||
|
@ -3050,8 +3088,8 @@ margin-left: 0px;
|
|||
background-color: #555753;
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
|
@ -3601,8 +3639,8 @@ margin-left: 0px;
|
|||
clear: left;
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
|
@ -3647,7 +3685,7 @@ margin-left: 0px;
|
|||
/* =============== */
|
||||
|
||||
.field {
|
||||
margin-bottom: 10px;
|
||||
/*margin-bottom: 10px;*/
|
||||
overflow: auto;
|
||||
padding-bottom: 0px;
|
||||
width: 100%;
|
||||
|
@ -3665,7 +3703,7 @@ margin-left: 0px;
|
|||
|
||||
.field label {
|
||||
float: left;
|
||||
width: 200px;
|
||||
width: 210px;
|
||||
}
|
||||
|
||||
.field checkbox {
|
||||
|
@ -3676,7 +3714,7 @@ margin-left: 0px;
|
|||
.field input,
|
||||
.field textarea {
|
||||
width: 400px;
|
||||
border: 1px solid #CDCDCD;
|
||||
border: 1px solid #7C7D7B;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
|
@ -3735,6 +3773,21 @@ margin-left: 0px;
|
|||
|
||||
.sparkle {
|
||||
cursor: url('lock.cur'), pointer;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
/*border: 1px solid #7C7D7B;
|
||||
border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;*/
|
||||
}
|
||||
|
||||
.label {
|
||||
border: 0px;
|
||||
border-radius: 0px;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.icon {
|
||||
|
@ -3987,8 +4040,8 @@ footer {
|
|||
background-color: #1873a2;
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
|
@ -4117,15 +4170,15 @@ ul.menu-popup {
|
|||
color: #2e3436;
|
||||
border-top: 0px;
|
||||
background: #eeeeee;
|
||||
border-right: 1px solid #dddddd;
|
||||
border-left: 1px solid #dddddd;
|
||||
border-bottom: 1px solid #dddddd;
|
||||
border-right: 1px solid #7C7D7B;
|
||||
border-left: 1px solid #7C7D7B;
|
||||
border-bottom: 1px solid #7C7D7B;
|
||||
border-radius: 0px 5px 5px 5px;
|
||||
-webkit-border-radius: 0px 5px 5px 5px;
|
||||
-moz-border-radius: 0px 5px 5px 5px;
|
||||
box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
}
|
||||
|
||||
.acpopupitem {
|
||||
|
@ -4211,7 +4264,7 @@ ul.menu-popup {
|
|||
#scrollup {
|
||||
position: fixed;
|
||||
right: 1px;
|
||||
bottom: 30px;
|
||||
bottom: 260px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
|
@ -4400,21 +4453,21 @@ div #datebrowse-sidebar.widget {
|
|||
|
||||
#settings-activity-desc,
|
||||
#settings-notify-desc {
|
||||
margin:10px 10px 10px 0;
|
||||
margin: 10px 10px 10px 0;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#settings-notifications {
|
||||
width: 400px;
|
||||
width: 410px;
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
padding:10px;
|
||||
margin:10px 10px 10px 0;
|
||||
padding: 10px;
|
||||
margin: 10px 10px 10px 0;
|
||||
}
|
||||
|
||||
#id_npassword {}
|
||||
|
@ -4429,7 +4482,9 @@ div #datebrowse-sidebar.widget {
|
|||
|
||||
#collapsed-comments-page-widget {}
|
||||
|
||||
.tool {}
|
||||
.tool {
|
||||
list-style-type: disc;
|
||||
}
|
||||
|
||||
#logo-text {
|
||||
}
|
||||
|
@ -4445,8 +4500,8 @@ div #datebrowse-sidebar.widget {
|
|||
.settings-block {
|
||||
border: 1px solid #7C7D7B;
|
||||
box-shadow: 0 0 8px #BDBDBD;
|
||||
-moz-box-shadow: 3px 3px 4px #959494;
|
||||
-webkit-box-shadow: 3px 3px 4px #959494;
|
||||
-moz-box-shadow: 0 0 8px #BDBDBD;
|
||||
-webkit-box-shadow: 0 0 8px #BDBDBD;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
|
@ -4493,3 +4548,10 @@ div #datebrowse-sidebar.widget {
|
|||
width: 75px;
|
||||
}
|
||||
|
||||
#id_remember {
|
||||
width: auto;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.field.input.openid {
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
/*
|
||||
* Name: Smoothly
|
||||
* Description: Like coffee with milk. Theme optimized for iPad[2].
|
||||
* Version: Version 2013-02-27.1
|
||||
* Version: Version 2013-03-27.1
|
||||
* Author: Alex <https://friendica.pixelbits.de/profile/alex>
|
||||
* Maintainer: Alex <https://friendica.pixelbits.de/profile/alex>
|
||||
* Screenshot: <a href="screenshot.png">Screenshot</a>
|
||||
|
|
Loading…
Reference in a new issue