friendica 10 years ago
commit 083d660f61

@ -361,17 +361,26 @@ if(! class_exists('App')) {
// Allow themes to control internal parameters
// by changing App values in theme.php
//
// Possibly should make these part of the plugin
// system, but it seems like overkill to invoke
// all the plugin machinery just to change a couple
// of values
public $sourcename = '';
public $videowidth = 425;
public $videoheight = 350;
public $force_max_items = 0;
public $theme_thread_allow = true;
// An array for all theme-controllable parameters
// Mostly unimplemented yet. Only options 'stylesheet' and
// beyond are used.
public $theme = array(
'sourcename' => '',
'videowidth' => 425,
'videoheight' => 350,
'force_max_items' => 0,
'thread_allow' => true,
'stylesheet' => ''
);
private $scheme;
private $hostname;
private $baseurl;
@ -580,6 +589,13 @@ if(! class_exists('App')) {
$interval = 40000;
$this->page['title'] = $this->config['sitename'];
/* put the head template at the beginning of page['htmlhead']
* since the code added by the modules frequently depends on it
* being first
*/
if(!isset($this->page['htmlhead']))
$this->page['htmlhead'] = '';
$tpl = get_markup_template('head.tpl');
$this->page['htmlhead'] = replace_macros($tpl,array(
'$baseurl' => $this->get_baseurl(), // FIXME for z_path!!!!
@ -590,14 +606,16 @@ if(! class_exists('App')) {
'$showmore' => t('show more'),
'$showfewer' => t('show fewer'),
'$update_interval' => $interval
));
)) . $this->page['htmlhead'];
}
function init_page_end() {
if(!isset($this->page['end']))
$this->page['end'] = '';
$tpl = get_markup_template('end.tpl');
$this->page['end'] = replace_macros($tpl,array(
'$baseurl' => $this->get_baseurl() // FIXME for z_path!!!!
));
)) . $this->page['end'];
}
function set_curl_code($code) {
@ -917,6 +935,7 @@ if(! function_exists('login')) {
$tpl = get_markup_template("login.tpl");
$_SESSION['return_url'] = $a->query_string;
$a->module = 'login';
}
@ -928,6 +947,7 @@ if(! function_exists('login')) {
'$lname' => array('username', t('Nickname or Email address: ') , '', ''),
'$lpassword' => array('password', t('Password: '), '', ''),
'$lremember' => array('remember', t('Remember me'), 0, ''),
'$openid' => !$noid,
'$lopenid' => array('openid_url', t('Or login using OpenID: '),'',''),

@ -2,6 +2,7 @@
require_once('include/security.php');
require_once('include/datetime.php');
function nuke_session() {
unset($_SESSION['authenticated']);
@ -68,7 +69,18 @@ if((isset($_SESSION)) && (x($_SESSION,'authenticated')) && ((! (x($_POST,'auth-p
goaway(z_root());
}
authenticate_success($r[0]);
// Make sure to refresh the last login time for the user if the user
// stays logged in for a long time, e.g. with "Remember Me"
$login_refresh = false;
if(! x($_SESSION['last_login_date'])) {
$_SESSION['last_login_date'] = datetime_convert('UTC','UTC');
}
if( strcmp(datetime_convert('UTC','UTC','now - 12 hours'), $_SESSION['last_login_date']) > 0 ) {
$_SESSION['last_login_date'] = datetime_convert('UTC','UTC');
$login_refresh = true;
}
authenticate_success($r[0], false, false, $login_refresh);
}
}
else {
@ -162,8 +174,36 @@ else {
goaway(z_root());
}
// If the user specified to remember the authentication, then change the cookie
// to expire after one year (the default is when the browser is closed).
// If the user did not specify to remember, change the cookie to expire when the
// browser is closed. The reason this is necessary is because if the user
// specifies to remember, then logs out and logs back in without specifying to
// remember, the old "remember" cookie may remain and prevent the session from
// expiring when the browser is closed.
//
// It seems like I should be able to test for the old cookie, but for some reason when
// I read the lifetime value from session_get_cookie_params(), I always get '0'
// (i.e. expire when the browser is closed), even when there's a time expiration
// on the cookie
if($_POST['remember']) {
$old_sid = session_id();
session_set_cookie_params('31449600'); // one year
session_regenerate_id(false);
q("UPDATE session SET sid = '%s' WHERE sid = '%s'", dbesc(session_id()), dbesc($old_sid));
}
else {
$old_sid = session_id();
session_set_cookie_params('0');
session_regenerate_id(false);
q("UPDATE session SET sid = '%s' WHERE sid = '%s'", dbesc(session_id()), dbesc($old_sid));
}
// if we haven't failed up this point, log them in.
$_SESSION['last_login_date'] = datetime_convert('UTC','UTC');
authenticate_success($record, true, true);
}
}

@ -865,11 +865,15 @@ function format_like($cnt,$arr,$type,$id) {
$total = count($arr);
if($total >= MAX_LIKERS)
$arr = array_slice($arr, 0, MAX_LIKERS - 1);
if($total < MAX_LIKERS)
$arr[count($arr)-1] = t('and') . ' ' . $arr[count($arr)-1];
$str = implode(', ', $arr);
if($total >= MAX_LIKERS)
if($total < MAX_LIKERS) {
$last = t('and') . ' ' . $arr[count($arr)-1];
$arr2 = array_slice($arr, 0, -1);
$str = implode(', ', $arr2) . ' ' . $last;
}
if($total >= MAX_LIKERS) {
$str = implode(', ', $arr);
$str .= sprintf( t(', and %d other people'), $total - MAX_LIKERS );
}
$str = (($type === 'like') ? sprintf( t('%s like this.'), $str) : sprintf( t('%s don\'t like this.'), $str));
$o .= "\t" . '<div id="' . $type . 'list-' . $id . '" style="display: none;" >' . $str . '</div>';
}

@ -294,34 +294,147 @@ function onepoll_run(&$argv, &$argc){
$metas = email_msg_meta($mbox,implode(',',$msgs));
if(count($metas) != count($msgs)) {
logger("onepoll: for " . $mailconf[0]['user'] . " there are ". count($msgs) . " messages but received " . count($metas) . " metas", LOGGER_DEBUG);
break;
}
$msgs = array_combine($msgs, $metas);
else {
$msgs = array_combine($msgs, $metas);
foreach($msgs as $msg_uid => $meta) {
logger("Mail: Parsing mail ".$msg_uid, LOGGER_DATA);
foreach($msgs as $msg_uid => $meta) {
logger("Mail: Parsing mail ".$msg_uid, LOGGER_DATA);
$datarray = array();
// $meta = email_msg_meta($mbox,$msg_uid);
// $headers = email_msg_headers($mbox,$msg_uid);
$datarray = array();
// $meta = email_msg_meta($mbox,$msg_uid);
// $headers = email_msg_headers($mbox,$msg_uid);
$datarray['uri'] = msgid2iri(trim($meta->message_id,'<>'));
$datarray['uri'] = msgid2iri(trim($meta->message_id,'<>'));
// Have we seen it before?
$r = q("SELECT * FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
intval($importer_uid),
dbesc($datarray['uri'])
);
if(count($r)) {
logger("Mail: Seen before ".$msg_uid." for ".$mailconf[0]['user'],LOGGER_DEBUG);
if($meta->deleted && ! $r[0]['deleted']) {
q("UPDATE `item` SET `deleted` = 1, `changed` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($r[0]['id'])
);
}
/*switch ($mailconf[0]['action']) {
case 0:
logger("Mail: Seen before ".$msg_uid." for ".$mailconf[0]['user'].". Doing nothing.", LOGGER_DEBUG);
break;
case 1:
logger("Mail: Deleting ".$msg_uid." for ".$mailconf[0]['user']);
imap_delete($mbox, $msg_uid, FT_UID);
break;
case 2:
logger("Mail: Mark as seen ".$msg_uid." for ".$mailconf[0]['user']);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
break;
case 3:
logger("Mail: Moving ".$msg_uid." to ".$mailconf[0]['movetofolder']." for ".$mailconf[0]['user']);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
if ($mailconf[0]['movetofolder'] != "")
imap_mail_move($mbox, $msg_uid, $mailconf[0]['movetofolder'], FT_UID);
break;
}*/
continue;
}
// Have we seen it before?
$r = q("SELECT * FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
intval($importer_uid),
dbesc($datarray['uri'])
);
if(count($r)) {
logger("Mail: Seen before ".$msg_uid." for ".$mailconf[0]['user'],LOGGER_DEBUG);
if($meta->deleted && ! $r[0]['deleted']) {
q("UPDATE `item` SET `deleted` = 1, `changed` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
intval($r[0]['id'])
// look for a 'references' or an 'in-reply-to' header and try to match with a parent item we have locally.
// $raw_refs = ((x($headers,'references')) ? str_replace("\t",'',$headers['references']) : '');
$raw_refs = ((property_exists($meta,'references')) ? str_replace("\t",'',$meta->references) : '');
if(! trim($raw_refs))
$raw_refs = ((property_exists($meta,'in_reply_to')) ? str_replace("\t",'',$meta->in_reply_to) : '');
$raw_refs = trim($raw_refs); // Don't allow a blank reference in $refs_arr
if($raw_refs) {
$refs_arr = explode(' ', $raw_refs);
if(count($refs_arr)) {
for($x = 0; $x < count($refs_arr); $x ++)
$refs_arr[$x] = "'" . msgid2iri(str_replace(array('<','>',' '),array('','',''),dbesc($refs_arr[$x]))) . "'";
}
$qstr = implode(',',$refs_arr);
$r = q("SELECT `uri` , `parent-uri` FROM `item` WHERE `uri` IN ( $qstr ) AND `uid` = %d LIMIT 1",
intval($importer_uid)
);
if(count($r))
$datarray['parent-uri'] = $r[0]['parent-uri']; // Set the parent as the top-level item
// $datarray['parent-uri'] = $r[0]['uri'];
}
if(! x($datarray,'parent-uri'))
$datarray['parent-uri'] = $datarray['uri'];
// Decoding the header
$subject = imap_mime_header_decode($meta->subject);
$datarray['title'] = "";
foreach($subject as $subpart)
if ($subpart->charset != "default")
$datarray['title'] .= iconv($subpart->charset, 'UTF-8//IGNORE', $subpart->text);
else
$datarray['title'] .= $subpart->text;
$datarray['title'] = notags(trim($datarray['title']));
//$datarray['title'] = notags(trim($meta->subject));
$datarray['created'] = datetime_convert('UTC','UTC',$meta->date);
// Is it reply?
$reply = ((substr(strtolower($datarray['title']), 0, 3) == "re:") or
(substr(strtolower($datarray['title']), 0, 3) == "re-") or
(raw_refs != ""));
$r = email_get_msg($mbox,$msg_uid, $reply);
if(! $r) {
logger("Mail: can't fetch msg ".$msg_uid." for ".$mailconf[0]['user']);
continue;
}
$datarray['body'] = escape_tags($r['body']);
logger("Mail: Importing ".$msg_uid." for ".$mailconf[0]['user']);
// some mailing lists have the original author as 'from' - add this sender info to msg body.
// todo: adding a gravatar for the original author would be cool
if(! stristr($meta->from,$contact['addr'])) {
$from = imap_mime_header_decode($meta->from);
$fromdecoded = "";
foreach($from as $frompart)
if ($frompart->charset != "default")
$fromdecoded .= iconv($frompart->charset, 'UTF-8//IGNORE', $frompart->text);
else
$fromdecoded .= $frompart->text;
$datarray['body'] = "[b]".t('From: ') . escape_tags($fromdecoded) . "[/b]\n\n" . $datarray['body'];
}
/*switch ($mailconf[0]['action']) {
$datarray['uid'] = $importer_uid;
$datarray['contact-id'] = $contact['id'];
if($datarray['parent-uri'] === $datarray['uri'])
$datarray['private'] = 1;
if(($contact['network'] === NETWORK_MAIL) && (! get_pconfig($importer_uid,'system','allow_public_email_replies'))) {
$datarray['private'] = 1;
$datarray['allow_cid'] = '<' . $contact['id'] . '>';
}
$datarray['author-name'] = $contact['name'];
$datarray['author-link'] = 'mailbox';
$datarray['author-avatar'] = $contact['photo'];
$stored_item = item_store($datarray);
q("UPDATE `item` SET `last-child` = 0 WHERE `parent-uri` = '%s' AND `uid` = %d",
dbesc($datarray['parent-uri']),
intval($importer_uid)
);
q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1",
intval($stored_item)
);
switch ($mailconf[0]['action']) {
case 0:
logger("Mail: Seen before ".$msg_uid." for ".$mailconf[0]['user'].". Doing nothing.", LOGGER_DEBUG);
break;
@ -339,119 +452,7 @@ function onepoll_run(&$argv, &$argc){
if ($mailconf[0]['movetofolder'] != "")
imap_mail_move($mbox, $msg_uid, $mailconf[0]['movetofolder'], FT_UID);
break;
}*/
continue;
}
// look for a 'references' or an 'in-reply-to' header and try to match with a parent item we have locally.
// $raw_refs = ((x($headers,'references')) ? str_replace("\t",'',$headers['references']) : '');
$raw_refs = ((property_exists($meta,'references')) ? str_replace("\t",'',$meta->references) : '');
if(! trim($raw_refs))
$raw_refs = ((property_exists($meta,'in_reply_to')) ? str_replace("\t",'',$meta->in_reply_to) : '');
$raw_refs = trim($raw_refs); // Don't allow a blank reference in $refs_arr
if($raw_refs) {
$refs_arr = explode(' ', $raw_refs);
if(count($refs_arr)) {
for($x = 0; $x < count($refs_arr); $x ++)
$refs_arr[$x] = "'" . msgid2iri(str_replace(array('<','>',' '),array('','',''),dbesc($refs_arr[$x]))) . "'";
}
$qstr = implode(',',$refs_arr);
$r = q("SELECT `uri` , `parent-uri` FROM `item` WHERE `uri` IN ( $qstr ) AND `uid` = %d LIMIT 1",
intval($importer_uid)
);
if(count($r))
$datarray['parent-uri'] = $r[0]['parent-uri']; // Set the parent as the top-level item
// $datarray['parent-uri'] = $r[0]['uri'];
}
if(! x($datarray,'parent-uri'))
$datarray['parent-uri'] = $datarray['uri'];
// Decoding the header
$subject = imap_mime_header_decode($meta->subject);
$datarray['title'] = "";
foreach($subject as $subpart)
if ($subpart->charset != "default")
$datarray['title'] .= iconv($subpart->charset, 'UTF-8//IGNORE', $subpart->text);
else
$datarray['title'] .= $subpart->text;
$datarray['title'] = notags(trim($datarray['title']));
//$datarray['title'] = notags(trim($meta->subject));
$datarray['created'] = datetime_convert('UTC','UTC',$meta->date);
// Is it reply?
$reply = ((substr(strtolower($datarray['title']), 0, 3) == "re:") or
(substr(strtolower($datarray['title']), 0, 3) == "re-") or
(raw_refs != ""));
$r = email_get_msg($mbox,$msg_uid, $reply);
if(! $r) {
logger("Mail: can't fetch msg ".$msg_uid." for ".$mailconf[0]['user']);
continue;
}
$datarray['body'] = escape_tags($r['body']);
logger("Mail: Importing ".$msg_uid." for ".$mailconf[0]['user']);
// some mailing lists have the original author as 'from' - add this sender info to msg body.
// todo: adding a gravatar for the original author would be cool
if(! stristr($meta->from,$contact['addr'])) {
$from = imap_mime_header_decode($meta->from);
$fromdecoded = "";
foreach($from as $frompart)
if ($frompart->charset != "default")
$fromdecoded .= iconv($frompart->charset, 'UTF-8//IGNORE', $frompart->text);
else
$fromdecoded .= $frompart->text;
$datarray['body'] = "[b]".t('From: ') . escape_tags($fromdecoded) . "[/b]\n\n" . $datarray['body'];
}
$datarray['uid'] = $importer_uid;
$datarray['contact-id'] = $contact['id'];
if($datarray['parent-uri'] === $datarray['uri'])
$datarray['private'] = 1;
if(($contact['network'] === NETWORK_MAIL) && (! get_pconfig($importer_uid,'system','allow_public_email_replies'))) {
$datarray['private'] = 1;
$datarray['allow_cid'] = '<' . $contact['id'] . '>';
}
$datarray['author-name'] = $contact['name'];
$datarray['author-link'] = 'mailbox';
$datarray['author-avatar'] = $contact['photo'];
$stored_item = item_store($datarray);
q("UPDATE `item` SET `last-child` = 0 WHERE `parent-uri` = '%s' AND `uid` = %d",
dbesc($datarray['parent-uri']),
intval($importer_uid)
);
q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1",
intval($stored_item)
);
switch ($mailconf[0]['action']) {
case 0:
logger("Mail: Seen before ".$msg_uid." for ".$mailconf[0]['user'].". Doing nothing.", LOGGER_DEBUG);
break;
case 1:
logger("Mail: Deleting ".$msg_uid." for ".$mailconf[0]['user']);
imap_delete($mbox, $msg_uid, FT_UID);
break;
case 2:
logger("Mail: Mark as seen ".$msg_uid." for ".$mailconf[0]['user']);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
break;
case 3:
logger("Mail: Moving ".$msg_uid." to ".$mailconf[0]['movetofolder']." for ".$mailconf[0]['user']);
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
if ($mailconf[0]['movetofolder'] != "")
imap_mail_move($mbox, $msg_uid, $mailconf[0]['movetofolder'], FT_UID);
break;
}
}
}

@ -1,6 +1,6 @@
<?php
function authenticate_success($user_record, $login_initial = false, $interactive = false) {
function authenticate_success($user_record, $login_initial = false, $interactive = false, $login_refresh = false) {
$a = get_app();
@ -65,6 +65,8 @@ function authenticate_success($user_record, $login_initial = false, $interactive
if($login_initial)
logger('auth_identities: ' . print_r($a->identities,true), LOGGER_DEBUG);
if($login_refresh)
logger('auth_identities refresh: ' . print_r($a->identities,true), LOGGER_DEBUG);
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1",
intval($_SESSION['uid']));
@ -76,7 +78,7 @@ function authenticate_success($user_record, $login_initial = false, $interactive
header('X-Account-Management-Status: active; name="' . $a->user['username'] . '"; id="' . $a->user['nickname'] .'"');
if($login_initial) {
if($login_initial || $login_refresh) {
$l = get_browser_language();
q("UPDATE `user` SET `login_date` = '%s', `language` = '%s' WHERE `uid` = %d LIMIT 1",
@ -84,7 +86,8 @@ function authenticate_success($user_record, $login_initial = false, $interactive
dbesc($l),
intval($_SESSION['uid'])
);
}
if($login_initial) {
call_hooks('logged_in', $a->user);
if(($a->module !== 'home') && isset($_SESSION['return_url']))

@ -115,19 +115,9 @@ if(! x($_SESSION,'authenticated'))
header('X-Account-Management-Status: none');
/*
* Create the page head after setting the language
* and getting any auth credentials
*/
$a->init_pagehead();
/**
* Build the page ending -- this is stuff that goes right before
* the closing </body> tag
*/
$a->init_page_end();
/* set up page['htmlhead'] and page['end'] for the modules to use */
$a->page['htmlhead'] = '';
$a->page['end'] = '';
if(! x($_SESSION,'sysmsg'))
@ -300,8 +290,32 @@ if($a->module_loaded) {
$a->page['content'] .= $arr['content'];
}
if(function_exists(str_replace('-','_',current_theme()) . '_content_loaded')) {
$func = str_replace('-','_',current_theme()) . '_content_loaded';
$func($a);
}
}
/*
* Create the page head after setting the language
* and getting any auth credentials
*
* Moved init_pagehead() and init_page_end() to after
* all the module functions have executed so that all
* theme choices made by the modules can take effect
*/
$a->init_pagehead();
/**
* Build the page ending -- this is stuff that goes right before
* the closing </body> tag
*/
$a->init_page_end();
// If you're just visiting, let javascript take you home
if(x($_SESSION,'visitor_home'))
@ -366,7 +380,11 @@ if($a->module != 'install') {
* Build the page - now that we have all the components
*/
$a->page['htmlhead'] = replace_macros($a->page['htmlhead'], array('$stylesheet' => current_theme_url()));
if(!$a->theme['stylesheet'])
$stylesheet = current_theme_url();
else
$stylesheet = $a->theme['stylesheet'];
$a->page['htmlhead'] = replace_macros($a->page['htmlhead'], array('$stylesheet' => $stylesheet));
if($a->is_mobile || $a->is_tablet) {
if(isset($_SESSION['show-mobile']) && !$_SESSION['show-mobile']) {

@ -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|Chaos Friends|DFRN|Distributed Friend Network|ErrLock|Free-Beer.ch|Foojbook|Free-Haven|Friendica.eu|Friendika.me.4.it|Friendika - I Ask Questions|Frndc.com|Hikado|Hipatia|Hungerfreunde|Kaluguran Community|Kak Ste|Karl.Markx.pm|Loozah Social Club|MyFriendica.net|MyFriendNetwork|Oi!|OpenMindSpace|Optimistisch|Pplsnet|Recolutionari.es|SPRACI|Styliztique|Sysfu Social Club|theshi.re|Tumpambae|Uzmiac|Other";
aStates[253]="|Self Hosted|Private Server|Architects Of Sleep|Chaos Friends|DFRN|Distributed Friend Network|ErrLock|Free-Beer.ch|Foojbook|Free-Haven|Friendica.eu|Friendika.me.4.it|Friendika - I Ask Questions|Frndc.com|Hikado|Hipatia|Hungerfreunde|Kaluguran Community|Kak Ste|Karl.Markx.pm|Loozah Social Club|MyFriendica.net|MyFriendNetwork|Oi!|OpenMindSpace|Optimistisch|Pplsnet|Recolutionari.es|Repatr.de|SPRACI|Styliztique|Sysfu Social Club|theshi.re|Tumpambae|Uzmiac|Other";
/*
* gArCountryInfo
* (0) Country name

@ -1,6 +1,5 @@
<?php
function uexport_init(&$a){
if(! local_user())
killme();
@ -88,7 +87,8 @@ function uexport_content(&$a){
function _uexport_multirow($query) {
$result = array();
$r = q($query);
if(count($r)) {
// if(count($r)) {
if ($r){
foreach($r as $rr){
$p = array();
foreach($rr as $k => $v)
@ -102,7 +102,7 @@ function _uexport_multirow($query) {
function _uexport_row($query) {
$result = array();
$r = q($query);
if(count($r)) {
if ($r) {
foreach($r as $rr)
foreach($rr as $k => $v)
$result[$k] = $v;
@ -128,20 +128,20 @@ function uexport_account($a){
);
$photo = _uexport_multirow(
sprintf( "SELECT * FROM photo WHERE uid = %d AND profile = 1", intval(local_user()) )
sprintf( "SELECT * FROM `photo` WHERE uid = %d AND profile = 1", intval(local_user()) )
);
foreach ($photo as &$p) $p['data'] = bin2hex($p['data']);
$pconfig = _uexport_multirow(
sprintf( "SELECT * FROM pconfig WHERE uid = %d",intval(local_user()) )
sprintf( "SELECT * FROM `pconfig` WHERE uid = %d",intval(local_user()) )
);
$group = _uexport_multirow(
sprintf( "SELECT * FROM group WHERE uid = %d",intval(local_user()) )
sprintf( "SELECT * FROM `group` WHERE uid = %d",intval(local_user()) )
);
$group_member = _uexport_multirow(
sprintf( "SELECT * FROM group_member WHERE uid = %d",intval(local_user()) )
sprintf( "SELECT * FROM `group_member` WHERE uid = %d",intval(local_user()) )
);
$output = array(

@ -41,9 +41,9 @@ function uimport_content(&$a) {
'$regbutt' => t('Import'),
'$import' => array(
'title' => t("Move account"),
'text' => t("You can move here an account from another Friendica server. <br>
You need to export your account form the old server and upload it here. We will create here your old account with all your contacts. We will try also to inform you friends that you moved here.<br>
<b>This feature is experimental. We can't move here contacts from ostatus network (statusnet/identi.ca) or from diaspora"),
'text' => t("You can import an account from another Friendica server. <br>
You need to export your account from the old server and upload it here. We will recreate your old account here with all your contacts. We will try also to inform your friends that you moved here.<br>
<b>This feature is experimental. We can't import contacts from the OStatus network (statusnet/identi.ca) or from diaspora"),
'field' => array('accountfile', t('Account file'),'<input id="id_accountfile" name="accountfile" type="file">', t('To export your accont, go to "Settings->Export your porsonal data" and select "Export account"')),
),
));

@ -4,6 +4,8 @@ require_once('Photo.php');
function wall_upload_post(&$a) {
logger("wall upload: starting new upload", LOGGER_DEBUG);
if($a->argc > 1) {
if(! x($_FILES,'media')) {
$nick = $a->argv[1];
@ -160,10 +162,12 @@ function wall_upload_post(&$a) {
if ($_REQUEST['hush']!='yeah') {
/*existing code*/
if(local_user() && intval(get_pconfig(local_user(),'system','plaintext')))
if(local_user() && (intval(get_pconfig(local_user(),'system','plaintext')) || x($_REQUEST['nomce'])) ) {
echo "\n\n" . '[url=' . $a->get_baseurl() . '/photos/' . $page_owner_nick . '/image/' . $hash . '][img]' . $a->get_baseurl() . "/photo/{$hash}-{$smallest}.".$ph->getExt()."[/img][/url]\n\n";
else
}
else {
echo '<br /><br /><a href="' . $a->get_baseurl() . '/photos/' . $page_owner_nick . '/image/' . $hash . '" ><img src="' . $a->get_baseurl() . "/photo/{$hash}-{$smallest}.".$ph->getExt()."\" alt=\"$basename\" /></a><br /><br />";
}
/*existing code*/
} else {

@ -1,5 +1,5 @@
<div class='field checkbox'>
<div class='field checkbox' id='div_id_$field.0'>
<label for='id_$field.0'>$field.1</label>
<input type="checkbox" name='$field.0' id='id_$field.0' value="1" {{ if $field.2 }}checked="checked"{{ endif }}>
<span class='field_help'>$field.3</span>

@ -0,0 +1,14 @@
Drogi $[myname],
Masz nowego obserwującego na $[sitename] - '$[requestor]'.
Możesz odwiedzić jego profil na $[url].
Zaloguj się na swoją stronę by potwierdzić lub zignorować/anulować prośbę.
$[siteurl]
Pozdrawiam,
$[sitename] Administrator

@ -0,0 +1,22 @@
Drogi $[username],
Świetne wieści! '$[fn]' na '$[dfrn_url]' przyjął / przyjęła
Twoją prośbę o znajomość na '$[sitename]'.
Jesteście teraz znajomymi i możecie wymieniać się zmianami statusów, zdjęciami i wiadomościami
bez ograniczeń.
Zajrzyj na stronę 'Kontakty' na $[sitename] jeśli chcesz dokonać
zmian w tej relacji.
$[siteurl]
[Możesz np.: utworzyć oddzielny profil z informacjami, który nie będzie
dostępny dla wszystkich - i przypisać sprawdzanie uprawnień do '$[fn]'].
Z poważaniem,
$[sitename] Administrator

@ -0,0 +1,22 @@
Drogi $[username],
'$[fn]' w '$[dfrn_url]' zaakceptował
twoje połączenie na '$[sitename]'.
'$[fn]' zaakceptował Cię jako "fana", uniemożliwiając
pewne sposoby komunikacji - takie jak prywatne wiadomości czy niektóre formy
interakcji pomiędzy profilami. Jeśli jest to strona gwiazdy lub społeczności, ustawienia zostały
zastosowane automatycznie.
'$[fn]' może rozszeżyć to w dwustronną komunikację lub więcej (doprecyzować)
relacje w przyszłości.
Będziesz teraz otrzymywać aktualizacje statusu od '$[fn]',
który będzie pojawiać się na Twojej stronie "Sieć"
$[siteurl]
Z poważaniem,
Administrator $[sitename]

@ -0,0 +1,32 @@
$[username],
Ze strony $[sitename] wpłynęła prośba z zresetowanie
hasła. W celu potwierdzenia kliknij w weryfikacyjny link
zamieszczony poniżej, lub wklej go do pasku adresu twojej przeglądarki.
Jeśli uważasz, że wiadomość nie jest przeznaczona dla ciebie, nie klikaj w linka!
Zignoruj tego emaila i usuń.
Twoje hasło nie może zostać zmienione zanim nie potwierdzimy
twojego żądania.
Aby potwierdzić kliknik w link weryfikacyjny:
$[reset_link]
Otrzymasz od nas wiadomość zwrotną zawierającą nowe hasło.
Po zalogowaniu się, będziesz miał możliwość zmiany hasła na takie jakie chcesz.
Dane do zalogowania:
Adres strony: $[siteurl]
Login: $[email]
Z poważaniem,
$[sitename] Administrator

File diff suppressed because it is too large Load Diff

@ -0,0 +1,20 @@
Drogi $[username],
Twoje hasło zostało zmienione. Zachowaj tę
Informację dla dokumentacji (lub zmień swoje hasło
na takie, które zapamiętasz).
Dane do logowania:
Strona:»$[siteurl]
Twój login:»$[email]
Twoje nowe hasło:»$[new_password]
Po zalogowaniu możesz zmienić swoje hasło w ustawieniach konta
Z poważaniem,
$[sitename] Administrator

@ -0,0 +1,36 @@
Drogi $[username],
Dziękujemy za rejestrację na $[sitename]. Twoje konto zostało utworzone pomyślnie.
Dane do logowania:
Strona:»$[siteurl]
Twój Nick:»$[email]
Hasło:»$[password]
Możesz zmienić swoje hasło odwiedzając zakładkę ustawienia konta po zalogowaniu
się.
Przejrzyj też inne ustawienia konta. To zajmie Ci tylko chwilę.
Jeżeli chcesz, by inni mogli Cię łatwo znaleść wystarczy dodać podstawowe informacje
o sobie na stronie "Profile".
Zalecamy dodać prawdziwe imię i nazwisko, zdjęcie profilowe,
słowa kluczowe (pomocne w zdobywaniu nowych przyjaciół) - i
może kraj, w którym mieszkasz, jeżeli nie chcesz dodać bardziej szczegółowych
informacji niż ta.
Szanujemy też twoją prywatność, więc żadna z podpowiadanych wyżej czynności nie jest przymusowa.
Jeżeli jesteś nowy i nie znasz tu nikogo, mogą one jedynie
pomóć w zdobywaniu nowych znajomości.
Dziękujemy i witamy na $[sitename].
Z poważaniem,
$[sitename] Administrator

@ -0,0 +1,25 @@
Nowy wniosek o rejestrację użytkownika wpłynął na $[sitename] i wymaga
potwierdzenia.
Oto szczegóły konta:
Pełna nazwa:»$[username]
Jesteś na: $[siteurl]
Login:»$[email]
Aby potwierdzić rejestrację wejdź na:
$[siteurl]/regmod/allow/$[hash]
Aby anulować rejestrację i usunąć konto wejdź na:
$[siteurl]/regmod/deny/$[hash]
Dziękuję.

@ -0,0 +1,17 @@
Drogi/a $[myname],
Otrzymałeś właśnie zaproszenie do znajomych na stronie $[sitename]
od '$[requestor]'.
Skorzystaj z tego linku, aby odwiedzić jego profil: $[url].
Proszę się zalogować, aby zobaczyć pełen opis
i zaakceptować lub zignorować / anulować.
$[siteurl]
Pozdrawiam
$[sitename] administrator

File diff suppressed because it is too large Load Diff

@ -0,0 +1,11 @@
Hey,
Jestem $sitename.
Deweloperzy friendica wydali ostatnio aktualizację $update,
ale kiedy próbowałem ją zainstalować, coś poszło nie tak.
To musi być szybko poprawione, ale nie mogę zrobić tego sam. Proszę o kontakt z
deweloperami friendica, jeśli nie możesz mi pomóc na własną rękę. Moja baza danych może być uszkodzona.
Komunikat o błędzie: '$error'.
Przepraszam,
twój serwer friendica w $siteurl

@ -11,7 +11,7 @@
<?php if( $a->module === 'home' ) { ?>
<center>
<div class="login-button">
<a href="login" class="login-button-link"><img class="login-button-image" src="/images/friendica-1600.png" title="Click to log in"></a>
<a href="login" class="login-button-link"><img class="login-button-image" src="images/friendica-1600.png" title="Click to log in"></a>
</div>
</center>

@ -5,7 +5,7 @@
<script type="text/javascript">
tinyMCE.init({ mode : "none"});
</script>-->
<script type="text/javascript" src="$baseurl/view/theme/frost/js/jquery.divgrow-1.3.1.min.js" ></script>
<script type="text/javascript" src="$baseurl/view/theme/frost-mobile/js/main.min.js" ></script>
<script type="text/javascript" src="$baseurl/js/jquery.textinputs.js" ></script>
<script type="text/javascript" src="$baseurl/view/theme/frost-mobile/js/fk.autocomplete.min.js" ></script>
<!--<script type="text/javascript" src="$baseurl/library/fancybox/jquery.fancybox-1.3.4.pack.js"></script>-->

@ -1,5 +1,5 @@
<div class='field checkbox'>
<div class='field checkbox' id='div_id_$field.0'>
<label id='label_id_$field.0' for='id_$field.0'>$field.1</label>
<input type="checkbox" name='$field.0' id='id_$field.0' value="1" {{ if $field.2 }}checked="checked"{{ endif }}><br />
<span class='field_help' id='help_id_$field.0'>$field.3</span>

@ -29,5 +29,5 @@
</script>
<script type="text/javascript" src="$baseurl/js/jquery.js" ></script>
<script type="text/javascript">var $j = jQuery.noConflict();</script>
<script type="text/javascript" src="$baseurl/view/theme/frost-mobile/js/main.min.js" ></script>
<script type="text/javascript" src="$baseurl/view/theme/frost-mobile/js/jquery.divgrow-1.3.1.f1.min.js" ></script>

@ -0,0 +1,92 @@
/*
* Copyright (c) 2010 Simon Hibbard
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
/*
* Version: V1.3.1-f1
* Release: 22-12-2010
* Based on jQuery 1.4.2
*
* 2012-10-29: Modified by Zach Prezkuta to allow dynamic full heights
*/
(function ($) {
var divgrowid = 0;
$.fn.divgrow = function (options) {
var options = $.extend({}, { initialHeight: 100, moreText: "+ Show More", lessText: "- Show Less", speed: 1000, showBrackets: true }, options);
return this.each(function () {
divgrowid++;
obj = $(this);
//var fullHeight = obj.height() + 10;
obj.css('height', options.initialHeight).css('overflow', 'hidden');
if (options.showBrackets) {
obj.after('<p class="divgrow-brackets">[&hellip;]</p><a href="#" class="divgrow-showmore' + " divgrow-obj-" + divgrowid + '"' + '></a>');
}
else {
obj.after('<a href="#" class="divgrow-showmore' + " divgrow-obj-" + divgrowid + '"' + '></a>');
}
$("a.divgrow-showmore").html(options.moreText);
$("." + "divgrow-obj-" + divgrowid).toggle(function () {
//alert(obj.attr('class'));
// Set the height from the elements rel value
//var height = $(this).prevAll("div:first").attr('rel');
var fullHeight = $(this).prevAll("div:first")[0].scrollHeight + 10;
$(this).prevAll("div:first").animate({ height: fullHeight + "px" }, options.speed, function () { // Animation complete.
// Hide the overlay text when expanded, change the link text
if (options.showBrackets) {
$(this).nextAll("p.divgrow-brackets:first").fadeOut();
}
$(this).nextAll("a.divgrow-showmore:first").html(options.lessText);
});
}, function () {
$(this).prevAll("div:first").stop(true, false).animate({ height: options.initialHeight }, options.speed, function () { // Animation complete.
// show the overlay text while closed, change the link text
if (options.showBrackets) {
$(this).nextAll("p.divgrow-brackets:first").stop(true, false).fadeIn();
}
$(this).nextAll("a.divgrow-showmore:first").stop(true, false).html(options.moreText);
});
});
});
};
})(jQuery);

@ -0,0 +1,30 @@
/*
* Copyright (c) 2010 Simon Hibbard
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*//*
* Version: V1.3.1-f1
* Release: 22-12-2010
* Based on jQuery 1.4.2
*
* 2012-10-29: Modified by Zach Prezkuta to allow dynamic full heights
*/(function(e){var t=0;e.fn.divgrow=function(n){var n=e.extend({},{initialHeight:100,moreText:"+ Show More",lessText:"- Show Less",speed:1e3,showBrackets:!0},n);return this.each(function(){t++,obj=e(this),obj.css("height",n.initialHeight).css("overflow","hidden"),n.showBrackets?obj.after('<p class="divgrow-brackets">[&hellip;]</p><a href="#" class="divgrow-showmore divgrow-obj-'+t+'"'+"></a>"):obj.after('<a href="#" class="divgrow-showmore divgrow-obj-'+t+'"'+"></a>"),e("a.divgrow-showmore").html(n.moreText),e(".divgrow-obj-"+t).toggle(function(){var t=e(this).prevAll("div:first")[0].scrollHeight+10;e(this).prevAll("div:first").animate({height:t+"px"},n.speed,function(){n.showBrackets&&e(this).nextAll("p.divgrow-brackets:first").fadeOut(),e(this).nextAll("a.divgrow-showmore:first").html(n.lessText)})},function(){e(this).prevAll("div:first").stop(!0,!1).animate({height:n.initialHeight},n.speed,function(){n.showBrackets&&e(this).nextAll("p.divgrow-brackets:first").stop(!0,!1).fadeIn(),e(this).nextAll("a.divgrow-showmore:first").stop(!0,!1).html(n.moreText)})})})}})(jQuery);

@ -38,6 +38,8 @@
msie = $j.browser.msie ;
collapseHeight();
/* setup tooltips *//*
$j("a,.tt").each(function(){
var e = $j(this);
@ -333,20 +335,7 @@
});
var bimgs = $j(".wall-item-body > img").not(function() { return this.complete; });
var bimgcount = bimgs.length;
if (bimgcount) {
bimgs.load(function() {
bimgcount--;
if (! bimgcount) {
collapseHeight();
}
});
} else {
collapseHeight();
}
collapseHeight();
// reset vars for inserting individual items
@ -385,14 +374,18 @@
});
}
function collapseHeight() {
$j(".wall-item-body").each(function() {
if($j(this).height() > 310) {
if(! $j(this).hasClass('divmore')) {
$j(this).divgrow({ initialHeight: 300, showBrackets: false, speed: 0 });
$j(this).addClass('divmore');
}
}
function collapseHeight(elems) {
var elemName = '.wall-item-body:not(.divmore)';
if(typeof elems != 'undefined') {
elemName = elems + ' ' + elemName;
}
$j(elemName).each(function() {
if($j(this).height() > 350) {
$j('html').height($j('html').height());
$j(this).divgrow({ initialHeight: 300, showBrackets: false, speed: 0 });
$j(this).addClass('divmore');
$j('html').height('auto');
}
});
}
@ -542,6 +535,7 @@
else {
$j("#collapsed-comments-" + id).show();
$j("#hide-comments-" + id).html(window.showFewer);
collapseHeight("#collapsed-comments-" + id);
}
}

File diff suppressed because one or more lines are too long

@ -9,7 +9,7 @@ $j(document).ready(function() {
case 'jot-header':
var uploader = new window.AjaxUpload(
'wall-image-upload',
{ action: 'wall_upload/'+window.nickname,
{ action: 'wall_upload/'+window.nickname+'?nomce=1',
name: 'userfile',
onSubmit: function(file,ext) { $j('#profile-rotator').show(); },
onComplete: function(file,response) {
@ -21,7 +21,7 @@ $j(document).ready(function() {
var file_uploader = new window.AjaxUpload(
'wall-file-upload',
{ action: 'wall_attach/'+window.nickname,
{ action: 'wall_attach/'+window.nickname+'?nomce=1',
name: 'userfile',
onSubmit: function(file,ext) { $j('#profile-rotator').show(); },
onComplete: function(file,response) {
@ -34,7 +34,7 @@ $j(document).ready(function() {
case 'msg-header':
var uploader = new window.AjaxUpload(
'prvmail-upload',
{ action: 'wall_upload/' + window.nickname,
{ action: 'wall_upload/'+window.nickname+'?nomce=1',
name: 'userfile',
onSubmit: function(file,ext) { $j('#profile-rotator').show(); },
onComplete: function(file,response) {
@ -251,14 +251,14 @@ function insertFormatting(comment,BBcode,id) {
textarea.focus();
selected = document.selection.createRange();
if (BBcode == "url"){
selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]";
selected.text = "["+BBcode+"=http://]" + selected.text + "[/"+BBcode+"]";
} else
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
if (BBcode == "url"){
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + "http://" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"=http://]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
} else
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
}

File diff suppressed because one or more lines are too long

@ -24,15 +24,17 @@ div.jGrowl div.notice {
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
color: #ffffff;
padding-left: 58px;
margin: 0px;
}
div.jGrowl div.info {
background: #364e59 url("../../../images/icons/48/info.png") no-repeat 5px center;
color: #ffffff;
padding-left: 58px;
margin: 0px;
}
#jGrowl.top-right {
top: 15px;
right: 15px;
right: 10px;
}
.login-button {
@ -75,6 +77,20 @@ div.section-wrapper {
margin-left: 50px;
}
.field.checkbox label {
margin-left: auto;
float: auto;
/*margin-left: 100px;*/
}
.field.checkbox input {
width: auto;
margin-left: 30px;
}
#div_id_remember {
margin-top: 10px;
}
#login_openid {
margin-top: 50px;
}

@ -25,6 +25,8 @@
<input type="submit" name="submit" id="login-submit-button" value="$login" />
</div>
{{ inc field_checkbox.tpl with $field=$lremember }}{{ endinc }}
<br /><br />
<div class="login-extra-links">
{{ if $register }}<a href="register" title="$register.title" id="register-link">$register.desc</a>{{ endif }}

@ -1,2 +1,2 @@
<link rel="stylesheet" href="$baseurl/view/theme/frost-mobile/login-style.css" type="text/css" media="all" />
<!--<link rel="stylesheet" href="$baseurl/view/theme/frost-mobile/login-style.css" type="text/css" media="all" />-->

@ -65,7 +65,7 @@ img { border :0px; }
width: 384px;
}*/
code {
/*code {
font-family: Courier, monospace;
white-space: pre;
display: block;
@ -85,6 +85,24 @@ blockquote {
margin-right: 0px;
width: 260px;
overflow: hidden;
}*/
code {
font-family: Courier, monospace;
white-space: pre;
display: block;
overflow: auto;
border: 1px solid #444;
background: #EEE;
color: #444;
padding: 10px;
margin-top: 20px;
}
blockquote {
background-color: #f4f8f9;
border-left: 4px solid #dae4ee;
padding: 0.4em;
}
.icollapse-wrapper, .ccollapse-wrapper {
@ -1368,10 +1386,19 @@ input#dfrn-url {
-webkit-border-radius: 0;
}
.wall-item-content blockquote {
margin-left: 0px;
margin-right: 0px;
}
.comment .wall-item-content img {
max-width: 280px;
}
.comment .wall-item-content ul {
padding-left: 1.5em;
}
.divgrow-showmore {
display: block;
clear: both;
@ -1411,7 +1438,6 @@ input#dfrn-url {
}
.wall-item-body code {
width: 260px;
overflow: hidden;
}
@ -1421,12 +1447,6 @@ input#dfrn-url {
/* width: 280px;*/
}
.comment .wall-item-body blockquote {
margin-left: 0px;
margin-right: 0px;
width: 260px;
}
.wall-item-tools {
clear: both;
/* background-image: url("head.jpg");
@ -3404,6 +3424,7 @@ aside input[type='text'] {
}
.field .onoff {
float: left;
width: 80px;
@ -3714,6 +3735,7 @@ aside input[type='text'] {
background-size: 100% 100%;
background-image: url('images/star.png');
background-repeat: no-repeat;
opacity: 0.5;
}
/*.tagged { background-position: -48px -48px; }*/
@ -3863,15 +3885,17 @@ div.jGrowl div.notice {
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
color: #ffffff;
padding-left: 58px;
margin: 0px;
}
div.jGrowl div.info {
background: #364e59 url("../../../images/icons/48/info.png") no-repeat 5px center;
color: #ffffff;
padding-left: 58px;
margin: 0px;
}
#jGrowl.top-right {
top: 15px;
right: 15px;
right: 10px;
}
.qcomment {
border: 1px solid #EEE;
@ -4009,7 +4033,7 @@ width:650px;
}
}*/
@media only screen and (min-device-width: 768px)
/*@media only screen and (min-device-width: 768px)
{
.wall-item-body code {
width: 700px;
@ -4023,5 +4047,5 @@ width:650px;
width: 700px;
}
}
}*/

@ -4,29 +4,27 @@
* Name: Frost--mobile version
* Description: Like frosted glass
* Credits: Navigation icons taken from http://iconza.com. Other icons taken from http://thenounproject.com, including: Like, Dislike, Black Lock, Unlock, Pencil, Tag, Camera, Paperclip (Marie Coons), Folder (Sergio Calcara), Chain-link (Andrew Fortnum), Speaker (Harold Kim), Quotes (Henry Ryder), Video Camera (Anas Ramadan), and Left Arrow, Right Arrow, and Delete X (all three P.J. Onori). All under Attribution (CC BY 3.0). Others from The Noun Project are public domain or No Rights Reserved (CC0).
* Version: Version 0.2.15
* Version: Version 0.2.16
* Author: Zach P <techcity@f.shmuz.in>