Merge commit 'upstream/master'

This commit is contained in:
Michael Vogel 2012-03-15 21:11:58 +01:00
commit 9243c9fc14
114 changed files with 2818 additions and 868 deletions

3
.gitignore vendored
View File

@ -13,6 +13,9 @@ addon
#ignore documentation, it should be newly built #ignore documentation, it should be newly built
doc/api doc/api
#ignore reports, should be generted with every build
report/
#ignore config files from eclipse, we don't want IDE files in our repository #ignore config files from eclipse, we don't want IDE files in our repository
.project .project
.buildpath .buildpath

View File

@ -5,6 +5,9 @@ AddType audio/ogg .oga
<FilesMatch "\.(out|log)$"> <FilesMatch "\.(out|log)$">
Deny from all Deny from all
</FilesMatch> </FilesMatch>
<Files "(include|library)">
Deny from all
</Files>
<IfModule mod_rewrite.c> <IfModule mod_rewrite.c>
RewriteEngine on RewriteEngine on

View File

@ -9,8 +9,8 @@ require_once('include/nav.php');
require_once('include/cache.php'); require_once('include/cache.php');
define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_VERSION', '2.3.1277' ); define ( 'FRIENDICA_VERSION', '2.3.1281' );
define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
define ( 'DB_UPDATE_VERSION', 1131 ); define ( 'DB_UPDATE_VERSION', 1131 );
define ( 'EOL', "<br />\r\n" ); define ( 'EOL', "<br />\r\n" );
@ -379,11 +379,22 @@ class App {
$scheme = $this->scheme; $scheme = $this->scheme;
if(x($this->config,'ssl_policy')) { if((x($this->config,'system')) && (x($this->config['system'],'ssl_policy'))) {
if(($ssl) || ($this->config['ssl_policy'] == SSL_POLICY_FULL)) if($this->config['system']['ssl_policy'] == SSL_POLICY_FULL)
$scheme = 'https';
if(($this->config['ssl_policy'] == SSL_POLICY_SELFSIGN) && (local_user() || x($_POST,'auth-params')))
$scheme = 'https'; $scheme = 'https';
// We need to populate the $ssl flag across the entire program before turning this on.
// Basically, we'll have $ssl = true on any links which can only be seen by a logged in user
// (and also the login link). Anything seen by an outsider will have it turned off.
// At present, setting SSL_POLICY_SELFSIGN will only force remote contacts to update their
// contact links to this site with "http:" if they are currently using "https:"
// if($this->config['system']['ssl_policy'] == SSL_POLICY_SELFSIGN) {
// if($ssl)
// $scheme = 'https';
// else
// $scheme = 'http';
// }
} }
$this->baseurl = $scheme . "://" . $this->hostname . ((isset($this->path) && strlen($this->path)) ? '/' . $this->path : '' ); $this->baseurl = $scheme . "://" . $this->hostname . ((isset($this->path) && strlen($this->path)) ? '/' . $this->path : '' );
@ -685,6 +696,7 @@ function get_guid($size=16) {
if(! function_exists('login')) { if(! function_exists('login')) {
function login($register = false, $hiddens=false) { function login($register = false, $hiddens=false) {
$a = get_app();
$o = ""; $o = "";
$reg = false; $reg = false;
if ($register) { if ($register) {
@ -704,8 +716,11 @@ function login($register = false, $hiddens=false) {
} }
$dest_url = $a->get_baseurl(true) . '/' . $a->query_string;
$o .= replace_macros($tpl,array( $o .= replace_macros($tpl,array(
'$dest_url' => $dest_url,
'$logout' => t('Logout'), '$logout' => t('Logout'),
'$login' => t('Login'), '$login' => t('Login'),
@ -1209,7 +1224,7 @@ function current_theme(){
$a = get_app(); $a = get_app();
$system_theme = ((isset($a->config['system']['theme'])) ? $a->config['system']['theme'] : ''); $system_theme = ((isset($a->config['system']['theme'])) ? $a->config['system']['theme'] : '');
$theme_name = ((is_array($_SESSION) && x($_SESSION,'theme')) ? $_SESSION['theme'] : $system_theme); $theme_name = ((isset($_SESSION) && x($_SESSION,'theme')) ? $_SESSION['theme'] : $system_theme);
if($theme_name && file_exists('view/theme/' . $theme_name . '/style.css')) if($theme_name && file_exists('view/theme/' . $theme_name . '/style.css'))
return($theme_name); return($theme_name);
@ -1335,7 +1350,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
array( array(
'label' => t('Profile'), 'label' => t('Profile'),
'url' => $url.'/?tab=profile', 'url' => $url.'/?tab=profile',
'sel' => (($tab=='profile')?'active':''), 'sel' => ((isset($tab) && $tab=='profile')?'active':''),
), ),
array( array(
'label' => t('Photos'), 'label' => t('Photos'),

View File

@ -1,14 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project name="friendica" default="test"> <project name="friendica" default="test">
<!-- ====================================================== -->
<!-- Target: clean-test -->
<!-- deletes directories with old test reports -->
<!-- ====================================================== -->
<target name="clean-test">
<delete dir="report" />
</target>
<!-- ====================================================== -->
<!-- Target: prepare-test -->
<!-- creates directories for test reports -->
<!-- ====================================================== -->
<target name="prepare-test" depends="clean-test">
<mkdir dir="report" />
</target>
<!-- =================================== --> <!-- =================================== -->
<!-- Target: test --> <!-- Target: test -->
<!-- this target runs all test files --> <!-- this target runs all test files -->
<!-- =================================== --> <!-- =================================== -->
<target name="test" depends="prepare-test">
<target name="test"> <!-- coverage-setup database="./report/coverage-database">
<!-- there are no tests by now, so, nothing to do --> <fileset dir=".">
<include name="**/*.php" />
<exclude name="*test.php"/>
<exclude name="index.php"/>
<exclude name="library/**"/>
<exclude name="doc/**"/>
<exclude name=".."/>
</fileset>
</coverage-setup -->
<phpunit printsummary="true">
<batchtest>
<fileset dir="tests">
<include name="*test.php" />
</fileset>
</batchtest>
<formatter type="xml" todir="report" outfile="testlog.xml" />
</phpunit>
<phpunitreport infile="report/testlog.xml" todir="report" />
<!-- coverage-report outfile="report/coverage-database">
<report todir="report" styledir="/home/phing/etc" />
</coverage-report -->
</target> </target>
<!-- ===================================================== --> <!-- ===================================================== -->
@ -31,6 +66,9 @@
<docblox title="Friendica API" destdir="./doc/api"> <docblox title="Friendica API" destdir="./doc/api">
<fileset dir="."> <fileset dir=".">
<include name="**/*.php" /> <include name="**/*.php" />
<include name="README"/>
<include name="INSTALL.txt"/>
<include name="LICENSE"/>
</fileset> </fileset>
</docblox> </docblox>
</target> </target>

View File

@ -75,4 +75,33 @@ function networks_widget($baseurl,$selected = '') {
)); ));
} }
function fileas_widget($baseurl,$selected = '') {
$a = get_app();
if(! local_user())
return '';
$saved = get_pconfig(local_user(),'system','filetags');
if(! strlen($saved))
return;
$matches = false;
$terms = array();
$cnt = preg_match_all('/\[(.*?)\]/',$saved,$matches,PREG_SET_ORDER);
if($cnt) {
foreach($matches as $mtch) {
$unescaped = file_tag_decode($mtch[1]);
$terms[] = array('name' => $unescaped,'selected' => (($selected == $unescaped) ? 'selected' : ''));
}
}
return replace_macros(get_markup_template('fileas_widget.tpl'),array(
'$title' => t('File Selections'),
'$desc' => '',
'$sel_all' => (($selected == '') ? 'selected' : ''),
'$all' => t('Everything'),
'$terms' => $terms,
'$base' => $baseurl,
));
}

View File

@ -186,6 +186,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
require_once('bbcode.php'); require_once('bbcode.php');
$ssl_state = ((local_user()) ? true : false);
$profile_owner = 0; $profile_owner = 0;
$page_writeable = false; $page_writeable = false;
@ -345,7 +347,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
'like' => '', 'like' => '',
'dislike' => '', 'dislike' => '',
'comment' => '', 'comment' => '',
'conv' => (($preview) ? '' : array('href'=> $a->get_baseurl() . '/display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))), 'conv' => (($preview) ? '' : array('href'=> $a->get_baseurl($ssl_state) . '/display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))),
'previewing' => $previewing, 'previewing' => $previewing,
'wait' => t('Please wait'), 'wait' => t('Please wait'),
); );
@ -375,7 +377,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
$comments[$item['parent']] = 1; $comments[$item['parent']] = 1;
else else
$comments[$item['parent']] += 1; $comments[$item['parent']] += 1;
} } elseif(! x($comments,$item['parent']))
$comments[$item['parent']] = 0; // avoid notices later on
} }
// map all the like/dislike activities for each parent item // map all the like/dislike activities for each parent item
@ -460,7 +463,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
$comment_lastcollapsed = true; $comment_lastcollapsed = true;
} }
$redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ; $redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $item['cid'] ;
$lock = ((($item['private']) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) $lock = ((($item['private']) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
|| strlen($item['deny_cid']) || strlen($item['deny_gid'])))) || strlen($item['deny_cid']) || strlen($item['deny_gid']))))
@ -542,7 +545,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
} }
$edpost = (((($profile_owner == local_user()) && ($toplevelpost) && (intval($item['wall']) == 1)) || ($mode === 'notes')) $edpost = (((($profile_owner == local_user()) && ($toplevelpost) && (intval($item['wall']) == 1)) || ($mode === 'notes'))
? array($a->get_baseurl()."/editpost/".$item['id'], t("Edit")) ? array($a->get_baseurl($ssl_state)."/editpost/".$item['id'], t("Edit"))
: False); : False);
@ -559,8 +562,11 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
); );
$star = false; $star = false;
$filer = false;
$isstarred = "unstarred"; $isstarred = "unstarred";
if ($profile_owner == local_user() && $toplevelpost) { if ($profile_owner == local_user()) {
if($toplevelpost) {
$isstarred = (($item['starred']) ? "starred" : "unstarred"); $isstarred = (($item['starred']) ? "starred" : "unstarred");
$star = array( $star = array(
@ -574,7 +580,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
'classtagger' => "", 'classtagger' => "",
); );
} }
$filer = t("file as");
}
$photo = $item['photo']; $photo = $item['photo'];
@ -670,6 +677,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
'edpost' => $edpost, 'edpost' => $edpost,
'isstarred' => $isstarred, 'isstarred' => $isstarred,
'star' => $star, 'star' => $star,
'filer' => $filer,
'drop' => $drop, 'drop' => $drop,
'vote' => $likebuttons, 'vote' => $likebuttons,
'like' => $like, 'like' => $like,
@ -691,7 +699,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
$page_template = get_markup_template("conversation.tpl"); $page_template = get_markup_template("conversation.tpl");
$o .= replace_macros($page_template, array( $o .= replace_macros($page_template, array(
'$baseurl' => $a->get_baseurl(), '$baseurl' => $a->get_baseurl($ssl_state),
'$mode' => $mode, '$mode' => $mode,
'$user' => $a->user, '$user' => $a->user,
'$threads' => $threads, '$threads' => $threads,
@ -701,7 +709,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
return $o; return $o;
}} }}
function best_link_url($item,&$sparkle) { function best_link_url($item,&$sparkle,$ssl_state = false) {
$a = get_app(); $a = get_app();
@ -713,7 +721,7 @@ function best_link_url($item,&$sparkle) {
if((local_user()) && (local_user() == $item['uid'])) { if((local_user()) && (local_user() == $item['uid'])) {
if(isset($a->contacts) && x($a->contacts,$clean_url)) { if(isset($a->contacts) && x($a->contacts,$clean_url)) {
if($a->contacts[$clean_url]['network'] === NETWORK_DFRN) { if($a->contacts[$clean_url]['network'] === NETWORK_DFRN) {
$best_url = $a->get_baseurl() . '/redir/' . $a->contacts[$clean_url]['id']; $best_url = $a->get_baseurl($ssl_state) . '/redir/' . $a->contacts[$clean_url]['id'];
$sparkle = true; $sparkle = true;
} }
else else
@ -735,9 +743,13 @@ if(! function_exists('item_photo_menu')){
function item_photo_menu($item){ function item_photo_menu($item){
$a = get_app(); $a = get_app();
if (local_user() && (! count($a->contacts))) $ssl_state = false;
load_contact_links(local_user());
if(local_user()) {
$ssl_state = true;
if(! count($a->contacts))
load_contact_links(local_user());
}
$contact_url=""; $contact_url="";
$pm_url=""; $pm_url="";
$status_link=""; $status_link="";
@ -745,7 +757,7 @@ function item_photo_menu($item){
$posts_link=""; $posts_link="";
$sparkle = false; $sparkle = false;
$profile_link = best_link_url($item,$sparkle); $profile_link = best_link_url($item,$sparkle,$ssl_state);
if($profile_link === 'mailbox') if($profile_link === 'mailbox')
$profile_link = ''; $profile_link = '';
@ -754,7 +766,7 @@ function item_photo_menu($item){
$status_link = $profile_link . "?url=status"; $status_link = $profile_link . "?url=status";
$photos_link = $profile_link . "?url=photos"; $photos_link = $profile_link . "?url=photos";
$profile_link = $profile_link . "?url=profile"; $profile_link = $profile_link . "?url=profile";
$pm_url = $a->get_baseurl() . '/message/new/' . $cid; $pm_url = $a->get_baseurl($ssl_state) . '/message/new/' . $cid;
} }
else { else {
if(local_user() && local_user() == $item['uid'] && link_compare($item['url'],$item['author-link'])) { if(local_user() && local_user() == $item['uid'] && link_compare($item['url'],$item['author-link'])) {
@ -765,8 +777,8 @@ function item_photo_menu($item){
} }
} }
if(($cid) && (! $item['self'])) { if(($cid) && (! $item['self'])) {
$contact_url = $a->get_baseurl() . '/contacts/' . $cid; $contact_url = $a->get_baseurl($ssl_state) . '/contacts/' . $cid;
$posts_link = $a->get_baseurl() . '/network/?cid=' . $cid; $posts_link = $a->get_baseurl($ssl_state) . '/network/?cid=' . $cid;
} }
$menu = Array( $menu = Array(
@ -802,7 +814,7 @@ function like_puller($a,$item,&$arr,$mode) {
if((activity_match($item['verb'],$verb)) && ($item['id'] != $item['parent'])) { if((activity_match($item['verb'],$verb)) && ($item['id'] != $item['parent'])) {
$url = $item['author-link']; $url = $item['author-link'];
if((local_user()) && (local_user() == $item['uid']) && ($item['network'] === 'dfrn') && (! $item['self']) && (link_compare($item['author-link'],$item['url']))) { if((local_user()) && (local_user() == $item['uid']) && ($item['network'] === 'dfrn') && (! $item['self']) && (link_compare($item['author-link'],$item['url']))) {
$url = $a->get_baseurl() . '/redir/' . $item['contact-id']; $url = $a->get_baseurl(true) . '/redir/' . $item['contact-id'];
$sparkle = ' class="sparkle" '; $sparkle = ' class="sparkle" ';
} }
if(! ((isset($arr[$item['parent'] . '-l'])) && (is_array($arr[$item['parent'] . '-l'])))) if(! ((isset($arr[$item['parent'] . '-l'])) && (is_array($arr[$item['parent'] . '-l']))))
@ -864,7 +876,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) {
$a->page['htmlhead'] .= replace_macros($tpl, array( $a->page['htmlhead'] .= replace_macros($tpl, array(
'$newpost' => 'true', '$newpost' => 'true',
'$baseurl' => $a->get_baseurl(), '$baseurl' => $a->get_baseurl(true),
'$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'), '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
'$geotag' => $geotag, '$geotag' => $geotag,
'$nickname' => $x['nickname'], '$nickname' => $x['nickname'],
@ -873,6 +885,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) {
'$vidurl' => t("Please enter a video link/URL:"), '$vidurl' => t("Please enter a video link/URL:"),
'$audurl' => t("Please enter an audio link/URL:"), '$audurl' => t("Please enter an audio link/URL:"),
'$term' => t('Tag term:'), '$term' => t('Tag term:'),
'$fileas' => t('File as:'),
'$whereareu' => t('Where are you right now?'), '$whereareu' => t('Where are you right now?'),
'$title' => t('Enter a title for this item') '$title' => t('Enter a title for this item')
)); ));
@ -914,8 +927,8 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) {
$o .= replace_macros($tpl,array( $o .= replace_macros($tpl,array(
'$return_path' => $a->cmd, '$return_path' => $a->cmd,
'$action' => $a->get_baseurl().'/item', '$action' => $a->get_baseurl(true) . '/item',
'$share' => (($x['button']) ? $x['button'] : t('Share')), '$share' => (x($x,'button') ? $x['button'] : t('Share')),
'$upload' => t('Upload photo'), '$upload' => t('Upload photo'),
'$shortupload' => t('upload photo'), '$shortupload' => t('upload photo'),
'$attach' => t('Attach file'), '$attach' => t('Attach file'),
@ -938,7 +951,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) {
'$ptyp' => (($notes_cid) ? 'note' : 'wall'), '$ptyp' => (($notes_cid) ? 'note' : 'wall'),
'$content' => '', '$content' => '',
'$post_id' => '', '$post_id' => '',
'$baseurl' => $a->get_baseurl(), '$baseurl' => $a->get_baseurl(true),
'$defloc' => $x['default_location'], '$defloc' => $x['default_location'],
'$visitor' => $x['visitor'], '$visitor' => $x['visitor'],
'$pvisit' => (($notes_cid) ? 'none' : $x['visitor']), '$pvisit' => (($notes_cid) ? 'none' : $x['visitor']),
@ -980,8 +993,8 @@ function conv_sort($arr,$order) {
usort($parents,'sort_thr_commented'); usort($parents,'sort_thr_commented');
if(count($parents)) if(count($parents))
foreach($parents as $x) foreach($parents as $i=>$_x)
$x['children'] = array(); $parents[$i]['children'] = array();
foreach($arr as $x) { foreach($arr as $x) {
if($x['id'] != $x['parent']) { if($x['id'] != $x['parent']) {

View File

@ -163,7 +163,7 @@ function bbtoevent($s) {
if(preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",$s,$match)) if(preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",$s,$match))
$ev['adjust'] = $match[1]; $ev['adjust'] = $match[1];
$match = ''; $match = '';
$ev['nofinish'] = (($ev['start'] && (!x($ev, 'finish') || !$ev['finish'])) ? 1 : 0); $ev['nofinish'] = (((x($ev, 'start') && $ev['start']) && (!x($ev, 'finish') || !$ev['finish'])) ? 1 : 0);
return $ev; return $ev;
} }

View File

@ -682,7 +682,7 @@ function item_store($arr,$force_parent = false) {
unset($arr['dsprsig']); unset($arr['dsprsig']);
} }
if($arr['gravity']) if(x($arr, 'gravity'))
$arr['gravity'] = intval($arr['gravity']); $arr['gravity'] = intval($arr['gravity']);
elseif($arr['parent-uri'] === $arr['uri']) elseif($arr['parent-uri'] === $arr['uri'])
$arr['gravity'] = 0; $arr['gravity'] = 0;
@ -742,6 +742,7 @@ function item_store($arr,$force_parent = false) {
if($arr['parent-uri'] === $arr['uri']) { if($arr['parent-uri'] === $arr['uri']) {
$parent_id = 0; $parent_id = 0;
$parent_deleted = 0;
$allow_cid = $arr['allow_cid']; $allow_cid = $arr['allow_cid'];
$allow_gid = $arr['allow_gid']; $allow_gid = $arr['allow_gid'];
$deny_cid = $arr['deny_cid']; $deny_cid = $arr['deny_cid'];
@ -800,6 +801,8 @@ function item_store($arr,$force_parent = false) {
logger('item_store: item parent was not found - ignoring item'); logger('item_store: item parent was not found - ignoring item');
return 0; return 0;
} }
$parent_deleted = 0;
} }
} }
@ -1043,6 +1046,21 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
if(! $rino_enable) if(! $rino_enable)
$rino = 0; $rino = 0;
$ssl_val = intval(get_config('system','ssl_policy'));
$ssl_policy = '';
switch($ssl_val){
case SSL_POLICY_FULL:
$ssl_policy = 'full';
break;
case SSL_POLICY_SELFSIGN:
$ssl_policy = 'self';
break;
case SSL_POLICY_NONE:
default:
$ssl_policy = 'none';
break;
}
$url = $contact['notify'] . '&dfrn_id=' . $idtosend . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . (($rino) ? '&rino=1' : ''); $url = $contact['notify'] . '&dfrn_id=' . $idtosend . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . (($rino) ? '&rino=1' : '');
logger('dfrn_deliver: ' . $url); logger('dfrn_deliver: ' . $url);
@ -1115,6 +1133,8 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
$postvars['perm'] = 'r'; $postvars['perm'] = 'r';
} }
$postvars['ssl_policy'] = $ssl_policy;
if($rino && $rino_allowed && (! $dissolve)) { if($rino && $rino_allowed && (! $dissolve)) {
$key = substr(random_string(),0,16); $key = substr(random_string(),0,16);
$data = bin2hex(aes_encrypt($postvars['data'],$key)); $data = bin2hex(aes_encrypt($postvars['data'],$key));

View File

@ -8,6 +8,8 @@ function nav(&$a) {
* *
*/ */
$ssl_state = ((local_user()) ? true : false);
if(!(x($a->page,'nav'))) if(!(x($a->page,'nav')))
$a->page['nav'] = ''; $a->page['nav'] = '';
@ -27,7 +29,7 @@ function nav(&$a) {
$myident = ((is_array($a->user) && isset($a->user['nickname'])) ? $a->user['nickname'] . '@' : ''); $myident = ((is_array($a->user) && isset($a->user['nickname'])) ? $a->user['nickname'] . '@' : '');
$sitelocation = $myident . substr($a->get_baseurl(),strpos($a->get_baseurl(),'//') + 2 ); $sitelocation = $myident . substr($a->get_baseurl($ssl_state),strpos($a->get_baseurl($ssl_state),'//') + 2 );
// nav links: array of array('href', 'text', 'extra css classes', 'title') // nav links: array of array('href', 'text', 'extra css classes', 'title')
@ -53,7 +55,7 @@ function nav(&$a) {
// user info // user info
$r = q("SELECT micro FROM contact WHERE uid=%d AND self=1", intval($a->user['uid'])); $r = q("SELECT micro FROM contact WHERE uid=%d AND self=1", intval($a->user['uid']));
$userinfo = array( $userinfo = array(
'icon' => (count($r) ? $r[0]['micro']: $a->get_baseurl()."/images/default-profile-mm.jpg"), 'icon' => (count($r) ? $r[0]['micro']: $a->get_baseurl($ssl_state)."/images/default-profile-mm.jpg"),
'name' => $a->user['username'], 'name' => $a->user['username'],
); );
@ -76,7 +78,7 @@ function nav(&$a) {
if(($a->config['register_policy'] == REGISTER_OPEN) && (! local_user()) && (! remote_user())) if(($a->config['register_policy'] == REGISTER_OPEN) && (! local_user()) && (! remote_user()))
$nav['register'] = array('register',t('Register'), "", t('Create an account')); $nav['register'] = array('register',t('Register'), "", t('Create an account'));
$help_url = $a->get_baseurl() . '/help'; $help_url = $a->get_baseurl($ssl_state) . '/help';
if(! get_config('system','hide_help')) if(! get_config('system','hide_help'))
$nav['help'] = array($help_url, t('Help'), "", t('Help and documentation')); $nav['help'] = array($help_url, t('Help'), "", t('Help and documentation'));

View File

@ -1,6 +1,6 @@
<?php <?php
function oembed_replacecb($matches){ function oembed_replacecb($matches){
logger('oembedcb'); // logger('oembedcb');
$embedurl=$matches[1]; $embedurl=$matches[1];
$j = oembed_fetch_url($embedurl); $j = oembed_fetch_url($embedurl);
$s = oembed_format_object($j); $s = oembed_format_object($j);
@ -14,6 +14,9 @@ function oembed_fetch_url($embedurl){
$txt = Cache::get($embedurl); $txt = Cache::get($embedurl);
// These media files should now be caught in bbcode.php
// left here as a fallback in case this is called from another source
$noexts = array("mp3","mp4","ogg","ogv","oga","ogm","webm"); $noexts = array("mp3","mp4","ogg","ogv","oga","ogm","webm");
$ext = pathinfo(strtolower($embedurl),PATHINFO_EXTENSION); $ext = pathinfo(strtolower($embedurl),PATHINFO_EXTENSION);
@ -62,7 +65,7 @@ function oembed_fetch_url($embedurl){
function oembed_format_object($j){ function oembed_format_object($j){
$embedurl = $j->embedurl; $embedurl = $j->embedurl;
$jhtml = oembed_iframe($j->embedurl,$j->width,$j->height ); $jhtml = oembed_iframe($j->embedurl,(isset($j->width) ? $j->width : null), (isset($j->height) ? $j->height : null) );
$ret="<span class='oembed ".$j->type."'>"; $ret="<span class='oembed ".$j->type."'>";
switch ($j->type) { switch ($j->type) {
case "video": { case "video": {

View File

@ -288,3 +288,49 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null)
} }
/*
* Functions used to protect against Cross-Site Request Forgery
* The security token has to base on at least one value that an attacker can't know - here it's the session ID and the private key.
* In this implementation, a security token is reusable (if the user submits a form, goes back and resubmits the form, maybe with small changes;
* or if the security token is used for ajax-calls that happen several times), but only valid for a certain amout of time (3hours).
* The "typename" seperates the security tokens of different types of forms. This could be relevant in the following case:
* A security token is used to protekt a link from CSRF (e.g. the "delete this profile"-link).
* If the new page contains by any chance external elements, then the used security token is exposed by the referrer.
* Actually, important actions should not be triggered by Links / GET-Requests at all, but somethimes they still are,
* so this mechanism brings in some damage control (the attacker would be able to forge a request to a form of this type, but not to forms of other types).
*/
function get_form_security_token($typename = "") {
$a = get_app();
$timestamp = time();
$sec_hash = hash('whirlpool', $a->user["guid"] . $a->user["prvkey"] . session_id() . $timestamp . $typename);
return $timestamp . "." . $sec_hash;
}
function check_form_security_token($typename = "", $formname = 'form_security_token') {
if (!x($_REQUEST, $formname)) return false;
$hash = $_REQUEST[$formname];
$max_livetime = 10800; // 3 hours
$a = get_app();
$x = explode(".", $hash);
if (time() > (IntVal($x[0]) + $max_livetime)) return false;
$sec_hash = hash('whirlpool', $a->user["guid"] . $a->user["prvkey"] . session_id() . $x[0] . $typename);
return ($sec_hash == $x[1]);
}
function check_form_security_std_err_msg() {
return t('The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before subitting it.') . EOL;
}
function check_form_security_token_redirectOnErr($err_redirect, $typename = "", $formname = 'form_security_token') {
if (!check_form_security_token($typename, $formname)) {
$a = get_app();
notice( check_form_security_std_err_msg() );
goaway($a->get_baseurl() . $err_redirect );
}
}

View File

@ -80,8 +80,13 @@
*/ */
private function _replcb_for($args){ private function _replcb_for($args){
$m = array_map('trim', explode(" as ", $args[2])); $m = array_map('trim', explode(" as ", $args[2]));
list($keyname, $varname) = explode("=>",$m[1]); $x = explode("=>",$m[1]);
if (is_null($varname)) { $varname=$keyname; $keyname=""; } if (count($x) == 1) {
$varname = $x[0];
$keyname = "";
} else {
list($keyname, $varname) = $x;
}
if ($m[0]=="" || $varname=="" || is_null($varname)) die("template error: 'for ".$m[0]." as ".$varname."'") ; if ($m[0]=="" || $varname=="" || is_null($varname)) die("template error: 'for ".$m[0]." as ".$varname."'") ;
//$vals = $this->r[$m[0]]; //$vals = $this->r[$m[0]];
$vals = $this->_get_var($m[0]); $vals = $this->_get_var($m[0]);

View File

@ -874,6 +874,7 @@ function link_compare($a,$b) {
if(! function_exists('prepare_body')) { if(! function_exists('prepare_body')) {
function prepare_body($item,$attach = false) { function prepare_body($item,$attach = false) {
$a = get_app();
call_hooks('prepare_body_init', $item); call_hooks('prepare_body_init', $item);
$cache = get_config('system','itemcache'); $cache = get_config('system','itemcache');
@ -926,6 +927,33 @@ function prepare_body($item,$attach = false) {
} }
$s .= '<div class="clear"></div></div>'; $s .= '<div class="clear"></div></div>';
} }
$matches = false;
$cnt = preg_match_all('/<(.*?)>/',$item['file'],$matches,PREG_SET_ORDER);
if($cnt) {
// logger('prepare_text: categories: ' . print_r($matches,true), LOGGER_DEBUG);
foreach($matches as $mtch) {
if(strlen($x))
$x .= ',';
$x .= file_tag_decode($mtch[1]);
}
if(strlen($x))
$s .= '<div class="categorytags"><span>' . t('Categories:') . ' </span>' . $x . '</div>';
}
$matches = false;
$x = '';
$cnt = preg_match_all('/\[(.*?)\]/',$item['file'],$matches,PREG_SET_ORDER);
if($cnt) {
// logger('prepare_text: filed_under: ' . print_r($matches,true), LOGGER_DEBUG);
foreach($matches as $mtch) {
if(strlen($x))
$x .= '&nbsp;&nbsp;&nbsp;';
$x .= file_tag_decode($mtch[1]). ' <a href="' . $a->get_baseurl() . '/filerm/' . $item['id'] . '?f=&term=' . file_tag_decode($mtch[1]) . '" title="' . t('remove') . '" >' . t('[remove]') . '</a>';
}
if(strlen($x) && (local_user() == $item['uid']))
$s .= '<div class="filesavetags"><span>' . t('Filed under:') . ' </span>' . $x . '</div>';
}
$prep_arr = array('item' => $item, 'html' => $s); $prep_arr = array('item' => $item, 'html' => $s);
call_hooks('prepare_body_final', $prep_arr); call_hooks('prepare_body_final', $prep_arr);
@ -1248,4 +1276,77 @@ function item_post_type($item) {
return t('post'); return t('post');
} }
// post categories and "save to file" use the same item.file table for storage.
// We will differentiate the different uses by wrapping categories in angle brackets
// and save to file categories in square brackets.
// To do this we need to escape these characters if they appear in our tag.
function file_tag_encode($s) {
return str_replace(array('<','>','[',']'),array('%3c','%3e','%5b','%5d'),$s);
}
function file_tag_decode($s) {
return str_replace(array('%3c','%3e','%5b','%5d'),array('<','>','[',']'),$s);
}
function file_tag_file_query($table,$s,$type = 'file') {
if($type == 'file')
$str = preg_quote( '[' . file_tag_encode($s) . ']' );
else
$str = preg_quote( '<' . file_tag_encode($s) . '>' );
return " AND " . (($table) ? dbesc($table) . '.' : '') . "file regexp '" . dbesc($str) . "' ";
}
function file_tag_save_file($uid,$item,$file) {
$result = false;
if(! intval($uid))
return false;
$r = q("select file from item where id = %d and uid = %d limit 1",
intval($item),
intval($uid)
);
if(count($r)) {
if(! stristr($r[0]['file'],'[' . file_tag_encode($file) . ']'))
q("update item set file = '%s' where id = %d and uid = %d limit 1",
dbesc($r[0]['file'] . '[' . file_tag_encode($file) . ']'),
intval($item),
intval($uid)
);
$saved = get_pconfig($uid,'system','filetags');
if((! strlen($saved)) || (! stristr($saved,'[' . file_tag_encode($file) . ']')))
set_pconfig($uid,'system','filetags',$saved . '[' . file_tag_encode($file) . ']');
}
return true;
}
function file_tag_unsave_file($uid,$item,$file) {
$result = false;
if(! intval($uid))
return false;
$pattern = '[' . file_tag_encode($file) . ']' ;
$r = q("select file from item where id = %d and uid = %d limit 1",
intval($item),
intval($uid)
);
if(! count($r))
return false;
q("update item set file = '%s' where id = %d and uid = %d limit 1",
dbesc(str_replace($pattern,'',$r[0]['file'])),
intval($item),
intval($uid)
);
$r = q("select file from item where uid = %d " . file_tag_file_query('item',$file),
intval($uid)
);
if(! count($r)) {
$saved = get_pconfig($uid,'system','filetags');
set_pconfig($uid,'system','filetags',str_replace($pattern,'',$saved));
}
return true;
}

View File

@ -79,6 +79,7 @@
/* oembed */ /* oembed */
function _h2b_cb(match) { function _h2b_cb(match) {
/*
function s_h2b(data) { function s_h2b(data) {
match = data; match = data;
} }
@ -90,6 +91,23 @@
success: s_h2b, success: s_h2b,
dataType: 'html' dataType: 'html'
}); });
*/
var f, g, tof = [], tor = [];
var find_spanc = /<span [^>]*class *= *[\"'](?:[^\"']* )*oembed(?: [^\"']*)*[\"'][^>]*>(.*?(?:<span[^>]*>(.*?)<\/span *>)*.*?)<\/span *>/ig;
while (f = find_spanc.exec(match)) {
var find_a = /<a([^>]* rel=[\"']oembed[\"'][^>]*)>.*?<\/a *>/ig;
if (g = find_a.exec(f[1])) {
var find_href = /href=[\"']([^\"']*)[\"']/ig;
var m2 = find_href.exec(g[1]);
if (m2[1]) {
tof.push(f[0]);
tor.push("[EMBED]" + m2[1] + "[/EMBED]");
}
}
}
for (var i = 0; i < tof.length; i++) match = match.replace(tof[i], tor[i]);
return match; return match;
} }
if (s.indexOf('class="oembed')>=0){ if (s.indexOf('class="oembed')>=0){

View File

@ -37,7 +37,7 @@ function admin_post(&$a){
$func($a); $func($a);
} }
} }
goaway($a->get_baseurl() . '/admin/plugins/' . $a->argv[2] ); goaway($a->get_baseurl(true) . '/admin/plugins/' . $a->argv[2] );
return; // NOTREACHED return; // NOTREACHED
break; break;
case 'logs': case 'logs':
@ -49,7 +49,7 @@ function admin_post(&$a){
} }
} }
goaway($a->get_baseurl() . '/admin' ); goaway($a->get_baseurl(true) . '/admin' );
return; // NOTREACHED return; // NOTREACHED
} }
@ -68,11 +68,11 @@ function admin_content(&$a) {
// array( url, name, extra css classes ) // array( url, name, extra css classes )
$aside = Array( $aside = Array(
'site' => Array($a->get_baseurl()."/admin/site/", t("Site") , "site"), 'site' => Array($a->get_baseurl(true)."/admin/site/", t("Site") , "site"),
'users' => Array($a->get_baseurl()."/admin/users/", t("Users") , "users"), 'users' => Array($a->get_baseurl(true)."/admin/users/", t("Users") , "users"),
'plugins'=> Array($a->get_baseurl()."/admin/plugins/", t("Plugins") , "plugins"), 'plugins'=> Array($a->get_baseurl(true)."/admin/plugins/", t("Plugins") , "plugins"),
'themes' => Array($a->get_baseurl()."/admin/themes/", t("Themes") , "themes"), 'themes' => Array($a->get_baseurl(true)."/admin/themes/", t("Themes") , "themes"),
'update' => Array($a->get_baseurl()."/admin/update/", t("Update") , "update") 'update' => Array($a->get_baseurl(true)."/admin/update/", t("Update") , "update")
); );
/* get plugins admin page */ /* get plugins admin page */
@ -81,18 +81,18 @@ function admin_content(&$a) {
$aside['plugins_admin']=Array(); $aside['plugins_admin']=Array();
foreach ($r as $h){ foreach ($r as $h){
$plugin =$h['name']; $plugin =$h['name'];
$aside['plugins_admin'][] = Array($a->get_baseurl()."/admin/plugins/".$plugin, $plugin, "plugin"); $aside['plugins_admin'][] = Array($a->get_baseurl(true)."/admin/plugins/".$plugin, $plugin, "plugin");
// temp plugins with admin // temp plugins with admin
$a->plugins_admin[] = $plugin; $a->plugins_admin[] = $plugin;
} }
$aside['logs'] = Array($a->get_baseurl()."/admin/logs/", t("Logs"), "logs"); $aside['logs'] = Array($a->get_baseurl(true)."/admin/logs/", t("Logs"), "logs");
$t = get_markup_template("admin_aside.tpl"); $t = get_markup_template("admin_aside.tpl");
$a->page['aside'] = replace_macros( $t, array( $a->page['aside'] = replace_macros( $t, array(
'$admin' => $aside, '$admin' => $aside,
'$h_pending' => t('User registrations waiting for confirmation'), '$h_pending' => t('User registrations waiting for confirmation'),
'$admurl'=> $a->get_baseurl()."/admin/" '$admurl'=> $a->get_baseurl(true)."/admin/"
)); ));
@ -152,10 +152,6 @@ function admin_page_summary(&$a) {
$r = q("SELECT COUNT(id) as `count` FROM `register`"); $r = q("SELECT COUNT(id) as `count` FROM `register`");
$pending = $r[0]['count']; $pending = $r[0]['count'];
$t = get_markup_template("admin_summary.tpl"); $t = get_markup_template("admin_summary.tpl");
return replace_macros($t, array( return replace_macros($t, array(
'$title' => t('Administration'), '$title' => t('Administration'),
@ -210,7 +206,7 @@ function admin_page_site_post(&$a){
$dfrn_only = ((x($_POST,'dfrn_only')) ? True : False); $dfrn_only = ((x($_POST,'dfrn_only')) ? True : False);
$ostatus_disabled = !((x($_POST,'ostatus_disabled')) ? True : False); $ostatus_disabled = !((x($_POST,'ostatus_disabled')) ? True : False);
$diaspora_enabled = ((x($_POST,'diaspora_enabled')) ? True : False); $diaspora_enabled = ((x($_POST,'diaspora_enabled')) ? True : False);
$ssl_policy = ((x($_POST,'ssl_policy')) ? intval($_POST['ssl_policy']) : 0);
set_config('config','sitename',$sitename); set_config('config','sitename',$sitename);
if ($banner==""){ if ($banner==""){
@ -222,6 +218,7 @@ function admin_page_site_post(&$a){
} else { } else {
set_config('system','banner', $banner); set_config('system','banner', $banner);
} }
set_config('system','ssl_policy',$ssl_policy);
set_config('system','language', $language); set_config('system','language', $language);
set_config('system','theme', $theme); set_config('system','theme', $theme);
set_config('system','maximagesize', $maximagesize); set_config('system','maximagesize', $maximagesize);
@ -258,7 +255,7 @@ function admin_page_site_post(&$a){
set_config('system','diaspora_enabled', $diaspora_enabled); set_config('system','diaspora_enabled', $diaspora_enabled);
info( t('Site settings updated.') . EOL); info( t('Site settings updated.') . EOL);
goaway($a->get_baseurl() . '/admin/site' ); goaway($a->get_baseurl(true) . '/admin/site' );
return; // NOTREACHED return; // NOTREACHED
} }
@ -306,6 +303,12 @@ function admin_page_site(&$a) {
REGISTER_OPEN => t("Open") REGISTER_OPEN => t("Open")
); );
$ssl_choices = array(
SSL_POLICY_NONE => t("No SSL policy, links will track page SSL state"),
SSL_POLICY_FULL => t("Force all links to use SSL"),
SSL_POLICY_SELFSIGN => t("Self-signed certificate, use SSL for local links only (discouraged)")
);
$t = get_markup_template("admin_site.tpl"); $t = get_markup_template("admin_site.tpl");
return replace_macros($t, array( return replace_macros($t, array(
'$title' => t('Administration'), '$title' => t('Administration'),
@ -316,13 +319,13 @@ function admin_page_site(&$a) {
'$corporate' => t('Policies'), '$corporate' => t('Policies'),
'$advanced' => t('Advanced'), '$advanced' => t('Advanced'),
'$baseurl' => $a->get_baseurl(), '$baseurl' => $a->get_baseurl(true),
// name, label, value, help string, extra data... // name, label, value, help string, extra data...
'$sitename' => array('sitename', t("Site name"), htmlentities($a->config['sitename'], ENT_QUOTES), ""), '$sitename' => array('sitename', t("Site name"), htmlentities($a->config['sitename'], ENT_QUOTES), ""),
'$banner' => array('banner', t("Banner/Logo"), $banner, ""), '$banner' => array('banner', t("Banner/Logo"), $banner, ""),
'$language' => array('language', t("System language"), get_config('system','language'), "", $lang_choices), '$language' => array('language', t("System language"), get_config('system','language'), "", $lang_choices),
'$theme' => array('theme', t("System theme"), get_config('system','theme'), t("Default system theme - may be over-ridden by user profiles"), $theme_choices), '$theme' => array('theme', t("System theme"), get_config('system','theme'), t("Default system theme - may be over-ridden by user profiles"), $theme_choices),
'$ssl_policy' => array('ssl_policy', t("SSL link policy"), get_config('system','ssl_policy'), t("Determines whether generated links should be forced to use SSL"), $ssl_choices),
'$maximagesize' => array('maximagesize', t("Maximum image size"), get_config('system','maximagesize'), t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")), '$maximagesize' => array('maximagesize', t("Maximum image size"), get_config('system','maximagesize'), t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")),
'$register_policy' => array('register_policy', t("Register policy"), $a->config['register_policy'], "", $register_choices), '$register_policy' => array('register_policy', t("Register policy"), $a->config['register_policy'], "", $register_choices),
@ -389,7 +392,7 @@ function admin_page_users_post(&$a){
user_deny($hash); user_deny($hash);
} }
} }
goaway($a->get_baseurl() . '/admin/users' ); goaway($a->get_baseurl(true) . '/admin/users' );
return; // NOTREACHED return; // NOTREACHED
} }
@ -399,7 +402,7 @@ function admin_page_users(&$a){
$user = q("SELECT * FROM `user` WHERE `uid`=%d", intval($uid)); $user = q("SELECT * FROM `user` WHERE `uid`=%d", intval($uid));
if (count($user)==0){ if (count($user)==0){
notice( 'User not found' . EOL); notice( 'User not found' . EOL);
goaway($a->get_baseurl() . '/admin/users' ); goaway($a->get_baseurl(true) . '/admin/users' );
return; // NOTREACHED return; // NOTREACHED
} }
switch($a->argv[2]){ switch($a->argv[2]){
@ -418,7 +421,7 @@ function admin_page_users(&$a){
notice( sprintf( ($user[0]['blocked']?t("User '%s' unblocked"):t("User '%s' blocked")) , $user[0]['username']) . EOL); notice( sprintf( ($user[0]['blocked']?t("User '%s' unblocked"):t("User '%s' blocked")) , $user[0]['username']) . EOL);
}; break; }; break;
} }
goaway($a->get_baseurl() . '/admin/users' ); goaway($a->get_baseurl(true) . '/admin/users' );
return; // NOTREACHED return; // NOTREACHED
} }
@ -497,7 +500,7 @@ function admin_page_users(&$a){
// values // // values //
'$baseurl' => $a->get_baseurl(), '$baseurl' => $a->get_baseurl(true),
'$pending' => $pending, '$pending' => $pending,
'$users' => $users, '$users' => $users,
@ -536,7 +539,7 @@ function admin_page_plugins(&$a){
info( sprintf( t("Plugin %s enabled."), $plugin ) ); info( sprintf( t("Plugin %s enabled."), $plugin ) );
} }
set_config("system","addon", implode(", ",$a->plugins)); set_config("system","addon", implode(", ",$a->plugins));
goaway($a->get_baseurl() . '/admin/plugins' ); goaway($a->get_baseurl(true) . '/admin/plugins' );
return; // NOTREACHED return; // NOTREACHED
} }
// display plugin details // display plugin details
@ -569,7 +572,7 @@ function admin_page_plugins(&$a){
'$page' => t('Plugins'), '$page' => t('Plugins'),
'$toggle' => t('Toggle'), '$toggle' => t('Toggle'),
'$settings' => t('Settings'), '$settings' => t('Settings'),
'$baseurl' => $a->get_baseurl(), '$baseurl' => $a->get_baseurl(true),
'$plugin' => $plugin, '$plugin' => $plugin,
'$status' => $status, '$status' => $status,
@ -607,7 +610,7 @@ function admin_page_plugins(&$a){
'$title' => t('Administration'), '$title' => t('Administration'),
'$page' => t('Plugins'), '$page' => t('Plugins'),
'$submit' => t('Submit'), '$submit' => t('Submit'),
'$baseurl' => $a->get_baseurl(), '$baseurl' => $a->get_baseurl(true),
'$function' => 'plugins', '$function' => 'plugins',
'$plugins' => $plugins '$plugins' => $plugins
)); ));
@ -713,7 +716,7 @@ function admin_page_themes(&$a){
info( sprintf('Theme %s disabled.',$theme)); info( sprintf('Theme %s disabled.',$theme));
set_config('system','allowed_themes',$s); set_config('system','allowed_themes',$s);
goaway($a->get_baseurl() . '/admin/themes' ); goaway($a->get_baseurl(true) . '/admin/themes' );
return; // NOTREACHED return; // NOTREACHED
} }
@ -742,7 +745,7 @@ function admin_page_themes(&$a){
'$page' => t('Themes'), '$page' => t('Themes'),
'$toggle' => t('Toggle'), '$toggle' => t('Toggle'),
'$settings' => t('Settings'), '$settings' => t('Settings'),
'$baseurl' => $a->get_baseurl(), '$baseurl' => $a->get_baseurl(true),
'$plugin' => $theme, '$plugin' => $theme,
'$status' => $status, '$status' => $status,
@ -774,7 +777,7 @@ function admin_page_themes(&$a){
'$title' => t('Administration'), '$title' => t('Administration'),
'$page' => t('Themes'), '$page' => t('Themes'),
'$submit' => t('Submit'), '$submit' => t('Submit'),
'$baseurl' => $a->get_baseurl(), '$baseurl' => $a->get_baseurl(true),
'$function' => 'themes', '$function' => 'themes',
'$plugins' => $xthemes, '$plugins' => $xthemes,
'$experimental' => t('[Experimental]'), '$experimental' => t('[Experimental]'),
@ -802,7 +805,7 @@ function admin_page_logs_post(&$a) {
} }
info( t("Log settings updated.") ); info( t("Log settings updated.") );
goaway($a->get_baseurl() . '/admin/logs' ); goaway($a->get_baseurl(true) . '/admin/logs' );
return; // NOTREACHED return; // NOTREACHED
} }
@ -856,7 +859,7 @@ readable.");
'$submit' => t('Submit'), '$submit' => t('Submit'),
'$clear' => t('Clear'), '$clear' => t('Clear'),
'$data' => $data, '$data' => $data,
'$baseurl' => $a->get_baseurl(), '$baseurl' => $a->get_baseurl(true),
'$logname' => get_config('system','logfile'), '$logname' => get_config('system','logfile'),
// name, label, value, help string, extra data... // name, label, value, help string, extra data...
@ -901,7 +904,7 @@ function admin_page_remoteupdate(&$a) {
$tpl = get_markup_template("admin_remoteupdate.tpl"); $tpl = get_markup_template("admin_remoteupdate.tpl");
return replace_macros($tpl, array( return replace_macros($tpl, array(
'$baseurl' => $a->get_baseurl(), '$baseurl' => $a->get_baseurl(true),
'$submit' => t("Update now"), '$submit' => t("Update now"),
'$close' => t("Close"), '$close' => t("Close"),
'$localversion' => FRIENDICA_VERSION, '$localversion' => FRIENDICA_VERSION,

View File

@ -61,7 +61,7 @@ function contacts_post(&$a) {
if(! count($orig_record)) { if(! count($orig_record)) {
notice( t('Could not access contact record.') . EOL); notice( t('Could not access contact record.') . EOL);
goaway($a->get_baseurl() . '/contacts'); goaway($a->get_baseurl(true) . '/contacts');
return; // NOTREACHED return; // NOTREACHED
} }
@ -141,7 +141,7 @@ function contacts_content(&$a) {
if(! count($orig_record)) { if(! count($orig_record)) {
notice( t('Could not access contact record.') . EOL); notice( t('Could not access contact record.') . EOL);
goaway($a->get_baseurl() . '/contacts'); goaway($a->get_baseurl(true) . '/contacts');
return; // NOTREACHED return; // NOTREACHED
} }
@ -149,7 +149,7 @@ function contacts_content(&$a) {
// pull feed and consume it, which should subscribe to the hub. // pull feed and consume it, which should subscribe to the hub.
proc_run('php',"include/poller.php","$contact_id"); proc_run('php',"include/poller.php","$contact_id");
goaway($a->get_baseurl() . '/contacts/' . $contact_id); goaway($a->get_baseurl(true) . '/contacts/' . $contact_id);
// NOTREACHED // NOTREACHED
} }
@ -164,7 +164,7 @@ function contacts_content(&$a) {
//notice( t('Contact has been ') . (($blocked) ? t('blocked') : t('unblocked')) . EOL ); //notice( t('Contact has been ') . (($blocked) ? t('blocked') : t('unblocked')) . EOL );
info( (($blocked) ? t('Contact has been blocked') : t('Contact has been unblocked')) . EOL ); info( (($blocked) ? t('Contact has been blocked') : t('Contact has been unblocked')) . EOL );
} }
goaway($a->get_baseurl() . '/contacts/' . $contact_id); goaway($a->get_baseurl(true) . '/contacts/' . $contact_id);
return; // NOTREACHED return; // NOTREACHED
} }
@ -178,7 +178,7 @@ function contacts_content(&$a) {
if($r) { if($r) {
info( (($readonly) ? t('Contact has been ignored') : t('Contact has been unignored')) . EOL ); info( (($readonly) ? t('Contact has been ignored') : t('Contact has been unignored')) . EOL );
} }
goaway($a->get_baseurl() . '/contacts/' . $contact_id); goaway($a->get_baseurl(true) . '/contacts/' . $contact_id);
return; // NOTREACHED return; // NOTREACHED
} }
@ -220,9 +220,9 @@ function contacts_content(&$a) {
contact_remove($orig_record[0]['id']); contact_remove($orig_record[0]['id']);
info( t('Contact has been removed.') . EOL ); info( t('Contact has been removed.') . EOL );
if(x($_SESSION,'return_url')) if(x($_SESSION,'return_url'))
goaway($a->get_baseurl() . '/' . $_SESSION['return_url']); goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']);
else else
goaway($a->get_baseurl() . '/contacts'); goaway($a->get_baseurl(true) . '/contacts');
return; // NOTREACHED return; // NOTREACHED
} }
} }
@ -233,7 +233,7 @@ function contacts_content(&$a) {
$contact = $a->data['contact']; $contact = $a->data['contact'];
$tpl = get_markup_template('contact_head.tpl'); $tpl = get_markup_template('contact_head.tpl');
$a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl())); $a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl(true)));
require_once('include/contact_selectors.php'); require_once('include/contact_selectors.php');
@ -295,17 +295,17 @@ function contacts_content(&$a) {
$tabs = array( $tabs = array(
array( array(
'label' => (($contact['blocked']) ? t('Unblock') : t('Block') ), 'label' => (($contact['blocked']) ? t('Unblock') : t('Block') ),
'url' => $a->get_baseurl() . '/contacts/' . $contact_id . '/block', 'url' => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/block',
'sel' => '', 'sel' => '',
), ),
array( array(
'label' => (($contact['readonly']) ? t('Unignore') : t('Ignore') ), 'label' => (($contact['readonly']) ? t('Unignore') : t('Ignore') ),
'url' => $a->get_baseurl() . '/contacts/' . $contact_id . '/ignore', 'url' => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/ignore',
'sel' => '', 'sel' => '',
), ),
array( array(
'label' => t('Repair'), 'label' => t('Repair'),
'url' => $a->get_baseurl() . '/crepair/' . $contact_id, 'url' => $a->get_baseurl(true) . '/crepair/' . $contact_id,
'sel' => '', 'sel' => '',
) )
); );
@ -322,7 +322,7 @@ function contacts_content(&$a) {
'$lbl_info1' => t('Contact Information / Notes'), '$lbl_info1' => t('Contact Information / Notes'),
'$infedit' => t('Edit contact notes'), '$infedit' => t('Edit contact notes'),
'$common_text' => $common_text, '$common_text' => $common_text,
'$common_link' => $a->get_baseurl() . '/common/' . $contact['id'], '$common_link' => $a->get_baseurl(true) . '/common/' . $contact['id'],
'$all_friends' => $all_friends, '$all_friends' => $all_friends,
'$relation_text' => $relation_text, '$relation_text' => $relation_text,
'$visit' => sprintf( t('Visit %s\'s profile [%s]'),$contact['name'],$contact['url']), '$visit' => sprintf( t('Visit %s\'s profile [%s]'),$contact['name'],$contact['url']),
@ -397,30 +397,30 @@ function contacts_content(&$a) {
$tabs = array( $tabs = array(
array( array(
'label' => t('All Contacts'), 'label' => t('All Contacts'),
'url' => $a->get_baseurl() . '/contacts/all', 'url' => $a->get_baseurl(true) . '/contacts/all',
'sel' => ($all) ? 'active' : '', 'sel' => ($all) ? 'active' : '',
), ),
array( array(
'label' => t('Unblocked Contacts'), 'label' => t('Unblocked Contacts'),
'url' => $a->get_baseurl() . '/contacts', 'url' => $a->get_baseurl(true) . '/contacts',
'sel' => ((! $all) && (! $blocked) && (! $hidden) && (! $search) && (! $nets) && (! $ignored)) ? 'active' : '', 'sel' => ((! $all) && (! $blocked) && (! $hidden) && (! $search) && (! $nets) && (! $ignored)) ? 'active' : '',
), ),
array( array(
'label' => t('Blocked Contacts'), 'label' => t('Blocked Contacts'),
'url' => $a->get_baseurl() . '/contacts/blocked', 'url' => $a->get_baseurl(true) . '/contacts/blocked',
'sel' => ($blocked) ? 'active' : '', 'sel' => ($blocked) ? 'active' : '',
), ),
array( array(
'label' => t('Ignored Contacts'), 'label' => t('Ignored Contacts'),
'url' => $a->get_baseurl() . '/contacts/ignored', 'url' => $a->get_baseurl(true) . '/contacts/ignored',
'sel' => ($ignored) ? 'active' : '', 'sel' => ($ignored) ? 'active' : '',
), ),
array( array(
'label' => t('Hidden Contacts'), 'label' => t('Hidden Contacts'),
'url' => $a->get_baseurl() . '/contacts/hidden', 'url' => $a->get_baseurl(true) . '/contacts/hidden',
'sel' => ($hidden) ? 'active' : '', 'sel' => ($hidden) ? 'active' : '',
), ),
@ -445,7 +445,7 @@ function contacts_content(&$a) {
$r = q("SELECT COUNT(*) AS `total` FROM `contact` $r = q("SELECT COUNT(*) AS `total` FROM `contact`
WHERE `uid` = %d AND `pending` = 0 $sql_extra $sql_extra2 ", WHERE `uid` = %d AND `self` = 0 AND `pending` = 0 $sql_extra $sql_extra2 ",
intval($_SESSION['uid'])); intval($_SESSION['uid']));
if(count($r)) { if(count($r)) {
$a->set_pager_total($r[0]['total']); $a->set_pager_total($r[0]['total']);
@ -454,7 +454,7 @@ function contacts_content(&$a) {
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `pending` = 0 $sql_extra $sql_extra2 ORDER BY `name` ASC LIMIT %d , %d ", $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `pending` = 0 $sql_extra $sql_extra2 ORDER BY `name` ASC LIMIT %d , %d ",
intval($_SESSION['uid']), intval($_SESSION['uid']),
intval($a->pager['start']), intval($a->pager['start']),
intval($a->pager['itemspage']) intval($a->pager['itemspage'])
@ -465,8 +465,6 @@ function contacts_content(&$a) {
if(count($r)) { if(count($r)) {
foreach($r as $rr) { foreach($r as $rr) {
if($rr['self'])
continue;
switch($rr['rel']) { switch($rr['rel']) {
case CONTACT_IS_FRIEND: case CONTACT_IS_FRIEND:

View File

@ -14,6 +14,7 @@ function dfrn_notify_post(&$a) {
$key = ((x($_POST,'key')) ? $_POST['key'] : ''); $key = ((x($_POST,'key')) ? $_POST['key'] : '');
$dissolve = ((x($_POST,'dissolve')) ? intval($_POST['dissolve']) : 0); $dissolve = ((x($_POST,'dissolve')) ? intval($_POST['dissolve']) : 0);
$perm = ((x($_POST,'perm')) ? notags(trim($_POST['perm'])) : 'r'); $perm = ((x($_POST,'perm')) ? notags(trim($_POST['perm'])) : 'r');
$ssl_policy = ((x($_POST,'ssl_policy')) ? notags(trim($_POST['ssl_policy'])): 'none');
$writable = (-1); $writable = (-1);
if($dfrn_version >= 2.21) { if($dfrn_version >= 2.21) {
@ -94,6 +95,65 @@ function dfrn_notify_post(&$a) {
$importer['writable'] = $writable; $importer['writable'] = $writable;
} }
// if contact's ssl policy changed, update our links
$ssl_changed = false;
if($ssl_policy == 'self' && strstr($importer['url'],'https:')) {
$ssl_changed = true;
$importer['url'] = str_replace('https:','http:',$importer['url']);
$importer['nurl'] = normalise_link($importer['url']);
$importer['photo'] = str_replace('https:','http:',$importer['photo']);
$importer['thumb'] = str_replace('https:','http:',$importer['thumb']);
$importer['micro'] = str_replace('https:','http:',$importer['micro']);
$importer['request'] = str_replace('https:','http:',$importer['request']);
$importer['notify'] = str_replace('https:','http:',$importer['notify']);
$importer['poll'] = str_replace('https:','http:',$importer['poll']);
$importer['confirm'] = str_replace('https:','http:',$importer['confirm']);
$importer['poco'] = str_replace('https:','http:',$importer['poco']);
}
if($ssl_policy == 'full' && strstr($importer['url'],'http:')) {
$ssl_changed = true;
$importer['url'] = str_replace('http:','https:',$importer['url']);
$importer['nurl'] = normalise_link($importer['url']);
$importer['photo'] = str_replace('http:','https:',$importer['photo']);
$importer['thumb'] = str_replace('http:','https:',$importer['thumb']);
$importer['micro'] = str_replace('http:','https:',$importer['micro']);
$importer['request'] = str_replace('http:','https:',$importer['request']);
$importer['notify'] = str_replace('http:','https:',$importer['notify']);
$importer['poll'] = str_replace('http:','https:',$importer['poll']);
$importer['confirm'] = str_replace('http:','https:',$importer['confirm']);
$importer['poco'] = str_replace('http:','https:',$importer['poco']);
}
if($ssl_changed) {
q("update contact set
url = '%s',
nurl = '%s',
photo = '%s',
thumb = '%s',
micro = '%s',
request = '%s',
notify = '%s',
poll = '%s',
confirm = '%s',
poco = '%s'
where id = %d limit 1",
dbesc($importer['url']),
dbesc($importer['nurl']),
dbesc($importer['photo']),
dbesc($importer['thumb']),
dbesc($importer['micro']),
dbesc($importer['request']),
dbesc($importer['notify']),
dbesc($importer['poll']),
dbesc($importer['confirm']),
dbesc($importer['poco']),
intval($importer['id'])
);
}
logger('dfrn_notify: received notify from ' . $importer['name'] . ' for ' . $importer['username']); logger('dfrn_notify: received notify from ' . $importer['name'] . ' for ' . $importer['username']);
logger('dfrn_notify: data: ' . $data, LOGGER_DATA); logger('dfrn_notify: data: ' . $data, LOGGER_DATA);

View File

@ -43,7 +43,7 @@ function dfrn_request_post(&$a) {
return; return;
if($_POST['cancel']) { if(x($_POST, 'cancel')) {
goaway(z_root()); goaway(z_root());
} }
@ -77,9 +77,10 @@ function dfrn_request_post(&$a) {
* Lookup the contact based on their URL (which is the only unique thing we have at the moment) * Lookup the contact based on their URL (which is the only unique thing we have at the moment)
*/ */
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' AND `self` = 0 LIMIT 1", $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND (`url` = '%s' OR `nurl` = '%s') AND `self` = 0 LIMIT 1",
intval(local_user()), intval(local_user()),
dbesc($dfrn_url) dbesc($dfrn_url),
dbesc(normalise_link($dfrn_url))
); );
if(count($r)) { if(count($r)) {
@ -666,7 +667,25 @@ function dfrn_request_content(&$a) {
$page_desc = sprintf( t('Diaspora members: Please do not use this form. Instead, enter "%s" into your Diaspora search bar.'), $page_desc = sprintf( t('Diaspora members: Please do not use this form. Instead, enter "%s" into your Diaspora search bar.'),
$target_addr) . EOL . EOL; $target_addr) . EOL . EOL;
$page_desc .= t("Please enter your 'Identity Address' from one of the following supported social networks:"); $page_desc .= t("Please enter your 'Identity Address' from one of the following supported communications networks:");
// see if we are allowed to have NETWORK_MAIL2 contacts
$mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
if(get_config('system','dfrn_only'))
$mail_disabled = 1;
if(! $mail_disabled) {
$r = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
intval($a->profile['uid'])
);
if(! count($r))
$mail_disabled = 1;
}
$emailnet = (($mail_disabled) ? '' : t("<strike>Connect as an email follower</strike> \x28Coming soon\x29"));
$invite_desc = t('If you are not yet a member of the free social web, <a href="http://dir.friendica.com/siteinfo">follow this link to find a public Friendica site and join us today</a>.');
$o .= replace_macros($tpl,array( $o .= replace_macros($tpl,array(
'$header' => t('Friend/Connection Request'), '$header' => t('Friend/Connection Request'),
@ -682,6 +701,8 @@ function dfrn_request_content(&$a) {
'$diaspora' => t('Diaspora'), '$diaspora' => t('Diaspora'),
'$diasnote' => t('- please share from your own site as noted above'), '$diasnote' => t('- please share from your own site as noted above'),
'$your_address' => t('Your Identity Address:'), '$your_address' => t('Your Identity Address:'),
'$invite_desc' => $invite_desc,
'$emailnet' => $emailnet,
'$submit' => t('Submit Request'), '$submit' => t('Submit Request'),
'$cancel' => t('Cancel'), '$cancel' => t('Cancel'),
'$nickname' => $a->argv[1], '$nickname' => $a->argv[1],

23
mod/filer.php Executable file
View File

@ -0,0 +1,23 @@
<?php
require_once('include/security.php');
require_once('include/bbcode.php');
require_once('include/items.php');
function filer_content(&$a) {
if(! local_user()) {
killme();
}
$term = notags(trim($_GET['term']));
$item_id = (($a->argc > 1) ? notags(trim($a->argv[1])) : 0);
logger('filer: tag ' . $term . ' item ' . $item_id);
if($item_id && strlen($term))
file_tag_save_file(local_user(),$item_id,$term);
killme();
}

21
mod/filerm.php Normal file
View File

@ -0,0 +1,21 @@
<?php
function filerm_content(&$a) {
if(! local_user()) {
killme();
}
$term = notags(trim($_GET['term']));
$item_id = (($a->argc > 1) ? notags(trim($a->argv[1])) : 0);
logger('filerm: tag ' . $term . ' item ' . $item_id);
if($item_id && strlen($term))
file_tag_unsave_file(local_user(),$item_id,$term);
if(x($_SESSION,'return_url'))
goaway($a->get_baseurl() . '/' . $_SESSION['return_url']);
killme();
}

View File

@ -21,7 +21,7 @@ function hcard_init(&$a) {
profile_load($a,$which,$profile); profile_load($a,$which,$profile);
if((x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY)) { if((x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY)) {
$a->page['htmlhead'] .= '<meta name="friendika.community" content="true" />'; $a->page['htmlhead'] .= '<meta name="friendica.community" content="true" />';
} }
if(x($a->profile,'openidserver')) if(x($a->profile,'openidserver'))
$a->page['htmlhead'] .= '<link rel="openid.server" href="' . $a->profile['openidserver'] . '" />' . "\r\n"; $a->page['htmlhead'] .= '<link rel="openid.server" href="' . $a->profile['openidserver'] . '" />' . "\r\n";

View File

@ -425,110 +425,7 @@ function item_post(&$a) {
if(count($tags)) { if(count($tags)) {
foreach($tags as $tag) { foreach($tags as $tag) {
handle_tag($a, $body, $inform, $str_tags, $profile_uid, $tag);
if(isset($profile))
unset($profile);
if(strpos($tag,'#') === 0) {
if(strpos($tag,'[url='))
continue;
$basetag = str_replace('_',' ',substr($tag,1));
$body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body);
$newtag = '#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]';
if(! stristr($str_tags,$newtag)) {
if(strlen($str_tags))
$str_tags .= ',';
$str_tags .= $newtag;
}
continue;
}
if(strpos($tag,'@') === 0) {
if(strpos($tag,'[url='))
continue;
$stat = false;
$name = substr($tag,1);
if((strpos($name,'@')) || (strpos($name,'http://'))) {
$newname = $name;
$links = @lrdd($name);
if(count($links)) {
foreach($links as $link) {
if($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page')
$profile = $link['@attributes']['href'];
if($link['@attributes']['rel'] === 'salmon') {
if(strlen($inform))
$inform .= ',';
$inform .= 'url:' . str_replace(',','%2c',$link['@attributes']['href']);
}
}
}
}
else {
$newname = $name;
$alias = '';
$tagcid = 0;
if(strrpos($newname,'+')) {
$tagcid = intval(substr($newname,strrpos($newname,'+') + 1));
if(strpos($name,' '))
$name = substr($name,0,strpos($name,' '));
}
if($tagcid) {
$r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($tagcid),
intval($profile_uid)
);
}
elseif(strstr($name,'_') || strstr($name,' ')) {
$newname = str_replace('_',' ',$name);
$r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1",
dbesc($newname),
intval($profile_uid)
);
}
else {
$r = q("SELECT * FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1",
dbesc($name),
dbesc($name),
intval($profile_uid)
);
}
if(count($r)) {
$profile = $r[0]['url'];
if($r[0]['network'] === 'stat') {
$newname = $r[0]['nick'];
$stat = true;
if($r[0]['alias'])
$alias = $r[0]['alias'];
}
else
$newname = $r[0]['name'];
if(strlen($inform))
$inform .= ',';
$inform .= 'cid:' . $r[0]['id'];
}
}
if($profile) {
$body = str_replace('@' . $name, '@' . '[url=' . $profile . ']' . $newname . '[/url]', $body);
$profile = str_replace(',','%2c',$profile);
$newtag = '@[url=' . $profile . ']' . $newname . '[/url]';
if(! stristr($str_tags,$newtag)) {
if(strlen($str_tags))
$str_tags .= ',';
$str_tags .= $newtag;
}
// Status.Net seems to require the numeric ID URL in a mention if the person isn't
// subscribed to you. But the nickname URL is OK if they are. Grrr. We'll tag both.
if(strlen($alias)) {
$newtag = '@[url=' . $alias . ']' . $newname . '[/url]';
if(! stristr($str_tags,$newtag)) {
if(strlen($str_tags))
$str_tags .= ',';
$str_tags .= $newtag;
}
}
}
}
} }
} }
@ -627,7 +524,7 @@ function item_post(&$a) {
if($preview) { if($preview) {
require_once('include/conversation.php'); require_once('include/conversation.php');
$o = conversation(&$a,array(array_merge($contact_record,$datarray)),'search',false,true); $o = conversation($a,array(array_merge($contact_record,$datarray)),'search',false,true);
logger('preview: ' . $o); logger('preview: ' . $o);
echo json_encode(array('preview' => $o)); echo json_encode(array('preview' => $o));
killme(); killme();
@ -922,3 +819,142 @@ function item_content(&$a) {
drop_item($a->argv[2]); drop_item($a->argv[2]);
} }
} }
/**
* This function removes the tag $tag from the text $body and replaces it with
* the appropiate link.
*
* @param unknown_type $body the text to replace the tag in
* @param unknown_type $inform a comma-seperated string containing everybody to inform
* @param unknown_type $str_tags string to add the tag to
* @param unknown_type $profile_uid
* @param unknown_type $tag the tag to replace
*/
function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) {
//is it a hash tag?
if(strpos($tag,'#') === 0) {
//if the tag is replaced...
if(strpos($tag,'[url='))
//...do nothing
continue;
//base tag has the tags name only
$basetag = str_replace('_',' ',substr($tag,1));
//create text for link
$newtag = '#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]';
//replace tag by the link
$body = str_replace($tag, $newtag, $body);
//is the link already in str_tags?
if(! stristr($str_tags,$newtag)) {
//append or set str_tags
if(strlen($str_tags))
$str_tags .= ',';
$str_tags .= $newtag;
}
return;
}
//is it a person tag?
if(strpos($tag,'@') === 0) {
//is it already replaced?
if(strpos($tag,'[url='))
continue;
$stat = false;
//get the person's name
$name = substr($tag,1);
//is it a link or a full dfrn address?
if((strpos($name,'@')) || (strpos($name,'http://'))) {
$newname = $name;
//get the profile links
$links = @lrdd($name);
if(count($links)) {
//for all links, collect how is to inform and how's profile is to link
foreach($links as $link) {
if($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page')
$profile = $link['@attributes']['href'];
if($link['@attributes']['rel'] === 'salmon') {
if(strlen($inform))
$inform .= ',';
$inform .= 'url:' . str_replace(',','%2c',$link['@attributes']['href']);
}
}
}
} else { //if it is a name rather than an address
$newname = $name;
$alias = '';
$tagcid = 0;
//is it some generated name?
if(strrpos($newname,'+')) {
//get the id
$tagcid = intval(substr($newname,strrpos($newname,'+') + 1));
//remove the next word from tag's name
if(strpos($name,' ')) {
$name = substr($name,0,strpos($name,' '));
}
}
if($tagcid) { //if there was an id
//select contact with that id from the logged in user's contact list
$r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($tagcid),
intval($profile_uid)
);
} elseif(strstr($name,'_') || strstr($name,' ')) { //no id
//get the real name
$newname = str_replace('_',' ',$name);
//select someone from this user's contacts by name
$r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1",
dbesc($newname),
intval($profile_uid)
);
} else {
//select someone by attag or nick and the name passed in
$r = q("SELECT * FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1",
dbesc($name),
dbesc($name),
intval($profile_uid)
);
}
//$r is set, if someone could be selected
if(count($r)) {
$profile = $r[0]['url'];
//set newname to nick, find alias
if($r[0]['network'] === 'stat') {
$newname = $r[0]['nick'];
$stat = true;
if($r[0]['alias'])
$alias = $r[0]['alias'];
}
else
$newname = $r[0]['name'];
//add person's id to $inform
if(strlen($inform))
$inform .= ',';
$inform .= 'cid:' . $r[0]['id'];
}
}
//if there is an url for this persons profile
if(isset($profile)) {
//create profile link
$profile = str_replace(',','%2c',$profile);
$newtag = '@[url=' . $profile . ']' . $newname . '[/url]';
$body = str_replace('@' . $name, $newtag, $body);
//append tag to str_tags
if(! stristr($str_tags,$newtag)) {
if(strlen($str_tags))
$str_tags .= ',';
$str_tags .= $newtag;
}
// Status.Net seems to require the numeric ID URL in a mention if the person isn't
// subscribed to you. But the nickname URL is OK if they are. Grrr. We'll tag both.
if(strlen($alias)) {
$newtag = '@[url=' . $alias . ']' . $newname . '[/url]';
if(! stristr($str_tags,$newtag)) {
if(strlen($str_tags))
$str_tags .= ',';
$str_tags .= $newtag;
}
}
}
}
}

View File

@ -74,7 +74,7 @@ function manage_post(&$a) {
if($limited_id) if($limited_id)
$_SESSION['submanage'] = $original_id; $_SESSION['submanage'] = $original_id;
goaway($a->get_baseurl() . '/profile/' . $a->user['nickname']); goaway($a->get_baseurl(true) . '/profile/' . $a->user['nickname']);
// NOTREACHED // NOTREACHED
} }

View File

@ -56,23 +56,23 @@ function message_content(&$a) {
return; return;
} }
$myprofile = $a->get_baseurl() . '/profile/' . $a->user['nickname']; $myprofile = $a->get_baseurl(true) . '/profile/' . $a->user['nickname'];
$tabs = array( $tabs = array(
array( array(
'label' => t('Inbox'), 'label' => t('Inbox'),
'url'=> $a->get_baseurl() . '/message', 'url'=> $a->get_baseurl(true) . '/message',
'sel'=> (($a->argc == 1) ? 'active' : ''), 'sel'=> (($a->argc == 1) ? 'active' : ''),
), ),
array( array(
'label' => t('Outbox'), 'label' => t('Outbox'),
'url' => $a->get_baseurl() . '/message/sent', 'url' => $a->get_baseurl(true) . '/message/sent',
'sel'=> (($a->argv[1] == 'sent') ? 'active' : ''), 'sel'=> (($a->argv[1] == 'sent') ? 'active' : ''),
), ),
array( array(
'label' => t('New Message'), 'label' => t('New Message'),
'url' => $a->get_baseurl() . '/message/new', 'url' => $a->get_baseurl(true) . '/message/new',
'sel'=> (($a->argv[1] == 'new') ? 'active' : ''), 'sel'=> (($a->argv[1] == 'new') ? 'active' : ''),
), ),
); );
@ -99,7 +99,7 @@ function message_content(&$a) {
if($r) { if($r) {
info( t('Message deleted.') . EOL ); info( t('Message deleted.') . EOL );
} }
goaway($a->get_baseurl() . '/message' ); goaway($a->get_baseurl(true) . '/message' );
} }
else { else {
$r = q("SELECT `parent-uri`,`convid` FROM `mail` WHERE `id` = %d AND `uid` = %d LIMIT 1", $r = q("SELECT `parent-uri`,`convid` FROM `mail` WHERE `id` = %d AND `uid` = %d LIMIT 1",
@ -129,7 +129,7 @@ function message_content(&$a) {
if($r) if($r)
info( t('Conversation removed.') . EOL ); info( t('Conversation removed.') . EOL );
} }
goaway($a->get_baseurl() . '/message' ); goaway($a->get_baseurl(true) . '/message' );
} }
} }
@ -146,7 +146,7 @@ function message_content(&$a) {
$tpl = get_markup_template('msg-header.tpl'); $tpl = get_markup_template('msg-header.tpl');
$a->page['htmlhead'] .= replace_macros($tpl, array( $a->page['htmlhead'] .= replace_macros($tpl, array(
'$baseurl' => $a->get_baseurl(), '$baseurl' => $a->get_baseurl(true),
'$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'), '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
'$nickname' => $a->user['nickname'], '$nickname' => $a->user['nickname'],
'$linkurl' => t('Please enter a link URL:') '$linkurl' => t('Please enter a link URL:')
@ -192,9 +192,9 @@ function message_content(&$a) {
$a->set_pager_total($r[0]['total']); $a->set_pager_total($r[0]['total']);
$r = q("SELECT max(`mail`.`created`) AS `mailcreated`, min(`mail`.`seen`) AS `mailseen`, $r = q("SELECT max(`mail`.`created`) AS `mailcreated`, min(`mail`.`seen`) AS `mailseen`,
`mail`.* , `contact`.`name`, `contact`.`url`, `contact`.`thumb` `mail`.* , `contact`.`name`, `contact`.`url`, `contact`.`thumb` , `contact`.`network`
FROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id` FROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id`
WHERE `mail`.`uid` = %d AND `from-url` $eq '%s' GROUP BY `parent-uri` ORDER BY `created` DESC LIMIT %d , %d ", WHERE `mail`.`uid` = %d AND `from-url` $eq '%s' GROUP BY `parent-uri` ORDER BY `mailcreated` DESC LIMIT %d , %d ",
intval(local_user()), intval(local_user()),
dbesc($myprofile), dbesc($myprofile),
intval($a->pager['start']), intval($a->pager['start']),
@ -210,7 +210,7 @@ function message_content(&$a) {
$o .= replace_macros($tpl, array( $o .= replace_macros($tpl, array(
'$id' => $rr['id'], '$id' => $rr['id'],
'$from_name' =>$rr['from-name'], '$from_name' =>$rr['from-name'],
'$from_url' => (($rr['network'] === NETWORK_DFRN) ? $a->get_baseurl() . '/redir/' . $rr['contact-id'] : $rr['url']), '$from_url' => (($rr['network'] === NETWORK_DFRN) ? $a->get_baseurl(true) . '/redir/' . $rr['contact-id'] : $rr['url']),
'$sparkle' => ' sparkle', '$sparkle' => ' sparkle',
'$from_photo' => $rr['thumb'], '$from_photo' => $rr['thumb'],
'$subject' => template_escape((($rr['mailseen']) ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>')), '$subject' => template_escape((($rr['mailseen']) ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>')),
@ -267,7 +267,7 @@ function message_content(&$a) {
$a->page['htmlhead'] .= replace_macros($tpl, array( $a->page['htmlhead'] .= replace_macros($tpl, array(
'$nickname' => $a->user['nickname'], '$nickname' => $a->user['nickname'],
'$baseurl' => $a->get_baseurl() '$baseurl' => $a->get_baseurl(true)
)); ));
@ -278,7 +278,7 @@ function message_content(&$a) {
$sparkle = ''; $sparkle = '';
} }
else { else {
$from_url = $a->get_baseurl() . '/redir/' . $message['contact-id']; $from_url = $a->get_baseurl(true) . '/redir/' . $message['contact-id'];
$sparkle = ' sparkle'; $sparkle = ' sparkle';
} }
$o .= replace_macros($tpl, array( $o .= replace_macros($tpl, array(

View File

@ -44,13 +44,16 @@ function network_init(&$a) {
} }
$a->page['aside'] .= group_side('network','network',true,$group_id); $a->page['aside'] .= group_side('network','network',true,$group_id);
$a->page['aside'] .= networks_widget($a->get_baseurl() . '/network',(($_GET['nets']) ? $_GET['nets'] : '')); $a->page['aside'] .= networks_widget($a->get_baseurl(true) . '/network',(x($_GET, 'nets') ? $_GET['nets'] : ''));
$a->page['aside'] .= saved_searches($search); $a->page['aside'] .= saved_searches($search);
$a->page['aside'] .= fileas_widget($a->get_baseurl(true) . '/network',(x($_GET, 'file') ? $_GET['file'] : ''));
} }
function saved_searches($search) { function saved_searches($search) {
$a = get_app();
$srchurl = '/network?f=' $srchurl = '/network?f='
. ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '')
. ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '') . ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '')
@ -58,7 +61,9 @@ function saved_searches($search) {
. ((x($_GET,'conv')) ? '&conv=' . $_GET['conv'] : '') . ((x($_GET,'conv')) ? '&conv=' . $_GET['conv'] : '')
. ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '') . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '')
. ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '') . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '')
. ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : ''); . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : '')
. ((x($_GET,'file')) ? '&file=' . $_GET['file'] : '');
;
$o = ''; $o = '';
@ -85,7 +90,7 @@ function saved_searches($search) {
$o = replace_macros($tpl, array( $o = replace_macros($tpl, array(
'$title' => t('Saved Searches'), '$title' => t('Saved Searches'),
'$add' => t('add'), '$add' => t('add'),
'$searchbox' => search($search,'netsearch-box',$srchurl,true), '$searchbox' => search($search,'netsearch-box',$a->get_baseurl(true) . $srchurl,true),
'$saved' => $saved, '$saved' => $saved,
)); ));
@ -130,15 +135,15 @@ function network_content(&$a, $update = 0) {
$starred_active = 'active'; $starred_active = 'active';
} }
if($_GET['bmark']) { if(x($_GET,'bmark')) {
$bookmarked_active = 'active'; $bookmarked_active = 'active';
} }
if($_GET['conv']) { if(x($_GET,'conv')) {
$conv_active = 'active'; $conv_active = 'active';
} }
if($_GET['spam']) { if(x($_GET,'spam')) {
$spam_active = 'active'; $spam_active = 'active';
} }
@ -164,38 +169,38 @@ function network_content(&$a, $update = 0) {
$tabs = array( $tabs = array(
array( array(
'label' => t('Commented Order'), 'label' => t('Commented Order'),
'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '?f=&cid=' . $_GET['cid'] : ''), 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '?f=&cid=' . $_GET['cid'] : ''),
'sel'=>$all_active, 'sel'=>$all_active,
), ),
array( array(
'label' => t('Posted Order'), 'label' => t('Posted Order'),
'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''), 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''),
'sel'=>$postord_active, 'sel'=>$postord_active,
), ),
array( array(
'label' => t('Personal'), 'label' => t('Personal'),
'url' => $a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&conv=1', 'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&conv=1',
'sel' => $conv_active, 'sel' => $conv_active,
), ),
array( array(
'label' => t('New'), 'label' => t('New'),
'url' => $a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . '/new' . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : ''), 'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . '/new' . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : ''),
'sel' => $new_active, 'sel' => $new_active,
), ),
array( array(
'label' => t('Starred'), 'label' => t('Starred'),
'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&star=1', 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&star=1',
'sel'=>$starred_active, 'sel'=>$starred_active,
), ),
array( array(
'label' => t('Bookmarks'), 'label' => t('Shared Links'),
'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&bmark=1', 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&bmark=1',
'sel'=>$bookmarked_active, 'sel'=>$bookmarked_active,
), ),
// array( // array(
// 'label' => t('Spam'), // 'label' => t('Spam'),
// 'url'=>$a->get_baseurl() . '/network?f=&spam=1' // 'url'=>$a->get_baseurl(true) . '/network?f=&spam=1'
// 'sel'=> $spam_active, // 'sel'=> $spam_active,
// ), // ),
@ -226,6 +231,7 @@ function network_content(&$a, $update = 0) {
$nets = ((x($_GET,'nets')) ? $_GET['nets'] : ''); $nets = ((x($_GET,'nets')) ? $_GET['nets'] : '');
$cmin = ((x($_GET,'cmin')) ? intval($_GET['cmin']) : 0); $cmin = ((x($_GET,'cmin')) ? intval($_GET['cmin']) : 0);
$cmax = ((x($_GET,'cmax')) ? intval($_GET['cmax']) : 99); $cmax = ((x($_GET,'cmax')) ? intval($_GET['cmax']) : 99);
$file = ((x($_GET,'file')) ? $_GET['file'] : '');
if(($a->argc > 2) && $a->argv[2] === 'new') if(($a->argc > 2) && $a->argv[2] === 'new')
$nouveau = true; $nouveau = true;
@ -239,13 +245,13 @@ function network_content(&$a, $update = 0) {
} }
} }
if(x($_GET,'search')) if(x($_GET,'search') || x($_GET,'file'))
$nouveau = true; $nouveau = true;
if($cid) if($cid)
$def_acl = array('allow_cid' => '<' . intval($cid) . '>'); $def_acl = array('allow_cid' => '<' . intval($cid) . '>');
if(! $update) { if(! $update) {
if(group) { if($group) {
if(($t = group_public_members($group)) && (! get_pconfig(local_user(),'system','nowarn_insecure'))) { if(($t = group_public_members($group)) && (! get_pconfig(local_user(),'system','nowarn_insecure'))) {
notice( sprintf( tt('Warning: This group contains %s member from an insecure network.', notice( sprintf( tt('Warning: This group contains %s member from an insecure network.',
'Warning: This group contains %s members from an insecure network.', 'Warning: This group contains %s members from an insecure network.',
@ -296,7 +302,7 @@ function network_content(&$a, $update = 0) {
if($update) if($update)
killme(); killme();
notice( t('No such group') . EOL ); notice( t('No such group') . EOL );
goaway($a->get_baseurl() . '/network'); goaway($a->get_baseurl(true) . '/network');
// NOTREACHED // NOTREACHED
} }
@ -328,7 +334,7 @@ function network_content(&$a, $update = 0) {
} }
else { else {
notice( t('Invalid contact.') . EOL); notice( t('Invalid contact.') . EOL);
goaway($a->get_baseurl() . '/network'); goaway($a->get_baseurl(true) . '/network');
// NOTREACHED // NOTREACHED
} }
} }
@ -358,6 +364,7 @@ function network_content(&$a, $update = 0) {
. ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '') . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '')
. ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '') . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '')
. ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : '') . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : '')
. ((x($_GET,'file')) ? '&file=' . $_GET['file'] : '')
. "'; var profile_page = " . $a->pager['page'] . "; </script>\r\n"; . "'; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
} }
@ -371,6 +378,9 @@ function network_content(&$a, $update = 0) {
dbesc('\\]' . preg_quote($search) . '\\[') dbesc('\\]' . preg_quote($search) . '\\[')
); );
} }
if(strlen($file)) {
$sql_extra .= file_tag_file_query('item',$file);
}
if($conv) { if($conv) {
$myurl = $a->get_baseurl() . '/profile/'. $a->user['nickname']; $myurl = $a->get_baseurl() . '/profile/'. $a->user['nickname'];
@ -491,6 +501,8 @@ function network_content(&$a, $update = 0) {
$items = conv_sort($items,$ordering); $items = conv_sort($items,$ordering);
} else {
$items = array();
} }
} }

View File

@ -42,12 +42,12 @@ function notifications_post(&$a) {
intval(local_user()) intval(local_user())
); );
} }
goaway($a->get_baseurl() . '/notifications/intros'); goaway($a->get_baseurl(true) . '/notifications/intros');
} }
if($_POST['submit'] == t('Ignore')) { if($_POST['submit'] == t('Ignore')) {
$r = q("UPDATE `intro` SET `ignore` = 1 WHERE `id` = %d LIMIT 1", $r = q("UPDATE `intro` SET `ignore` = 1 WHERE `id` = %d LIMIT 1",
intval($intro_id)); intval($intro_id));
goaway($a->get_baseurl() . '/notifications/intros'); goaway($a->get_baseurl(true) . '/notifications/intros');
} }
} }
} }
@ -69,32 +69,32 @@ function notifications_content(&$a) {
$tabs = array( $tabs = array(
array( array(
'label' => t('System'), 'label' => t('System'),
'url'=>$a->get_baseurl() . '/notifications/system', 'url'=>$a->get_baseurl(true) . '/notifications/system',
'sel'=> (($a->argv[1] == 'system') ? 'active' : ''), 'sel'=> (($a->argv[1] == 'system') ? 'active' : ''),
), ),
array( array(
'label' => t('Network'), 'label' => t('Network'),
'url'=>$a->get_baseurl() . '/notifications/network', 'url'=>$a->get_baseurl(true) . '/notifications/network',
'sel'=> (($a->argv[1] == 'network') ? 'active' : ''), 'sel'=> (($a->argv[1] == 'network') ? 'active' : ''),
), ),
array( array(
'label' => t('Personal'), 'label' => t('Personal'),
'url'=>$a->get_baseurl() . '/notifications/personal', 'url'=>$a->get_baseurl(true) . '/notifications/personal',
'sel'=> (($a->argv[1] == 'personal') ? 'active' : ''), 'sel'=> (($a->argv[1] == 'personal') ? 'active' : ''),
), ),
array( array(
'label' => t('Home'), 'label' => t('Home'),
'url' => $a->get_baseurl() . '/notifications/home', 'url' => $a->get_baseurl(true) . '/notifications/home',
'sel'=> (($a->argv[1] == 'home') ? 'active' : ''), 'sel'=> (($a->argv[1] == 'home') ? 'active' : ''),
), ),
array( array(
'label' => t('Introductions'), 'label' => t('Introductions'),
'url' => $a->get_baseurl() . '/notifications/intros', 'url' => $a->get_baseurl(true) . '/notifications/intros',
'sel'=> (($a->argv[1] == 'intros') ? 'active' : ''), 'sel'=> (($a->argv[1] == 'intros') ? 'active' : ''),
), ),
array( array(
'label' => t('Messages'), 'label' => t('Messages'),
'url' => $a->get_baseurl() . '/message', 'url' => $a->get_baseurl(true) . '/message',
'sel'=> '', 'sel'=> '',
), ),
); );
@ -244,7 +244,7 @@ function notifications_content(&$a) {
switch($it['verb']){ switch($it['verb']){
case ACTIVITY_LIKE: case ACTIVITY_LIKE:
$notif_content .= replace_macros($tpl_item_likes,array( $notif_content .= replace_macros($tpl_item_likes,array(
'$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_image' => $it['author-avatar'], '$item_image' => $it['author-avatar'],
'$item_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']), '$item_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']),
'$item_when' => relative_date($it['created']) '$item_when' => relative_date($it['created'])
@ -253,7 +253,7 @@ function notifications_content(&$a) {
case ACTIVITY_DISLIKE: case ACTIVITY_DISLIKE:
$notif_content .= replace_macros($tpl_item_dislikes,array( $notif_content .= replace_macros($tpl_item_dislikes,array(
'$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_image' => $it['author-avatar'], '$item_image' => $it['author-avatar'],
'$item_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']), '$item_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']),
'$item_when' => relative_date($it['created']) '$item_when' => relative_date($it['created'])
@ -267,7 +267,7 @@ function notifications_content(&$a) {
$it['fname'] = $obj->title; $it['fname'] = $obj->title;
$notif_content .= replace_macros($tpl_item_friends,array( $notif_content .= replace_macros($tpl_item_friends,array(
'$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_image' => $it['author-avatar'], '$item_image' => $it['author-avatar'],
'$item_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']), '$item_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']),
'$item_when' => relative_date($it['created']) '$item_when' => relative_date($it['created'])
@ -281,7 +281,7 @@ function notifications_content(&$a) {
$tpl = (($it['id'] == $it['parent']) ? $tpl_item_posts : $tpl_item_comments); $tpl = (($it['id'] == $it['parent']) ? $tpl_item_posts : $tpl_item_comments);
$notif_content .= replace_macros($tpl,array( $notif_content .= replace_macros($tpl,array(
'$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_image' => $it['author-avatar'], '$item_image' => $it['author-avatar'],
'$item_text' => $item_text, '$item_text' => $item_text,
'$item_when' => relative_date($it['created']) '$item_when' => relative_date($it['created'])
@ -314,7 +314,7 @@ function notifications_content(&$a) {
if (count($r) > 0) { if (count($r) > 0) {
foreach ($r as $it) { foreach ($r as $it) {
$notif_content .= replace_macros($not_tpl,array( $notif_content .= replace_macros($not_tpl,array(
'$item_link' => $a->get_baseurl().'/notify/view/'. $it['id'], '$item_link' => $a->get_baseurl(true).'/notify/view/'. $it['id'],
'$item_image' => $it['photo'], '$item_image' => $it['photo'],
'$item_text' => strip_tags(bbcode($it['msg'])), '$item_text' => strip_tags(bbcode($it['msg'])),
'$item_when' => relative_date($it['date']) '$item_when' => relative_date($it['date'])
@ -334,7 +334,7 @@ function notifications_content(&$a) {
$notif_tpl = get_markup_template('notifications.tpl'); $notif_tpl = get_markup_template('notifications.tpl');
$myurl = $a->get_baseurl() . '/profile/'. $a->user['nickname']; $myurl = $a->get_baseurl(true) . '/profile/'. $a->user['nickname'];
$myurl = substr($myurl,strpos($myurl,'://')+3); $myurl = substr($myurl,strpos($myurl,'://')+3);
$myurl = str_replace(array('www.','.'),array('','\\.'),$myurl); $myurl = str_replace(array('www.','.'),array('','\\.'),$myurl);
$diasp_url = str_replace('/profile/','/u/',$myurl); $diasp_url = str_replace('/profile/','/u/',$myurl);
@ -369,7 +369,7 @@ function notifications_content(&$a) {
switch($it['verb']){ switch($it['verb']){
case ACTIVITY_LIKE: case ACTIVITY_LIKE:
$notif_content .= replace_macros($tpl_item_likes,array( $notif_content .= replace_macros($tpl_item_likes,array(
'$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_image' => $it['author-avatar'], '$item_image' => $it['author-avatar'],
'$item_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']), '$item_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']),
'$item_when' => relative_date($it['created']) '$item_when' => relative_date($it['created'])
@ -378,7 +378,7 @@ function notifications_content(&$a) {
case ACTIVITY_DISLIKE: case ACTIVITY_DISLIKE:
$notif_content .= replace_macros($tpl_item_dislikes,array( $notif_content .= replace_macros($tpl_item_dislikes,array(
'$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_image' => $it['author-avatar'], '$item_image' => $it['author-avatar'],
'$item_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']), '$item_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']),
'$item_when' => relative_date($it['created']) '$item_when' => relative_date($it['created'])
@ -392,7 +392,7 @@ function notifications_content(&$a) {
$it['fname'] = $obj->title; $it['fname'] = $obj->title;
$notif_content .= replace_macros($tpl_item_friends,array( $notif_content .= replace_macros($tpl_item_friends,array(
'$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_image' => $it['author-avatar'], '$item_image' => $it['author-avatar'],
'$item_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']), '$item_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']),
'$item_when' => relative_date($it['created']) '$item_when' => relative_date($it['created'])
@ -406,7 +406,7 @@ function notifications_content(&$a) {
$tpl = (($it['id'] == $it['parent']) ? $tpl_item_posts : $tpl_item_comments); $tpl = (($it['id'] == $it['parent']) ? $tpl_item_posts : $tpl_item_comments);
$notif_content .= replace_macros($tpl,array( $notif_content .= replace_macros($tpl,array(
'$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_image' => $it['author-avatar'], '$item_image' => $it['author-avatar'],
'$item_text' => $item_text, '$item_text' => $item_text,
'$item_when' => relative_date($it['created']) '$item_when' => relative_date($it['created'])
@ -456,7 +456,7 @@ function notifications_content(&$a) {
switch($it['verb']){ switch($it['verb']){
case ACTIVITY_LIKE: case ACTIVITY_LIKE:
$notif_content .= replace_macros($tpl_item_likes,array( $notif_content .= replace_macros($tpl_item_likes,array(
'$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_image' => $it['author-avatar'], '$item_image' => $it['author-avatar'],
'$item_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']), '$item_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']),
'$item_when' => relative_date($it['created']) '$item_when' => relative_date($it['created'])
@ -465,7 +465,7 @@ function notifications_content(&$a) {
break; break;
case ACTIVITY_DISLIKE: case ACTIVITY_DISLIKE:
$notif_content .= replace_macros($tpl_item_dislikes,array( $notif_content .= replace_macros($tpl_item_dislikes,array(
'$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_image' => $it['author-avatar'], '$item_image' => $it['author-avatar'],
'$item_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']), '$item_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']),
'$item_when' => relative_date($it['created']) '$item_when' => relative_date($it['created'])
@ -479,7 +479,7 @@ function notifications_content(&$a) {
$it['fname'] = $obj->title; $it['fname'] = $obj->title;
$notif_content .= replace_macros($tpl_item_friends,array( $notif_content .= replace_macros($tpl_item_friends,array(
'$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_image' => $it['author-avatar'], '$item_image' => $it['author-avatar'],
'$item_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']), '$item_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']),
'$item_when' => relative_date($it['created']) '$item_when' => relative_date($it['created'])
@ -488,7 +488,7 @@ function notifications_content(&$a) {
break; break;
default: default:
$notif_content .= replace_macros($tpl_item_comments,array( $notif_content .= replace_macros($tpl_item_comments,array(
'$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'],
'$item_image' => $it['author-avatar'], '$item_image' => $it['author-avatar'],
'$item_text' => sprintf( t("%s commented on %s's post"), $it['author-name'], $it['pname']), '$item_text' => sprintf( t("%s commented on %s's post"), $it['author-name'], $it['pname']),
'$item_when' => relative_date($it['created']) '$item_when' => relative_date($it['created'])

View File

@ -20,7 +20,7 @@ function notify_init(&$a) {
goaway($r[0]['link']); goaway($r[0]['link']);
} }
goaway($a->get_baseurl()); goaway($a->get_baseurl(true));
} }
if($a->argc > 2 && $a->argv[1] === 'mark' && $a->argv[2] === 'all' ) { if($a->argc > 2 && $a->argv[1] === 'mark' && $a->argv[2] === 'all' ) {
@ -51,7 +51,7 @@ function notify_content(&$a) {
if (count($r) > 0) { if (count($r) > 0) {
foreach ($r as $it) { foreach ($r as $it) {
$notif_content .= replace_macros($not_tpl,array( $notif_content .= replace_macros($not_tpl,array(
'$item_link' => $a->get_baseurl().'/notify/view/'. $it['id'], '$item_link' => $a->get_baseurl(true).'/notify/view/'. $it['id'],
'$item_image' => $it['photo'], '$item_image' => $it['photo'],
'$item_text' => strip_tags(bbcode($it['msg'])), '$item_text' => strip_tags(bbcode($it['msg'])),
'$item_when' => relative_date($it['date']) '$item_when' => relative_date($it['date'])

View File

@ -188,7 +188,7 @@ function parse_url_content(&$a) {
if(! $text) { if(! $text) {
logger('parsing meta'); logger('parsing meta');
$items = $domhead->getElementsByTagName('meta'); $items = (isset($domhead) && is_object($domhead) ? $domhead->getElementsByTagName('meta') : null);
if($items) { if($items) {
foreach($items as $item) { foreach($items as $item) {
$property = $item->getAttribute('property'); $property = $item->getAttribute('property');

View File

@ -27,7 +27,7 @@ function profile_init(&$a) {
profile_load($a,$which,$profile); profile_load($a,$which,$profile);
if((x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY)) { if((x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY)) {
$a->page['htmlhead'] .= '<meta name="friendika.community" content="true" />'; $a->page['htmlhead'] .= '<meta name="friendica.community" content="true" />';
} }
if(x($a->profile,'openidserver')) if(x($a->profile,'openidserver'))
$a->page['htmlhead'] .= '<link rel="openid.server" href="' . $a->profile['openidserver'] . '" />' . "\r\n"; $a->page['htmlhead'] .= '<link rel="openid.server" href="' . $a->profile['openidserver'] . '" />' . "\r\n";

View File

@ -20,6 +20,8 @@ function profile_photo_post(&$a) {
return; return;
} }
check_form_security_token_redirectOnErr('/profile_photo', 'profile_photo');
if((x($_POST,'cropfinal')) && ($_POST['cropfinal'] == 1)) { if((x($_POST,'cropfinal')) && ($_POST['cropfinal'] == 1)) {
// phase 2 - we have finished cropping // phase 2 - we have finished cropping
@ -149,6 +151,8 @@ function profile_photo_content(&$a) {
return; return;
}; };
check_form_security_token_redirectOnErr('/profile_photo', 'profile_photo');
$resource_id = $a->argv[2]; $resource_id = $a->argv[2];
//die(":".local_user()); //die(":".local_user());
$r=q("SELECT * FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s' ORDER BY `scale` ASC", $r=q("SELECT * FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s' ORDER BY `scale` ASC",
@ -203,6 +207,7 @@ function profile_photo_content(&$a) {
'$lbl_upfile' => t('Upload File:'), '$lbl_upfile' => t('Upload File:'),
'$title' => t('Upload Profile Photo'), '$title' => t('Upload Profile Photo'),
'$submit' => t('Upload'), '$submit' => t('Upload'),
'$form_security_token' => get_form_security_token("profile_photo"),
'$select' => sprintf('%s %s', t('or'), ($newuser) ? '<a href="' . $a->get_baseurl() . '">' . t('skip this step') . '</a>' : '<a href="'. $a->get_baseurl() . '/photos/' . $a->user['nickname'] . '">' . t('select a photo from your photo albums') . '</a>') '$select' => sprintf('%s %s', t('or'), ($newuser) ? '<a href="' . $a->get_baseurl() . '">' . t('skip this step') . '</a>' : '<a href="'. $a->get_baseurl() . '/photos/' . $a->user['nickname'] . '">' . t('select a photo from your photo albums') . '</a>')
)); ));
@ -218,6 +223,7 @@ function profile_photo_content(&$a) {
'$image_url' => $a->get_baseurl() . '/photo/' . $filename, '$image_url' => $a->get_baseurl() . '/photo/' . $filename,
'$title' => t('Crop Image'), '$title' => t('Crop Image'),
'$desc' => t('Please adjust the image cropping for optimum viewing.'), '$desc' => t('Please adjust the image cropping for optimum viewing.'),
'$form_security_token' => get_form_security_token("profile_photo"),
'$done' => t('Done Editing') '$done' => t('Done Editing')
)); ));
return $o; return $o;

View File

@ -21,6 +21,9 @@ function profiles_post(&$a) {
notice( t('Profile not found.') . EOL); notice( t('Profile not found.') . EOL);
return; return;
} }
check_form_security_token_redirectOnErr('/profiles', 'profile_edit');
$is_default = (($orig[0]['is-default']) ? 1 : 0); $is_default = (($orig[0]['is-default']) ? 1 : 0);
$profile_name = notags(trim($_POST['profile_name'])); $profile_name = notags(trim($_POST['profile_name']));
@ -237,10 +240,12 @@ function profiles_content(&$a) {
); );
if(! count($r)) { if(! count($r)) {
notice( t('Profile not found.') . EOL); notice( t('Profile not found.') . EOL);
goaway($a->get_baseurl() . '/profiles'); goaway($a->get_baseurl(true) . '/profiles');
return; // NOTREACHED return; // NOTREACHED
} }
check_form_security_token_redirectOnErr('/profiles', 'profile_drop', 't');
// move every contact using this profile as their default to the user default // move every contact using this profile as their default to the user default
$r = q("UPDATE `contact` SET `profile-id` = (SELECT `profile`.`id` AS `profile-id` FROM `profile` WHERE `profile`.`is-default` = 1 AND `profile`.`uid` = %d LIMIT 1) WHERE `profile-id` = %d AND `uid` = %d ", $r = q("UPDATE `contact` SET `profile-id` = (SELECT `profile`.`id` AS `profile-id` FROM `profile` WHERE `profile`.`is-default` = 1 AND `profile`.`uid` = %d LIMIT 1) WHERE `profile-id` = %d AND `uid` = %d ",
@ -255,7 +260,7 @@ function profiles_content(&$a) {
if($r) if($r)
info( t('Profile deleted.') . EOL); info( t('Profile deleted.') . EOL);
goaway($a->get_baseurl() . '/profiles'); goaway($a->get_baseurl(true) . '/profiles');
return; // NOTREACHED return; // NOTREACHED
} }
@ -265,6 +270,8 @@ function profiles_content(&$a) {
if(($a->argc > 1) && ($a->argv[1] === 'new')) { if(($a->argc > 1) && ($a->argv[1] === 'new')) {
check_form_security_token_redirectOnErr('/profiles', 'profile_new', 't');
$r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d", $r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d",
intval(local_user())); intval(local_user()));
$num_profiles = count($r0); $num_profiles = count($r0);
@ -290,12 +297,15 @@ function profiles_content(&$a) {
info( t('New profile created.') . EOL); info( t('New profile created.') . EOL);
if(count($r3) == 1) if(count($r3) == 1)
goaway($a->get_baseurl() . '/profiles/' . $r3[0]['id']); goaway($a->get_baseurl(true) . '/profiles/' . $r3[0]['id']);
goaway($a->get_baseurl() . '/profiles');
goaway($a->get_baseurl(true) . '/profiles');
} }
if(($a->argc > 2) && ($a->argv[1] === 'clone')) { if(($a->argc > 2) && ($a->argv[1] === 'clone')) {
check_form_security_token_redirectOnErr('/profiles', 'profile_clone', 't');
$r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d", $r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d",
intval(local_user())); intval(local_user()));
$num_profiles = count($r0); $num_profiles = count($r0);
@ -329,8 +339,10 @@ function profiles_content(&$a) {
); );
info( t('New profile created.') . EOL); info( t('New profile created.') . EOL);
if(count($r3) == 1) if(count($r3) == 1)
goaway($a->get_baseurl() . '/profiles/' . $r3[0]['id']); goaway($a->get_baseurl(true) . '/profiles/' . $r3[0]['id']);
goaway($a->get_baseurl() . '/profiles');
goaway($a->get_baseurl(true) . '/profiles');
return; // NOTREACHED return; // NOTREACHED
} }
@ -361,7 +373,7 @@ function profiles_content(&$a) {
)); ));
$a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl())); $a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl(true)));
$a->page['htmlhead'] .= "<script type=\"text/javascript\" src=\"js/country.js\" ></script>"; $a->page['htmlhead'] .= "<script type=\"text/javascript\" src=\"js/country.js\" ></script>";
$f = get_config('system','birthday_input_format'); $f = get_config('system','birthday_input_format');
@ -371,6 +383,9 @@ function profiles_content(&$a) {
$is_default = (($r[0]['is-default']) ? 1 : 0); $is_default = (($r[0]['is-default']) ? 1 : 0);
$tpl = get_markup_template("profile_edit.tpl"); $tpl = get_markup_template("profile_edit.tpl");
$o .= replace_macros($tpl,array( $o .= replace_macros($tpl,array(
'$form_security_token' => get_form_security_token("profile_edit"),
'$profile_clone_link' => 'profiles/clone/' . $r[0]['id'] . '?t=' . get_form_security_token("profile_clone"),
'$profile_drop_link' => 'profiles/drop/' . $r[0]['id'] . '?t=' . get_form_security_token("profile_drop"),
'$banner' => t('Edit Profile Details'), '$banner' => t('Edit Profile Details'),
'$submit' => t('Submit'), '$submit' => t('Submit'),
'$viewprof' => t('View this profile'), '$viewprof' => t('View this profile'),
@ -410,7 +425,7 @@ function profiles_content(&$a) {
'$lbl_work' => t('Work/employment'), '$lbl_work' => t('Work/employment'),
'$lbl_school' => t('School/education'), '$lbl_school' => t('School/education'),
'$disabled' => (($is_default) ? 'onclick="return false;" style="color: #BBBBFF;"' : ''), '$disabled' => (($is_default) ? 'onclick="return false;" style="color: #BBBBFF;"' : ''),
'$baseurl' => $a->get_baseurl(), '$baseurl' => $a->get_baseurl(true),
'$profile_id' => $r[0]['id'], '$profile_id' => $r[0]['id'],
'$profile_name' => $r[0]['profile-name'], '$profile_name' => $r[0]['profile-name'],
'$default' => (($is_default) ? '<p id="profile-edit-default-desc">' . t('This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet.') . '</p>' : ""), '$default' => (($is_default) ? '<p id="profile-edit-default-desc">' . t('This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet.') . '</p>' : ""),
@ -460,7 +475,8 @@ function profiles_content(&$a) {
$o .= replace_macros($tpl_header,array( $o .= replace_macros($tpl_header,array(
'$header' => t('Edit/Manage Profiles'), '$header' => t('Edit/Manage Profiles'),
'$chg_photo' => t('Change profile photo'), '$chg_photo' => t('Change profile photo'),
'$cr_new' => t('Create New Profile') '$cr_new' => t('Create New Profile'),
'$cr_new_link' => 'profiles/new?t=' . get_form_security_token("profile_new")
)); ));
@ -473,7 +489,7 @@ function profiles_content(&$a) {
'$alt' => t('Profile Image'), '$alt' => t('Profile Image'),
'$profile_name' => $rr['profile-name'], '$profile_name' => $rr['profile-name'],
'$visible' => (($rr['is-default']) ? '<strong>' . t('visible to everybody') . '</strong>' '$visible' => (($rr['is-default']) ? '<strong>' . t('visible to everybody') . '</strong>'
: '<a href="' . $a->get_baseurl() . '/profperm/' . $rr['id'] . '" />' . t('Edit visibility') . '</a>') : '<a href="' . $a->get_baseurl(true) . '/profperm/' . $rr['id'] . '" />' . t('Edit visibility') . '</a>')
)); ));
} }
} }

View File

@ -53,16 +53,20 @@ function settings_post(&$a) {
$old_page_flags = $a->user['page-flags']; $old_page_flags = $a->user['page-flags'];
if(($a->argc > 1) && ($a->argv[1] === 'oauth') && x($_POST,'remove')){ if(($a->argc > 1) && ($a->argv[1] === 'oauth') && x($_POST,'remove')){
check_form_security_token_redirectOnErr('/settings/oauth', 'settings_oauth');
$key = $_POST['remove']; $key = $_POST['remove'];
q("DELETE FROM tokens WHERE id='%s' AND uid=%d", q("DELETE FROM tokens WHERE id='%s' AND uid=%d",
dbesc($key), dbesc($key),
local_user()); local_user());
goaway($a->get_baseurl()."/settings/oauth/"); goaway($a->get_baseurl(true)."/settings/oauth/");
return; return;
} }
if(($a->argc > 2) && ($a->argv[1] === 'oauth') && ($a->argv[2] === 'edit'||($a->argv[2] === 'add')) && x($_POST,'submit')) { if(($a->argc > 2) && ($a->argv[1] === 'oauth') && ($a->argv[2] === 'edit'||($a->argv[2] === 'add')) && x($_POST,'submit')) {
check_form_security_token_redirectOnErr('/settings/oauth', 'settings_oauth');
$name = ((x($_POST,'name')) ? $_POST['name'] : ''); $name = ((x($_POST,'name')) ? $_POST['name'] : '');
$key = ((x($_POST,'key')) ? $_POST['key'] : ''); $key = ((x($_POST,'key')) ? $_POST['key'] : '');
$secret = ((x($_POST,'secret')) ? $_POST['secret'] : ''); $secret = ((x($_POST,'secret')) ? $_POST['secret'] : '');
@ -100,18 +104,23 @@ function settings_post(&$a) {
local_user()); local_user());
} }
} }
goaway($a->get_baseurl()."/settings/oauth/"); goaway($a->get_baseurl(true)."/settings/oauth/");
return; return;
} }
if(($a->argc > 1) && ($a->argv[1] == 'addon')) { if(($a->argc > 1) && ($a->argv[1] == 'addon')) {
check_form_security_token_redirectOnErr('/settings/addon', 'settings_addon');
call_hooks('plugin_settings_post', $_POST); call_hooks('plugin_settings_post', $_POST);
return; return;
} }
if(($a->argc > 1) && ($a->argv[1] == 'connectors')) { if(($a->argc > 1) && ($a->argv[1] == 'connectors')) {
if(x($_POST['imap-submit'])) { check_form_security_token_redirectOnErr('/settings/connectors', 'settings_connectors');
if(x($_POST, 'imap-submit')) {
$mail_server = ((x($_POST,'mail_server')) ? $_POST['mail_server'] : ''); $mail_server = ((x($_POST,'mail_server')) ? $_POST['mail_server'] : '');
$mail_port = ((x($_POST,'mail_port')) ? $_POST['mail_port'] : ''); $mail_port = ((x($_POST,'mail_port')) ? $_POST['mail_port'] : '');
$mail_ssl = ((x($_POST,'mail_ssl')) ? strtolower(trim($_POST['mail_ssl'])) : ''); $mail_ssl = ((x($_POST,'mail_ssl')) ? strtolower(trim($_POST['mail_ssl'])) : '');
@ -185,6 +194,7 @@ function settings_post(&$a) {
return; return;
} }
check_form_security_token_redirectOnErr('/settings', 'settings');
call_hooks('settings_post', $_POST); call_hooks('settings_post', $_POST);
@ -401,7 +411,7 @@ function settings_post(&$a) {
} }
goaway($a->get_baseurl() . '/settings' ); goaway($a->get_baseurl(true) . '/settings' );
return; // NOTREACHED return; // NOTREACHED
} }
@ -425,27 +435,27 @@ function settings_content(&$a) {
$tabs = array( $tabs = array(
array( array(
'label' => t('Account settings'), 'label' => t('Account settings'),
'url' => $a->get_baseurl().'/settings', 'url' => $a->get_baseurl(true).'/settings',
'sel' => (($a->argc == 1)?'active':''), 'sel' => (($a->argc == 1)?'active':''),
), ),
array( array(
'label' => t('Connector settings'), 'label' => t('Connector settings'),
'url' => $a->get_baseurl().'/settings/connectors', 'url' => $a->get_baseurl(true).'/settings/connectors',
'sel' => (($a->argc > 1) && ($a->argv[1] === 'connectors')?'active':''), 'sel' => (($a->argc > 1) && ($a->argv[1] === 'connectors')?'active':''),
), ),
array( array(
'label' => t('Plugin settings'), 'label' => t('Plugin settings'),
'url' => $a->get_baseurl().'/settings/addon', 'url' => $a->get_baseurl(true).'/settings/addon',
'sel' => (($a->argc > 1) && ($a->argv[1] === 'addon')?'active':''), 'sel' => (($a->argc > 1) && ($a->argv[1] === 'addon')?'active':''),
), ),
array( array(
'label' => t('Connections'), 'label' => t('Connections'),
'url' => $a->get_baseurl() . '/settings/oauth', 'url' => $a->get_baseurl(true) . '/settings/oauth',
'sel' => (($a->argc > 1) && ($a->argv[1] === 'oauth')?'active':''), 'sel' => (($a->argc > 1) && ($a->argv[1] === 'oauth')?'active':''),
), ),
array( array(
'label' => t('Export personal data'), 'label' => t('Export personal data'),
'url' => $a->get_baseurl() . '/uexport', 'url' => $a->get_baseurl(true) . '/uexport',
'sel' => '' 'sel' => ''
) )
); );
@ -460,6 +470,7 @@ function settings_content(&$a) {
if(($a->argc > 2) && ($a->argv[2] === 'add')) { if(($a->argc > 2) && ($a->argv[2] === 'add')) {
$tpl = get_markup_template("settings_oauth_edit.tpl"); $tpl = get_markup_template("settings_oauth_edit.tpl");
$o .= replace_macros($tpl, array( $o .= replace_macros($tpl, array(
'$form_security_token' => get_form_security_token("settings_oauth"),
'$tabs' => $tabs, '$tabs' => $tabs,
'$title' => t('Add application'), '$title' => t('Add application'),
'$submit' => t('Submit'), '$submit' => t('Submit'),
@ -486,6 +497,7 @@ function settings_content(&$a) {
$tpl = get_markup_template("settings_oauth_edit.tpl"); $tpl = get_markup_template("settings_oauth_edit.tpl");
$o .= replace_macros($tpl, array( $o .= replace_macros($tpl, array(
'$form_security_token' => get_form_security_token("settings_oauth"),
'$tabs' => $tabs, '$tabs' => $tabs,
'$title' => t('Add application'), '$title' => t('Add application'),
'$submit' => t('Update'), '$submit' => t('Update'),
@ -500,10 +512,12 @@ function settings_content(&$a) {
} }
if(($a->argc > 3) && ($a->argv[2] === 'delete')) { if(($a->argc > 3) && ($a->argv[2] === 'delete')) {
check_form_security_token_redirectOnErr('/settings/oauth', 'settings_oauth', 't');
$r = q("DELETE FROM clients WHERE client_id='%s' AND uid=%d", $r = q("DELETE FROM clients WHERE client_id='%s' AND uid=%d",
dbesc($a->argv[3]), dbesc($a->argv[3]),
local_user()); local_user());
goaway($a->get_baseurl()."/settings/oauth/"); goaway($a->get_baseurl(true)."/settings/oauth/");
return; return;
} }
@ -518,7 +532,8 @@ function settings_content(&$a) {
$tpl = get_markup_template("settings_oauth.tpl"); $tpl = get_markup_template("settings_oauth.tpl");
$o .= replace_macros($tpl, array( $o .= replace_macros($tpl, array(
'$baseurl' => $a->get_baseurl(), '$form_security_token' => get_form_security_token("settings_oauth"),
'$baseurl' => $a->get_baseurl(true),
'$title' => t('Connected Apps'), '$title' => t('Connected Apps'),
'$add' => t('Add application'), '$add' => t('Add application'),
'$edit' => t('Edit'), '$edit' => t('Edit'),
@ -544,6 +559,7 @@ function settings_content(&$a) {
$tpl = get_markup_template("settings_addons.tpl"); $tpl = get_markup_template("settings_addons.tpl");
$o .= replace_macros($tpl, array( $o .= replace_macros($tpl, array(
'$form_security_token' => get_form_security_token("settings_addon"),
'$title' => t('Plugin Settings'), '$title' => t('Plugin Settings'),
'$tabs' => $tabs, '$tabs' => $tabs,
'$settings_addons' => $settings_addons '$settings_addons' => $settings_addons
@ -586,6 +602,8 @@ function settings_content(&$a) {
$tpl = get_markup_template("settings_connectors.tpl"); $tpl = get_markup_template("settings_connectors.tpl");
$o .= replace_macros($tpl, array( $o .= replace_macros($tpl, array(
'$form_security_token' => get_form_security_token("settings_connectors"),
'$title' => t('Connector Settings'), '$title' => t('Connector Settings'),
'$tabs' => $tabs, '$tabs' => $tabs,
@ -607,8 +625,6 @@ function settings_content(&$a) {
'$mail_movetofolder' => array('mail_movetofolder', t('Move to folder:'), $mail_movetofolder, ''), '$mail_movetofolder' => array('mail_movetofolder', t('Move to folder:'), $mail_movetofolder, ''),
'$submit' => t('Submit'), '$submit' => t('Submit'),
'$settings_connectors' => $settings_connectors '$settings_connectors' => $settings_connectors
)); ));
return $o; return $o;
@ -773,7 +789,7 @@ function settings_content(&$a) {
$theme_selected = (!x($_SESSION,'theme')? $default_theme : $_SESSION['theme']); $theme_selected = (!x($_SESSION,'theme')? $default_theme : $_SESSION['theme']);
$subdir = ((strlen($a->get_path())) ? '<br />' . t('or') . ' ' . $a->get_baseurl() . '/profile/' . $nickname : ''); $subdir = ((strlen($a->get_path())) ? '<br />' . t('or') . ' ' . $a->get_baseurl(true) . '/profile/' . $nickname : '');
$tpl_addr = get_markup_template("settings_nick_set.tpl"); $tpl_addr = get_markup_template("settings_nick_set.tpl");
@ -803,8 +819,9 @@ function settings_content(&$a) {
'$ptitle' => t('Account Settings'), '$ptitle' => t('Account Settings'),
'$submit' => t('Submit'), '$submit' => t('Submit'),
'$baseurl' => $a->get_baseurl(), '$baseurl' => $a->get_baseurl(true),
'$uid' => local_user(), '$uid' => local_user(),
'$form_security_token' => get_form_security_token("settings"),
'$nickname_block' => $prof_addr, '$nickname_block' => $prof_addr,

View File

@ -17,7 +17,7 @@ function share_init(&$a) {
$o = ''; $o = '';
if(local_user() && intval(get_pconfig(local_user(),'system','plaintext'))) { if(local_user() && intval(get_pconfig(local_user(),'system','plaintext'))) {
$o .= '&#x2672; [url=' . $r[0]['author-link'] . ']' . $r[0]['author-name'] . '[/url]'; $o .= "\xE2\x99\xb2" . ' [url=' . $r[0]['author-link'] . ']' . $r[0]['author-name'] . '[/url]' . "\n";
if($r[0]['title']) if($r[0]['title'])
$o .= '[b]' . $r[0]['title'] . '[/b]' . "\n"; $o .= '[b]' . $r[0]['title'] . '[/b]' . "\n";
$o .= $r[0]['body'] . "\n"; $o .= $r[0]['body'] . "\n";

73
tests/autoname_test.php Executable file
View File

@ -0,0 +1,73 @@
<?php
/**
* this file contains tests for the autoname function
*
* @package test.util
*/
/** required, it is the file under test */
require_once('include/text.php');
/**
* TestCase for the autoname function
*
* @author Alexander Kampmann
* @package test.util
*/
class AutonameTest extends PHPUnit_Framework_TestCase {
/**
*autonames should be random, even length
*/
public function testAutonameEven() {
$autoname1=autoname(10);
$autoname2=autoname(10);
$this->assertNotEquals($autoname1, $autoname2);
}
/**
*autonames should be random, odd length
*/
public function testAutonameOdd() {
$autoname1=autoname(9);
$autoname2=autoname(9);
$this->assertNotEquals($autoname1, $autoname2);
}
/**
* try to fail autonames
*/
public function testAutonameNoLength() {
$autoname1=autoname(0);
$this->assertEquals(0, count($autoname1));
}
/**
* try to fail it with invalid input
*
* TODO: What's corect behaviour here? An exception?
*/
public function testAutonameNegativeLength() {
$autoname1=autoname(-23);
$this->assertEquals(0, count($autoname1));
}
// public function testAutonameMaxLength() {
// $autoname2=autoname(PHP_INT_MAX);
// $this->assertEquals(PHP_INT_MAX, count($autoname2));
// }
/**
* test with a length, that may be too short
*/
public function testAutonameLength1() {
$autoname1=autoname(1);
$this->assertEquals(1, count($autoname1));
$autoname2=autoname(1);
$this->assertEquals(1, count($autoname2));
$this->assertFalse($autoname1==$autoname2);
}
}

View File

@ -0,0 +1,51 @@
<?php
/**
* this test tests the contains_attribute function
*
* @package test.util
*/
/** required, it is the file under test */
require_once('include/text.php');
/**
* TestCase for the contains_attribute function
*
* @author Alexander Kampmann
* @package test.util
*/
class ContainsAttributeTest extends PHPUnit_Framework_TestCase {
/**
* test attribute contains
*/
public function testAttributeContains1() {
$testAttr="class1 notclass2 class3";
$this->assertTrue(attribute_contains($testAttr, "class3"));
$this->assertFalse(attribute_contains($testAttr, "class2"));
}
/**
* test attribute contains
*/
public function testAttributeContains2() {
$testAttr="class1 not-class2 class3";
$this->assertTrue(attribute_contains($testAttr, "class3"));
$this->assertFalse(attribute_contains($testAttr, "class2"));
}
/**
* test with empty input
*/
public function testAttributeContainsEmpty() {
$testAttr="";
$this->assertFalse(attribute_contains($testAttr, "class2"));
}
/**
* test input with special chars
*/
public function testAttributeContainsSpecialChars() {
$testAttr="--... %\$ä() /(=?}";
$this->assertFalse(attribute_contains($testAttr, "class2"));
}
}

142
tests/expand_acl_test.php Executable file
View File

@ -0,0 +1,142 @@
<?php
/**
* this test tests the expand_acl function
*
* @package test.util
*/
/** required, it is the file under test */
require_once('include/text.php');
/**
* TestCase for the expand_acl function
*
* @author Alexander Kampmann
* @package test.util
*/
class ExpandAclTest extends PHPUnit_Framework_TestCase {
/**
* test expand_acl, perfect input
*/
public function testExpandAclNormal() {
$text='<1><2><3>';
$this->assertEquals(array(1, 2, 3), expand_acl($text));
}
/**
* test with a big number
*/
public function testExpandAclBigNumber() {
$text='<1><'.PHP_INT_MAX.'><15>';
$this->assertEquals(array(1, PHP_INT_MAX, 15), expand_acl($text));
}
/**
* test with a string in it.
*
* TODO: is this valid input? Otherwise: should there be an exception?
*/
public function testExpandAclString() {
$text="<1><279012><tt>";
$this->assertEquals(array(1, 279012, 'tt'), expand_acl($text));
}
/**
* test with a ' ' in it.
*
* TODO: is this valid input? Otherwise: should there be an exception?
*/
public function testExpandAclSpace() {
$text="<1><279 012><32>";
$this->assertEquals(array(1, "279 012", "32"), expand_acl($text));
}
/**
* test empty input
*/
public function testExpandAclEmpty() {
$text="";
$this->assertEquals(array(), expand_acl($text));
}
/**
* test invalid input, no < at all
*
* TODO: should there be an exception?
*/
public function testExpandAclNoBrackets() {
$text="According to documentation, that's invalid. "; //should be invalid
$this->assertEquals(array(), expand_acl($text));
}
/**
* test invalid input, just open <
*
* TODO: should there be an exception?
*/
public function testExpandAclJustOneBracket1() {
$text="<Another invalid string"; //should be invalid
$this->assertEquals(array(), expand_acl($text));
}
/**
* test invalid input, just close >
*
* TODO: should there be an exception?
*/
public function testExpandAclJustOneBracket2() {
$text="Another invalid> string"; //should be invalid
$this->assertEquals(array(), expand_acl($text));
}
/**
* test invalid input, just close >
*
* TODO: should there be an exception?
*/
public function testExpandAclCloseOnly() {
$text="Another> invalid> string>"; //should be invalid
$this->assertEquals(array(), expand_acl($text));
}
/**
* test invalid input, just open <
*
* TODO: should there be an exception?
*/
public function testExpandAclOpenOnly() {
$text="<Another< invalid string<"; //should be invalid
$this->assertEquals(array(), expand_acl($text));
}
/**
* test invalid input, open and close do not match
*
* TODO: should there be an exception?
*/
public function testExpandAclNoMatching1() {
$text="<Another<> invalid <string>"; //should be invalid
$this->assertEquals(array(), expand_acl($text));
}
/**
* test invalid input, open and close do not match
*
* TODO: should there be an exception?
*/
public function testExpandAclNoMatching2() {
$text="<1>2><3>";
$this->assertEquals(array(), expand_acl($text));
}
/**
* test invalid input, empty <>
*
* TODO: should there be an exception? Or array(1, 3)
*/
public function testExpandAclEmptyMatch() {
$text="<1><><3>";
$this->assertEquals(array(), expand_acl($text));
}
}

313
tests/get_tags_test.php Normal file
View File

@ -0,0 +1,313 @@
<?php
/**
* This file contains the tests for get_tags and the tag handling in item.php
*
* @package test.util
*/
/**
* required, because it contains the get_tags() function
*/
require_once 'include/text.php';
/**
* required, because it contains the tag handling
*/
require_once 'mod/item.php';
/**
* A class which can be used as replacement for an app if
* only get_baseurl is used.
*
* @author Alexander Kampmann
* @package test.util
*/
class MockApp {
function get_baseurl() {
return "baseurl";
}
};
/**
* the test should not rely on a database,
* so this is a replacement for the database access method q.
*
* It simulates the user with uid 11 has one contact, named Mike Lastname.
*
* @param string $sql
*/
function q($sql) {
$result=array(array('id'=>15,
'attag'=>'', 'network'=>'dfrn',
'name'=>'Mike Lastname', 'alias'=>'Mike',
'nick'=>'Mike', 'url'=>"http://justatest.de"));
$args=func_get_args();
//last parameter is always (in this test) uid, so, it should be 11
if($args[count($args)-1]!=11) {
return;
}
if(3==count($args)) {
//first call in handle_body, id only
if($result[0]['id']==$args[1]) {
return $result;
}
//second call in handle_body, name
if($result[0]['name']===$args[1]) {
return $result;
}
}
//third call in handle_body, nick or attag
if($result[0]['nick']===$args[2] || $result[0]['attag']===$args[1]) {
return $result;
}
}
/**
* replacement for dbesc.
* I don't want to test dbesc here, so
* I just return the input. It won't be a problem, because
* the test does not use a real database.
*
* DON'T USE HAT FUNCTION OUTSIDE A TEST!
*
* @param string $str
* @return input
*/
function dbesc($str) {
return $str;
}
/**
* TestCase for tag handling.
*
* @author alexander
* @package test.util
*/
class GetTagsTest extends PHPUnit_Framework_TestCase {
/** the mock to use as app */
private $a;
/**
* initialize the test. That's a phpUnit function,
* don't change its name.
*/
public function setUp() {
$this->a=new MockApp();
}
/**
* test with one Person tag
*/
public function testGetTagsShortPerson() {
$text="hi @Mike";
$tags=get_tags($text);
$inform='';
$str_tags='';
foreach($tags as $tag) {
handle_tag($this->a, $text, $inform, $str_tags, 11, $tag);
}
//correct tags found?
$this->assertEquals(1, count($tags));
$this->assertTrue(in_array("@Mike", $tags));
//correct output from handle_tag?
$this->assertEquals("cid:15", $inform);
$this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url]", $str_tags);
$this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url]", $text);
}
/**
* test with one Person tag.
* There's a minor spelling mistake...
*/
public function testGetTagsShortPersonSpelling() {
$text="hi @Mike.because";
$tags=get_tags($text);
//correct tags found?
$this->assertEquals(1, count($tags));
$this->assertTrue(in_array("@Mike.because", $tags));
$inform='';
$str_tags='';
handle_tag($this->a, $text, $inform, $str_tags, 11, $tags[0]);
$this->assertEquals("cid:15", $inform);
$this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url]", $str_tags);
$this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url].because", $text);
}
/**
* test with two Person tags.
* There's a minor spelling mistake...
*/
public function testGetTagsPerson2Spelling() {
$text="hi @Mike@campino@friendica.eu";
$tags=get_tags($text);
$this->assertEquals(2, count($tags));
$this->assertTrue(in_array("@Mike", $tags));
$this->assertTrue(in_array("@campino@friendica.eu", $tags));
}
/**
* Test with one hash tag.
*/
public function testGetTagsShortTag() {
$text="This is a #test_case";
$tags=get_tags($text);
$this->assertEquals(1, count($tags));
$this->assertTrue(in_array("#test_case", $tags));
}
/**
* test with a person and a hash tag
*/
public function testGetTagsShortTagAndPerson() {
$text="hi @Mike This is a #test_case";
$tags=get_tags($text);
$this->assertEquals(3, count($tags));
$this->assertTrue(in_array("@Mike", $tags));
$this->assertTrue(in_array("@Mike This", $tags));
$this->assertTrue(in_array("#test_case", $tags));
$inform='';
$str_tags='';
foreach($tags as $tag) {
handle_tag($this->a, $text, $inform, $str_tags, 11, $tag);
}
$this->assertEquals("cid:15", $inform);
$this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url],#[url=baseurl/search?search=test%20case]test case[/url]", $str_tags);
$this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url] This is a #[url=baseurl/search?search=test%20case]test case[/url]", $text);
}
/**
* test with a person, a hash tag and some special chars.
*/
public function testGetTagsShortTagAndPersonSpecialChars() {
$text="hi @Mike, This is a #test_case.";
$tags=get_tags($text);
$this->assertEquals(2, count($tags));
$this->assertTrue(in_array("@Mike", $tags));
$this->assertTrue(in_array("#test_case", $tags));
}
/**
* Test with a person tag and text behind it.
*/
public function testGetTagsPersonOnly() {
$text="@Test I saw the Theme Dev group was created.";
$tags=get_tags($text);
$this->assertEquals(2, count($tags));
$this->assertTrue(in_array("@Test I", $tags));
$this->assertTrue(in_array("@Test", $tags));
}
/**
* this test demonstrates strange behaviour by intval.
* It makes the next test fail.
*/
public function testIntval() {
$this->assertEquals(15, intval("15 it"));
}
/**
* test a tag with an id in it
*/
public function testIdTag() {
$text="Test with @mike+15 id tag";
$tags=get_tags($text);
$this->assertEquals(2, count($tags));
$this->assertTrue(in_array("@mike+15", $tags));
//happens right now, but it shouldn't be necessary
$this->assertTrue(in_array("@mike+15 id", $tags));
$inform='';
$str_tags='';
foreach($tags as $tag) {
handle_tag($this->a, $text, $inform, $str_tags, 11, $tag);
}
$this->assertEquals("Test with @[url=http://justatest.de]Mike Lastname[/url] id tag", $text);
$this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url]", $str_tags);
$this->assertEquals("cid:15", $inform);
}
/**
* test with two persons and one special tag.
*/
public function testGetTags2Persons1TagSpecialChars() {
$text="hi @Mike, I'm just writing #test_cases, so"
." so @somebody@friendica.com may change #things.";
$tags=get_tags($text);
$this->assertEquals(5, count($tags));
$this->assertTrue(in_array("@Mike", $tags));
$this->assertTrue(in_array("#test_cases", $tags));
$this->assertTrue(in_array("@somebody@friendica.com", $tags));
$this->assertTrue(in_array("@somebody@friendica.com may", $tags));
$this->assertTrue(in_array("#things", $tags));
}
/**
* test with a long text.
*/
public function testGetTags() {
$text="hi @Mike, I'm just writing #test_cases, "
." so @somebody@friendica.com may change #things. Of course I "
."look for a lot of #pitfalls, like #tags at the end of a sentence "
."@comment. I hope noone forgets about @fullstops.because that might"
." break #things. @Mike@campino@friendica.eu is also #nice, isn't it? "
."Now, add a @first_last tag. ";
$tags=get_tags($text);
$this->assertTrue(in_array("@Mike", $tags));
$this->assertTrue(in_array("#test_cases", $tags));
$this->assertTrue(in_array("@somebody@friendica.com", $tags));
$this->assertTrue(in_array("#things", $tags));
$this->assertTrue(in_array("#pitfalls", $tags));
$this->assertTrue(in_array("#tags", $tags));
$this->assertTrue(in_array("@comment", $tags));
$this->assertTrue(in_array("@fullstops.because", $tags));
$this->assertTrue(in_array("#things", $tags));
$this->assertTrue(in_array("@Mike", $tags));
$this->assertTrue(in_array("#nice", $tags));
$this->assertTrue(in_array("@first_last", $tags));
//right now, none of the is matched
$this->assertFalse(in_array("@Mike@campino@friendica.eu", $tags));
$this->assertTrue(in_array("@campino@friendica.eu", $tags));
$this->assertTrue(in_array("@campino@friendica.eu is", $tags));
}
/**
* test with an empty string
*/
public function testGetTagsEmpty() {
$tags=get_tags("");
$this->assertEquals(0, count($tags));
}
}

50
tests/xss_filter_test.php Normal file
View File

@ -0,0 +1,50 @@
<?php
/**
* tests several functions which are used to prevent xss attacks
*
* @package test.util
*/
require_once('include/text.php');
class AntiXSSTest extends PHPUnit_Framework_TestCase {
/**
* test, that tags are escaped
*/
public function testEscapeTags() {
$invalidstring='<submit type="button" onclick="alert(\'failed!\');" />';
$validstring=notags($invalidstring);
$escapedString=escape_tags($invalidstring);
$this->assertEquals('[submit type="button" onclick="alert(\'failed!\');" /]', $validstring);
$this->assertEquals("&lt;submit type=&quot;button&quot; onclick=&quot;alert('failed!');&quot; /&gt;", $escapedString);
}
/**
*xmlify and unxmlify
*/
public function testXmlify() {
$text="<tag>I want to break\n this!11!<?hard?></tag>";
$xml=xmlify($text); //test whether it actually may be part of a xml document
$retext=unxmlify($text);
$this->assertEquals($text, $retext);
}
/**
* test hex2bin and reverse
*/
public function testHex2Bin() {
$this->assertEquals(-3, hex2bin(bin2hex(-3)));
$this->assertEquals(0, hex2bin(bin2hex(0)));
$this->assertEquals(12, hex2bin(bin2hex(12)));
$this->assertEquals(PHP_INT_MAX, hex2bin(bin2hex(PHP_INT_MAX)));
}
//function qp, quick and dirty??
//get_mentions
//get_contact_block, bis Zeile 538
}
?>

View File

@ -26,7 +26,7 @@ echo "New DB VERSION: " . DB_UPDATE_VERSION . "\n";
if($build != DB_UPDATE_VERSION) { if($build != DB_UPDATE_VERSION) {
echo "Updating database..."; echo "Updating database...";
check_config(); check_config($a);
echo "Done\n"; echo "Done\n";
} }

View File

@ -7,6 +7,7 @@
{{ inc field_textarea.tpl with $field=$banner }}{{ endinc }} {{ inc field_textarea.tpl with $field=$banner }}{{ endinc }}
{{ inc field_select.tpl with $field=$language }}{{ endinc }} {{ inc field_select.tpl with $field=$language }}{{ endinc }}
{{ inc field_select.tpl with $field=$theme }}{{ endinc }} {{ inc field_select.tpl with $field=$theme }}{{ endinc }}
{{ inc field_select.tpl with $field=$ssl_policy }}{{ endinc }}
<div class="submit"><input type="submit" name="page_site" value="$submit" /></div> <div class="submit"><input type="submit" name="page_site" value="$submit" /></div>

View File

@ -7,8 +7,15 @@ $page_desc<br />
<li><a href="http://friendica.com" title="$friendica">$friendica</a></li> <li><a href="http://friendica.com" title="$friendica">$friendica</a></li>
<li><a href="http://joindiaspora.com" title="$diaspora">$diaspora</a> $diasnote</li> <li><a href="http://joindiaspora.com" title="$diaspora">$diaspora</a> $diasnote</li>
<li><a href="http://ostatus.org" title="$public_net" >$statusnet</a></li> <li><a href="http://ostatus.org" title="$public_net" >$statusnet</a></li>
<li>$emailnet</li>
</ul> </ul>
</p> </p>
<p>
$invite_desc
</p>
<p>
$desc
</p>
<form action="dfrn_request/$nickname" method="post" /> <form action="dfrn_request/$nickname" method="post" />

View File

@ -40,6 +40,7 @@ $desc
</script> </script>
<form action="profile_photo/$resource" id="crop-image-form" method="post" /> <form action="profile_photo/$resource" id="crop-image-form" method="post" />
<input type='hidden' name='form_security_token' value='$form_security_token'>
<input type="hidden" name="cropfinal" value="1" /> <input type="hidden" name="cropfinal" value="1" />
<input type="hidden" name="xstart" id="x1" /> <input type="hidden" name="xstart" id="x1" />

View File

@ -4,23 +4,23 @@ function string_plural_select_de($n){
return ($n != 1); return ($n != 1);
} }
; ;
$a->strings["Post successful."] = "Beitrag erfolgreich veröffentlicht."; $a->strings["Post successful."] = "Beitrag erfolgreich ver<EFBFBD>ffentlicht.";
$a->strings["[Embedded content - reload page to view]"] = "[Eingebetteter Inhalt - Seite neu laden zum Betrachten]"; $a->strings["[Embedded content - reload page to view]"] = "[Eingebetteter Inhalt - Seite neu laden zum Betrachten]";
$a->strings["Contact settings applied."] = "Einstellungen zum Kontakt angewandt."; $a->strings["Contact settings applied."] = "Einstellungen zum Kontakt angewandt.";
$a->strings["Contact update failed."] = "Konnte den Kontakt nicht aktualisieren."; $a->strings["Contact update failed."] = "Konnte den Kontakt nicht aktualisieren.";
$a->strings["Permission denied."] = "Zugriff verweigert."; $a->strings["Permission denied."] = "Zugriff verweigert.";
$a->strings["Contact not found."] = "Kontakt nicht gefunden."; $a->strings["Contact not found."] = "Kontakt nicht gefunden.";
$a->strings["Repair Contact Settings"] = "Kontakt-Einstellungen reparieren"; $a->strings["Repair Contact Settings"] = "Kontakt-Einstellungen reparieren";
$a->strings["<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact may stop working."] = "<strong>ACHTUNG: Das sind Experten-Einstellungen!</strong> Wenn Du etwas Falsches eingibst, funktioniert die Kommunikation mit diesem Kontakt evtl. nicht mehr."; $a->strings["<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact may stop working."] = "<strong>ACHTUNG: Das sind Experten-Einstellungen!</strong> Wenn Du etwas falsches eingibst, funktioniert die Kommunikation mit diesem Kontakt evtl. nicht mehr.";
$a->strings["Please use your browser 'Back' button <strong>now</strong> if you are uncertain what to do on this page."] = "Bitte nutze den Zurück-Button deines Browsers <strong>jetzt</strong>, wenn du dir unsicher bist, was du tun willst."; $a->strings["Please use your browser 'Back' button <strong>now</strong> if you are uncertain what to do on this page."] = "Bitte nutze den Zur<EFBFBD>ck-Button deines Browsers <strong>jetzt</strong>, wenn du dir unsicher bist, was auf dieser Seite gemacht wird.";
$a->strings["Return to contact editor"] = "Zurück zum Kontakteditor"; $a->strings["Return to contact editor"] = "Zur<EFBFBD>ck zum Kontakteditor";
$a->strings["Name"] = "Name"; $a->strings["Name"] = "Name";
$a->strings["Account Nickname"] = "Account-Spitzname"; $a->strings["Account Nickname"] = "Account-Spitzname";
$a->strings["@Tagname - overrides Name/Nickname"] = "@Tagname - überschreibt Name/Spitzname"; $a->strings["@Tagname - overrides Name/Nickname"] = "@Tagname - <EFBFBD>berschreibt Name/Spitzname";
$a->strings["Account URL"] = "Account-URL"; $a->strings["Account URL"] = "Account-URL";
$a->strings["Friend Request URL"] = "URL für Freundschaftsanfragen"; $a->strings["Friend Request URL"] = "URL f<EFBFBD>r Freundschaftsanfragen";
$a->strings["Friend Confirm URL"] = "URL für Bestätigungen von Freundschaftsanfragen"; $a->strings["Friend Confirm URL"] = "URL f<EFBFBD>r Best<73>tigungen von Freundschaftsanfragen";
$a->strings["Notification Endpoint URL"] = "URL-Endpunkt für Benachrichtigungen"; $a->strings["Notification Endpoint URL"] = "URL-Endpunkt f<EFBFBD>r Benachrichtigungen";
$a->strings["Poll/Feed URL"] = "Pull/Feed-URL"; $a->strings["Poll/Feed URL"] = "Pull/Feed-URL";
$a->strings["New photo from this URL"] = "Neues Foto von dieser URL"; $a->strings["New photo from this URL"] = "Neues Foto von dieser URL";
$a->strings["Submit"] = "Senden"; $a->strings["Submit"] = "Senden";
@ -28,7 +28,7 @@ $a->strings["Help:"] = "Hilfe:";
$a->strings["Help"] = "Hilfe"; $a->strings["Help"] = "Hilfe";
$a->strings["Not Found"] = "Nicht gefunden"; $a->strings["Not Found"] = "Nicht gefunden";
$a->strings["Page not found."] = "Seite nicht gefunden."; $a->strings["Page not found."] = "Seite nicht gefunden.";
$a->strings["File exceeds size limit of %d"] = "Die Datei ist größer als das erlaubte Limit von %d"; $a->strings["File exceeds size limit of %d"] = "Die Datei ist gr<EFBFBD><EFBFBD>er als das erlaubte Limit von %d";
$a->strings["File upload failed."] = "Hochladen der Datei fehlgeschlagen."; $a->strings["File upload failed."] = "Hochladen der Datei fehlgeschlagen.";
$a->strings["Friend suggestion sent."] = "Kontaktvorschlag gesendet."; $a->strings["Friend suggestion sent."] = "Kontaktvorschlag gesendet.";
$a->strings["Suggest Friends"] = "Kontakte vorschlagen"; $a->strings["Suggest Friends"] = "Kontakte vorschlagen";
@ -40,7 +40,7 @@ $a->strings["link to source"] = "Link zum Originalbeitrag";
$a->strings["Events"] = "Veranstaltungen"; $a->strings["Events"] = "Veranstaltungen";
$a->strings["Create New Event"] = "Neue Veranstaltung erstellen"; $a->strings["Create New Event"] = "Neue Veranstaltung erstellen";
$a->strings["Previous"] = "Vorherige"; $a->strings["Previous"] = "Vorherige";
$a->strings["Next"] = "Nächste"; $a->strings["Next"] = "N<EFBFBD>chste";
$a->strings["hour:minute"] = "Stunde:Minute"; $a->strings["hour:minute"] = "Stunde:Minute";
$a->strings["Event details"] = "Veranstaltungsdetails"; $a->strings["Event details"] = "Veranstaltungsdetails";
$a->strings["Format is %s %s. Starting date and Description are required."] = "Format ist %s %s. Anfangsdatum und Beschreibung sind notwendig."; $a->strings["Format is %s %s. Starting date and Description are required."] = "Format ist %s %s. Anfangsdatum und Beschreibung sind notwendig.";

View File

@ -7,7 +7,11 @@ $page_desc<br />
<li><a href="http://friendica.com" title="$friendica">$friendica</a></li> <li><a href="http://friendica.com" title="$friendica">$friendica</a></li>
<li><a href="http://joindiaspora.com" title="$diaspora">$diaspora</a> $diasnote</li> <li><a href="http://joindiaspora.com" title="$diaspora">$diaspora</a> $diasnote</li>
<li><a href="http://ostatus.org" title="$public_net" >$statusnet</a></li> <li><a href="http://ostatus.org" title="$public_net" >$statusnet</a></li>
<li>$emailnet</li>
</ul> </ul>
$invite_desc
</p>
<p>
$desc $desc
</p> </p>

12
view/fileas_widget.tpl Executable file
View File

@ -0,0 +1,12 @@
<div id="fileas-sidebar" class="widget">
<h3>$title</h3>
<div id="nets-desc">$desc</div>
<ul class="fileas-ul">
<li class="tool"><a href="$base" class="fileas-link fileas-all{{ if $sel_all }} fileas-selected{{ endif }}">$all</a></li>
{{ for $terms as $term }}
<li class="tool"><a href="$base?f=&file=$term.name" class="fileas-link{{ if $term.selected }} fileas-selected{{ endif }}">$term.name</a></li>
{{ endfor }}
</ul>
</div>

View File

@ -262,6 +262,18 @@ function enableOnUser(){
} }
} }
function itemFiler(id) {
reply = prompt("$fileas");
if(reply && reply.length) {
commentBusy = true;
$('body').css('cursor', 'wait');
$.get('filer/' + id + '?term=' + reply);
if(timer) clearTimeout(timer);
timer = setTimeout(NavUpdate,3000);
liking = 1;
}
}
function jotClearLocation() { function jotClearLocation() {
$('#jot-coord').val(''); $('#jot-coord').val('');
$('#profile-nolocation-wrapper').hide(); $('#profile-nolocation-wrapper').hide();

View File

@ -1,5 +1,5 @@
<form action="" method="post" > <form action="$dest_url" method="post" >
<input type="hidden" name="auth-params" value="login" /> <input type="hidden" name="auth-params" value="login" />
<div id="login_standard"> <div id="login_standard">

View File

@ -1,4 +1,4 @@
<form action="" method="post" > <form action="$dest_url" method="post" >
<div class="logout-wrapper"> <div class="logout-wrapper">
<input type="hidden" name="auth-params" value="logout" /> <input type="hidden" name="auth-params" value="logout" />
<input type="submit" name="submit" id="logout-button" value="$logout" /> <input type="submit" name="submit" id="logout-button" value="$logout" />

View File

@ -5,9 +5,9 @@ $default
<div id="profile-edit-links"> <div id="profile-edit-links">
<ul> <ul>
<li><a href="profile/$profile_id/view?tab=profile" id="profile-edit-view-link" title="$viewprof">$viewprof</a></li> <li><a href="profile/$profile_id/view?tab=profile" id="profile-edit-view-link" title="$viewprof">$viewprof</a></li>
<li><a href="profiles/clone/$profile_id" id="profile-edit-clone-link" title="$cr_prof">$cl_prof</a></li> <li><a href="$profile_clone_link" id="profile-edit-clone-link" title="$cr_prof">$cl_prof</a></li>
<li></li> <li></li>
<li><a href="profiles/drop/$profile_id" id="profile-edit-drop-link" title="$del_prof" $disabled >$del_prof</a></li> <li><a href="$profile_drop_link" id="profile-edit-drop-link" title="$del_prof" $disabled >$del_prof</a></li>
</ul> </ul>
</div> </div>
@ -17,6 +17,7 @@ $default
<div id="profile-edit-wrapper" > <div id="profile-edit-wrapper" >
<form id="profile-edit-form" name="form1" action="profiles/$profile_id" method="post" > <form id="profile-edit-form" name="form1" action="profiles/$profile_id" method="post" >
<input type='hidden' name='form_security_token' value='$form_security_token'>
<div id="profile-edit-profile-name-wrapper" > <div id="profile-edit-profile-name-wrapper" >
<label id="profile-edit-profile-name-label" for="profile-edit-profile-name" >$lbl_profname </label> <label id="profile-edit-profile-name-label" for="profile-edit-profile-name" >$lbl_profname </label>

View File

@ -3,6 +3,6 @@
<a href="profile_photo" >$chg_photo</a> <a href="profile_photo" >$chg_photo</a>
</p> </p>
<div id="profile-listing-new-link-wrapper" class="button" > <div id="profile-listing-new-link-wrapper" class="button" >
<a href="profiles/new" id="profile-listing-new-link" title="$cr_new" >$cr_new</a> <a href="$cr_new_link" id="profile-listing-new-link" title="$cr_new" >$cr_new</a>
</div> </div>

View File

@ -1,6 +1,7 @@
<h1>$title</h1> <h1>$title</h1>
<form enctype="multipart/form-data" action="profile_photo" method="post"> <form enctype="multipart/form-data" action="profile_photo" method="post">
<input type='hidden' name='form_security_token' value='$form_security_token'>
<div id="profile-photo-upload-wrapper"> <div id="profile-photo-upload-wrapper">
<label id="profile-photo-upload-label" for="profile-photo-upload">$lbl_upfile </label> <label id="profile-photo-upload-label" for="profile-photo-upload">$lbl_upfile </label>

View File

@ -5,7 +5,7 @@ $tabs
$nickname_block $nickname_block
<form action="settings" id="settings-form" method="post" autocomplete="off" > <form action="settings" id="settings-form" method="post" autocomplete="off" >
<input type='hidden' name='form_security_token' value='$form_security_token'>
<h3 class="settings-heading">$h_pass</h3> <h3 class="settings-heading">$h_pass</h3>

View File

@ -4,6 +4,7 @@ $tabs
<form action="settings/addon" method="post" autocomplete="off"> <form action="settings/addon" method="post" autocomplete="off">
<input type='hidden' name='form_security_token' value='$form_security_token'>
$settings_addons $settings_addons

View File

@ -6,6 +6,7 @@ $tabs
<div class="connector_statusmsg">$ostat_enabled</div> <div class="connector_statusmsg">$ostat_enabled</div>
<form action="settings/connectors" method="post" autocomplete="off"> <form action="settings/connectors" method="post" autocomplete="off">
<input type='hidden' name='form_security_token' value='$form_security_token'>
$settings_connectors $settings_connectors

View File

@ -4,6 +4,7 @@ $tabs
<form action="settings/oauth" method="post" autocomplete="off"> <form action="settings/oauth" method="post" autocomplete="off">
<input type='hidden' name='form_security_token' value='$form_security_token'>
<div id="profile-edit-links"> <div id="profile-edit-links">
<ul> <ul>
@ -24,7 +25,7 @@ $tabs
{{ endif }} {{ endif }}
{{ if $app.my }} {{ if $app.my }}
<a href="$baseurl/settings/oauth/edit/$app.client_id" class="icon s22 edit" title="$edit">&nbsp;</a> <a href="$baseurl/settings/oauth/edit/$app.client_id" class="icon s22 edit" title="$edit">&nbsp;</a>
<a href="$baseurl/settings/oauth/delete/$app.client_id" class="icon s22 delete" title="$delete">&nbsp;</a> <a href="$baseurl/settings/oauth/delete/$app.client_id?t=$form_security_token" class="icon s22 delete" title="$delete">&nbsp;</a>
{{ endif }} {{ endif }}
</div> </div>
{{ endfor }} {{ endfor }}

View File

@ -3,6 +3,8 @@ $tabs
<h1>$title</h1> <h1>$title</h1>
<form method="POST"> <form method="POST">
<input type='hidden' name='form_security_token' value='$form_security_token'>
{{ inc field_input.tpl with $field=$name }}{{ endinc }} {{ inc field_input.tpl with $field=$name }}{{ endinc }}
{{ inc field_input.tpl with $field=$key }}{{ endinc }} {{ inc field_input.tpl with $field=$key }}{{ endinc }}
{{ inc field_input.tpl with $field=$secret }}{{ endinc }} {{ inc field_input.tpl with $field=$secret }}{{ endinc }}

View File

@ -1,4 +1,22 @@
<?php <?php
/*
* Name: Dark Bubble
* Version: 1.0
* Maintainer: Mike Macgirvin <mike@macgirvin.com>
*/
$a->theme_info = array( $a->theme_info = array(
'extends' => 'testbubble', 'extends' => 'testbubble',
); );
$a->page['htmlhead'] .= <<< EOT
<script>
$(document).ready(function() {
$('html').click(function() { $("#nav-notifications-menu" ).hide(); });
});
</script>
EOT;

View File

@ -15,6 +15,8 @@ $a->page['htmlhead'] .= <<< EOT
<script> <script>
$(document).ready(function() { $(document).ready(function() {
$('html').click(function() { $("#nav-notifications-menu" ).hide(); });
$('.group-edit-icon').hover( $('.group-edit-icon').hover(
function() { function() {
$(this).addClass('icon'); $(this).removeClass('iconspacer');}, $(this).addClass('icon'); $(this).removeClass('iconspacer');},

View File

@ -16,6 +16,8 @@ $a->page['htmlhead'] .= <<< EOT
<script> <script>
$(document).ready(function() { $(document).ready(function() {
$('html').click(function() { $("#nav-notifications-menu" ).hide(); });
$('.group-edit-icon').hover( $('.group-edit-icon').hover(
function() { function() {
$(this).addClass('icon'); $(this).removeClass('iconspacer');}, $(this).addClass('icon'); $(this).removeClass('iconspacer');},

View File

@ -0,0 +1,29 @@
<div id="group-sidebar" class="widget">
<div class="title tool">
<h3 class="label">$title</h3>
<a href="group/new" title="$createtext" class="action"><span class="icon text s16 add"></span></a>
</div>
<div id="sidebar-group-list">
<ul>
{{ for $groups as $group }}
<li class="tool {{ if $group.selected }}selected{{ endif }}">
<a href="$group.href" class="label">
$group.text
</a>
{{ if $group.edit }}
<a href="$group.edit.href" class="action"><span class="icon text s10 edit"></span></a>
{{ endif }}
{{ if $group.cid }}
<input type="checkbox"
class="{{ if $group.selected }}ticked{{ else }}unticked {{ endif }} action"
onclick="contactgroupChangeMember('$group.id','$group.cid');return true;"
{{ if $group.ismember }}checked="checked"{{ endif }}
/>
{{ endif }}
</li>
{{ endfor }}
</ul>
</div>
</div>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

BIN
view/theme/diabook-blue/icons/toogle_off.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 391 B

After

Width:  |  Height:  |  Size: 834 B

BIN
view/theme/diabook-blue/icons/toogle_on.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 429 B

After

Width:  |  Height:  |  Size: 715 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 798 B

View File

@ -0,0 +1,27 @@
<div id="live-display"></div>
<h3><a href="$album.0">$album.1</a></h3>
<div id="photo-edit-link-wrap">
{{ if $tools }}
<a id="photo-edit-link" href="$tools.edit.0">$tools.edit.1</a>
-
<a id="photo-toprofile-link" href="$tools.profile.0">$tools.profile.1</a>
{{ endif }}
{{ if $lock }} - <img src="images/lock_icon.gif" class="lockview" alt="$lock" onclick="lockview(event,'photo$id');" /> {{ endif }}
</div>
<div id="photo-photo">
{{ if $prevlink }}<div id="photo-prev-link"><a href="$prevlink.0">$prevlink.1</a></div>{{ endif }}
<a href="$photo.href" class="lightbox" title="$photo.title"><img src="$photo.src" /></a>
{{ if $nextlink }}<div id="photo-next-link"><a href="$nextlink.0">$nextlink.1</a></div>{{ endif }}
</div>
<div id="photo-photo-end"></div>
<div id="photo-caption" >$desc</div>
{{ if $tags }}
<div id="in-this-photo-text">$tags.0</div>
<div id="in-this-photo">$tags.1</div>
{{ endif }}
{{ if $tags.2 }}<div id="tag-remove"><a href="$tags.2">$tags.3</a></div>{{ endif }}
{{ if $edit }}$edit{{ endif }}

View File

@ -0,0 +1,20 @@
<div id="profile_side">
<div id="ps-usernameicon">
<a href="$ps.usermenu.status.0" title="$userinfo.name">
<img src="$userinfo.icon" id="ps-usericon" alt="$userinfo.name">
</a>
<a href="$ps.usermenu.status.0" id="ps-username" title="$userinfo.name">$userinfo.name</a>
</div>
<ul id="profile-side-menu" class="menu-profile-side">
<li id="profile-side-status" class="menu-profile-list"><a class="menu-profile-list-item" href="$ps.usermenu.status.0">$ps.usermenu.status.1</a></li>
<li id="profile-side-photos" class="menu-profile-list"><a class="menu-profile-list-item" href="$ps.usermenu.photos.0">$ps.usermenu.photos.1</a></li>
<li id="profile-side-events" class="menu-profile-list"><a class="menu-profile-list-item" href="$ps.usermenu.events.0">$ps.usermenu.events.1</a></li>
<li id="profile-side-notes" class="menu-profile-list"><a class="menu-profile-list-item" href="$ps.usermenu.notes.0">$ps.usermenu.notes.1</a></li>
<li id="profile-side-foren" class="menu-profile-list"><a class="menu-profile-list-item" href="http://dir.friendika.com/directory/forum" target="blanc">Public Groups</a></li>
<li id="profile-side-foren" class="menu-profile-list"><a class="menu-profile-list-item" href="$ps.usermenu.community.0">$ps.usermenu.community.1</a></li>
</ul>
</div>

View File

@ -247,7 +247,7 @@
background-image: url("../../../images/icons/10/edit.png"); background-image: url("../../../images/icons/10/edit.png");
} }
.icon.s10.star { .icon.s10.star {
background-image: url("../../../images/icons/10/star.png"); background-image: url("../../../images/star_dummy.png");
} }
.icon.s10.menu { .icon.s10.menu {
background-image: url("../../../images/icons/10/menu.png"); background-image: url("../../../images/icons/10/menu.png");
@ -285,7 +285,7 @@
background-image: url("../../../images/icons/16/edit.png"); background-image: url("../../../images/icons/16/edit.png");
}*/ }*/
.icon.s16.star { .icon.s16.star {
background-image: url("../../../images/icons/16/star.png"); background-image: url("../../../images/star_dummy.png");
} }
.icon.s16.menu { .icon.s16.menu {
background-image: url("../../../images/icons/16/menu.png"); background-image: url("../../../images/icons/16/menu.png");
@ -323,7 +323,7 @@
background-image: url("../../../images/icons/22/edit.png"); background-image: url("../../../images/icons/22/edit.png");
} }
.icon.s22.star { .icon.s22.star {
background-image: url("../../../images/icons/22/star.png"); background-image: url("../../../images/star_dummy.png");
} }
.icon.s22.menu { .icon.s22.menu {
background-image: url("../../../images/icons/22/menu.png"); background-image: url("../../../images/icons/22/menu.png");
@ -361,7 +361,7 @@
background-image: url("../../../images/icons/48/edit.png"); background-image: url("../../../images/icons/48/edit.png");
} }
.icon.s48.star { .icon.s48.star {
background-image: url("../../../images/icons/48/star.png"); background-image: url("../../../images/star_dummy.png");
} }
.icon.s48.menu { .icon.s48.menu {
background-image: url("../../../images/icons/48/menu.png"); background-image: url("../../../images/icons/48/menu.png");
@ -438,7 +438,7 @@ a:hover {
clear: both; clear: both;
} }
.fakelink { .fakelink {
color: #3465A4; color: #1872A2;
/* color: #3e3e8c; */ /* color: #3e3e8c; */
text-decoration: none; text-decoration: none;
cursor: pointer; cursor: pointer;
@ -461,7 +461,7 @@ code {
} }
#panel { #panel {
position: absolute; position: absolute;
width: 10em; width: 12em;
background: #ffffff; background: #ffffff;
color: #2d2d2d; color: #2d2d2d;
margin: 0px; margin: 0px;
@ -647,7 +647,7 @@ nav .nav-menu-icon {
position: relative; position: relative;
height: 22px; height: 22px;
padding: 5px; padding: 5px;
margin: 0px 7px; margin: 0px 5px;
-moz-border-radius: 5px 5px 0 0; -moz-border-radius: 5px 5px 0 0;
-webkit-border-radius: 5px 5px 0 0; -webkit-border-radius: 5px 5px 0 0;
border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0;
@ -657,7 +657,7 @@ nav .nav-menu-icon:hover {
position: relative; position: relative;
height: 22px; height: 22px;
padding: 5px; padding: 5px;
margin: 0px 7px; margin: 0px 5px;
-moz-border-radius: 5px 5px 0 0; -moz-border-radius: 5px 5px 0 0;
-webkit-border-radius: 5px 5px 0 0; -webkit-border-radius: 5px 5px 0 0;
border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0;
@ -716,21 +716,17 @@ nav #nav-user-linkmenu
nav #nav-user-linkmenu{ nav #nav-user-linkmenu{
margin-right: 0px; margin-right: 0px;
} }
nav #nav-home-link{ nav #nav-home-link, #nav-directory-link, #nav-apps-link{
margin-left: 0px; margin-left: 0px;
margin-right: 0px;
font-weight: bold; font-weight: bold;
margin: 3px 5px;
} }
nav #nav-directory-link{ nav #nav-directory-link{
margin-left: 0px;
margin-right: 0px; margin-right: 0px;
font-weight: bold;
margin: 3px 15px;
} }
nav #nav-apps-link{ nav #nav-home-link{
margin-left: 0px; margin-left: 0px;
margin-right: 0px;
font-weight: bold;
margin: 3px 15px;
} }
nav #nav-help-link .menu-popup, nav #nav-help-link .menu-popup,
nav #nav-search-link .menu-popup, nav #nav-search-link .menu-popup,
@ -784,8 +780,6 @@ ul.menu-popup {
margin: 0px; margin: 0px;
padding: 0px; padding: 0px;
list-style: none; list-style: none;
border: 1px solid #364e59;
border-top-color: transparent;
z-index: 100000; z-index: 100000;
-webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
-moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
@ -878,6 +872,41 @@ ul.menu-popup .empty {
padding: 7px 7px 0px 0px; padding: 7px 7px 0px 0px;
} }
/*profile_side*/
#profile_side {
margin-bottom: 30px;
}
#ps-usericon{
height: 25px
}
#ps-username{
font-size: 1.17em;
font-weight: bold;
vertical-align: top;
position: absolute;
padding-top: 4px;
padding-left: 5px;
}
#ps-username:hover{
text-decoration: none;
}
.menu-profile-side{
list-style: none;
padding-left: 16px;
min-height: 16px;
}
.menu-profile-list{
height: auto;
overflow: auto;
padding-top: 3px;
padding-bottom: 3px;
}
.menu-profile-list:hover{
background: #EEE;
}
.menu-profile-list-item:hover{
text-decoration: none;
}
/* aside */ /* aside */
aside { aside {
display: table-cell; display: table-cell;
@ -974,6 +1003,10 @@ aside #side-peoplefind-url {
widht: 55px; widht: 55px;
height: 55px; height: 55px;
} }
#lost-password-link {
float: left;
margin-right: 20px;
}
/* widget */ /* widget */
.widget { .widget {
margin-bottom: 2em; margin-bottom: 2em;
@ -1048,6 +1081,12 @@ section {
width: 800px; width: 800px;
padding: 0px 0px 0px 12px; padding: 0px 0px 0px 12px;
} }
body .pageheader{
text-align: center;
margin-top: 25px;
font-size: 0px;
}
#id_username { #id_username {
width: 173px; width: 173px;
} }
@ -1063,7 +1102,8 @@ section {
padding: 10px; padding: 10px;
text-align: center; text-align: center;
font-size: 1.0em; font-size: 1.0em;
margin-top: 140%; clear: both;
display: block;
} }
.tabs { .tabs {
@ -1306,14 +1346,14 @@ section {
} }
.tag { .tag {
/*background: url("../../../images/tag_b.png") repeat-x center left;*/ /*background: url("../../../images/tag_b.png") repeat-x center left;*/
color: #3465A4; color: #999;
padding-left: 3px; padding-left: 3px;
font-size: 12px; font-size: 12px;
} }
.tag a { .tag a {
padding-right: 5px; padding-right: 5px;
/*background: url("../../../images/tag.png") no-repeat center right;*/ /*background: url("../../../images/tag.png") no-repeat center right;*/
color: #3465A4; color: #999;
} }
.wwto { .wwto {
position: absolute !important; position: absolute !important;
@ -1616,7 +1656,7 @@ section {
box-shadow: 0 1px 1px #CFCFCF; box-shadow: 0 1px 1px #CFCFCF;
} }
.button.creation2 { .button.creation2 {
background-color: #33ACFF; background-color: #1872A2;
background-image: -moz-linear-gradient(center top , #66C1FF 0%, #0097FF 100%); background-image: -moz-linear-gradient(center top , #66C1FF 0%, #0097FF 100%);
border: 1px solid #777777; border: 1px solid #777777;
color: white; color: white;
@ -1872,9 +1912,15 @@ ul.tabs li .active {
float: left; float: left;
} }
/* photo */ /* photo */
.photo {
box-shadow: 2px 2px 5px 0px #000000;
margin: 2px 5px 2px 5px;
max-height: 85%;
max-width: 85%;
}
.lframe { .lframe {
float: left; float: left;
margin: 0px 10px 10px 0px; /*margin: 0px 10px 10px 0px;*/
} }
/* profile match wrapper */ /* profile match wrapper */
.profile-match-wrapper { .profile-match-wrapper {
@ -1988,10 +2034,24 @@ box-shadow: 1px 1px 5px 0;
} }
#prvmail-submit { #prvmail-submit {
float: left; float: right;
margin-top: 10px; margin-top: 10px;
margin-right: 30px;
} }
#prvmail-subject
{
background: none repeat scroll 0 0 #FFFFFF;
border: 1px solid #CCCCCC;
border-radius: 5px 5px 5px 5px;
font-weight: bold;
height: 20px;
margin: 0 0 5px;
vertical-align: middle;
}
#prvmail-form{
width: 597px;
}
#prvmail-upload-wrapper, #prvmail-upload-wrapper,
#prvmail-link-wrapper, #prvmail-link-wrapper,
#prvmail-rotator-wrapper { #prvmail-rotator-wrapper {
@ -2179,7 +2239,9 @@ a.mail-list-link {
padding: 10px; padding: 10px;
float: left; float: left;
} }
.lightbox{
float: left;
}
#photo-photo { #photo-photo {
float: left; float: left;
} }
@ -2298,8 +2360,36 @@ float: left;
.contact-details { .contact-details {
color: #999999; color: #999999;
} }
#side-bar-photos-albums{
.photo-top-image-wrapper { margin-top: 15px;
}
.photo-top-photo, .photo-album-photo {
-webkit-border-radius: 5px 5px 0 0;
-moz-border-radius: 5px 5px 0 0;
border-radius: 5px 5px 0 0;
}
.photo-album-image-wrapper, .photo-top-image-wrapper {
float: left;
-moz-box-shadow: 0 0 5px #888;
-webkit-box-shadow: 0 0 5px #888;
box-shadow: 0 0 5px #888;
background-color: #EEE;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
padding-bottom: 20px;
position: relative;
margin: 0 10px 10px 0;
}
.photo-top-album-name {
position: absolute;
bottom: 0;
padding: 0 5px;
}
.photo-top-album-link{
color: #1872A2;
}
/*.photo-top-image-wrapper {
position: relative; position: relative;
float: left; float: left;
margin-top: 15px; margin-top: 15px;
@ -2315,7 +2405,7 @@ float: left;
padding: 0px 3px; padding: 0px 3px;
padding-top: 0.5em; padding-top: 0.5em;
background-color: rgb(255, 255, 255); background-color: rgb(255, 255, 255);
} }*/
#photo-top-end { #photo-top-end {
clear: both; clear: both;
} }

View File

@ -1,8 +1,8 @@
<?php <?php
/* /*
* Name: Diabook * Name: Diabook-blue
* Description: Diabook: report bugs and request here: http://pad.toktan.org/p/diabook or contact me : thomas_bierey@friendica.eu * Description: Diabook-blue: report bugs and request here: http://pad.toktan.org/p/diabook or contact me : thomas_bierey@friendica.eu
* Version: * Version:
* Author: * Author:
*/ */
@ -11,8 +11,46 @@ $a->theme_info = array(
'extends' => 'diabook', 'extends' => 'diabook',
); );
//profile_side
$nav['usermenu']=array();
$userinfo = null;
if(local_user()) {
$r = q("SELECT micro FROM contact WHERE uid=%d AND self=1", intval($a->user['uid']));
$userinfo = array(
'icon' => (count($r) ? $r[0]['micro']: $a->get_baseurl()."/images/default-profile-mm.jpg"),
'name' => $a->user['username'],
);
$ps['usermenu'][status] = Array('profile/' . $a->user['nickname'], t('Home'), "", t('Your posts and conversations'));
$ps['usermenu'][profile] = Array('profile/' . $a->user['nickname']. '?tab=profile', t('Profile'), "", t('Your profile page'));
$ps['usermenu'][photos] = Array('photos/' . $a->user['nickname'], t('Photos'), "", t('Your photos'));
$ps['usermenu'][events] = Array('events/', t('Events'), "", t('Your events'));
$ps['usermenu'][notes] = Array('notes/', t('Personal notes'), "", t('Your personal photos'));
$ps['usermenu'][community] = Array('community/', t('Community'), "", "");
if($is_url = preg_match ("/\bnetwork\b/i", $_SERVER['REQUEST_URI'])) {
$tpl = get_markup_template('profile_side.tpl');
$a->page['aside'] .= replace_macros($tpl, array(
'$userinfo' => $userinfo,
'$ps' => $ps,
));
}
}
//js scripts
$a->page['htmlhead'] .= <<< EOT $a->page['htmlhead'] .= <<< EOT
<script> <script>
//contacts //contacts
$('html').click(function() { $('html').click(function() {
$('#nav-contacts-linkmenu').removeClass('selected'); $('#nav-contacts-linkmenu').removeClass('selected');
@ -62,5 +100,20 @@ $('html').click(function() {
$('#nav-site-linkmenu').click(function(event){ $('#nav-site-linkmenu').click(function(event){
event.stopPropagation(); event.stopPropagation();
}); });
//appsmenu
$('html').click(function() {
$('#nav-apps-link').removeClass('selected');
document.getElementById( "nav-apps-menu" ).style.display = "none";
});
$('#nav-apps-link').click(function(event){
event.stopPropagation();
});
$(function() {
$('a.lightbox').fancybox(); // Select all links with lightbox class
});
</script> </script>
EOT; EOT;

View File

@ -0,0 +1,29 @@
<div id="group-sidebar" class="widget">
<div class="title tool">
<h3 class="label">$title</h3>
<a href="group/new" title="$createtext" class="action"><span class="icon text s16 add"></span></a>
</div>
<div id="sidebar-group-list">
<ul>
{{ for $groups as $group }}
<li class="tool {{ if $group.selected }}selected{{ endif }}">
<a href="$group.href" class="label">
$group.text
</a>
{{ if $group.edit }}
<a href="$group.edit.href" class="action"><span class="icon text s10 edit"></span></a>
{{ endif }}
{{ if $group.cid }}
<input type="checkbox"
class="{{ if $group.selected }}ticked{{ else }}unticked {{ endif }} action"
onclick="contactgroupChangeMember('$group.id','$group.cid');return true;"
{{ if $group.ismember }}checked="checked"{{ endif }}
/>
{{ endif }}
</li>
{{ endfor }}
</ul>
</div>
</div>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

BIN
view/theme/diabook/icons/next.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 B

BIN
view/theme/diabook/icons/prev.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

BIN
view/theme/diabook/icons/toogle_off.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 391 B

After

Width:  |  Height:  |  Size: 834 B

BIN
view/theme/diabook/icons/toogle_on.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 429 B

After

Width:  |  Height:  |  Size: 715 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 798 B

View File

@ -152,10 +152,6 @@
</ul> </ul>
<ul id="nav-notifications-template" style="display:none;" rel="template">
<li><a href="{0}"><img src="{1}">{2} <span class="notif-when">{3}</span></a></li>
</ul>
{# {#

View File

@ -0,0 +1,27 @@
<div id="live-display"></div>
<h3><a href="$album.0">$album.1</a></h3>
<div id="photo-edit-link-wrap">
{{ if $tools }}
<a id="photo-edit-link" href="$tools.edit.0">$tools.edit.1</a>
-
<a id="photo-toprofile-link" href="$tools.profile.0">$tools.profile.1</a>
{{ endif }}
{{ if $lock }} - <img src="images/lock_icon.gif" class="lockview" alt="$lock" onclick="lockview(event,'photo$id');" /> {{ endif }}
</div>
<div id="photo-photo">
{{ if $prevlink }}<div id="photo-prev-link"><a href="$prevlink.0">$prevlink.1</a></div>{{ endif }}
<a href="$photo.href" class="lightbox" title="$photo.title"><img src="$photo.src" /></a>
{{ if $nextlink }}<div id="photo-next-link"><a href="$nextlink.0">$nextlink.1</a></div>{{ endif }}
</div>
<div id="photo-photo-end"></div>
<div id="photo-caption" >$desc</div>
{{ if $tags }}
<div id="in-this-photo-text">$tags.0</div>
<div id="in-this-photo">$tags.1</div>
{{ endif }}
{{ if $tags.2 }}<div id="tag-remove"><a href="$tags.2">$tags.3</a></div>{{ endif }}
{{ if $edit }}$edit{{ endif }}

View File

@ -0,0 +1,20 @@
<div id="profile_side">
<div id="ps-usernameicon">
<a href="$ps.usermenu.status.0" title="$userinfo.name">
<img src="$userinfo.icon" id="ps-usericon" alt="$userinfo.name">
</a>
<a href="$ps.usermenu.status.0" id="ps-username" title="$userinfo.name">$userinfo.name</a>
</div>
<ul id="profile-side-menu" class="menu-profile-side">
<li id="profile-side-status" class="menu-profile-list"><a class="menu-profile-list-item" href="$ps.usermenu.status.0">$ps.usermenu.status.1</a></li>
<li id="profile-side-photos" class="menu-profile-list"><a class="menu-profile-list-item" href="$ps.usermenu.photos.0">$ps.usermenu.photos.1</a></li>
<li id="profile-side-events" class="menu-profile-list"><a class="menu-profile-list-item" href="$ps.usermenu.events.0">$ps.usermenu.events.1</a></li>
<li id="profile-side-notes" class="menu-profile-list"><a class="menu-profile-list-item" href="$ps.usermenu.notes.0">$ps.usermenu.notes.1</a></li>
<li id="profile-side-foren" class="menu-profile-list"><a class="menu-profile-list-item" href="http://dir.friendika.com/directory/forum" target="blanc">Public Groups</a></li>
<li id="profile-side-foren" class="menu-profile-list"><a class="menu-profile-list-item" href="$ps.usermenu.community.0">$ps.usermenu.community.1</a></li>
</ul>
</div>

View File

@ -177,8 +177,8 @@
.icon.on { background-image: url("../../../view/theme/diabook/icons/toogle_on.png"); background-repeat: no-repeat;} .icon.on { background-image: url("../../../view/theme/diabook/icons/toogle_on.png"); background-repeat: no-repeat;}
.icon.off { background-image: url("../../../view/theme/diabook/icons/toogle_off.png"); background-repeat: no-repeat;} .icon.off { background-image: url("../../../view/theme/diabook/icons/toogle_off.png"); background-repeat: no-repeat;}
.prev { background-position: -90px -60px;} .icon.prev { background-image: url("../../../view/theme/diabook/icons/prev.png"); background-repeat: no-repeat;}
.next { background-position: -110px -60px;} .icon.next { background-image: url("../../../view/theme/diabook/icons/next.png"); background-repeat: no-repeat;}
/*.tagged { background-position: -130px -60px;}*/ /*.tagged { background-position: -130px -60px;}*/
.attachtype { .attachtype {
@ -247,7 +247,7 @@
background-image: url("../../../images/icons/10/edit.png"); background-image: url("../../../images/icons/10/edit.png");
} }
.icon.s10.star { .icon.s10.star {
background-image: url("../../../images/icons/10/star.png"); background-image: url("../../../images/star_dummy.png");
} }
.icon.s10.menu { .icon.s10.menu {
background-image: url("../../../images/icons/10/menu.png"); background-image: url("../../../images/icons/10/menu.png");
@ -285,7 +285,7 @@
background-image: url("../../../images/icons/16/edit.png"); background-image: url("../../../images/icons/16/edit.png");
}*/ }*/
.icon.s16.star { .icon.s16.star {
background-image: url("../../../images/icons/16/star.png"); background-image: url("../../../images/star_dummy.png");
} }
.icon.s16.menu { .icon.s16.menu {
background-image: url("../../../images/icons/16/menu.png"); background-image: url("../../../images/icons/16/menu.png");
@ -323,7 +323,7 @@
background-image: url("../../../images/icons/22/edit.png"); background-image: url("../../../images/icons/22/edit.png");
} }
.icon.s22.star { .icon.s22.star {
background-image: url("../../../images/icons/22/star.png"); background-image: url("../../../images/star_dummy.png");
} }
.icon.s22.menu { .icon.s22.menu {
background-image: url("../../../images/icons/22/menu.png"); background-image: url("../../../images/icons/22/menu.png");
@ -361,7 +361,7 @@
background-image: url("../../../images/icons/48/edit.png"); background-image: url("../../../images/icons/48/edit.png");
} }
.icon.s48.star { .icon.s48.star {
background-image: url("../../../images/icons/48/star.png"); background-image: url("../../../images/star_dummy.png");
} }
.icon.s48.menu { .icon.s48.menu {
background-image: url("../../../images/icons/48/menu.png"); background-image: url("../../../images/icons/48/menu.png");
@ -400,6 +400,7 @@ body {
margin: 50px auto auto; margin: 50px auto auto;
display: table; display: table;
} }
h4 { h4 {
font-size: 1.1em; font-size: 1.1em;
} }
@ -461,7 +462,7 @@ code {
} }
#panel { #panel {
position: absolute; position: absolute;
width: 10em; width: 12em;
background: #ffffff; background: #ffffff;
color: #2d2d2d; color: #2d2d2d;
margin: 0px; margin: 0px;
@ -707,21 +708,17 @@ nav #nav-user-linkmenu
nav #nav-user-linkmenu{ nav #nav-user-linkmenu{
margin-right: 0px; margin-right: 0px;
} }
nav #nav-home-link{ nav #nav-home-link, #nav-directory-link, #nav-apps-link{
margin-left: 0px; margin-left: 0px;
margin-right: 0px;
font-weight: bold; font-weight: bold;
margin: 3px 5px;
} }
nav #nav-directory-link{ nav #nav-directory-link{
margin-left: 0px;
margin-right: 0px; margin-right: 0px;
font-weight: bold;
margin: 3px 15px;
} }
nav #nav-apps-link{ nav #nav-home-link{
margin-left: 0px; margin-left: 0px;
margin-right: 0px;
font-weight: bold;
margin: 3px 15px;
} }
nav #nav-help-link .menu-popup, nav #nav-help-link .menu-popup,
nav #nav-search-link .menu-popup, nav #nav-search-link .menu-popup,
@ -775,8 +772,6 @@ ul.menu-popup {
margin: 0px; margin: 0px;
padding: 0px; padding: 0px;
list-style: none; list-style: none;
border: 1px solid #364e59;
border-top-color: transparent;
z-index: 100000; z-index: 100000;
-webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
-moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
@ -869,6 +864,43 @@ ul.menu-popup .empty {
padding: 7px 7px 0px 0px; padding: 7px 7px 0px 0px;
} }
/*profile_side*/
#profile_side {
margin-bottom: 30px;
}
#ps-usericon{
height: 25px
}
#ps-username{
font-size: 1.17em;
font-weight: bold;
vertical-align: top;
position: absolute;
padding-top: 4px;
padding-left: 5px;
color: #2D2D2D;
}
#ps-username:hover{
text-decoration: none;
}
.menu-profile-side{
list-style: none;
padding-left: 16px;
min-height: 16px;
}
.menu-profile-list{
height: auto;
overflow: auto;
padding-top: 3px;
padding-bottom: 3px;
}
.menu-profile-list:hover{
background: #EEE;
}
.menu-profile-list-item:hover{
text-decoration: none;
}
/* aside */ /* aside */
aside { aside {
display: table-cell; display: table-cell;
@ -879,6 +911,7 @@ aside {
float: left; float: left;
/* background: #F1F1F1; */ /* background: #F1F1F1; */
} }
aside .vcard .fn { aside .vcard .fn {
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
@ -965,6 +998,10 @@ aside #side-peoplefind-url {
widht: 55px; widht: 55px;
height: 55px; height: 55px;
} }
#lost-password-link {
float: left;
margin-right: 20px;
}
/* widget */ /* widget */
.widget { .widget {
margin-bottom: 2em; margin-bottom: 2em;
@ -1039,6 +1076,13 @@ section {
width: 800px; width: 800px;
padding: 0px 0px 0px 12px; padding: 0px 0px 0px 12px;
} }
body .pageheader{
text-align: center;
margin-top: 25px;
font-size: 0px;
}
#id_username { #id_username {
width: 173px; width: 173px;
} }
@ -1049,13 +1093,13 @@ section {
width: 173px; width: 173px;
} }
#contact-edit-end { #contact-edit-end {
} }
.pager { .pager {
padding: 10px; padding: 10px;
text-align: center; text-align: center;
font-size: 1.0em; font-size: 1.0em;
margin-top: 140%; clear: both;
display: block;
} }
.tabs { .tabs {
@ -1861,7 +1905,6 @@ ul.tabs li .active {
/* photo */ /* photo */
.lframe { .lframe {
float: left; float: left;
margin: 0px 10px 10px 0px;
} }
/* profile match wrapper */ /* profile match wrapper */
.profile-match-wrapper { .profile-match-wrapper {
@ -1975,9 +2018,21 @@ box-shadow: 1px 1px 5px 0;
} }
#prvmail-submit { #prvmail-submit {
float: left; float: right;
margin-top: 10px; margin-top: 10px;
margin-right: 30px; }
#prvmail-subject
{
background: none repeat scroll 0 0 #FFFFFF;
border: 1px solid #CCCCCC;
border-radius: 5px 5px 5px 5px;
font-weight: bold;
height: 20px;
margin: 0 0 5px;
vertical-align: middle;
}
#prvmail-form{
width: 597px;
} }
#prvmail-upload-wrapper, #prvmail-upload-wrapper,
#prvmail-link-wrapper, #prvmail-link-wrapper,
@ -2166,13 +2221,24 @@ a.mail-list-link {
padding: 10px; padding: 10px;
float: left; float: left;
} }
.lightbox{
float: left;
}
#photo-photo { #photo-photo {
float: left; float: left;
} }
#photo-like-div .wall-item-like-buttons { #photo-like-div .wall-item-like-buttons {
float: left; float: left;
margin-right: 10px; margin-right: 5px;
margin-top: 30px;
}
.comment-edit-text-empty {
margin: 10px 0 0;
width: 85%;
}
.comment-edit-photo {
margin: 10px 0 0;
} }
.wall-item-like-buttons .icon.like { .wall-item-like-buttons .icon.like {
float: left; float: left;
@ -2286,7 +2352,36 @@ float: left;
color: #999999; color: #999999;
} }
.photo-top-image-wrapper { #side-bar-photos-albums{
margin-top: 15px;
}
.photo-top-photo, .photo-album-photo {
-webkit-border-radius: 5px 5px 0 0;
-moz-border-radius: 5px 5px 0 0;
border-radius: 5px 5px 0 0;
}
.photo-album-image-wrapper, .photo-top-image-wrapper {
float: left;
-moz-box-shadow: 0 0 5px #888;
-webkit-box-shadow: 0 0 5px #888;
box-shadow: 0 0 5px #888;
background-color: #EEE;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
padding-bottom: 20px;
position: relative;
margin: 0 10px 10px 0;
}
.photo-top-album-name {
position: absolute;
bottom: 0;
padding: 0 5px;
}
.photo-top-album-link{
color: #1872A2;
}
/*.photo-top-image-wrapper {
position: relative; position: relative;
float: left; float: left;
margin-top: 15px; margin-top: 15px;
@ -2302,7 +2397,7 @@ float: left;
padding: 0px 3px; padding: 0px 3px;
padding-top: 0.5em; padding-top: 0.5em;
background-color: rgb(255, 255, 255); background-color: rgb(255, 255, 255);
} }*/
#photo-top-end { #photo-top-end {
clear: both; clear: both;
} }
@ -2316,4 +2411,3 @@ float: left;
float: left; float: left;
width: 175px; width: 175px;
} }

View File

@ -1,8 +1,8 @@
<?php <?php
/* /*
* Name: Diabook * Name: Diabook-blue
* Description: Diabook: report bugs and request here: http://pad.toktan.org/p/diabook or contact me : thomas_bierey@friendica.eu * Description: Diabook-blue: report bugs and request here: http://pad.toktan.org/p/diabook or contact me : thomas_bierey@friendica.eu
* Version: * Version:
* Author: * Author:
*/ */
@ -11,7 +11,44 @@ $a->theme_info = array(
'extends' => 'diabook', 'extends' => 'diabook',
); );
//profile_side
$nav['usermenu']=array();
$userinfo = null;
if(local_user()) {
$r = q("SELECT micro FROM contact WHERE uid=%d AND self=1", intval($a->user['uid']));
$userinfo = array(
'icon' => (count($r) ? $r[0]['micro']: $a->get_baseurl()."/images/default-profile-mm.jpg"),
'name' => $a->user['username'],
);
$ps['usermenu'][status] = Array('profile/' . $a->user['nickname'], t('Home'), "", t('Your posts and conversations'));
$ps['usermenu'][profile] = Array('profile/' . $a->user['nickname']. '?tab=profile', t('Profile'), "", t('Your profile page'));
$ps['usermenu'][photos] = Array('photos/' . $a->user['nickname'], t('Photos'), "", t('Your photos'));
$ps['usermenu'][events] = Array('events/', t('Events'), "", t('Your events'));
$ps['usermenu'][notes] = Array('notes/', t('Personal notes'), "", t('Your personal photos'));
$ps['usermenu'][community] = Array('community/', t('Community'), "", "");
if($is_url = preg_match ("/\bnetwork\b/i", $_SERVER['REQUEST_URI'])) {
$tpl = get_markup_template('profile_side.tpl');
$a->page['aside'] .= replace_macros($tpl, array(
'$userinfo' => $userinfo,
'$ps' => $ps,
));
}
}
//js scripts
$a->page['htmlhead'] .= <<< EOT $a->page['htmlhead'] .= <<< EOT
<script> <script>
//contacts //contacts
@ -63,5 +100,20 @@ $('html').click(function() {
$('#nav-site-linkmenu').click(function(event){ $('#nav-site-linkmenu').click(function(event){
event.stopPropagation(); event.stopPropagation();
}); });
//appsmenu
$('html').click(function() {
$('#nav-apps-link').removeClass('selected');
document.getElementById( "nav-apps-menu" ).style.display = "none";
});
$('#nav-apps-link').click(function(event){
event.stopPropagation();
});
$(function() {
$('a.lightbox').fancybox(); // Select all links with lightbox class
});
</script> </script>
EOT; EOT;

View File

@ -20,9 +20,11 @@
</div> </div>
<div class="contact-entry-photo-end" ></div> <div class="contact-entry-photo-end" ></div>
<div class="contact-entry-name" id="contact-entry-name-$contact.id" >$contact.name</div> <div class="contact-entry-name" id="contact-entry-name-$contact.id" >$contact.name</div>
{{ if $contact.alt_text }}<div class="contact-entry-details" id="contact-entry-rel-$contact.id" >$contact.alt_text</div>{{ endif }}
<div class="contact-entry-details" id="contact-entry-url-$contact.id" > <div class="contact-entry-details" id="contact-entry-url-$contact.id" >
<a href="$contact.itemurl" title="$contact.itemurl">Profile URL</a></div> <a href="$contact.itemurl" title="$contact.itemurl">Profile URL</a></div>
<div class="contact-entry-details" id="contact-entry-network-$contact.id" >$contact.network</div> <div class="contact-entry-details" id="contact-entry-network-$contact.id" >$contact.network</div>
<div class="contact-entry-end" ></div> <div class="contact-entry-end" ></div>
</div> </div>

View File

@ -1,5 +1,5 @@
<div class="widget" id="group-sidebar"> <div id="group-sidebar" class="widget">
<h3>$title</h3> <h3 class="label">$title</h3>
<div id="sidebar-group-list"> <div id="sidebar-group-list">
<ul id="sidebar-group-ul"> <ul id="sidebar-group-ul">
@ -9,7 +9,7 @@
{{ if $group.edit }} {{ if $group.edit }}
<a <a
class="groupsideedit" class="groupsideedit"
href="$group.edit.href" title="$edittext"><span class="icon small-pencil"></span></a> href="$group.edit.href" title="$group.edit.title"><span class="icon small-pencil"></span></a>
{{ endif }} {{ endif }}
{{ if $group.cid }} {{ if $group.cid }}
<input type="checkbox" <input type="checkbox"

View File

@ -74,25 +74,6 @@
} }
} }
$(document).ready(function() {
function toggleToolbar() {
if ( $('#nav-floater').is(':visible') ) {
$('#nav-floater').slideUp('fast');
$('.floaterflip').css({
backgroundPosition: '-210px -60px'
});
} else {
$('#nav-floater').slideDown('fast');
$('.floaterflip').css({
backgroundPosition: '-190px -60px'
});
}
};
$('.floaterflip').click(function() {
toggleToolbar();
return false;
});
});
</script> </script>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -51,9 +51,9 @@
borderopacity="1.0" borderopacity="1.0"
inkscape:pageopacity="0" inkscape:pageopacity="0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="1.9403009" inkscape:zoom="1.3859292"
inkscape:cx="100.08061" inkscape:cx="105.02551"
inkscape:cy="113.21269" inkscape:cy="107.90767"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="layer1" inkscape:current-layer="layer1"
showgrid="true" showgrid="true"
@ -107,7 +107,7 @@
<dc:format>image/svg+xml</dc:format> <dc:format>image/svg+xml</dc:format>
<dc:type <dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title> <dc:title />
</cc:Work> </cc:Work>
</rdf:RDF> </rdf:RDF>
</metadata> </metadata>
@ -572,7 +572,7 @@
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
id="rect4428-4" id="rect4428-4"
d="m 118.03127,895.15627 0,0.3125 c 0,1.2601 -0.0643,3.4345 -0.35937,5.75 l -1.5625,1e-4 c -0.80183,0.011 -1.64766,4.0737 -1.60938,8.0625 l 8.25,0 c -0.057,-5.5479 1.56902,-11.5211 1.75,-5.6563 0.21453,6.9525 1.74237,-5.1823 1.75,-8.4687 z" d="m 118.03127,895.15627 0,0.3125 c 0,1.2601 -0.0643,3.4345 -0.35937,5.75 l -1.5625,1e-4 c -0.80183,0.011 -1.64766,4.0737 -1.60938,8.0625 l 8.25,0 c -0.057,-5.5479 1.56902,-11.5211 1.75,-5.6563 0.21453,6.9525 1.74237,-5.1823 1.75,-8.4687 z"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<path <path
inkscape:export-ydpi="90" inkscape:export-ydpi="90"
inkscape:export-xdpi="90" inkscape:export-xdpi="90"
@ -580,7 +580,7 @@
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
id="path4440-4" id="path4440-4"
d="m 124.78127,905.73727 -1.9375,-0.063" d="m 124.78127,905.73727 -1.9375,-0.063"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<path <path
inkscape:export-ydpi="90" inkscape:export-ydpi="90"
inkscape:export-xdpi="90" inkscape:export-xdpi="90"
@ -589,7 +589,7 @@
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
id="path4442-9" id="path4442-9"
d="m 117.59377,901.20597 6.4375,0" d="m 117.59377,901.20597 6.4375,0"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<rect <rect
inkscape:export-ydpi="90" inkscape:export-ydpi="90"
inkscape:export-xdpi="90" inkscape:export-xdpi="90"
@ -599,12 +599,12 @@
height="0.375" height="0.375"
width="1.0625" width="1.0625"
id="rect4446-9" id="rect4446-9"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<rect <rect
inkscape:export-ydpi="90" inkscape:export-ydpi="90"
inkscape:export-xdpi="90" inkscape:export-xdpi="90"
inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png" inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
id="rect4448-3" id="rect4448-3"
width="1.0625" width="1.0625"
height="0.375" height="0.375"
@ -619,12 +619,12 @@
height="0.375" height="0.375"
width="1.0625" width="1.0625"
id="rect4450-6" id="rect4450-6"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<rect <rect
inkscape:export-ydpi="90" inkscape:export-ydpi="90"
inkscape:export-xdpi="90" inkscape:export-xdpi="90"
inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png" inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
id="rect4452-0" id="rect4452-0"
width="1.0625" width="1.0625"
height="0.375" height="0.375"
@ -639,12 +639,12 @@
height="0.375" height="0.375"
width="1.0625" width="1.0625"
id="rect4454-5" id="rect4454-5"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<rect <rect
inkscape:export-ydpi="90" inkscape:export-ydpi="90"
inkscape:export-xdpi="90" inkscape:export-xdpi="90"
inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png" inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
id="rect4456-0" id="rect4456-0"
width="1.0625" width="1.0625"
height="0.375" height="0.375"
@ -659,12 +659,12 @@
height="0.375" height="0.375"
width="1.0625" width="1.0625"
id="rect4458-2" id="rect4458-2"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<rect <rect
inkscape:export-ydpi="90" inkscape:export-ydpi="90"
inkscape:export-xdpi="90" inkscape:export-xdpi="90"
inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png" inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
id="rect4460-9" id="rect4460-9"
width="1.0625" width="1.0625"
height="0.375" height="0.375"
@ -679,12 +679,12 @@
height="0.375" height="0.375"
width="1.0625" width="1.0625"
id="rect4462-4" id="rect4462-4"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<rect <rect
inkscape:export-ydpi="90" inkscape:export-ydpi="90"
inkscape:export-xdpi="90" inkscape:export-xdpi="90"
inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png" inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
id="rect4464-3" id="rect4464-3"
width="1.0625" width="1.0625"
height="0.375" height="0.375"
@ -699,12 +699,12 @@
height="0.375" height="0.375"
width="1.0625" width="1.0625"
id="rect4466-5" id="rect4466-5"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<rect <rect
inkscape:export-ydpi="90" inkscape:export-ydpi="90"
inkscape:export-xdpi="90" inkscape:export-xdpi="90"
inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png" inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
id="rect4468-1" id="rect4468-1"
width="1.0625" width="1.0625"
height="0.375" height="0.375"
@ -719,12 +719,12 @@
height="0.375" height="0.375"
width="1.0625" width="1.0625"
id="rect4470-7" id="rect4470-7"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<rect <rect
inkscape:export-ydpi="90" inkscape:export-ydpi="90"
inkscape:export-xdpi="90" inkscape:export-xdpi="90"
inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png" inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
id="rect4472-4" id="rect4472-4"
width="1.0625" width="1.0625"
height="0.375" height="0.375"
@ -739,12 +739,12 @@
height="0.375" height="0.375"
width="1.0625" width="1.0625"
id="rect4474-3" id="rect4474-3"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<rect <rect
inkscape:export-ydpi="90" inkscape:export-ydpi="90"
inkscape:export-xdpi="90" inkscape:export-xdpi="90"
inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png" inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
id="rect4476-1" id="rect4476-1"
width="1.0625" width="1.0625"
height="0.375" height="0.375"
@ -759,12 +759,12 @@
height="0.375" height="0.375"
width="1.0625" width="1.0625"
id="rect4478-4" id="rect4478-4"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<rect <rect
inkscape:export-ydpi="90" inkscape:export-ydpi="90"
inkscape:export-xdpi="90" inkscape:export-xdpi="90"
inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png" inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png"
style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
id="rect4480-6" id="rect4480-6"
width="1.0625" width="1.0625"
height="0.375" height="0.375"

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 117 KiB

View File

@ -114,6 +114,7 @@ function enableOnUser(){
$(this).val(""); $(this).val("");
initEditor(); initEditor();
} }
</script> </script>
<script type="text/javascript" src="$baseurl/js/ajaxupload.js"></script> <script type="text/javascript" src="$baseurl/js/ajaxupload.js"></script>
<script type="text/javascript"> <script type="text/javascript">
@ -121,6 +122,7 @@ function enableOnUser(){
var addtitle = '$addtitle'; var addtitle = '$addtitle';
$(document).ready(function() { $(document).ready(function() {
/* enable tinymce on focus and click */ /* enable tinymce on focus and click */
$("#profile-jot-text").focus(enableOnUser); $("#profile-jot-text").focus(enableOnUser);
$("#profile-jot-text").click(enableOnUser); $("#profile-jot-text").click(enableOnUser);
@ -261,6 +263,18 @@ function enableOnUser(){
} }
} }
function itemFiler(id) {
reply = prompt("$fileas");
if(reply && reply.length) {
commentBusy = true;
$('body').css('cursor', 'wait');
$.get('filer/' + id + '?term=' + reply);
if(timer) clearTimeout(timer);
timer = setTimeout(NavUpdate,3000);
liking = 1;
}
}
function jotClearLocation() { function jotClearLocation() {
$('#jot-coord').val(''); $('#jot-coord').val('');
$('#profile-nolocation-wrapper').hide(); $('#profile-nolocation-wrapper').hide();

View File

@ -1,5 +1,4 @@
<nav> <nav>
$langselector
<span id="banner">$banner</span> <span id="banner">$banner</span>
@ -58,14 +57,6 @@ works -->
</li> </li>
{{ endif }} {{ endif }}
{{ if $userinfo }}
<ul id="nav-user-menu" class="menu-popup">
{{ for $nav.usermenu as $usermenu }}
<li><a class="$usermenu.2" href="$usermenu.0" title="$usermenu.3">$usermenu.1</a></li>
{{ endfor }}
</ul>
{{ endif }}
{{ if $nav.contacts }} {{ if $nav.contacts }}
<li><a id="nav-contacts-link" class="nav-commlink $nav.contacts.2" href="$nav.contacts.0" title="$nav.contacts.1">$nav.contacts.1</a></li> <li><a id="nav-contacts-link" class="nav-commlink $nav.contacts.2" href="$nav.contacts.0" title="$nav.contacts.1">$nav.contacts.1</a></li>
{{ endif }} {{ endif }}
@ -95,6 +86,14 @@ works -->
</ul> </ul>
</div> </div>
{{ if $userinfo }}
<ul id="nav-user-menu" class="menu-popup">
{{ for $nav.usermenu as $usermenu }}
<li><a class="$usermenu.2" href="$usermenu.0" title="$usermenu.3">$usermenu.1</a></li>
{{ endfor }}
</ul>
{{ endif }}
<div id="notifications"> <div id="notifications">
{{ if $nav.home }} {{ if $nav.home }}
<a id="home-update" class="nav-ajax-left" href="$nav.home.0" title="$nav.home.1"></a> <a id="home-update" class="nav-ajax-left" href="$nav.home.0" title="$nav.home.1"></a>
@ -112,11 +111,14 @@ works -->
<a id="intro-update" class="nav-ajax-left" href="$nav.introductions.0"></a> <a id="intro-update" class="nav-ajax-left" href="$nav.introductions.0"></a>
{{ endif }} {{ endif }}
</div> </div>
</div> </div>
<a href="#" class="floaterflip"></a> <a href="#" class="floaterflip"></a>
</nav> </nav>
<div id="lang-sel-wrap">
$langselector
</div>
<ul id="nav-notifications-template" style="display:none;" rel="template"> <ul id="nav-notifications-template" style="display:none;" rel="template">
<li class="{4}"><a href="{0}"><img src="{1}" height="24" width="24" alt="" />{2} <span class="notif-when">{3}</span></a></li> <li class="{4}"><a href="{0}"><img src="{1}" height="24" width="24" alt="" />{2} <span class="notif-when">{3}</span></a></li>
</ul> </ul>

View File

@ -4,7 +4,7 @@
<a href="$base" class="nets-link{{ if $sel_all }} nets-selected{{ endif }} nets-all">$all</a> <a href="$base" class="nets-link{{ if $sel_all }} nets-selected{{ endif }} nets-all">$all</a>
<ul class="nets-ul"> <ul class="nets-ul">
{{ for $nets as $net }} {{ for $nets as $net }}
<li><a href="$base?nets=$net.ref" class="nets-link{{ if $net.selected }} nets-selected{{ endif }}">$net.name</a></li> <li><a href="$base?f=&nets=$net.ref" class="nets-link{{ if $net.selected }} nets-selected{{ endif }}">$net.name</a></li>
{{ endfor }} {{ endfor }}
</ul> </ul>
</div> </div>

View File

@ -2,11 +2,29 @@
<div class="fn label">$profile.name</div> <div class="fn label">$profile.name</div>
{{ if $profile.edit }}
<div class="action">
<span class="icon-profile-edit"></span>
<a href="#" rel="#profiles-menu" class="ttright" id="profiles-menu-trigger" title="$profile.edit.3">$profile.edit.1</a>
<ul id="profiles-menu" class="menu-popup">
{{ for $profile.menu.entries as $e }}
<li>
<a href="profiles/$e.id"><img src='$e.photo'>$e.profile_name</a>
</li>
{{ endfor }}
<li><a href="profile_photo" >$profile.menu.chg_photo</a></li>
<li><a href="profiles/new" id="profile-listing-new-link">$profile.menu.cr_new</a></li>
</ul>
</div>
{{ endif }}
</div>
{{ if $pdesc }} {{ if $pdesc }}
<div class="title">$profile.pdesc</div> <div class="title">$profile.pdesc</div>
{{ endif }} {{ endif }}
<div id="profile-photo-wrapper"> <div id="profile-photo-wrapper">
<img class="photo" width="175" height="175" src="$profile.photo" alt="$profile.name" /> <img class="photo" width="175" height="175" src="$profile.photo?rev=$profile.picdate" alt="$profile.name" />
</div> </div>
{{ if $location }} {{ if $location }}
@ -15,10 +33,11 @@
<div class="adr"> <div class="adr">
{{ if $profile.address }} {{ if $profile.address }}
<div class="street-address">$profile.address</div>{{ endif }} <div class="street-address">$profile.address</div>{{ endif }}
<span class="city-state-zip">$profile.zip</span> <span class="city-state-zip">
<span class="locality">$profile.locality</span>{{ if $profile.locality }}, {{ endif }} <span class="locality">$profile.locality</span>{{ if $profile.locality }}, {{ endif }}
<span class="region">$profile.region</span> <span class="region">$profile.region</span>
<span class="postal-code">$profile.postal-code</span> <span class="postal-code">$profile.postal-code</span>
</span>
{{ if $profile.country-name }}<span class="country-name">$profile.country-name</span>{{ endif }} {{ if $profile.country-name }}<span class="country-name">$profile.country-name</span>{{ endif }}
</div> </div>
</div> </div>

View File

@ -1,4 +1,4 @@
<div class="widget" id="saved-search-list"> <div id="saved-search-list" class="widget">
<h3 id="search">$title</h3> <h3 id="search">$title</h3>
$searchbox $searchbox

View File

@ -122,7 +122,6 @@ a {
color: #88a9d2; color: #88a9d2;
text-decoration: none; text-decoration: none;
margin-bottom: 1px; margin-bottom: 1px;
text-decoration: none;
} }
/*a:hover { */ /*a:hover { */
/* text-decoration: none;*/ /* text-decoration: none;*/
@ -140,7 +139,6 @@ blockquote {
} }
a:hover { a:hover {
color: #729fcf; color: #729fcf;
padding-bottom: 0;
border-bottom: 1px dotted #729fcf; border-bottom: 1px dotted #729fcf;
} }
.required { .required {
@ -197,14 +195,16 @@ input[type=submit] {
color: #fff; color: #fff;
} }
/** /**
* global * global
*/ */
/* .tool .action */ /* .tool .action */
.action { .action {
float: right; margin: 5px 0;
} }
/** /**
* login * login
*/ */
@ -212,9 +212,10 @@ input[type=submit] {
margin-right: 20px; margin-right: 20px;
} }
/*********
/**
* nav * nav
*********/ */
nav { nav {
height: 60px; height: 60px;
display: block; display: block;
@ -488,7 +489,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link
.nav-ajax-update, .nav-ajax-left { .nav-ajax-update, .nav-ajax-left {
width: 30px; width: 30px;
height: 19px; height: 19px;
background: transparent url(notifications.svg) 0 0 no-repeat; background: transparent url(notifications.png) 0 0 no-repeat;
color: #222; color: #222;
font-weight: bold; font-weight: bold;
font-size: 0.8em; font-size: 0.8em;
@ -519,14 +520,16 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link
} }
#lang-select-icon { #lang-select-icon {
cursor: pointer; cursor: pointer;
position: absolute; position: fixed;
left: 0; left: 28px;
top: 0; bottom: 6px;
z-index: 10;
} }
#language-selector { #language-selector {
position: absolute; position: fixed;
top: 0; bottom: 2px;
left: 16px; left: 52px;
z-index: 10;
} }
.menu-popup { .menu-popup {
position: absolute; position: absolute;
@ -539,9 +542,9 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link
list-style: none; list-style: none;
border: 3px solid #364e59; border: 3px solid #364e59;
z-index: 100000; z-index: 100000;
-webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); -webkit-box-shadow: 3px 3px 10px 0 rgba(0, 0, 0, 0.7);
-moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); -moz-box-shadow: 3px 3px 10px 0 rgba(0, 0, 0, 0.7);
box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); box-shadow: 3px 3px 10px 0 rgba(0, 0, 0, 0.7);
} }
.menu-popup a { .menu-popup a {
display: block; display: block;
@ -591,9 +594,9 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link
#sysmsg_info { #sysmsg_info {
position: fixed; position: fixed;
bottom: 0; bottom: 0;
-moz-box-shadow:0 0 5px #888; -moz-box-shadow: 3px 3px 3px 10px 0 #000;
-webkit-box-shadow:0 0 5px #888; -webkit-box-shadow: 3px 3px 10px 0 #000;
box-shadow:0 0 5px #888; box-shadow: 3px 3px 10px 0 #000;
padding: 10px; padding: 10px;
background-color: #fcaf3e; background-color: #fcaf3e;
border:2px solid #f8911b; border:2px solid #f8911b;
@ -604,9 +607,9 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link
#sysmsg { #sysmsg {
position: fixed; position: fixed;
bottom: 0; bottom: 0;
-moz-box-shadow: 0 0 5px #888; -moz-box-shadow: 3px 3px 10px 0 #000;
-webkit-box-shadow: 0 0 5px #888; -webkit-box-shadow: 3px 3px 10px 0 #000;
box-shadow: 0 0 5px #888; box-shadow: 3px 3px 10px 0 #000;
padding: 10px; padding: 10px;
background-color: #fcaf3e; background-color: #fcaf3e;
border: 2px solid #f8911b; border: 2px solid #f8911b;
@ -690,7 +693,9 @@ aside #viewcontacts {
#netsearch-box { #netsearch-box {
margin: 30px 0px; margin: 30px 0px;
} }
.ttright {
margin: 0px 0px 0px 5px;
}
/** /**
* contacts block * contacts block
@ -812,6 +817,9 @@ aside #viewcontacts {
border-bottom: 0; border-bottom: 0;
padding: 5px; padding: 5px;
} }
#profile-jot-net {
margin: 5px 0;
}
#jot-preview-link { #jot-preview-link {
margin: 0 0 0 10px; margin: 0 0 0 10px;
border: 0; border: 0;
@ -833,12 +841,12 @@ aside #viewcontacts {
background-color: #555753; background-color: #555753;
height: 22px; height: 22px;
width: 20px; width: 20px;
-webkit-border-radius: 5px 0px 0px 5px; -webkit-border-radius: 5px;
-moz-border-radius: 5px 0px 0px 5px; -moz-border-radius: 5px;
border-radius: 5px 0px 0px 5px; border-radius: 5px;
overflow: hidden; overflow: hidden;
border: 0px; border: 0px;
margin: 0 -4px 0 10px; margin: 0 10px 0 10px;
} }
#profile-jot-plugin-wrapper { #profile-jot-plugin-wrapper {
width: 1px; width: 1px;
@ -856,23 +864,21 @@ aside #viewcontacts {
height: 22px; height: 22px;
background-color: #555753; background-color: #555753;
color: #eeeeec; color: #eeeeec;
-webkit-border-radius: 0 5px 5px 0; -webkit-border-radius: 5px;
-moz-border-radius: 0 5px 5px 0; -moz-border-radius: 5px;
border-radius: 0 5px 5px 0; border-radius: 5px;
border: 0; border: 0;
margin: 0; margin: 0;
float: right; float: right;
} }
#jot-perms-icons { #jot-perms-icon {
background-color: #555753;
height: 22px; height: 22px;
width: 20px; width: 20px;
-webkit-border-radius: 0 5px 5px 0; -webkit-border-radius: 5px;
-moz-border-radius: 0 5px 5px 0; -moz-border-radius: 5px;
border-radius: 0 5px 5px 0; border-radius: 5px;
overflow: hidden; overflow: hidden;
border: 0; border: 0;
margin: 0 0 0 94.4%;
} }
#profile-jot-acl-wrapper { #profile-jot-acl-wrapper {
margin: 0 10px; margin: 0 10px;
@ -915,10 +921,11 @@ aside #viewcontacts {
clear: both; clear: both;
} }
#jot-title-desc { #jot-title-desc {
color: #cccccc; color: #ccc;
} }
#profile-jot-desc { #profile-jot-desc {
color: #a00; color: #ff2000;
margin: 5px 0;
} }
#jot-title-wrapper { #jot-title-wrapper {
margin-bottom: 5px; margin-bottom: 5px;
@ -946,7 +953,7 @@ aside #viewcontacts {
* section * section
*/ */
section { section {
margin: 20px 6% 0 4%; margin: 20px 8% 0 4%;
font-size: 0.8em; font-size: 0.8em;
padding-right: 230px; padding-right: 230px;
min-width: 475px; min-width: 475px;
@ -955,30 +962,31 @@ section {
/** tabs **/ /** tabs **/
.tabs { .tabs {
list-style: none; list-style: none;
margin: 10px 0 10px; margin: 10px 0;
padding: 0; padding: 0;
border-bottom: 1px solid #729fcf;
font-size: 14px;
} }
.tabs li { .tabs li {
display: inline; display: inline;
} }
.tab { .tab {
padding: 0 5px; border: 1px solid #729fcf;
padding: 4px;
} }
.tab:hover { .tab:hover {
background-color: #88a9d2; background: #88a9d2;
color: #111; color: #2e2f2e;
border: 0px;
} }
.tab:active { .tab:active {
background-color: #88a9d2; background: #88a9d2;
color: #111; color: #2e2f2e;
border: 0px;
} }
.tab.active { .tab.active {
background-color: #88a9d2; background: #88a9d2;
color: #111; color: #2e2f2e;
}
.tab a {
border: 0;
text-decoration: none;
} }
/** /**
@ -1005,6 +1013,9 @@ section {
.shiny { .shiny {
background: #2e3436; background: #2e3436;
} }
.heart {
color: red;
}
.wall-item-content { .wall-item-content {
overflow-x: auto; overflow-x: auto;
} }
@ -1091,7 +1102,7 @@ section {
clear: left; clear: left;
font-size: 0.8em; font-size: 0.8em;
color: #878883; color: #878883;
margin: 20px 0 0 110px; margin: 20px 20px 0 110px;
} }
.wall-item-ago { .wall-item-ago {
display: inline; display: inline;
@ -1328,10 +1339,11 @@ div[id$="wrapper"] br {
.photo-album-image-wrapper, .photo-album-image-wrapper,
.photo-top-image-wrapper { .photo-top-image-wrapper {
float: left; float: left;
-moz-box-shadow: 0 0 5px #888; -moz-box-shadow: 3px 3px 10px 0 #000;
-webkit-box-shadow: 0 0 5px #888; -webkit-box-shadow: 3px 3px 10px 0 #000;
box-shadow: 0 0 5px #888; box-shadow: 3px 3px 10px 0 #000;
background-color: #eee; background-color: #222;
color: #2e2f2e;
-webkit-border-radius: 5px; -webkit-border-radius: 5px;
-moz-border-radius: 5px; -moz-border-radius: 5px;
border-radius: 5px; border-radius: 5px;
@ -1500,20 +1512,26 @@ div[id$="wrapper"] br {
} }
.mail-list-sender-name { .mail-list-sender-name {
display: inline; display: inline;
font-size: 1.1em;
} }
.mail-list-date { .mail-list-date {
display: inline; display: inline;
font-size: 0.8em; font-size: 0.9em;
padding-left: 10px; padding-left: 10px;
} }
.mail-list-sender-name, .mail-list-date {
font-style: italic;
}
.mail-list-subject { .mail-list-subject {
font-size: 1.5em; font-size: 1.2em;
font-weight: bold;
} }
.mail-list-delete-wrapper { .mail-list-delete-wrapper {
float: right; float: right;
} }
.mail-list-outside-wrapper-end { .mail-list-outside-wrapper-end {
clear: both; clear: both;
border-bottom: 1px #eec dotted;
} }
.mail-conv-sender { .mail-conv-sender {
float: left; float: left;
@ -1548,8 +1566,7 @@ div[id$="wrapper"] br {
.view-contact-wrapper, .view-contact-wrapper,
.contact-entry-wrapper { .contact-entry-wrapper {
float: left; float: left;
margin-right: 5px; margin: 0 5px 40px 0;
margin-bottom: 40px;
width: 120px; width: 120px;
height: 120px; height: 120px;
padding: 3px; padding: 3px;
@ -1712,38 +1729,68 @@ div[id$="wrapper"] br {
clear: both; clear: both;
} }
#register-form label, /*#register-form label, */
#profile-edit-form label { /*#profile-edit-form label {*/
width: 300px; /* width: 300px; */
float: left; /* float: left; */
} /*} */
#register-form span, /*#register-form span, */
#profile-edit-form span { /*#profile-edit-form span {*/
color:#555753; /* color: #555753; */
display:block; /* display: block; */
margin-bottom:20px; /* margin-bottom: 20px; */
/*} */
#profile-edit-marital-label span {
margin: -4px;
} }
.settings-submit-wrapper, .settings-submit-wrapper,
.profile-edit-submit-wrapper { .profile-edit-submit-wrapper {
margin: 30px 0px; margin: 30px 0px;
} }
.profile-edit-side-div { .profile-edit-side-div {
margin: 5px 2px 0 0; /*background: #111;*/
/*border-radius: 5px 5px 0px 0px;*/
/*margin: 0px 0px 0px 0px;*/
/*width: 100px;*/
/*height: 25px;*/
/*position: absolute;*/
display: none;
/*left: 35%;*/
/*top: 41%;*/
/*cursor: pointer;*/
} }
.profile-edit-side-link { /*.profile-edit-side-div:hover {*/
margin: 0 20px -18px 0; /*display: block;*/
float: right; /*}*/
/*.profile-edit-side-link {*/
/*margin: 3px 0px 0px 70px;*/
/*}*/
#profiles-menu-trigger {
width: 100px;
} }
.profile-listing { .profile-listing {
float: left; float: left;
margin: 20px 20px 0px 0px; margin: 20px 20px 0px 0px;
} }
.icon-profile-edit {
background: url("icons.png") no-repeat scroll -150px 0px transparent;
border: 0 none;
display: block;
float: right;
height: 20px;
margin: 0 0 -18px;
text-decoration: none;
cursor: pointer;
}
#profile-edit-links ul { #profile-edit-links ul {
margin: 20px 0; margin: 20px 0;
padding: 0; padding: 0;
list-style: none; list-style: none;
} }
.marital {
margin-top: 5px;
}
#register-sitename { #register-sitename {
display: inline; display: inline;
font-weight: bold; font-weight: bold;
@ -1944,7 +1991,12 @@ div[id$="wrapper"] br {
*/ */
.directory-item { .directory-item {
float: left; float: left;
margin: 50px 50px 0px 0px; /*margin: 50px 50px 0px 0px;*/
margin: 0 5px 4px 0;
padding: 3px;
width: 180px;
height: 250px;
position: relative;
} }
@ -1956,10 +2008,13 @@ div[id$="wrapper"] br {
} }
.group-selected, .nets-selected { .group-selected, .nets-selected {
padding: 3px; padding: 3px;
border: 1px solid #f8f8f8; color: #2e2f2e;
background: #2e302e; background: #88a9d2;
font-weight: bold; font-weight: bold;
} }
.group-selected:hover, .nets-selected:hover {
color: #2e2f2e;
}
.groupsideedit { .groupsideedit {
margin-right: 10px; margin-right: 10px;
} }
@ -2105,11 +2160,16 @@ div[id$="wrapper"] br {
width: 16px; height: 16px; width: 16px; height: 16px;
} }
#adminpage table tr:hover { #adminpage table tr:hover {
background-color:#bbc7d7; color: #2e2f2e;
background-color: #eec;
} }
#adminpage .selectall { #adminpage .selectall {
text-align: right; text-align: right;
} }
#adminpage #users a {
color: #2e2f2e;
text-decoration: underline;
}
/** /**
* Form fields * Form fields
@ -2387,7 +2447,7 @@ div[id$="wrapper"] br {
background-position: -70px -40px; background-position: -70px -40px;
} }
.unlock { .unlock {
background-position: -90px -40px; background-position: -88px -40px;
} }
.video { .video {
background-position: -110px -40px; background-position: -110px -40px;
@ -2471,8 +2531,8 @@ footer {
} }
#profile-jot-text { #profile-jot-text {
height: 20px; height: 20px;
color: #666; color: #eec;
border: 1px solid #ccc; border: 1px solid #eec;
border-radius: 5px; border-radius: 5px;
width: 99.5%; width: 99.5%;
} }
@ -2483,35 +2543,35 @@ footer {
#photos-upload-permissions-wrapper, #photos-upload-permissions-wrapper,
#profile-jot-acl-wrapper { #profile-jot-acl-wrapper {
display: block !important; display: block !important;
background: #2e2f2e;
color: #eec;
} }
#acl-wrapper { #acl-wrapper {
width: 690px; width: 660px;
float: left; margin: 0 auto;
} }
#acl-search { #acl-search {
float: right; float: right;
background: #fff url("../../../images/search_18.png") no-repeat right center; background: #fff url("../../../images/search_18.png") no-repeat right center;
padding-right: 20px; padding-right: 20px;
margin: 6px;
} }
#acl-showall { #acl-showall {
float: left; float: left;
display: block; display: block;
width: auto; width: auto;
height: 18px; height: 18px;
background-color:#CCC; background: #eec url("../../../images/show_all_off.png") 8px 8px no-repeat;
background-image:url("../../../images/show_all_off.png");
background-position:7px 7px;
background-repeat:no-repeat;
padding: 7px 10px 7px 30px; padding: 7px 10px 7px 30px;
-webkit-border-radius: 5px; -webkit-border-radius: 5px;
-moz-border-radius: 5px; -moz-border-radius: 5px;
border-radius: 5px; border-radius: 5px;
color: #999; color: #999;
margin: 5px 0;
} }
#acl-showall.selected { #acl-showall.selected {
color: #000; color: #000;
background-color:#F90; background: #f90 url(../../../images/show_all_on.png) 8px 8px no-repeat;
background-image:url(../../../images/show_all_on.png);
} }
#acl-list { #acl-list {
height: 210px; height: 210px;
@ -2520,61 +2580,64 @@ footer {
margin-top: 30px; margin-top: 30px;
overflow: auto; overflow: auto;
} }
#acl-list-content { /*#acl-list-content {*/
} /*}*/
.acl-list-item { .acl-list-item {
border: 1px solid #eec;
display: block; display: block;
width:150px;
height:30px;
border:1px solid #ccc;
margin:5px;
float: left; float: left;
height: 110px;
margin: 3px 0 5px 5px;
width: 120px;
} }
.acl-list-item img { .acl-list-item img {
width: 22px; width: 22px;
height: 22px; height: 22px;
float: left; float: left;
margin:4px; margin: 5px 5px 20px;
} }
.acl-list-item p { .acl-list-item p {
height: 12px; height: 12px;
font-size: 10px; font-size: 10px;
margin: 0; margin: 0 0 22px;
padding: 2px 0 1px; padding: 2px 0 1px;
} }
.acl-list-item a { .acl-list-item a {
font-size:8px; background: #eec 3px 3px no-repeat;
display:block;
width:40px;
height:10px;
float:left;
color:#999;
background-color:#CCC;
background-position:3px 3px;
background-repeat:no-repeat;
margin-right:5px;
-webkit-border-radius: 2px; -webkit-border-radius: 2px;
-moz-border-radius: 2px; -moz-border-radius: 2px;
border-radius: 2px; border-radius: 2px;
padding-left:15px; clear: both;
font-size: 10px;
display: block;
width: 55px;
height: 20px;
color: #2e2f2e;
margin: 5px auto 0;
padding: 0 3px;
text-align: center;
vertical-align: middle;
} }
#acl-wrapper a:hover { #acl-wrapper a:hover {
text-decoration: none; text-decoration: none;
color:#000; color: #2e2f2e;
border: 0;
} }
.acl-button-show { .acl-button-show {
background-image: url('../../../images/show_off.png'); background-image: url('../../../images/show_off.png');
margin: 0 auto;
} }
.acl-button-hide { .acl-button-hide {
background-image: url('../../../images/hide_off.png'); background-image: url('../../../images/hide_off.png');
margin: 0 auto;
} }
.acl-button-show.selected { .acl-button-show.selected {
color:#000; color: #2e2f2e;
background-color: #9ade00; background-color: #9ade00;
background-image: url(../../../images/show_on.png); background-image: url(../../../images/show_on.png);
} }
.acl-button-hide.selected { .acl-button-hide.selected {
color:#000; color: #2e2f2e;
background-color: #ff4141; background-color: #ff4141;
background-image: url(../../../images/hide_on.png); background-image: url(../../../images/hide_on.png);
} }
@ -2589,7 +2652,8 @@ footer {
/* autocomplete popup */ /* autocomplete popup */
.acpopup { .acpopup {
max-height: 150px; max-height: 175px;
max-width: 42%;
background-color: #555753; background-color: #555753;
color: #fff; color: #fff;
overflow: auto; overflow: auto;

View File

@ -1,5 +1,17 @@
<?php <?php
$a->theme_info = array();
/*
* Name: Dispy Dark
* Description: Dispy Dark, Friendica theme
* Version: 0.9
* Author: Simon <http://simon.kisikew.org/>
* Maintainer: Simon <http://simon.kisikew.org/>
*/
$a->theme_info = array(
'extends' => 'dispy-dark'
);
$a->page['htmlhead'] .= <<< EOT $a->page['htmlhead'] .= <<< EOT
<script> <script>
@ -52,6 +64,16 @@ $(document).ready(function() {
$('#drop-' + id).addClass('iconspacer'); } $('#drop-' + id).addClass('iconspacer'); }
); );
// notifications
$('html').click(function() {
$('#nav-notifications-linkmenu').removeClass('selected');
document.getElementById("nav-notifications-menu").style.display = "none";
});
$('#nav-notifications-linkmenu').click(function(event) {
event.stopPropagation();
});
function toggleToolbar() { function toggleToolbar() {
if ( $('#nav-floater').is(':visible') ) { if ( $('#nav-floater').is(':visible') ) {
$('#nav-floater').slideUp('fast'); $('#nav-floater').slideUp('fast');
@ -69,6 +91,26 @@ $(document).ready(function() {
toggleToolbar(); toggleToolbar();
return false; return false;
}); });
$('#profile-jot-text').focusin(function() {
$(this).css({color: '#eec'});
});
/* $('#profile-photo-wrapper').mouseover(function() {
$('.profile-edit-side-div').css({display: 'block'});
}).mouseout(function() {
$('.profile-edit-side-div').css({display: 'none'});
return false;
});
$('img.photo').mouseover(function() {
$('.profile-edit-side-div').css({display: 'block'});
}).mouseout(function() {
$('.profile-edit-side-div').css({display: 'none'});
return false;
});*/
}); });
</script> </script>
EOT; EOT;

View File

@ -26,11 +26,14 @@
<a href="#" id="starred-$item.id" onclick="dostar($item.id); return false;" class="star-item icon $item.isstarred" title="$item.star.toggle"></a> <a href="#" id="starred-$item.id" onclick="dostar($item.id); return false;" class="star-item icon $item.isstarred" title="$item.star.toggle"></a>
<a href="#" id="tagger-$item.id" onclick="itemTag($item.id); return false;" class="tag-item icon tagged" title="$item.star.tagger"></a> <a href="#" id="tagger-$item.id" onclick="itemTag($item.id); return false;" class="tag-item icon tagged" title="$item.star.tagger"></a>
{{ endif }} {{ endif }}
{{ if $item.vote }} {{ if $item.vote }}
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$item.id"> <div class="wall-item-like-buttons" id="wall-item-like-buttons-$item.id">
<a href="#" class="icon like" title="$item.vote.like.0" onclick="dolike($item.id,'like'); return false"></a> <a href="#" class="icon like" title="$item.vote.like.0" onclick="dolike($item.id,'like'); return false"></a>
<a href="#" class="icon dislike" title="$item.vote.dislike.0" onclick="dolike($item.id,'dislike'); return false"></a> <a href="#" class="icon dislike" title="$item.vote.dislike.0" onclick="dolike($item.id,'dislike'); return false"></a>
{{ if $item.vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title="$item.vote.share.0" onclick="jotShare($item.id); return false"></a>{{ endif }} {{ if $item.vote.share }}
<a href="#" id="share-$item.id"
class="icon recycle wall-item-share-buttons" title="$item.vote.share.0" onclick="jotShare($item.id); return false"></a>{{ endif }}
<img id="like-rotator-$item.id" class="like-rotator" src="images/rotator.gif" alt="$item.wait" title="$item.wait" style="display: none;" /> <img id="like-rotator-$item.id" class="like-rotator" src="images/rotator.gif" alt="$item.wait" title="$item.wait" style="display: none;" />
</div> </div>
{{ endif }} {{ endif }}

View File

@ -31,11 +31,15 @@
<a href="#" id="starred-$item.id" onclick="dostar($item.id); return false;" class="star-item icon $item.isstarred" title="$item.star.toggle"></a> <a href="#" id="starred-$item.id" onclick="dostar($item.id); return false;" class="star-item icon $item.isstarred" title="$item.star.toggle"></a>
<a href="#" id="tagger-$item.id" onclick="itemTag($item.id); return false;" class="tag-item icon tagged" title="$item.star.tagger"></a> <a href="#" id="tagger-$item.id" onclick="itemTag($item.id); return false;" class="tag-item icon tagged" title="$item.star.tagger"></a>
{{ endif }} {{ endif }}
{{ if $item.vote }} {{ if $item.vote }}
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$item.id"> <div class="wall-item-like-buttons" id="wall-item-like-buttons-$item.id">
<a href="#" class="icon like" title="$item.vote.like.0" onclick="dolike($item.id,'like'); return false"></a> <a href="#" class="icon like" title="$item.vote.like.0" onclick="dolike($item.id,'like'); return false"></a>
<a href="#" class="icon dislike" title="$item.vote.dislike.0" onclick="dolike($item.id,'dislike'); return false"></a> <a href="#" class="icon dislike" title="$item.vote.dislike.0" onclick="dolike($item.id,'dislike'); return false"></a>
{{ if $item.vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title="$item.vote.share.0" onclick="jotShare($item.id); return false"></a>{{ endif }}
{{ if $item.vote.share }}
<a href="#" id="share-$item.id"
class="icon recycle wall-item-share-buttons" title="$item.vote.share.0" onclick="jotShare($item.id); return false"></a>{{ endif }}
<img id="like-rotator-$item.id" class="like-rotator" src="images/rotator.gif" alt="$item.wait" title="$item.wait" style="display: none;" /> <img id="like-rotator-$item.id" class="like-rotator" src="images/rotator.gif" alt="$item.wait" title="$item.wait" style="display: none;" />
</div> </div>
{{ endif }} {{ endif }}
@ -63,6 +67,7 @@
{{ endfor }} {{ endfor }}
</div> </div>
</div> </div>
</div> </div>
<div class="wall-item-author"> <div class="wall-item-author">
<a href="$item.profile_url" title="$item.linktitle" class="wall-item-name-link"><span class="wall-item-name$item.sparkle" id="wall-item-name-$item.id" >$item.name</span></a> <a href="$item.profile_url" title="$item.linktitle" class="wall-item-name-link"><span class="wall-item-name$item.sparkle" id="wall-item-name-$item.id" >$item.name</span></a>

View File

@ -1,5 +1,4 @@
<nav> <nav>
$langselector
<span id="banner">$banner</span> <span id="banner">$banner</span>
@ -112,11 +111,14 @@ works -->
<a id="intro-update" class="nav-ajax-left" href="$nav.introductions.0"></a> <a id="intro-update" class="nav-ajax-left" href="$nav.introductions.0"></a>
{{ endif }} {{ endif }}
</div> </div>
</div> </div>
<a href="#" class="floaterflip"></a> <a href="#" class="floaterflip"></a>
</nav> </nav>
<div id="lang-sel-wrap">
$langselector
</div>
<ul id="nav-notifications-template" style="display:none;" rel="template"> <ul id="nav-notifications-template" style="display:none;" rel="template">
<li class="{4}"><a href="{0}"><img src="{1}" height="24" width="24" alt="" />{2} <span class="notif-when">{3}</span></a></li> <li class="{4}"><a href="{0}"><img src="{1}" height="24" width="24" alt="" />{2} <span class="notif-when">{3}</span></a></li>
</ul> </ul>

View File

@ -79,7 +79,7 @@ mark {
/* Redeclare monospace font family: h5bp.com/j */ /* Redeclare monospace font family: h5bp.com/j */
pre, code, kbd, samp, .wall-item-body code { pre, code, kbd, samp, .wall-item-body code {
font-family: monospace, monospace; font-family: monospace, monospace;
_font-family: 'courier new', monospace; _font-family: monospace;
font-size: 1em; } font-size: 1em; }
/* Improve readability of pre-formatted text in all browsers */ /* Improve readability of pre-formatted text in all browsers */
@ -127,6 +127,7 @@ a:hover img {
} }
blockquote { blockquote {
background: #eee; background: #eee;
color: #111;
text-indent: 5px; text-indent: 5px;
padding: 5px; padding: 5px;
border: 1px #aaa solid; border: 1px #aaa solid;
@ -134,7 +135,6 @@ blockquote {
} }
a:hover { a:hover {
color: #729fcf; color: #729fcf;
padding-bottom: 0;
border-bottom: 1px dotted #729fcf; border-bottom: 1px dotted #729fcf;
} }
.required { .required {
@ -462,6 +462,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link
right: 1%; right: 1%;
padding: 5px; padding: 5px;
background: #2e3436; background: #2e3436;
color: transparent;
border-radius: 5px; border-radius: 5px;
z-index: 100; z-index: 100;
} }
@ -511,14 +512,14 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link
} }
#lang-select-icon { #lang-select-icon {
cursor: pointer; cursor: pointer;
position: absolute; position: fixed;
left: 0; left: 28px;
top: 0; bottom: 6px;
} }
#language-selector { #language-selector {
position: absolute; position: fixed;
top: 0; bottom: 2px;
left: 16px; left: 52px;
} }
.menu-popup { .menu-popup {
position: absolute; position: absolute;
@ -633,8 +634,24 @@ aside {
.vcard #profile-photo-wrapper { .vcard #profile-photo-wrapper {
margin: 20px; margin: 20px;
} }
/* http://css-tricks.com/snippets/css/css-box-shadow/
* box-shadow:
* 1. The horizontal offset of the shadow, positive means
* the shadow will be on the right of the box, a negative
* offset will put the shadow on the left of the box.
* 2. The vertical offset of the shadow, a negative one
* means the box-shadow will be above the box, a
* positive one means the shadow will be below the box.
* 3. The blur radius (optional), if set to 0 the shadow
* will be sharp, the higher the number, the more blurred
* it will be.
* 4. The spread radius (optional), positive values increase
* the size of the shadow, negative values decrease the size.
* Default is 0 (the shadow is same size as blur).
* 5. Colo[u]r
*/
.vcard #profile-photo-wrapper img { .vcard #profile-photo-wrapper img {
box-shadow: 3px 3px 10px 0; box-shadow: 3px 3px 10px 0 #000;
} }
aside h4 { aside h4 {
font-size: 1.2em; font-size: 1.2em;
@ -643,8 +660,10 @@ aside #viewcontacts {
text-align: right; text-align: right;
} }
.aprofile dt { .aprofile dt {
box-shadow: 1px 1px 5px 0;
color: #666666; color: #666666;
background: transparent;
font-weight: bold;
box-shadow: 1px 1px 5px 0 #000;
margin: 15px 0 5px; margin: 15px 0 5px;
padding-left: 5px; padding-left: 5px;
} }
@ -707,51 +726,11 @@ aside #viewcontacts {
} }
#jot #jot-tools span a { #jot #jot-tools span a {
display: block; display: block;
/*color: #cccccc; */
/*width: 100%; */
/*height: 40px; */
/*text-align: center;*/
/*line-height: 40px; */
/*overflow: hidden;*/
} }
/*#jot #jot-tools li:hover {*/
/*background-color: #364e59;*/
/*}*/
#jot #jot-tools .perms { #jot #jot-tools .perms {
float: right; float: right;
width: 40px; width: 40px;
} }
/*#jot #jot-tools .perms a.unlock {*/
/* width: 30px; */
/* border-left: 10px solid #cccccc;*/
/* background-color: #cccccc; */
/*}*/
/*#jot #jot-tools .perms a.lock {*/
/* width: 30px; */
/* border-left: 10px solid #666666;*/
/* background-color: #666666; */
/*}*/
/*#jot #jot-tools li.submit { */
/* float: right; */
/* background-color: #cccccc; */
/* border-bottom: 2px solid #cccccc; */
/* border-right: 1px solid #666666; */
/* border-left: 1px solid #666666; */
/*} */
/*#jot #jot-tools li.submit input { */
/* border: 0px; */
/* margin: 0px; */
/* padding: 0px; */
/* background-color: #cccccc; */
/* color: #666666; */
/* width: 80px; */
/* height: 40px; */
/* line-height: 40px; */
/*} */
/*#jot #jot-tools li.submit input:hover {*/
/* background-color: #bdcdd4; */
/* color: #666666; */
/*} */
#jot #jot-tools li.loading { #jot #jot-tools li.loading {
float: right; float: right;
background-color: #ffffff; background-color: #ffffff;
@ -945,17 +924,22 @@ aside #viewcontacts {
} }
#jot-preview-content { #jot-preview-content {
background-color: #ffffe0; background-color: #ffffe0;
border: 1px #aaaa00 solid; color: #111;
border: 1px #aa0 solid;
border-radius: 3px; border-radius: 3px;
padding: 3px 3px 6px 10px; padding: 3px 3px 6px 10px;
} }
#jot-preview-content .wall-item-outside-wrapper {
border: 0;
border-radius: 0px;
}
/** /**
* section * section
*/ */
section { section {
margin: 20px 6% 0 4%; margin: 20px 8% 0 4%;
font-size: 0.8em; font-size: 0.8em;
padding-right: 230px; padding-right: 230px;
min-width: 475px; min-width: 475px;
@ -964,28 +948,32 @@ section {
/** tabs **/ /** tabs **/
.tabs { .tabs {
list-style: none; list-style: none;
margin: 10px 0 10px; margin: 10px 0;
padding: 0; padding: 0;
border-bottom: 1px solid #729fcf;
font-size: 14px;
} }
.tabs li { .tabs li {
display: inline; display: inline;
} }
.tab { .tab {
padding: 0 5px; border: 1px solid #729fcf;
padding: 4px;
} }
.tab:hover { .tab:hover {
background-color: #729fcf; background: #729fcf;
color: #eeeeec; color: #eeeeec;
border: 0px;
} }
.tab:active { .tab:active {
background-color: #729fcf; background: #729fcf;
color: #eeeeec; color: #eeeeec;
border: 0px;
} }
.tab.active {
background: #729fcf;
color: #eeeeec;
}
.tab a {
border: 0;
text-decoration: none;
}
/** /**
* items * items
@ -1011,6 +999,9 @@ section {
.shiny { .shiny {
background: #efefdf; background: #efefdf;
} }
.heart {
color: red;
}
.wall-item-content { .wall-item-content {
overflow-x: auto; overflow-x: auto;
} }
@ -1297,6 +1288,7 @@ section {
border-style: solid; border-style: solid;
border-width: 1px 1px 1px 10px; border-width: 1px 1px 1px 10px;
background: #eee; background: #eee;
color: #444;
width: 95%; width: 95%;
} }
@ -1553,8 +1545,7 @@ div[id$="wrapper"] br {
.view-contact-wrapper, .view-contact-wrapper,
.contact-entry-wrapper { .contact-entry-wrapper {
float: left; float: left;
margin-right: 5px; margin: 0 5px 40px 0;
margin-bottom: 40px;
width: 120px; width: 120px;
height: 120px; height: 120px;
padding: 3px; padding: 3px;
@ -1666,8 +1657,9 @@ div[id$="wrapper"] br {
} }
.contact-photo-menu { .contact-photo-menu {
width: auto; width: auto;
border: 2px solid #444444; border: 2px solid #444;
background: #FFFFFF; background: #eee;
color: #111;
position: absolute; position: absolute;
left: 0px; top: 90px; left: 0px; top: 90px;
display: none; display: none;
@ -1706,6 +1698,7 @@ div[id$="wrapper"] br {
-moz-border-radius: 5px; -moz-border-radius: 5px;
border-radius: 5px; border-radius: 5px;
padding: 5px; padding: 5px;
color: #111;
} }
#settings-default-perms { #settings-default-perms {
margin-bottom: 20px; margin-bottom: 20px;
@ -1715,17 +1708,20 @@ div[id$="wrapper"] br {
clear: both; clear: both;
} }
#register-form label, /*#register-form label, */
#profile-edit-form label { /*#profile-edit-form label {*/
width: 300px; /* width: 300px; */
float: left; /* float: left; */
} /*} */
#register-form span, /*#register-form span, */
#profile-edit-form span { /*#profile-edit-form span {*/
color:#555753; /* color: #555753; */
display:block; /* display: block; */
margin-bottom:20px; /* margin-bottom: 20px; */
/*} */
#profile-edit-marital-label span {
margin: -4px;
} }
.settings-submit-wrapper, .settings-submit-wrapper,
.profile-edit-submit-wrapper { .profile-edit-submit-wrapper {
@ -1742,17 +1738,19 @@ div[id$="wrapper"] br {
float: left; float: left;
margin: 20px 20px 0px 0px; margin: 20px 20px 0px 0px;
} }
#profile-edit-links ul { #profile-edit-links ul {
margin: 20px 0; margin: 20px 0;
padding: 0; padding: 0;
list-style: none; list-style: none;
} }
#register-sitename { #register-sitename {
display: inline; display: inline;
font-weight: bold; font-weight: bold;
} }
#advanced-expire-popup {
/* background: #2e2f2e;
color: #eec;*/
}
/** /**
* contacts selector * contacts selector
@ -1945,7 +1943,12 @@ div[id$="wrapper"] br {
*/ */
.directory-item { .directory-item {
float: left; float: left;
margin: 50px 50px 0px 0px; /*margin: 50px 50px 0px 0px;*/
margin: 0 5px 4px 0;
padding: 3px;
width: 180px;
height: 250px;
position: relative;
} }
@ -1957,6 +1960,7 @@ div[id$="wrapper"] br {
} }
.group-selected, .nets-selected { .group-selected, .nets-selected {
padding: 3px; padding: 3px;
color: #111;
border: 1px solid #CCCCCC; border: 1px solid #CCCCCC;
background: #F8F8F8; background: #F8F8F8;
font-weight: bold; font-weight: bold;
@ -2132,6 +2136,7 @@ div[id$="wrapper"] br {
padding: 5px; padding: 5px;
background: #eee; background: #eee;
vertical-align: middle; vertical-align: middle;
color: #111;
} }
.field input, input[type="text"] { .field input, input[type="text"] {
width: 250px; width: 250px;
@ -2172,7 +2177,7 @@ div[id$="wrapper"] br {
display:none !important; display:none !important;
} }
.field.radio .field_help { .field.radio .field_help {
margin-left: 0; margin-left: 297px;
} }
@ -2298,12 +2303,6 @@ div[id$="wrapper"] br {
.icon.drophide, .icon.delete { .icon.drophide, .icon.delete {
float: left; float: left;
} }
/*.icon.s22 {
display: block;
background: url(icons.png) no-repeat;
width: 22px;
height: 22px;
}*/
.icon.s22.delete { .icon.s22.delete {
display: block; display: block;
background-position: -110px 0; background-position: -110px 0;
@ -2594,7 +2593,8 @@ footer {
/* autocomplete popup */ /* autocomplete popup */
.acpopup { .acpopup {
max-height: 150px; max-height: 175px;
max-width: 42%;
background-color: #555753; background-color: #555753;
color: #fff; color: #fff;
overflow: auto; overflow: auto;
@ -2649,4 +2649,3 @@ footer {
font-size: 15pt; font-size: 15pt;
} }
} }

Some files were not shown because too many files have changed in this diff Show More