diff --git a/.gitignore b/.gitignore index 6302bc1c8b..2531fe4cdd 100755 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,9 @@ addon #ignore documentation, it should be newly built 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 .project .buildpath diff --git a/.htaccess b/.htaccess index 1df5096702..28ac3dd802 100755 --- a/.htaccess +++ b/.htaccess @@ -1,10 +1,13 @@ -#Options -Indexes +Options -Indexes AddType application/x-java-archive .jar AddType audio/ogg .oga Deny from all + +Deny from all + RewriteEngine on diff --git a/boot.php b/boot.php index 76d2f9326c..9779bb9a8f 100755 --- a/boot.php +++ b/boot.php @@ -9,9 +9,9 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1275' ); -define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); -define ( 'DB_UPDATE_VERSION', 1131 ); +define ( 'FRIENDICA_VERSION', '2.3.1285' ); +define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); +define ( 'DB_UPDATE_VERSION', 1132 ); define ( 'EOL', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); @@ -286,7 +286,12 @@ class App { startup(); - $this->scheme = ((isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'])) ? 'https' : 'http' ); + $this->scheme = 'http'; + if(x($_SERVER,'HTTPS') && $_SERVER['HTTPS']) + $this->scheme = 'https'; + elseif(x($_SERVER,'SERVER_PORT') && (intval($_SERVER['SERVER_PORT']) == 443)) + $this->scheme = 'https'; + if(x($_SERVER,'SERVER_NAME')) { $this->hostname = $_SERVER['SERVER_NAME']; @@ -379,11 +384,22 @@ class App { $scheme = $this->scheme; - if(x($this->config,'ssl_policy')) { - if(($ssl) || ($this->config['ssl_policy'] == SSL_POLICY_FULL)) - $scheme = 'https'; - if(($this->config['ssl_policy'] == SSL_POLICY_SELFSIGN) && (local_user() || x($_POST,'auth-params'))) + if((x($this->config,'system')) && (x($this->config['system'],'ssl_policy'))) { + if(intval($this->config['system']['ssl_policy']) === intval(SSL_POLICY_FULL)) $scheme = 'https'; + +// We need to populate the $ssl flag across the entire program before turning this on. +// Basically, we'll have $ssl = true on any links which can only be seen by a logged in user +// (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 : '' ); @@ -685,6 +701,7 @@ function get_guid($size=16) { if(! function_exists('login')) { function login($register = false, $hiddens=false) { + $a = get_app(); $o = ""; $reg = false; if ($register) { @@ -696,31 +713,35 @@ function login($register = false, $hiddens=false) { $noid = get_config('system','no_openid'); + $dest_url = $a->get_baseurl(true) . '/' . $a->query_string; + if(local_user()) { $tpl = get_markup_template("logout.tpl"); } else { $tpl = get_markup_template("login.tpl"); - + $_SESSION['return_url'] = $a->query_string; } $o .= replace_macros($tpl,array( - '$logout' => t('Logout'), - '$login' => t('Login'), + + '$dest_url' => $dest_url, + '$logout' => t('Logout'), + '$login' => t('Login'), '$lname' => array('username', t('Nickname or Email address: ') , '', ''), '$lpassword' => array('password', t('Password: '), '', ''), '$openid' => !$noid, - '$lopenid' => array('openid_url', t('Or login using OpenID: '),'',''), + '$lopenid' => array('openid_url', t('Or login using OpenID: '),'',''), - '$hiddens' => $hiddens, + '$hiddens' => $hiddens, - '$register' => $reg, + '$register' => $reg, - '$lostpass' => t('Forgot your password?'), - '$lostlink' => t('Password Reset'), + '$lostpass' => t('Forgot your password?'), + '$lostlink' => t('Password Reset'), )); call_hooks('login_hook',$o); @@ -1209,7 +1230,7 @@ function current_theme(){ $a = get_app(); $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')) return($theme_name); @@ -1335,7 +1356,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){ array( 'label' => t('Profile'), 'url' => $url.'/?tab=profile', - 'sel' => (($tab=='profile')?'active':''), + 'sel' => ((isset($tab) && $tab=='profile')?'active':''), ), array( 'label' => t('Photos'), diff --git a/build.xml b/build.xml index 83c5300264..a61a5123d7 100644 --- a/build.xml +++ b/build.xml @@ -1,14 +1,49 @@ - + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + @@ -31,6 +66,9 @@ + + + diff --git a/database.sql b/database.sql index 35c257f021..f058bc59ef 100755 --- a/database.sql +++ b/database.sql @@ -92,6 +92,7 @@ CREATE TABLE IF NOT EXISTS `contact` ( `blocked` tinyint(1) NOT NULL DEFAULT '1', `readonly` tinyint(1) NOT NULL DEFAULT '0', `writable` tinyint(1) NOT NULL DEFAULT '0', + `forum` tinyint(1) NOT NULL DEFAULT '0', `hidden` tinyint(1) NOT NULL DEFAULT '0', `pending` tinyint(1) NOT NULL DEFAULT '1', `rating` tinyint(1) NOT NULL DEFAULT '0', @@ -116,6 +117,7 @@ CREATE TABLE IF NOT EXISTS `contact` ( KEY `dfrn-id` (`dfrn-id`), KEY `blocked` (`blocked`), KEY `readonly` (`readonly`), + KEY `forum` (`forum`), KEY `hidden` (`hidden`), KEY `pending` (`pending`), KEY `closeness` (`closeness`) @@ -636,6 +638,7 @@ CREATE TABLE IF NOT EXISTS `mailacct` ( `mailbox` CHAR( 255 ) NOT NULL, `user` CHAR( 255 ) NOT NULL , `pass` TEXT NOT NULL , +`reply_to` CHAR( 255 ) NOT NULL , `action` INT NOT NULL , `movetofolder` CHAR(255) NOT NULL , `pubmail` TINYINT(1) NOT NULL DEFAULT '0', diff --git a/htconfig.php b/htconfig.php index 423d5d369f..9d9c8a2c79 100755 --- a/htconfig.php +++ b/htconfig.php @@ -69,7 +69,7 @@ $a->config['system']['rino_encrypt'] = true; // allowed themes (change this from admin panel after installation) -$a->config['system']['allowed_themes'] = 'dispy,quattro,testbubble,vier,darkbubble,darkzero,duepuntozero,greenzero,purplezero,quattro-green,slackr,diabook'; +$a->config['system']['allowed_themes'] = 'dispy,quattro,testbubble,vier,darkbubble,darkzero,duepuntozero,greenzero,purplezero,quattro-green,slackr,diabook,diabook-blue'; // default system theme @@ -79,3 +79,9 @@ $a->config['system']['theme'] = 'duepuntozero'; // By default allow pseudonyms $a->config['system']['no_regfullname'] = true; + +// If set to true the priority settings of ostatus contacts are used +$a->config['system']['ostatus_use_priority'] = false; + +// If enabled all items are cached in the given directory +$a->config['system']['itemcache'] = ""; diff --git a/include/acl_selectors.php b/include/acl_selectors.php index 67d8cebdeb..a5f5aff532 100755 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -113,11 +113,13 @@ function contact_selector($selname, $selclass, $preselected = false, $options) { $str_nets = implode(',',$x['networks']); $sql_extra .= " AND `network` IN ( $str_nets ) "; } + + $tabindex = (x($options, 'tabindex') ? "tabindex=\"" . $options["tabindex"] . "\"" : ""); if($x['single']) - $o .= "\r\n"; else - $o .= "\r\n"; $r = q("SELECT `id`, `name`, `url`, `network` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `notify` != '' @@ -156,7 +158,7 @@ function contact_selector($selname, $selclass, $preselected = false, $options) { -function contact_select($selname, $selclass, $preselected = false, $size = 4, $privmail = false, $celeb = false, $privatenet = false) { +function contact_select($selname, $selclass, $preselected = false, $size = 4, $privmail = false, $celeb = false, $privatenet = false, $tabindex = null) { $a = get_app(); @@ -178,12 +180,12 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p $sql_extra .= " AND `network` IN ( 'dfrn', 'mail', 'face', 'dspr' ) "; } - + $tabindex = ($tabindex > 0 ? "tabindex=\"$tabindex\"" : ""); if($privmail) - $o .= "\r\n"; else - $o .= "\r\n"; $r = q("SELECT `id`, `name`, `url`, `network` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `notify` != '' diff --git a/include/bbcode.php b/include/bbcode.php index cff26f5c8e..d69cb263f8 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -216,6 +216,9 @@ function bbcode($Text,$preserve_nl = false) { $Text = preg_replace("/\[img\](.*?)\[\/img\]/ism", '' . t('Image/photo') . '', $Text); + $Text = preg_replace("/\[video\](.*?\.(ogg|ogv|oga|ogm|webm|mp4))\[\/video\]/ism", '', $Text); + + $Text = preg_replace("/\[audio\](.*?\.(ogg|ogv|oga|ogm|webm|mp4|mp3))\[\/audio\]/ism", '', $Text); // Try to Oembed $Text = preg_replace_callback("/\[video\](.*?)\[\/video\]/ism", 'tryoembed', $Text); @@ -224,9 +227,6 @@ function bbcode($Text,$preserve_nl = false) { // html5 video and audio - $Text = preg_replace("/\[video\](.*?)\[\/video\]/ism", '', $Text); - - $Text = preg_replace("/\[audio\](.*?)\[\/audio\]/ism", '', $Text); $Text = preg_replace("/\[iframe\](.*?)\[\/iframe\]/ism", '', $Text); diff --git a/include/contact_widgets.php b/include/contact_widgets.php index caa0572d20..605a3eb78e 100755 --- a/include/contact_widgets.php +++ b/include/contact_widgets.php @@ -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, + + )); +} diff --git a/include/conversation.php b/include/conversation.php index b458923e5f..e9f024c274 100755 --- a/include/conversation.php +++ b/include/conversation.php @@ -179,11 +179,15 @@ function localize_item(&$item){ * that are based on unique features of the calling module. * */ - if(!function_exists('conversation')){ + +if(!function_exists('conversation')) { function conversation(&$a, $items, $mode, $update, $preview = false) { + require_once('bbcode.php'); + $ssl_state = ((local_user()) ? true : false); + $profile_owner = 0; $page_writeable = false; @@ -343,7 +347,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 'like' => '', 'dislike' => '', '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, 'wait' => t('Please wait'), ); @@ -373,7 +377,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $comments[$item['parent']] = 1; else $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 @@ -418,26 +423,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $toplevelprivate = (($toplevelpost && $item['private']) ? true : false); $item_writeable = (($item['writable'] || $item['self']) ? true : false); - // DISABLED - /* - if($blowhard == $item['cid'] && (! $item['self']) && ($mode != 'profile') && ($mode != 'notes')) { - $blowhard_count ++; - if($blowhard_count == 3) { - $o .= '' . ''; - $blowhard_count = 0; - } - // END DISABLED - */ - $comments_seen = 0; $comments_collapsed = false; $comment_lastcollapsed = false; @@ -445,13 +430,16 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $threadsid++; $threads[$threadsid]['id'] = $item['item_id']; + $threads[$threadsid]['private'] = $item['private']; $threads[$threadsid]['items'] = array(); } else { - // prevent private email from leaking into public conversation - if((! $toplevelpost) && (! $toplevelprivate) && ($item['private']) && ($profile_owner != local_user())) + + // prevent private email reply to public conversation from leaking. + if($item['private'] && ! $threads[$threadsid]['private']) continue; + $comments_seen ++; $comment_lastcollapsed = false; $comment_firstcollapsed = false; @@ -475,7 +463,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $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']) || strlen($item['deny_cid']) || strlen($item['deny_gid'])))) @@ -502,7 +490,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $template = $wallwall; $commentww = 'ww'; } - if((! $item['wall']) && (strlen($item['owner-link'])) && ($item['owner-link'] != $item['author-link'])) { + if((! $item['wall']) && (strlen($item['owner-link'])) && (! link_compare($item['owner-link'],$item['author-link']))) { // Could be anybody. @@ -557,7 +545,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { } $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); @@ -574,24 +562,28 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { ); $star = false; + $filer = false; + $isstarred = "unstarred"; - if ($profile_owner == local_user() && $toplevelpost) { - $isstarred = (($item['starred']) ? "starred" : "unstarred"); + if ($profile_owner == local_user()) { + if($toplevelpost) { + $isstarred = (($item['starred']) ? "starred" : "unstarred"); - $star = array( - 'do' => t("add star"), - 'undo' => t("remove star"), - 'toggle' => t("toggle star status"), - 'classdo' => (($item['starred']) ? "hidden" : ""), - 'classundo' => (($item['starred']) ? "" : "hidden"), - 'starred' => t('starred'), - 'tagger' => t("add tag"), - 'classtagger' => "", - ); + $star = array( + 'do' => t("add star"), + 'undo' => t("remove star"), + 'toggle' => t("toggle star status"), + 'classdo' => (($item['starred']) ? "hidden" : ""), + 'classundo' => (($item['starred']) ? "" : "hidden"), + 'starred' => t('starred'), + 'tagger' => t("add tag"), + 'classtagger' => "", + ); + } + $filer = t("file as"); } - $photo = $item['photo']; $thumb = $item['thumb']; @@ -657,7 +649,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { // template to use to render item (wall, walltowall, search) 'template' => $template, - 'type' => implode("",array_slice(split("/",$item['verb']),-1)), + 'type' => implode("",array_slice(explode("/",$item['verb']),-1)), 'tags' => $tags, 'body' => template_escape($body), 'text' => strip_tags(template_escape($body)), @@ -685,6 +677,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 'edpost' => $edpost, 'isstarred' => $isstarred, 'star' => $star, + 'filer' => $filer, 'drop' => $drop, 'vote' => $likebuttons, 'like' => $like, @@ -706,7 +699,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $page_template = get_markup_template("conversation.tpl"); $o .= replace_macros($page_template, array( - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl($ssl_state), '$mode' => $mode, '$user' => $a->user, '$threads' => $threads, @@ -716,7 +709,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { return $o; }} -function best_link_url($item,&$sparkle) { +function best_link_url($item,&$sparkle,$ssl_state = false) { $a = get_app(); @@ -728,7 +721,7 @@ function best_link_url($item,&$sparkle) { if((local_user()) && (local_user() == $item['uid'])) { if(isset($a->contacts) && x($a->contacts,$clean_url)) { 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; } else @@ -749,10 +742,14 @@ function best_link_url($item,&$sparkle) { if(! function_exists('item_photo_menu')){ function item_photo_menu($item){ $a = get_app(); - - if (local_user() && (! count($a->contacts))) - load_contact_links(local_user()); + $ssl_state = false; + + if(local_user()) { + $ssl_state = true; + if(! count($a->contacts)) + load_contact_links(local_user()); + } $contact_url=""; $pm_url=""; $status_link=""; @@ -760,7 +757,7 @@ function item_photo_menu($item){ $posts_link=""; $sparkle = false; - $profile_link = best_link_url($item,$sparkle); + $profile_link = best_link_url($item,$sparkle,$ssl_state); if($profile_link === 'mailbox') $profile_link = ''; @@ -769,7 +766,7 @@ function item_photo_menu($item){ $status_link = $profile_link . "?url=status"; $photos_link = $profile_link . "?url=photos"; $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 { if(local_user() && local_user() == $item['uid'] && link_compare($item['url'],$item['author-link'])) { @@ -780,8 +777,19 @@ function item_photo_menu($item){ } } if(($cid) && (! $item['self'])) { - $contact_url = $a->get_baseurl() . '/contacts/' . $cid; - $posts_link = $a->get_baseurl() . '/network/?cid=' . $cid; + $contact_url = $a->get_baseurl($ssl_state) . '/contacts/' . $cid; + $posts_link = $a->get_baseurl($ssl_state) . '/network/?cid=' . $cid; + + $clean_url = normalise_link($item['author-link']); + + if((local_user()) && (local_user() == $item['uid'])) { + if(isset($a->contacts) && x($a->contacts,$clean_url)) { + if($a->contacts[$clean_url]['network'] === NETWORK_DIASPORA) { + $pm_url = $a->get_baseurl($ssl_state) . '/message/new/' . $cid; + } + } + } + } $menu = Array( @@ -817,7 +825,7 @@ function like_puller($a,$item,&$arr,$mode) { if((activity_match($item['verb'],$verb)) && ($item['id'] != $item['parent'])) { $url = $item['author-link']; 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" '; } if(! ((isset($arr[$item['parent'] . '-l'])) && (is_array($arr[$item['parent'] . '-l'])))) @@ -879,7 +887,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) { $a->page['htmlhead'] .= replace_macros($tpl, array( '$newpost' => 'true', - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'), '$geotag' => $geotag, '$nickname' => $x['nickname'], @@ -888,6 +896,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) { '$vidurl' => t("Please enter a video link/URL:"), '$audurl' => t("Please enter an audio link/URL:"), '$term' => t('Tag term:'), + '$fileas' => t('File as:'), '$whereareu' => t('Where are you right now?'), '$title' => t('Enter a title for this item') )); @@ -929,8 +938,8 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) { $o .= replace_macros($tpl,array( '$return_path' => $a->cmd, - '$action' => $a->get_baseurl().'/item', - '$share' => (($x['button']) ? $x['button'] : t('Share')), + '$action' => $a->get_baseurl(true) . '/item', + '$share' => (x($x,'button') ? $x['button'] : t('Share')), '$upload' => t('Upload photo'), '$shortupload' => t('upload photo'), '$attach' => t('Attach file'), @@ -953,7 +962,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) { '$ptyp' => (($notes_cid) ? 'note' : 'wall'), '$content' => '', '$post_id' => '', - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$defloc' => $x['default_location'], '$visitor' => $x['visitor'], '$pvisit' => (($notes_cid) ? 'none' : $x['visitor']), @@ -995,8 +1004,8 @@ function conv_sort($arr,$order) { usort($parents,'sort_thr_commented'); if(count($parents)) - foreach($parents as $x) - $x['children'] = array(); + foreach($parents as $i=>$_x) + $parents[$i]['children'] = array(); foreach($arr as $x) { if($x['id'] != $x['parent']) { diff --git a/include/dba.php b/include/dba.php index 7455b6b3ee..5beea7a3ac 100755 --- a/include/dba.php +++ b/include/dba.php @@ -1,5 +1,7 @@ debug) - logger('dba: ' . printable(print_r($r, true)), LOGGER_DATA); + logger('dba: ' . printable(print_r($r, true))); return($r); } diff --git a/include/delivery.php b/include/delivery.php index c1ff07bd54..532dcd6991 100755 --- a/include/delivery.php +++ b/include/delivery.php @@ -256,7 +256,8 @@ function delivery_run($argv, $argc){ '$picdate' => xmlify(datetime_convert('UTC','UTC',$owner['avatar-date'] . '+00:00' , ATOM_TIME)) , '$uridate' => xmlify(datetime_convert('UTC','UTC',$owner['uri-date'] . '+00:00' , ATOM_TIME)) , '$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , ATOM_TIME)) , - '$birthday' => $birthday + '$birthday' => $birthday, + '$community' => (($owner['page-flags'] == PAGE_COMMUNITY) ? '1' : '') )); foreach($items as $item) { @@ -435,8 +436,8 @@ function delivery_run($argv, $argc){ $headers .= 'Reply-to: ' . $reply_to . "\n"; // for testing purposes: Collect exported mails - $file = tempnam("/tmp/friendica/", "mail-out-"); - file_put_contents($file, json_encode($it)); + // $file = tempnam("/tmp/friendica/", "mail-out-"); + // file_put_contents($file, json_encode($it)); $headers .= 'Message-Id: <' . iri2msgid($it['uri']). '>' . "\n"; @@ -446,30 +447,16 @@ function delivery_run($argv, $argc){ if($it['uri'] !== $it['parent-uri']) { $headers .= 'References: <' . iri2msgid($it['parent-uri']) . '>' . "\n"; - if(! strlen($it['title'])) { + if(!strlen($it['title'])) { $r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1", - dbesc($it['parent-uri']) - ); - if(count($r)) { - $subtitle = $r[0]['title']; - if($subtitle) { - if(strncasecmp($subtitle,'RE:',3)) - $subject = $subtitle; - else - $subject = 'Re: ' . $subtitle; - } - } + dbesc($it['parent-uri'])); + + if(count($r) AND ($r[0]['title'] != '')) + $subject = $r[0]['title']; } + if(strncasecmp($subject,'RE:',3)) + $subject = 'Re: '.$subject; } - /*$headers .= 'MIME-Version: 1.0' . "\n"; - //$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n"; - $headers .= 'Content-Type: text/plain; charset=UTF-8' . "\n"; - $headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n"; - $html = prepare_body($it); - //$message = '' . $html . ''; - $message = html2plain($html); - logger('notifier: email delivery to ' . $addr); - mail($addr, $subject, $message, $headers);*/ email_send($addr, $subject, $headers, $it); } break; diff --git a/include/diaspora.php b/include/diaspora.php index dca857a198..1b5af42cd9 100755 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -1159,6 +1159,48 @@ function diaspora_comment($importer,$xml,$msg) { proc_run('php','include/notifier.php','comment',$message_id); } + + $myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 ", + dbesc($parent_item['uri']), + intval($importer['uid']) + ); + + if(count($myconv)) { + $importer_url = $a->get_baseurl() . '/profile/' . $importer['nickname']; + + foreach($myconv as $conv) { + + // now if we find a match, it means we're in this conversation + + if(! link_compare($conv['author-link'],$importer_url)) + continue; + + require_once('include/enotify.php'); + + $conv_parent = $conv['parent']; + + notification(array( + 'type' => NOTIFY_COMMENT, + 'notify_flags' => $importer['notify-flags'], + 'language' => $importer['language'], + 'to_name' => $importer['username'], + 'to_email' => $importer['email'], + 'uid' => $importer['uid'], + 'item' => $datarray, + 'link' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id, + 'source_name' => $datarray['author-name'], + 'source_link' => $datarray['author-link'], + 'source_photo' => $datarray['author-avatar'], + 'verb' => ACTIVITY_POST, + 'otype' => 'item', + 'parent' => $conv_parent, + + )); + + // only send one notification + break; + } + } return; } diff --git a/include/email.php b/include/email.php index 659978b6ee..8ea8145fb6 100755 --- a/include/email.php +++ b/include/email.php @@ -1,5 +1,7 @@ parts) { $ret['body'] = email_get_part($mbox,$uid,$struc,0, 'html'); + $html = $ret['body']; if (trim($ret['body']) == '') $ret['body'] = email_get_part($mbox,$uid,$struc,0, 'plain'); @@ -107,6 +110,17 @@ function email_get_msg($mbox,$uid) { else $ret['body'] = $text; } + + $ret['body'] = removegpg($ret['body']); + $msg = removesig($ret['body']); + $ret['body'] = $msg['body']; + $ret['body'] = convertquote($ret['body'], false); + + if (trim($html) != '') + $ret['body'] = removelinebreak($ret['body']); + + $ret['body'] = unifyattributionline($ret['body']); + return $ret; } diff --git a/include/event.php b/include/event.php index 4a9a9a0041..29202baddf 100755 --- a/include/event.php +++ b/include/event.php @@ -163,7 +163,7 @@ function bbtoevent($s) { if(preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",$s,$match)) $ev['adjust'] = $match[1]; $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; } diff --git a/include/html2bbcode.php b/include/html2bbcode.php index 32a90d7d63..69ccf41b71 100755 --- a/include/html2bbcode.php +++ b/include/html2bbcode.php @@ -142,18 +142,22 @@ function html2bbcode($message) node2bbcode($doc, 'span', array('style'=>'font-style: italic;'), '[i]', '[/i]'); node2bbcode($doc, 'span', array('style'=>'font-weight: bold;'), '[b]', '[/b]'); - node2bbcode($doc, 'font', array('face'=>'/([\w ]+)/', 'size'=>'/(\d+)/', 'color'=>'/(.+)/'), '[font=$1][size=$2][color=$3]', '[/color][/size][/font]'); + /*node2bbcode($doc, 'font', array('face'=>'/([\w ]+)/', 'size'=>'/(\d+)/', 'color'=>'/(.+)/'), '[font=$1][size=$2][color=$3]', '[/color][/size][/font]'); node2bbcode($doc, 'font', array('size'=>'/(\d+)/', 'color'=>'/(.+)/'), '[size=$1][color=$2]', '[/color][/size]'); node2bbcode($doc, 'font', array('face'=>'/([\w ]+)/', 'size'=>'/(.+)/'), '[font=$1][size=$2]', '[/size][/font]'); node2bbcode($doc, 'font', array('face'=>'/([\w ]+)/', 'color'=>'/(.+)/'), '[font=$1][color=$3]', '[/color][/font]'); node2bbcode($doc, 'font', array('face'=>'/([\w ]+)/'), '[font=$1]', '[/font]'); node2bbcode($doc, 'font', array('size'=>'/(\d+)/'), '[size=$1]', '[/size]'); node2bbcode($doc, 'font', array('color'=>'/(.+)/'), '[color=$1]', '[/color]'); +*/ + // Untested + //node2bbcode($doc, 'span', array('style'=>'/.*font-size:\s*(.+?)[,;].*font-family:\s*(.+?)[,;].*color:\s*(.+?)[,;].*/'), '[size=$1][font=$2][color=$3]', '[/color][/font][/size]'); + //node2bbcode($doc, 'span', array('style'=>'/.*font-size:\s*(\d+)[,;].*/'), '[size=$1]', '[/size]'); + //node2bbcode($doc, 'span', array('style'=>'/.*font-size:\s*(.+?)[,;].*/'), '[size=$1]', '[/size]'); node2bbcode($doc, 'span', array('style'=>'/.*color:\s*(.+?)[,;].*/'), '[color="$1"]', '[/color]'); - node2bbcode($doc, 'span', array('style'=>'/.*font-size:\s*(\d+)/'), '[size=$1]', '[/size]'); - //node2bbcode($doc, 'span', array('style'=>'/.*font-family:\s*(.+?)[,;].*/'), '[font=$1]', '[/font]'); + //node2bbcode($doc, 'div', array('style'=>'/.*font-family:\s*(.+?)[,;].*font-size:\s*(\d+?)pt.*/'), '[font=$1][size=$2]', '[/size][/font]'); //node2bbcode($doc, 'div', array('style'=>'/.*font-family:\s*(.+?)[,;].*font-size:\s*(\d+?)px.*/'), '[font=$1][size=$2]', '[/size][/font]'); //node2bbcode($doc, 'div', array('style'=>'/.*font-family:\s*(.+?)[,;].*/'), '[font=$1]', '[/font]'); @@ -187,13 +191,13 @@ function html2bbcode($message) node2bbcode($doc, 'hr', array(), "[hr]", ""); - //node2bbcode($doc, 'table', array(), "", ""); - //node2bbcode($doc, 'tr', array(), "\n", ""); - //node2bbcode($doc, 'td', array(), "\t", ""); - node2bbcode($doc, 'table', array(), "[table]", "[/table]"); - node2bbcode($doc, 'th', array(), "[th]", "[/th]"); - node2bbcode($doc, 'tr', array(), "[tr]", "[/tr]"); - node2bbcode($doc, 'td', array(), "[td]", "[/td]"); + node2bbcode($doc, 'table', array(), "", ""); + node2bbcode($doc, 'tr', array(), "\n", ""); + node2bbcode($doc, 'td', array(), "\t", ""); + //node2bbcode($doc, 'table', array(), "[table]", "[/table]"); + //node2bbcode($doc, 'th', array(), "[th]", "[/th]"); + //node2bbcode($doc, 'tr', array(), "[tr]", "[/tr]"); + //node2bbcode($doc, 'td', array(), "[td]", "[/td]"); node2bbcode($doc, 'h1', array(), "\n\n[size=xx-large][b]", "[/b][/size]\n"); node2bbcode($doc, 'h2', array(), "\n\n[size=x-large][b]", "[/b][/size]\n"); diff --git a/include/items.php b/include/items.php index 1a7aa6c460..5a297c83ef 100755 --- a/include/items.php +++ b/include/items.php @@ -28,7 +28,7 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0) $sql_extra = " AND `allow_cid` = '' AND `allow_gid` = '' AND `deny_cid` = '' AND `deny_gid` = '' "; - $r = q("SELECT `contact`.*, `user`.`uid` AS `user_uid`, `user`.`nickname`, `user`.`timezone` + $r = q("SELECT `contact`.*, `user`.`uid` AS `user_uid`, `user`.`nickname`, `user`.`timezone`, `user`.`page-flags` FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid` WHERE `contact`.`self` = 1 AND `user`.`nickname` = '%s' LIMIT 1", dbesc($owner_nick) @@ -156,7 +156,8 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0) '$picdate' => xmlify(datetime_convert('UTC','UTC',$owner['avatar-date'] . '+00:00' , ATOM_TIME)) , '$uridate' => xmlify(datetime_convert('UTC','UTC',$owner['uri-date'] . '+00:00' , ATOM_TIME)) , '$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , ATOM_TIME)) , - '$birthday' => ((strlen($birthday)) ? '' . xmlify($birthday) . '' : '') + '$birthday' => ((strlen($birthday)) ? '' . xmlify($birthday) . '' : ''), + '$community' => (($owner['page-flags'] == PAGE_COMMUNITY) ? '1' : '') )); call_hooks('atom_feed', $atom); @@ -682,7 +683,7 @@ function item_store($arr,$force_parent = false) { unset($arr['dsprsig']); } - if($arr['gravity']) + if(x($arr, 'gravity')) $arr['gravity'] = intval($arr['gravity']); elseif($arr['parent-uri'] === $arr['uri']) $arr['gravity'] = 0; @@ -742,6 +743,7 @@ function item_store($arr,$force_parent = false) { if($arr['parent-uri'] === $arr['uri']) { $parent_id = 0; + $parent_deleted = 0; $allow_cid = $arr['allow_cid']; $allow_gid = $arr['allow_gid']; $deny_cid = $arr['deny_cid']; @@ -800,6 +802,8 @@ function item_store($arr,$force_parent = false) { logger('item_store: item parent was not found - ignoring item'); return 0; } + + $parent_deleted = 0; } } @@ -1043,6 +1047,22 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) { if(! $rino_enable) $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' : ''); logger('dfrn_deliver: ' . $url); @@ -1074,6 +1094,7 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) { $challenge = hex2bin((string) $res->challenge); $dfrn_version = (float) (($res->dfrn_version) ? $res->dfrn_version : 2.0); $rino_allowed = ((intval($res->rino) === 1) ? 1 : 0); + $page = (($owner['page-flags'] == PAGE_COMMUNITY) ? 1 : 0); $final_dfrn_id = ''; @@ -1115,6 +1136,11 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) { $postvars['perm'] = 'r'; } + $postvars['ssl_policy'] = $ssl_policy; + + if($page) + $postvars['page'] = '1'; + if($rino && $rino_allowed && (! $dissolve)) { $key = substr(random_string(),0,16); $data = bin2hex(aes_encrypt($postvars['data'],$key)); @@ -1379,6 +1405,19 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) } + $community_page = 0; + $rawtags = $feed->get_feed_tags( NAMESPACE_DFRN, 'community'); + if($rawtags) { + $community_page = intval($rawtags[0]['data']); + } + if(is_array($contact) && intval($contact['forum']) != $community_page) { + q("update contact set forum = %d where id = %d limit 1", + intval($community_page), + intval($contact['id']) + ); + $contact['forum'] = (string) $community_page; + } + // process any deleted entries @@ -1962,6 +2001,19 @@ function local_delivery($importer,$data) { // NOTREACHED } + + $community_page = 0; + $rawtags = $feed->get_feed_tags( NAMESPACE_DFRN, 'community'); + if($rawtags) { + $community_page = intval($rawtags[0]['data']); + } + if(intval($importer['forum']) != $community_page) { + q("update contact set forum = %d where id = %d limit 1", + intval($community_page), + intval($importer['id']) + ); + $importer['forum'] = (string) $community_page; + } logger('local_delivery: feed item count = ' . $feed->get_item_quantity()); @@ -2001,6 +2053,7 @@ function local_delivery($importer,$data) { if(($item['verb'] === ACTIVITY_TAG) && ($item['object-type'] === ACTVITY_OBJ_TAGTERM)) { $xo = parse_xml_string($item['object'],false); $xt = parse_xml_string($item['target'],false); + if($xt->type === ACTIVITY_OBJ_NOTE) { $i = q("select * from `item` where uri = '%s' and uid = %d limit 1", dbesc($xt->id), diff --git a/include/msgclean.php b/include/msgclean.php new file mode 100644 index 0000000000..284ad1ce4b --- /dev/null +++ b/include/msgclean.php @@ -0,0 +1,225 @@ +\s.*?To: (.*?)\s*?Cc: (.*?)\s*?Sent: (.*?)\s.*?Subject: ([^\n].*)\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/----- Original Message -----\s.*?From: "([^<"].*?)" <(.*?)>\s.*?To: (.*?)\s*?Sent: (.*?)\s.*?Subject: ([^\n].*)\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/-------- Original-Nachricht --------\s*\['.$quote.'\]\nDatum: (.*?)\nVon: (.*?) <(.*?)>\nAn: (.*?)\nBetreff: (.*?)\n/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/-------- Original-Nachricht --------\s*\['.$quote.'\]\sDatum: (.*?)\s.*Von: "([^<"].*?)" <(.*?)>\s.*An: (.*?)\n.*/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/-------- Original-Nachricht --------\s*\['.$quote.'\]\nDatum: (.*?)\nVon: (.*?)\nAn: (.*?)\nBetreff: (.*?)\n/i', "[".$quote."='$2']\n", $message); + + $message = savereplace('/-----Urspr.*?ngliche Nachricht-----\sVon: "([^<"].*?)" <(.*?)>\s.*Gesendet: (.*?)\s.*An: (.*?)\s.*Betreff: ([^\n].*?).*:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/-----Urspr.*?ngliche Nachricht-----\sVon: "([^<"].*?)" <(.*?)>\s.*Gesendet: (.*?)\s.*An: (.*?)\s.*Betreff: ([^\n].*?)\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/Am (.*?), schrieb (.*?):\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + + $message = savereplace('/Am .*?, \d+ .*? \d+ \d+:\d+:\d+ \+\d+\sschrieb\s(.*?)\s<(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/Am (.*?) schrieb (.*?) <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/Am (.*?) schrieb <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/Am (.*?) schrieb (.*?):\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/Am (.*?) schrieb (.*?)\n(.*?):\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + + $message = savereplace('/(\d+)\/(\d+)\/(\d+) ([^<"].*?) <(.*?)>\s*\['.$quote.'\]/i', "[".$quote."='$4']\n", $message); + + $message = savereplace('/On .*?, \d+ .*? \d+ \d+:\d+:\d+ \+\d+\s(.*?)\s<(.*?)>\swrote:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/On (.*?) at (.*?), (.*?)\s<(.*?)>\swrote:\s*\['.$quote.'\]/i', "[".$quote."='$3']\n", $message); + $message = savereplace('/On (.*?)\n([^<].*?)\s<(.*?)>\swrote:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/On (.*?), (.*?), (.*?)\s<(.*?)>\swrote:\s*\['.$quote.'\]/i', "[".$quote."='$3']\n", $message); + $message = savereplace('/On ([^,].*?), (.*?)\swrote:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/On (.*?), (.*?)\swrote\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + + // Der loescht manchmal den Body - was eigentlich unmoeglich ist + $message = savereplace('/On (.*?),(.*?),(.*?),(.*?), (.*?) wrote:\s*\['.$quote.'\]/i', "[".$quote."='$5']\n", $message); + + $message = savereplace('/Zitat von ([^<].*?) <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/Quoting ([^<].*?) <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/From: "([^<"].*?)" <(.*?)>\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/From: <(.*?)>\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/Du \(([^)].*?)\) schreibst:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/--- (.*?) <.*?> schrieb am (.*?):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/--- (.*?) schrieb am (.*?):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/\* (.*?) <(.*?)> hat geschrieben:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/(.*?) <(.*?)> schrieb (.*?)\):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) <(.*?)> schrieb am (.*?) um (.*):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) schrieb am (.*?) um (.*):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) \((.*?)\) schrieb:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/(.*?) schrieb:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/(.*?) <(.*?)> writes:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) \((.*?)\) writes:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/(.*?) writes:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/\* (.*?) wrote:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) wrote \(.*?\):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) wrote:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/([^<].*?) <.*?> hat am (.*?)\sum\s(.*)\sgeschrieben:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/(\d+)\/(\d+)\/(\d+) ([^<"].*?) <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$4']\n", $message); + $message = savereplace('/(\d+)\/(\d+)\/(\d+) (.*?) <(.*?)>\s*\['.$quote.'\]/i', "[".$quote."='$4']\n", $message); + $message = savereplace('/(\d+)\/(\d+)\/(\d+) <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$4']\n", $message); + $message = savereplace('/(\d+)\/(\d+)\/(\d+) <(.*?)>\s*\['.$quote.'\]/i', "[".$quote."='$4']\n", $message); + + $message = savereplace('/(.*?) <(.*?)> schrubselte:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) \((.*?)\) schrubselte:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + + } + return($message); +} + +function removegpg($message) +{ + + $pattern = '/(.*)\s*-----BEGIN PGP SIGNED MESSAGE-----\s*[\r\n].*Hash:.*?[\r\n](.*)'. + '[\r\n]\s*-----BEGIN PGP SIGNATURE-----\s*[\r\n].*'. + '[\r\n]\s*-----END PGP SIGNATURE-----(.*)/is'; + + preg_match($pattern, $message, $result); + + $cleaned = trim($result[1].$result[2].$result[3]); + + $cleaned = str_replace(array("\n- --\n", "\n- -"), array("\n-- \n", "\n-"), $cleaned); + + + if ($cleaned == '') + $cleaned = $message; + + return($cleaned); +} + +function removesig($message) +{ + $sigpos = strrpos($message, "\n-- \n"); + $quotepos = strrpos($message, "[/quote]"); + + if ($sigpos == 0) { + // Speziell fuer web.de, die das als Trenner verwenden + $message = str_replace("\n___________________________________________________________\n", "\n-- \n", $message); + $sigpos = strrpos($message, "\n-- \n"); + $quotepos = strrpos($message, "[/quote]"); + } + + // Sollte sich der Signaturtrenner innerhalb eines Quotes befinden + // wird keine Signaturtrennung ausgefuehrt + if (($sigpos < $quotepos) and ($sigpos != 0)) + return(array('body' => $message, 'sig' => '')); + + // To-Do: Regexp umstellen, so dass auf 1 oder kein Leerzeichen + // geprueft wird + //$message = str_replace("\n--\n", "\n-- \n", $message); + + $pattern = '/(.*)[\r\n]-- [\r\n](.*)/is'; + + preg_match($pattern, $message, $result); + + if (($result[1] != '') and ($result[2] != '')) { + $cleaned = trim($result[1])."\n"; + $sig = trim($result[2]); + // '[hr][size=x-small][color=darkblue]'.trim($result[2]).'[/color][/size]'; + } else { + $cleaned = $message; + $sig = ''; + } + + return(array('body' => $cleaned, 'sig' => $sig)); +} + +function removelinebreak($message) +{ + $arrbody = explode("\n", trim($message)); + + $lines = array(); + $lineno = 0; + + foreach($arrbody as $i => $line) { + $currquotelevel = 0; + $currline = $line; + while ((strlen($currline)>0) and ((substr($currline, 0, 1) == '>') + or (substr($currline, 0, 1) == ' '))) { + if (substr($currline, 0, 1) == '>') + $currquotelevel++; + + $currline = ltrim(substr($currline, 1)); + } + + $quotelevel = 0; + $nextline = trim($arrbody[$i+1]); + while ((strlen($nextline)>0) and ((substr($nextline, 0, 1) == '>') + or (substr($nextline, 0, 1) == ' '))) { + if (substr($nextline, 0, 1) == '>') + $quotelevel++; + + $nextline = ltrim(substr($nextline, 1)); + } + + $len = strlen($line); + $firstword = strpos($nextline.' ', ' '); + + $specialchars = ((substr(trim($nextline), 0, 1) == '-') or + (substr(trim($nextline), 0, 1) == '=') or + (substr(trim($nextline), 0, 1) == '*') or + (substr(trim($nextline), 0, 1) == '·') or + (substr(trim($nextline), 0, 4) == '[url') or + (substr(trim($nextline), 0, 5) == '[size') or + (substr(trim($nextline), 0, 7) == 'http://') or + (substr(trim($nextline), 0, 8) == 'https://')); + + if (!$specialchars) + $specialchars = ((substr(rtrim($line), -1) == '-') or + (substr(rtrim($line), -1) == '=') or + (substr(rtrim($line), -1) == '*') or + (substr(rtrim($line), -1) == '·') or + (substr(rtrim($line), -6) == '[/url]') or + (substr(rtrim($line), -7) == '[/size]')); + + //if ($specialchars) + // echo ("Special\n"); + + if ($lines[$lineno] != '') { + if (substr($lines[$lineno], -1) != ' ') + $lines[$lineno] .= ' '; + + while ((strlen($line)>0) and ((substr($line, 0, 1) == '>') + or (substr($line, 0, 1) == ' '))) { + + $line = ltrim(substr($line, 1)); + } + + } + //else + // $lines[$lineno] = $quotelevel.'-'.$len.'-'.$firstword.'-'; + + $lines[$lineno] .= $line; + //if ((($len + $firstword < 68) and (substr($line, -1, 1) != ' ')) + // or ($quotelevel != $currquotelevel) or $specialchars) + if (((substr($line, -1, 1) != ' ')) + or ($quotelevel != $currquotelevel)) + $lineno++; + } + return(implode("\n", $lines)); + +} +?> diff --git a/include/nav.php b/include/nav.php index aadfa82fd8..e280818399 100755 --- a/include/nav.php +++ b/include/nav.php @@ -8,6 +8,8 @@ function nav(&$a) { * */ + $ssl_state = ((local_user()) ? true : false); + if(!(x($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'] . '@' : ''); - $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') @@ -53,7 +55,7 @@ function nav(&$a) { // user info $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"), + 'icon' => (count($r) ? $r[0]['micro']: $a->get_baseurl($ssl_state)."/images/default-profile-mm.jpg"), 'name' => $a->user['username'], ); @@ -76,7 +78,7 @@ function nav(&$a) { if(($a->config['register_policy'] == REGISTER_OPEN) && (! local_user()) && (! remote_user())) $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')) $nav['help'] = array($help_url, t('Help'), "", t('Help and documentation')); diff --git a/include/network.php b/include/network.php index c72919dd8b..22157ff188 100755 --- a/include/network.php +++ b/include/network.php @@ -303,7 +303,7 @@ function webfinger_dfrn($s,&$hcard) { if(! function_exists('webfinger')) { -function webfinger($s) { +function webfinger($s, $debug = false) { $host = ''; if(strstr($s,'@')) { $host = substr($s,strpos($s,'@') + 1); @@ -328,7 +328,7 @@ function webfinger($s) { }} if(! function_exists('lrdd')) { -function lrdd($uri) { +function lrdd($uri, $debug = false) { $a = get_app(); diff --git a/include/notifier.php b/include/notifier.php index 5b23406fce..d63ad7ae7c 100755 --- a/include/notifier.php +++ b/include/notifier.php @@ -337,7 +337,9 @@ function notifier_run($argv, $argc){ '$picdate' => xmlify(datetime_convert('UTC','UTC',$owner['avatar-date'] . '+00:00' , ATOM_TIME)) , '$uridate' => xmlify(datetime_convert('UTC','UTC',$owner['uri-date'] . '+00:00' , ATOM_TIME)) , '$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , ATOM_TIME)) , - '$birthday' => $birthday + '$birthday' => $birthday, + '$community' => (($owner['page-flags'] == PAGE_COMMUNITY) ? '1' : '') + )); if($mail) { @@ -648,38 +650,23 @@ function notifier_run($argv, $argc){ $headers .= 'Reply-to: ' . $reply_to . "\n"; // for testing purposes: Collect exported mails - $file = tempnam("/tmp/friendica/", "mail-out2-"); - file_put_contents($file, json_encode($it)); + //$file = tempnam("/tmp/friendica/", "mail-out2-"); + //file_put_contents($file, json_encode($it)); $headers .= 'Message-Id: <' . iri2msgid($it['uri']) . '>' . "\n"; if($it['uri'] !== $it['parent-uri']) { $headers .= 'References: <' . iri2msgid($it['parent-uri']) . '>' . "\n"; - if(! strlen($it['title'])) { + if(!strlen($it['title'])) { $r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1", - dbesc($it['parent-uri']) - ); - if(count($r)) { - $subtitle = $r[0]['title']; - if($subtitle) { - if(strncasecmp($subtitle,'RE:',3)) - $subject = $subtitle; - else - $subject = 'Re: ' . $subtitle; - } - } - } - } + dbesc($it['parent-uri'])); - /*$headers .= 'MIME-Version: 1.0' . "\n"; - //$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n"; - $headers .= 'Content-Type: text/plain; charset=UTF-8' . "\n"; - $headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n"; - $html = prepare_body($it); - //$message = '' . $html . ''; - $message = html2plain($html); - logger('notifier: email delivery to ' . $addr); - mail($addr, $subject, $message, $headers);*/ + if(count($r) AND ($r[0]['title'] != '')) + $subject = $r[0]['title']; + } + if(strncasecmp($subject,'RE:',3)) + $subject = 'Re: '.$subject; + } email_send($addr, $subject, $headers, $it); } break; diff --git a/include/oembed.php b/include/oembed.php index 5c3c595f57..cc71f9757c 100755 --- a/include/oembed.php +++ b/include/oembed.php @@ -1,6 +1,6 @@ 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=""; switch ($j->type) { case "video": { diff --git a/include/poller.php b/include/poller.php index cfbc46b87e..8262c1d605 100755 --- a/include/poller.php +++ b/include/poller.php @@ -1,7 +1,6 @@ UTC_TIMESTAMP() - INTERVAL 12 HOUR && `last` < UTC_TIMESTAMP() - INTERVAL 15 MINUTE ) OR ( `last` < UTC_TIMESTAMP() - INTERVAL 1 HOUR ))"); + } if(! count($r)){ return; } diff --git a/include/security.php b/include/security.php index f469dad66f..19e91eb63d 100755 --- a/include/security.php +++ b/include/security.php @@ -283,7 +283,64 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null) ); } } + return $sql; } +/* + * 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(); + logger('check_form_security_token failed: user ' . $a->user['guid'] . ' - form element ' . $typename); + logger('check_form_security_token failed: _REQUEST data: ' . print_r($_REQUEST, true), LOGGER_DATA); + notice( check_form_security_std_err_msg() ); + goaway($a->get_baseurl() . $err_redirect ); + } +} +function check_form_security_token_ForbiddenOnErr($typename = '', $formname = 'form_security_token') { + if (!check_form_security_token($typename, $formname)) { + logger('check_form_security_token failed: user ' . $a->user['guid'] . ' - form element ' . $typename); + logger('check_form_security_token failed: _REQUEST data: ' . print_r($_REQUEST, true), LOGGER_DATA); + header('HTTP/1.1 403 Forbidden'); + killme(); + } +} \ No newline at end of file diff --git a/include/template_processor.php b/include/template_processor.php index 8671587fc4..4c317efe1f 100755 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -80,8 +80,13 @@ */ private function _replcb_for($args){ $m = array_map('trim', explode(" as ", $args[2])); - list($keyname, $varname) = explode("=>",$m[1]); - if (is_null($varname)) { $varname=$keyname; $keyname=""; } + $x = explode("=>",$m[1]); + 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."'") ; //$vals = $this->r[$m[0]]; $vals = $this->_get_var($m[0]); @@ -91,7 +96,7 @@ $this->_push_stack(); $r = $this->r; $r[$varname] = $v; - if ($keyname!='') $r[$keyname] = $k; + if ($keyname!='') $r[$keyname] = (($k === 0) ? '0' : $k); $ret .= $this->replace($args[3], $r); $this->_pop_stack(); } @@ -198,7 +203,7 @@ $os=$s; $count++; $s = $this->var_replace($s); } - return template_unescape($s); + return $s; } } diff --git a/include/text.php b/include/text.php index 5ad0154d7a..2956c94676 100644 --- a/include/text.php +++ b/include/text.php @@ -20,7 +20,7 @@ function replace_macros($s,$r) { //$a = get_app(); //$a->page['debug'] .= "$tt
\n"; - return $r; + return template_unescape($r); }} @@ -638,7 +638,7 @@ if(! function_exists('search')) { function search($s,$id='search-box',$url='/search',$save = false) { $a = get_app(); $o = '
'; - $o .= '
'; + $o .= ''; $o .= ''; $o .= ''; if($save) @@ -694,8 +694,13 @@ function linkify($s) { if(! function_exists('smilies')) { function smilies($s, $sample = false) { + $a = get_app(); + if(intval(get_config('system','no_smilies')) + || (local_user() && intval(get_pconfig(local_user(),'system','no_smilies')))) + return $s; + $s = preg_replace_callback('/
(.*?)<\/pre>/ism','smile_encode',$s);
 	$s = preg_replace_callback('/(.*?)<\/code>/ism','smile_encode',$s);
 
@@ -874,16 +879,30 @@ function link_compare($a,$b) {
 if(! function_exists('prepare_body')) {
 function prepare_body($item,$attach = false) {
 
+	$a = get_app();
 	call_hooks('prepare_body_init', $item); 
 
-	$s = prepare_text($item['body']);
+	$cache = get_config('system','itemcache');
+
+	if (($cache != '')) {
+		$cachefile = $cache."/".$item["guid"]."-".strtotime($item["edited"])."-".hash("crc32", $item['body']);
+
+		if (file_exists($cachefile))
+			$s = file_get_contents($cachefile);
+		else {
+			$s = prepare_text($item['body']);
+			file_put_contents($cachefile, $s);
+		}
+	} else
+		$s = prepare_text($item['body']);
 
 	$prep_arr = array('item' => $item, 'html' => $s);
 	call_hooks('prepare_body', $prep_arr);
 	$s = $prep_arr['html'];
 
-	if(! $attach)
+	if(! $attach) {
 		return $s;
+	}
 
 	$arr = explode(',',$item['attach']);
 	if(count($arr)) {
@@ -913,10 +932,37 @@ function prepare_body($item,$attach = false) {
 		}
 		$s .= '
'; } + $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 .= '
' . t('Categories:') . ' ' . $x . '
'; + } + $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 .= '   '; + $x .= file_tag_decode($mtch[1]). ' ' . t('[remove]') . ''; + } + if(strlen($x) && (local_user() == $item['uid'])) + $s .= '
' . t('Filed under:') . ' ' . $x . '
'; + } + $prep_arr = array('item' => $item, 'html' => $s); call_hooks('prepare_body_final', $prep_arr); + return $prep_arr['html']; }} @@ -1235,4 +1281,80 @@ function item_post_type($item) { 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; +} + +function normalise_openid($s) { + return trim(str_replace(array('http://','https://'),array('',''),$s),'/'); +} diff --git a/js/main.js b/js/main.js index c20455ad14..babd2a1c38 100755 --- a/js/main.js +++ b/js/main.js @@ -486,9 +486,9 @@ return a.join(''); } - function groupChangeMember(gid,cid) { + function groupChangeMember(gid, cid, sec_token) { $('body .fakelink').css('cursor', 'wait'); - $.get('group/' + gid + '/' + cid, function(data) { + $.get('group/' + gid + '/' + cid + "?t=" + sec_token, function(data) { $('#group-update-wrapper').html(data); $('body .fakelink').css('cursor', 'auto'); }); diff --git a/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js index 44d1473a99..183f2bc68d 100755 --- a/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js @@ -44,61 +44,79 @@ _dfrn_html2bbcode : function(s) { s = tinymce.trim(s); - function rep(re, str) { - - //modify code to keep stuff intact within [code][/code] blocks - //Waitman Gobble NO WARRANTY - - - var o = new Array(); - var x = s.split("[code]"); - var i = 0; - - var si = ""; - si = x.shift(); - si = si.replace(re,str); - o.push(si); - - for (i = 0; i < x.length; i++) { - var no = new Array(); - var j = x.shift(); - var g = j.split("[/code]"); - no.push(g.shift()); - si = g.shift(); - si = si.replace(re,str); - no.push(si); - o.push(no.join("[/code]")); - } - - s = o.join("[code]"); - - }; - - - - - /* oembed */ - function _h2b_cb(match) { - function s_h2b(data) { - match = data; + function rep(re, str) { + + //modify code to keep stuff intact within [code][/code] blocks + //Waitman Gobble NO WARRANTY + + + var o = new Array(); + var x = s.split("[code]"); + var i = 0; + + var si = ""; + si = x.shift(); + si = si.replace(re,str); + o.push(si); + + for (i = 0; i < x.length; i++) { + var no = new Array(); + var j = x.shift(); + var g = j.split("[/code]"); + no.push(g.shift()); + si = g.shift(); + si = si.replace(re,str); + no.push(si); + o.push(no.join("[/code]")); + } + + s = o.join("[code]"); + + }; + + + + + /* oembed */ + function _h2b_cb(match) { + /* + function s_h2b(data) { + match = data; } $.ajax({ - type:"POST", + type:"POST", url: 'oembed/h2b', - data: {text: match}, - async: false, - success: s_h2b, - dataType: 'html' - }); - return match; - } + data: {text: match}, + async: false, + success: s_h2b, + dataType: 'html' + }); + */ + + var f, g, tof = [], tor = []; + var find_spanc = /]*class *= *[\"'](?:[^\"']* )*oembed(?: [^\"']*)*[\"'][^>]*>(.*?(?:]*>(.*?)<\/span *>)*.*?)<\/span *>/ig; + while (f = find_spanc.exec(match)) { + var find_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; + } if (s.indexOf('class="oembed')>=0){ //alert("request oembed html2bbcode"); s = _h2b_cb(s); } - - /* /oembed */ - + + /* /oembed */ + // example: to [b] rep(/(.*?)<\/a>/gi,"[bookmark=$1]$2[/bookmark]"); @@ -111,16 +129,16 @@ rep(//gi,"[img=$3x$2]$1[/img]"); rep(//gi,"[img=$2x$3]$1[/img]"); rep(//gi,"[img]$1[/img]"); - - rep(/
    (.*?)<\/ul>/gi,"[list]$1[/list]"); - rep(/
      (.*?)<\/ul>/gi,"[list=]$1[/list]"); - rep(/
        (.*?)<\/ul>/gi,"[list=1]$1[/list]"); - rep(/
          (.*?)<\/ul>/gi,"[list=i]$1[/list]"); - rep(/
            (.*?)<\/ul>/gi,"[list=I]$1[/list]"); - rep(/
              (.*?)<\/ul>/gi,"[list=a]$1[/list]"); - rep(/
                (.*?)<\/ul>/gi,"[list=A]$1[/list]"); - rep(/
              • (.*?)<\/li>/gi,'[li]$1[/li]'); - + + rep(/
                  (.*?)<\/ul>/gi,"[list]$1[/list]"); + rep(/
                    (.*?)<\/ul>/gi,"[list=]$1[/list]"); + rep(/
                      (.*?)<\/ul>/gi,"[list=1]$1[/list]"); + rep(/
                        (.*?)<\/ul>/gi,"[list=i]$1[/list]"); + rep(/
                          (.*?)<\/ul>/gi,"[list=I]$1[/list]"); + rep(/
                            (.*?)<\/ul>/gi,"[list=a]$1[/list]"); + rep(/
                              (.*?)<\/ul>/gi,"[list=A]$1[/list]"); + rep(/
                            • (.*?)<\/li>/gi,'[li]$1[/li]'); + rep(/(.*?)<\/code>/gi,"[code]$1[/code]"); rep(/<\/(strong|b)>/gi,"[/b]"); rep(/<(strong|b)>/gi,"[b]"); @@ -149,42 +167,42 @@ // BBCode -> HTML from DFRN dialect _dfrn_bbcode2html : function(s) { s = tinymce.trim(s); - - - function rep(re, str) { - - //modify code to keep stuff intact within [code][/code] blocks - //Waitman Gobble NO WARRANTY - - - var o = new Array(); - var x = s.split("[code]"); - var i = 0; - - var si = ""; - si = x.shift(); - si = si.replace(re,str); - o.push(si); - - for (i = 0; i < x.length; i++) { - var no = new Array(); - var j = x.shift(); - var g = j.split("[/code]"); - no.push(g.shift()); - si = g.shift(); - si = si.replace(re,str); - no.push(si); - o.push(no.join("[/code]")); - } - - s = o.join("[code]"); - - }; - - - - - + + + function rep(re, str) { + + //modify code to keep stuff intact within [code][/code] blocks + //Waitman Gobble NO WARRANTY + + + var o = new Array(); + var x = s.split("[code]"); + var i = 0; + + var si = ""; + si = x.shift(); + si = si.replace(re,str); + o.push(si); + + for (i = 0; i < x.length; i++) { + var no = new Array(); + var j = x.shift(); + var g = j.split("[/code]"); + no.push(g.shift()); + si = g.shift(); + si = si.replace(re,str); + no.push(si); + o.push(no.join("[/code]")); + } + + s = o.join("[code]"); + + }; + + + + + // example: [b] to rep(/\n/gi,"
                              "); rep(/\[b\]/gi,""); @@ -193,43 +211,43 @@ rep(/\[\/i\]/gi,""); rep(/\[u\]/gi,""); rep(/\[\/u\]/gi,""); - rep(/\[hr\]/gi,"
                              "); + rep(/\[hr\]/gi,"
                              "); rep(/\[bookmark=([^\]]+)\](.*?)\[\/bookmark\]/gi,"$2"); rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"$2"); rep(/\[url\](.*?)\[\/url\]/gi,"
                              $1"); rep(/\[img=(.*?)x(.*?)\](.*?)\[\/img\]/gi,""); rep(/\[img\](.*?)\[\/img\]/gi,""); - - rep(/\[list\](.*?)\[\/list\]/gi, '
                                $1
                              '); - rep(/\[list=\](.*?)\[\/list\]/gi, '
                                $1
                              '); - rep(/\[list=1\](.*?)\[\/list\]/gi, '
                                $1
                              '); - rep(/\[list=i\](.*?)\[\/list\]/gi,'
                                $1
                              '); - rep(/\[list=I\](.*?)\[\/list\]/gi, '
                                $1
                              '); - rep(/\[list=a\](.*?)\[\/list\]/gi, '
                                $1
                              '); - rep(/\[list=A\](.*?)\[\/list\]/gi, '
                                $1
                              '); - rep(/\[li\](.*?)\[\/li\]/gi, '
                            • $1
                            • '); + + rep(/\[list\](.*?)\[\/list\]/gi, '
                                $1
                              '); + rep(/\[list=\](.*?)\[\/list\]/gi, '
                                $1
                              '); + rep(/\[list=1\](.*?)\[\/list\]/gi, '
                                $1
                              '); + rep(/\[list=i\](.*?)\[\/list\]/gi,'
                                $1
                              '); + rep(/\[list=I\](.*?)\[\/list\]/gi, '
                                $1
                              '); + rep(/\[list=a\](.*?)\[\/list\]/gi, '
                                $1
                              '); + rep(/\[list=A\](.*?)\[\/list\]/gi, '
                                $1
                              '); + rep(/\[li\](.*?)\[\/li\]/gi, '
                            • $1
                            • '); rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"$2"); rep(/\[size=(.*?)\](.*?)\[\/size\]/gi,"$2"); rep(/\[code\](.*?)\[\/code\]/gi,"$1"); rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"
                              $1
                              "); - - /* oembed */ - function _b2h_cb(match, url) { - url = bin2hex(url); - function s_b2h(data) { - match = data; - } - $.ajax({ - url: 'oembed/b2h?url=' + url, - async: false, - success: s_b2h, - dataType: 'html' - }); - return match; - } - s = s.replace(/\[embed\](.*?)\[\/embed\]/gi, _b2h_cb); - - /* /oembed */ + + /* oembed */ + function _b2h_cb(match, url) { + url = bin2hex(url); + function s_b2h(data) { + match = data; + } + $.ajax({ + url: 'oembed/b2h?url=' + url, + async: false, + success: s_b2h, + dataType: 'html' + }); + return match; + } + s = s.replace(/\[embed\](.*?)\[\/embed\]/gi, _b2h_cb); + + /* /oembed */ return s; } diff --git a/mod/admin.php b/mod/admin.php index 93714bb5f9..a64b269035 100755 --- a/mod/admin.php +++ b/mod/admin.php @@ -37,7 +37,7 @@ function admin_post(&$a){ $func($a); } } - goaway($a->get_baseurl() . '/admin/plugins/' . $a->argv[2] ); + goaway($a->get_baseurl(true) . '/admin/plugins/' . $a->argv[2] ); return; // NOTREACHED break; case 'logs': @@ -49,7 +49,7 @@ function admin_post(&$a){ } } - goaway($a->get_baseurl() . '/admin' ); + goaway($a->get_baseurl(true) . '/admin' ); return; // NOTREACHED } @@ -68,11 +68,11 @@ function admin_content(&$a) { // array( url, name, extra css classes ) $aside = Array( - 'site' => Array($a->get_baseurl()."/admin/site/", t("Site") , "site"), - 'users' => Array($a->get_baseurl()."/admin/users/", t("Users") , "users"), - 'plugins'=> Array($a->get_baseurl()."/admin/plugins/", t("Plugins") , "plugins"), - 'themes' => Array($a->get_baseurl()."/admin/themes/", t("Themes") , "themes"), - 'update' => Array($a->get_baseurl()."/admin/update/", t("Update") , "update") + 'site' => Array($a->get_baseurl(true)."/admin/site/", t("Site") , "site"), + 'users' => Array($a->get_baseurl(true)."/admin/users/", t("Users") , "users"), + 'plugins'=> Array($a->get_baseurl(true)."/admin/plugins/", t("Plugins") , "plugins"), + 'themes' => Array($a->get_baseurl(true)."/admin/themes/", t("Themes") , "themes"), + 'update' => Array($a->get_baseurl(true)."/admin/update/", t("Update") , "update") ); /* get plugins admin page */ @@ -81,18 +81,18 @@ function admin_content(&$a) { $aside['plugins_admin']=Array(); foreach ($r as $h){ $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 $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"); $a->page['aside'] = replace_macros( $t, array( '$admin' => $aside, '$h_pending' => t('User registrations waiting for confirmation'), - '$admurl'=> $a->get_baseurl()."/admin/" + '$admurl'=> $a->get_baseurl(true)."/admin/" )); @@ -151,11 +151,7 @@ function admin_page_summary(&$a) { $r = q("SELECT COUNT(id) as `count` FROM `register`"); $pending = $r[0]['count']; - - - - - + $t = get_markup_template("admin_summary.tpl"); return replace_macros($t, array( '$title' => t('Administration'), @@ -210,7 +206,7 @@ function admin_page_site_post(&$a){ $dfrn_only = ((x($_POST,'dfrn_only')) ? True : False); $ostatus_disabled = !((x($_POST,'ostatus_disabled')) ? 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); if ($banner==""){ @@ -222,6 +218,7 @@ function admin_page_site_post(&$a){ } else { set_config('system','banner', $banner); } + set_config('system','ssl_policy',$ssl_policy); set_config('system','language', $language); set_config('system','theme', $theme); set_config('system','maximagesize', $maximagesize); @@ -258,7 +255,7 @@ function admin_page_site_post(&$a){ set_config('system','diaspora_enabled', $diaspora_enabled); info( t('Site settings updated.') . EOL); - goaway($a->get_baseurl() . '/admin/site' ); + goaway($a->get_baseurl(true) . '/admin/site' ); return; // NOTREACHED } @@ -305,7 +302,13 @@ function admin_page_site(&$a) { REGISTER_APPROVE => t("Requires approval"), 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"); return replace_macros($t, array( '$title' => t('Administration'), @@ -316,13 +319,13 @@ function admin_page_site(&$a) { '$corporate' => t('Policies'), '$advanced' => t('Advanced'), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), // name, label, value, help string, extra data... '$sitename' => array('sitename', t("Site name"), htmlentities($a->config['sitename'], ENT_QUOTES), ""), '$banner' => array('banner', t("Banner/Logo"), $banner, ""), '$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), - + '$ssl_policy' => array('ssl_policy', t("SSL link policy"), (string) intval(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.")), '$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); } } - goaway($a->get_baseurl() . '/admin/users' ); + goaway($a->get_baseurl(true) . '/admin/users' ); return; // NOTREACHED } @@ -399,7 +402,7 @@ function admin_page_users(&$a){ $user = q("SELECT * FROM `user` WHERE `uid`=%d", intval($uid)); if (count($user)==0){ notice( 'User not found' . EOL); - goaway($a->get_baseurl() . '/admin/users' ); + goaway($a->get_baseurl(true) . '/admin/users' ); return; // NOTREACHED } 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); }; break; } - goaway($a->get_baseurl() . '/admin/users' ); + goaway($a->get_baseurl(true) . '/admin/users' ); return; // NOTREACHED } @@ -497,7 +500,7 @@ function admin_page_users(&$a){ // values // - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$pending' => $pending, '$users' => $users, @@ -536,7 +539,7 @@ function admin_page_plugins(&$a){ info( sprintf( t("Plugin %s enabled."), $plugin ) ); } set_config("system","addon", implode(", ",$a->plugins)); - goaway($a->get_baseurl() . '/admin/plugins' ); + goaway($a->get_baseurl(true) . '/admin/plugins' ); return; // NOTREACHED } // display plugin details @@ -569,7 +572,7 @@ function admin_page_plugins(&$a){ '$page' => t('Plugins'), '$toggle' => t('Toggle'), '$settings' => t('Settings'), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$plugin' => $plugin, '$status' => $status, @@ -607,7 +610,7 @@ function admin_page_plugins(&$a){ '$title' => t('Administration'), '$page' => t('Plugins'), '$submit' => t('Submit'), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$function' => 'plugins', '$plugins' => $plugins )); @@ -713,7 +716,7 @@ function admin_page_themes(&$a){ info( sprintf('Theme %s disabled.',$theme)); set_config('system','allowed_themes',$s); - goaway($a->get_baseurl() . '/admin/themes' ); + goaway($a->get_baseurl(true) . '/admin/themes' ); return; // NOTREACHED } @@ -742,7 +745,7 @@ function admin_page_themes(&$a){ '$page' => t('Themes'), '$toggle' => t('Toggle'), '$settings' => t('Settings'), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$plugin' => $theme, '$status' => $status, @@ -774,7 +777,7 @@ function admin_page_themes(&$a){ '$title' => t('Administration'), '$page' => t('Themes'), '$submit' => t('Submit'), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$function' => 'themes', '$plugins' => $xthemes, '$experimental' => t('[Experimental]'), @@ -802,7 +805,7 @@ function admin_page_logs_post(&$a) { } info( t("Log settings updated.") ); - goaway($a->get_baseurl() . '/admin/logs' ); + goaway($a->get_baseurl(true) . '/admin/logs' ); return; // NOTREACHED } @@ -856,7 +859,7 @@ readable."); '$submit' => t('Submit'), '$clear' => t('Clear'), '$data' => $data, - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$logname' => get_config('system','logfile'), // name, label, value, help string, extra data... @@ -901,7 +904,7 @@ function admin_page_remoteupdate(&$a) { $tpl = get_markup_template("admin_remoteupdate.tpl"); return replace_macros($tpl, array( - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$submit' => t("Update now"), '$close' => t("Close"), '$localversion' => FRIENDICA_VERSION, diff --git a/mod/contacts.php b/mod/contacts.php index c99ac14520..78c8d40928 100755 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -61,7 +61,7 @@ function contacts_post(&$a) { if(! count($orig_record)) { notice( t('Could not access contact record.') . EOL); - goaway($a->get_baseurl() . '/contacts'); + goaway($a->get_baseurl(true) . '/contacts'); return; // NOTREACHED } @@ -141,7 +141,7 @@ function contacts_content(&$a) { if(! count($orig_record)) { notice( t('Could not access contact record.') . EOL); - goaway($a->get_baseurl() . '/contacts'); + goaway($a->get_baseurl(true) . '/contacts'); return; // NOTREACHED } @@ -149,7 +149,7 @@ function contacts_content(&$a) { // pull feed and consume it, which should subscribe to the hub. proc_run('php',"include/poller.php","$contact_id"); - goaway($a->get_baseurl() . '/contacts/' . $contact_id); + goaway($a->get_baseurl(true) . '/contacts/' . $contact_id); // NOTREACHED } @@ -164,7 +164,7 @@ function contacts_content(&$a) { //notice( t('Contact has been ') . (($blocked) ? t('blocked') : t('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 } @@ -178,7 +178,7 @@ function contacts_content(&$a) { if($r) { 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 } @@ -220,9 +220,9 @@ function contacts_content(&$a) { contact_remove($orig_record[0]['id']); info( t('Contact has been removed.') . EOL ); if(x($_SESSION,'return_url')) - goaway($a->get_baseurl() . '/' . $_SESSION['return_url']); + goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']); else - goaway($a->get_baseurl() . '/contacts'); + goaway($a->get_baseurl(true) . '/contacts'); return; // NOTREACHED } } @@ -233,7 +233,7 @@ function contacts_content(&$a) { $contact = $a->data['contact']; $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'); @@ -295,17 +295,17 @@ function contacts_content(&$a) { $tabs = array( array( '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' => '', ), array( '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' => '', ), array( 'label' => t('Repair'), - 'url' => $a->get_baseurl() . '/crepair/' . $contact_id, + 'url' => $a->get_baseurl(true) . '/crepair/' . $contact_id, 'sel' => '', ) ); @@ -322,7 +322,7 @@ function contacts_content(&$a) { '$lbl_info1' => t('Contact Information / Notes'), '$infedit' => t('Edit contact notes'), '$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, '$relation_text' => $relation_text, '$visit' => sprintf( t('Visit %s\'s profile [%s]'),$contact['name'],$contact['url']), @@ -397,30 +397,30 @@ function contacts_content(&$a) { $tabs = array( array( 'label' => t('All Contacts'), - 'url' => $a->get_baseurl() . '/contacts/all', + 'url' => $a->get_baseurl(true) . '/contacts/all', 'sel' => ($all) ? 'active' : '', ), array( 'label' => t('Unblocked Contacts'), - 'url' => $a->get_baseurl() . '/contacts', + 'url' => $a->get_baseurl(true) . '/contacts', 'sel' => ((! $all) && (! $blocked) && (! $hidden) && (! $search) && (! $nets) && (! $ignored)) ? 'active' : '', ), array( 'label' => t('Blocked Contacts'), - 'url' => $a->get_baseurl() . '/contacts/blocked', + 'url' => $a->get_baseurl(true) . '/contacts/blocked', 'sel' => ($blocked) ? 'active' : '', ), array( 'label' => t('Ignored Contacts'), - 'url' => $a->get_baseurl() . '/contacts/ignored', + 'url' => $a->get_baseurl(true) . '/contacts/ignored', 'sel' => ($ignored) ? 'active' : '', ), array( 'label' => t('Hidden Contacts'), - 'url' => $a->get_baseurl() . '/contacts/hidden', + 'url' => $a->get_baseurl(true) . '/contacts/hidden', 'sel' => ($hidden) ? 'active' : '', ), @@ -445,15 +445,16 @@ function contacts_content(&$a) { $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'])); - if(count($r)) + if(count($r)) { $a->set_pager_total($r[0]['total']); + $total = $r[0]['total']; + } - - $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($a->pager['start']), intval($a->pager['itemspage']) @@ -464,8 +465,6 @@ function contacts_content(&$a) { if(count($r)) { foreach($r as $rr) { - if($rr['self']) - continue; switch($rr['rel']) { case CONTACT_IS_FRIEND: @@ -518,7 +517,7 @@ function contacts_content(&$a) { $o .= replace_macros($tpl,array( '$header' => t('Contacts') . (($nets) ? ' - ' . network_to_name($nets) : ''), '$tabs' => $t, - '$total' => $r[0]['total'], + '$total' => $total, '$search' => $search_hdr, '$desc' => t('Search your contacts'), '$finding' => (strlen($search) ? t('Finding: ') . "'" . $search . "'" : ""), diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php index 0bc3ea7df5..2f4fb70452 100644 --- a/mod/dfrn_confirm.php +++ b/mod/dfrn_confirm.php @@ -207,6 +207,9 @@ function dfrn_confirm_post(&$a,$handsfree = null) { if($duplex == 1) $params['duplex'] = 1; + if($user['page-flags'] == PAGE_COMMUNITY) + $params['page'] = 1; + logger('dfrn_confirm: Confirm: posting data to ' . $dfrn_confirm . ': ' . print_r($params,true), LOGGER_DATA); /** @@ -522,6 +525,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) { $source_url = ((x($_POST,'source_url')) ? hex2bin($_POST['source_url']) : ''); $aes_key = ((x($_POST,'aes_key')) ? $_POST['aes_key'] : ''); $duplex = ((x($_POST,'duplex')) ? intval($_POST['duplex']) : 0 ); + $page = ((x($_POST,'page')) ? intval($_POST['page']) : 0 ); $version_id = ((x($_POST,'dfrn_version')) ? (float) $_POST['dfrn_version'] : 2.0); logger('dfrn_confirm: requestee contacted: ' . $node); @@ -677,6 +681,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) { `blocked` = 0, `pending` = 0, `duplex` = %d, + `forum` = %d, `network` = '%s' WHERE `id` = %d LIMIT 1 ", dbesc($photos[0]), @@ -687,6 +692,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) { dbesc(datetime_convert()), dbesc(datetime_convert()), intval($duplex), + intval($page), dbesc(NETWORK_DFRN), intval($dfrn_record) ); diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index 0c0c27e3d6..71860ac3b1 100755 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -14,6 +14,8 @@ function dfrn_notify_post(&$a) { $key = ((x($_POST,'key')) ? $_POST['key'] : ''); $dissolve = ((x($_POST,'dissolve')) ? intval($_POST['dissolve']) : 0); $perm = ((x($_POST,'perm')) ? notags(trim($_POST['perm'])) : 'r'); + $ssl_policy = ((x($_POST,'ssl_policy')) ? notags(trim($_POST['ssl_policy'])): 'none'); + $page = ((x($_POST,'page')) ? intval($_POST['page']) : 0); $writable = (-1); if($dfrn_version >= 2.21) { @@ -86,14 +88,76 @@ function dfrn_notify_post(&$a) { $importer = $r[0]; - if(($writable != (-1)) && ($writable != $importer['writable'])) { - q("UPDATE `contact` SET `writable` = %d WHERE `id` = %d LIMIT 1", - intval($writable), + if((($writable != (-1)) && ($writable != $importer['writable'])) || ($importer['forum'] != $page)) { + q("UPDATE `contact` SET `writable` = %d, forum = %d WHERE `id` = %d LIMIT 1", + intval(($writable == (-1)) ? $importer['writable'] : $writable), + intval($page), intval($importer['id']) ); - $importer['writable'] = $writable; + if($writable != (-1)) + $importer['writable'] = $writable; + $importer['forum'] = $page; } + // 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: data: ' . $data, LOGGER_DATA); diff --git a/mod/dfrn_poll.php b/mod/dfrn_poll.php index b12e071328..fe5cd49063 100755 --- a/mod/dfrn_poll.php +++ b/mod/dfrn_poll.php @@ -199,7 +199,7 @@ function dfrn_poll_post(&$a) { $ptype = ((x($_POST,'type')) ? $_POST['type'] : ''); $dfrn_version = ((x($_POST,'dfrn_version')) ? (float) $_POST['dfrn_version'] : 2.0); $perm = ((x($_POST,'perm')) ? $_POST['perm'] : 'r'); - + if($ptype === 'profile-check') { if((strlen($challenge)) && (strlen($sec))) { @@ -358,8 +358,8 @@ function dfrn_poll_post(&$a) { intval($contact_id) ); } - } - + } + header("Content-type: application/atom+xml"); $o = get_feed_for($a,$dfrn_id, $a->argv[1], $last_update, $direction); echo $o; diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php index bc159137df..c2d37dac7e 100755 --- a/mod/dfrn_request.php +++ b/mod/dfrn_request.php @@ -43,7 +43,7 @@ function dfrn_request_post(&$a) { return; - if($_POST['cancel']) { + if(x($_POST, 'cancel')) { 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) */ - $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()), - dbesc($dfrn_url) + dbesc($dfrn_url), + dbesc(normalise_link($dfrn_url)) ); 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.'), $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("Connect as an email follower \x28Coming soon\x29")); + + $invite_desc = t('If you are not yet a member of the free social web, follow this link to find a public Friendica site and join us today.'); $o .= replace_macros($tpl,array( '$header' => t('Friend/Connection Request'), @@ -682,6 +701,8 @@ function dfrn_request_content(&$a) { '$diaspora' => t('Diaspora'), '$diasnote' => t('- please share from your own site as noted above'), '$your_address' => t('Your Identity Address:'), + '$invite_desc' => $invite_desc, + '$emailnet' => $emailnet, '$submit' => t('Submit Request'), '$cancel' => t('Cancel'), '$nickname' => $a->argv[1], diff --git a/mod/directory.php b/mod/directory.php index 962188945f..7f18bd0268 100755 --- a/mod/directory.php +++ b/mod/directory.php @@ -25,10 +25,6 @@ function directory_post(&$a) { function directory_content(&$a) { - $everything = (($a->argc > 1 && $a->argv[1] === 'all' && is_site_admin()) ? true : false); - if(x($_SESSION,'submanage') && intval($_SESSION['submanage'])) - $everything = false; - if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) { notice( t('Public access denied.') . EOL); return; @@ -52,12 +48,6 @@ function directory_content(&$a) { } $admin = ''; - if(is_site_admin()) { - if($everything) - $admin = ''; - else - $admin = ''; - } $o .= replace_macros($tpl, array( '$search' => $search, @@ -73,17 +63,14 @@ function directory_content(&$a) { $search = dbesc($search); $sql_extra = ((strlen($search)) ? " AND MATCH (`profile`.`name`, `user`.`nickname`, `pdesc`, `locality`,`region`,`country-name`,`gender`,`marital`,`sexual`,`about`,`romance`,`work`,`education`,`pub_keywords`,`prv_keywords` ) AGAINST ('$search' IN BOOLEAN MODE) " : ""); - $publish = ((get_config('system','publish_all') || $everything) ? '' : " AND `publish` = 1 " ); + $publish = ((get_config('system','publish_all')) ? '' : " AND `publish` = 1 " ); $r = q("SELECT COUNT(*) AS `total` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra "); if(count($r)) $a->set_pager_total($r[0]['total']); - if($everything) - $order = " ORDER BY `register_date` DESC "; - else - $order = " ORDER BY `name` ASC "; + $order = " ORDER BY `name` ASC "; $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`, `user`.`timezone` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ", diff --git a/mod/display.php b/mod/display.php index f428149e83..81ed174acc 100755 --- a/mod/display.php +++ b/mod/display.php @@ -16,7 +16,15 @@ function display_content(&$a) { $o = '
                              ' . "\r\n"; - $a->page['htmlhead'] .= ''; + $a->page['htmlhead'] .= << +$(document).ready(function() { + $(".comment-edit-wrapper textarea").contact_autocomplete(baseurl+"/acl"); + // make auto-complete work in more places + $(".wall-item-comment-wrapper textarea").contact_autocomplete(baseurl+"/acl"); +}); + +EOT; $nick = (($a->argc > 1) ? $a->argv[1] : ''); diff --git a/mod/filer.php b/mod/filer.php new file mode 100755 index 0000000000..a9e2135361 --- /dev/null +++ b/mod/filer.php @@ -0,0 +1,23 @@ +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(); +} diff --git a/mod/filerm.php b/mod/filerm.php new file mode 100644 index 0000000000..66b684dc96 --- /dev/null +++ b/mod/filerm.php @@ -0,0 +1,21 @@ +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(); +} diff --git a/mod/group.php b/mod/group.php index 13401ef0d9..a282dbccf5 100755 --- a/mod/group.php +++ b/mod/group.php @@ -21,6 +21,8 @@ function group_post(&$a) { } if(($a->argc == 2) && ($a->argv[1] === 'new')) { + check_form_security_token_redirectOnErr('/group/new', 'group_edit'); + $name = notags(trim($_POST['groupname'])); $r = group_add(local_user(),$name); if($r) { @@ -35,6 +37,8 @@ function group_post(&$a) { return; // NOTREACHED } if(($a->argc == 2) && (intval($a->argv[1]))) { + check_form_security_token_redirectOnErr('/group', 'group_edit'); + $r = q("SELECT * FROM `group` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($a->argv[1]), intval(local_user()) @@ -62,7 +66,8 @@ function group_post(&$a) { } function group_content(&$a) { - + $change = false; + if(! local_user()) { notice( t('Permission denied') . EOL); return; @@ -83,14 +88,17 @@ function group_content(&$a) { return replace_macros($tpl, $context + array( '$title' => t('Create a group of contacts/friends.'), - '$gname' => array('groupname',t('Group Name: '),$group['name'], ''), + '$gname' => array('groupname',t('Group Name: '), '', ''), '$gid' => 'new', + '$form_security_token' => get_form_security_token("group_edit"), )); } if(($a->argc == 3) && ($a->argv[1] === 'drop')) { + check_form_security_token_redirectOnErr('/group', 'group_drop', 't'); + if(intval($a->argv[2])) { $r = q("SELECT `name` FROM `group` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($a->argv[2]), @@ -108,6 +116,8 @@ function group_content(&$a) { } if(($a->argc > 2) && intval($a->argv[1]) && intval($a->argv[2])) { + check_form_security_token_ForbiddenOnErr('group_member_change', 't'); + $r = q("SELECT `id` FROM `contact` WHERE `id` = %d AND `uid` = %d and `self` = 0 and `blocked` = 0 AND `pending` = 0 LIMIT 1", intval($a->argv[2]), intval(local_user()) @@ -155,7 +165,8 @@ function group_content(&$a) { $drop_tpl = get_markup_template('group_drop.tpl'); $drop_txt = replace_macros($drop_tpl, array( '$id' => $group['id'], - '$delete' => t('Delete') + '$delete' => t('Delete'), + '$form_security_token' => get_form_security_token("group_drop"), )); $celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false); @@ -166,6 +177,7 @@ function group_content(&$a) { '$gname' => array('groupname',t('Group Name: '),$group['name'], ''), '$gid' => $group['id'], '$drop' => $drop_txt, + '$form_security_token' => get_form_security_token('group_edit'), ); } @@ -177,14 +189,14 @@ function group_content(&$a) { 'label_members' => t('Members'), 'members' => array(), 'label_contacts' => t('All Contacts'), - 'contacts' => arraY(), + 'contacts' => array(), ); - + $sec_token = addslashes(get_form_security_token('group_member_change')); $textmode = (($switchtotext && (count($members) > $switchtotext)) ? true : false); foreach($members as $member) { if($member['url']) { - $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . '); return true;'; + $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . ',\'' . $sec_token . '\'); return true;'; $groupeditor['members'][] = micropro($member,true,'mpgroup', $textmode); } else @@ -199,7 +211,7 @@ function group_content(&$a) { $textmode = (($switchtotext && (count($r) > $switchtotext)) ? true : false); foreach($r as $member) { if(! in_array($member['id'],$preselected)) { - $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . '); return true;'; + $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . ',\'' . $sec_token . '\'); return true;'; $groupeditor['contacts'][] = micropro($member,true,'mpall', $textmode); } } diff --git a/mod/hcard.php b/mod/hcard.php index 19e649dcb6..6d2d9e2ebf 100755 --- a/mod/hcard.php +++ b/mod/hcard.php @@ -21,7 +21,7 @@ function hcard_init(&$a) { profile_load($a,$which,$profile); if((x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY)) { - $a->page['htmlhead'] .= ''; + $a->page['htmlhead'] .= ''; } if(x($a->profile,'openidserver')) $a->page['htmlhead'] .= '' . "\r\n"; diff --git a/mod/item.php b/mod/item.php index 81d7c753b4..fe570075f2 100755 --- a/mod/item.php +++ b/mod/item.php @@ -425,110 +425,7 @@ function item_post(&$a) { if(count($tags)) { foreach($tags as $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; - } - } - } - } + handle_tag($a, $body, $inform, $str_tags, $profile_uid, $tag); } } @@ -627,7 +524,7 @@ function item_post(&$a) { if($preview) { 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); echo json_encode(array('preview' => $o)); killme(); @@ -922,3 +819,142 @@ function item_content(&$a) { 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 + return; + //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=')) + return; + $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; + } + } + } + } +} diff --git a/mod/manage.php b/mod/manage.php index ec4dcd8a00..84dfa6917c 100755 --- a/mod/manage.php +++ b/mod/manage.php @@ -74,7 +74,7 @@ function manage_post(&$a) { if($limited_id) $_SESSION['submanage'] = $original_id; - goaway($a->get_baseurl() . '/profile/' . $a->user['nickname']); + goaway($a->get_baseurl(true) . '/profile/' . $a->user['nickname']); // NOTREACHED } diff --git a/mod/message.php b/mod/message.php index 4b494e906f..0907abd77f 100755 --- a/mod/message.php +++ b/mod/message.php @@ -10,17 +10,19 @@ function message_post(&$a) { return; } - $replyto = ((x($_POST,'replyto')) ? notags(trim($_POST['replyto'])) : ''); - $subject = ((x($_POST,'subject')) ? notags(trim($_POST['subject'])) : ''); - $body = ((x($_POST,'body')) ? escape_tags(trim($_POST['body'])) : ''); - $recipient = ((x($_POST,'messageto')) ? intval($_POST['messageto']) : 0 ); + $replyto = ((x($_REQUEST,'replyto')) ? notags(trim($_REQUEST['replyto'])) : ''); + $subject = ((x($_REQUEST,'subject')) ? notags(trim($_REQUEST['subject'])) : ''); + $body = ((x($_REQUEST,'body')) ? escape_tags(trim($_REQUEST['body'])) : ''); + $recipient = ((x($_REQUEST,'messageto')) ? intval($_REQUEST['messageto']) : 0 ); $ret = send_message($recipient, $body, $subject, $replyto); + $norecip = false; switch($ret){ case -1: notice( t('No recipient selected.') . EOL ); + $norecip = true; break; case -2: notice( t('Unable to locate contact information.') . EOL ); @@ -35,6 +37,13 @@ function message_post(&$a) { info( t('Message sent.') . EOL ); } + // fake it to go back to the input form if no recipient listed + + if($norecip) { + $a->argc = 2; + $a->argv[1] = 'new'; + } + } function message_content(&$a) { @@ -47,23 +56,23 @@ function message_content(&$a) { return; } - $myprofile = $a->get_baseurl() . '/profile/' . $a->user['nickname']; + $myprofile = $a->get_baseurl(true) . '/profile/' . $a->user['nickname']; $tabs = array( array( 'label' => t('Inbox'), - 'url'=> $a->get_baseurl() . '/message', + 'url'=> $a->get_baseurl(true) . '/message', 'sel'=> (($a->argc == 1) ? 'active' : ''), ), array( 'label' => t('Outbox'), - 'url' => $a->get_baseurl() . '/message/sent', + 'url' => $a->get_baseurl(true) . '/message/sent', 'sel'=> (($a->argv[1] == 'sent') ? 'active' : ''), ), array( 'label' => t('New Message'), - 'url' => $a->get_baseurl() . '/message/new', + 'url' => $a->get_baseurl(true) . '/message/new', 'sel'=> (($a->argv[1] == 'new') ? 'active' : ''), ), ); @@ -90,7 +99,7 @@ function message_content(&$a) { if($r) { info( t('Message deleted.') . EOL ); } - goaway($a->get_baseurl() . '/message' ); + goaway($a->get_baseurl(true) . '/message' ); } else { $r = q("SELECT `parent-uri`,`convid` FROM `mail` WHERE `id` = %d AND `uid` = %d LIMIT 1", @@ -120,7 +129,7 @@ function message_content(&$a) { if($r) info( t('Conversation removed.') . EOL ); } - goaway($a->get_baseurl() . '/message' ); + goaway($a->get_baseurl(true) . '/message' ); } } @@ -129,23 +138,30 @@ function message_content(&$a) { $o .= $header; + $plaintext = false; + if(intval(get_pconfig(local_user(),'system','plaintext'))) + $plaintext = true; + + $tpl = get_markup_template('msg-header.tpl'); $a->page['htmlhead'] .= replace_macros($tpl, array( - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), + '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'), '$nickname' => $a->user['nickname'], '$linkurl' => t('Please enter a link URL:') )); $preselect = (isset($a->argv[2])?array($a->argv[2]):false); - $select = contact_select('messageto','message-to-select', $preselect, 4, true); + $select = contact_select('messageto','message-to-select', $preselect, 4, true, false, false, 10); $tpl = get_markup_template('prv_message.tpl'); $o .= replace_macros($tpl,array( '$header' => t('Send Private Message'), '$to' => t('To:'), '$subject' => t('Subject:'), - '$subjtxt' => '', + '$subjtxt' => ((x($_REQUEST,'subject')) ? strip_tags($_REQUEST['subject']) : ''), + '$text' => ((x($_REQUEST,'body')) ? escape_tags(htmlspecialchars($_REQUEST['body'])) : ''), '$readonly' => '', '$yourmessage' => t('Your message:'), '$select' => $select, @@ -176,9 +192,9 @@ function message_content(&$a) { $a->set_pager_total($r[0]['total']); $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` - 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()), dbesc($myprofile), intval($a->pager['start']), @@ -194,7 +210,7 @@ function message_content(&$a) { $o .= replace_macros($tpl, array( '$id' => $rr['id'], '$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', '$from_photo' => $rr['thumb'], '$subject' => template_escape((($rr['mailseen']) ? $rr['title'] : '' . $rr['title'] . '')), @@ -251,7 +267,7 @@ function message_content(&$a) { $a->page['htmlhead'] .= replace_macros($tpl, array( '$nickname' => $a->user['nickname'], - '$baseurl' => $a->get_baseurl() + '$baseurl' => $a->get_baseurl(true) )); @@ -262,7 +278,7 @@ function message_content(&$a) { $sparkle = ''; } else { - $from_url = $a->get_baseurl() . '/redir/' . $message['contact-id']; + $from_url = $a->get_baseurl(true) . '/redir/' . $message['contact-id']; $sparkle = ' sparkle'; } $o .= replace_macros($tpl, array( @@ -289,6 +305,7 @@ function message_content(&$a) { '$subjtxt' => template_escape($message['title']), '$readonly' => ' readonly="readonly" style="background: #BBBBBB;" ', '$yourmessage' => t('Your message:'), + '$text' => '', '$select' => $select, '$parent' => $parent, '$upload' => t('Upload photo'), diff --git a/mod/network.php b/mod/network.php index 27c6e315b8..9ec8c23b59 100755 --- a/mod/network.php +++ b/mod/network.php @@ -44,21 +44,26 @@ function network_init(&$a) { } $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'] .= fileas_widget($a->get_baseurl(true) . '/network',(x($_GET, 'file') ? $_GET['file'] : '')); } function saved_searches($search) { + $a = get_app(); + $srchurl = '/network?f=' - . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') - . ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '') + . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') + . ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '') . ((x($_GET,'bmark')) ? '&bmark=' . $_GET['bmark'] : '') - . ((x($_GET,'conv')) ? '&conv=' . $_GET['conv'] : '') - . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '') - . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '') - . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : ''); + . ((x($_GET,'conv')) ? '&conv=' . $_GET['conv'] : '') + . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '') + . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '') + . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : '') + . ((x($_GET,'file')) ? '&file=' . $_GET['file'] : ''); + ; $o = ''; @@ -130,15 +135,15 @@ function network_content(&$a, $update = 0) { $starred_active = 'active'; } - if($_GET['bmark']) { + if(x($_GET,'bmark')) { $bookmarked_active = 'active'; } - if($_GET['conv']) { + if(x($_GET,'conv')) { $conv_active = 'active'; } - if($_GET['spam']) { + if(x($_GET,'spam')) { $spam_active = 'active'; } @@ -164,38 +169,38 @@ function network_content(&$a, $update = 0) { $tabs = array( array( '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, ), array( '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, ), array( '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, ), array( '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, ), array( '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, ), array( - 'label' => t('Bookmarks'), - 'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&bmark=1', + 'label' => t('Shared Links'), + 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&bmark=1', 'sel'=>$bookmarked_active, ), // array( // 'label' => t('Spam'), -// 'url'=>$a->get_baseurl() . '/network?f=&spam=1' +// 'url'=>$a->get_baseurl(true) . '/network?f=&spam=1' // 'sel'=> $spam_active, // ), @@ -226,6 +231,7 @@ function network_content(&$a, $update = 0) { $nets = ((x($_GET,'nets')) ? $_GET['nets'] : ''); $cmin = ((x($_GET,'cmin')) ? intval($_GET['cmin']) : 0); $cmax = ((x($_GET,'cmax')) ? intval($_GET['cmax']) : 99); + $file = ((x($_GET,'file')) ? $_GET['file'] : ''); if(($a->argc > 2) && $a->argv[2] === 'new') $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; if($cid) $def_acl = array('allow_cid' => '<' . intval($cid) . '>'); if(! $update) { - if(group) { + if($group) { 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.', 'Warning: This group contains %s members from an insecure network.', @@ -296,7 +302,7 @@ function network_content(&$a, $update = 0) { if($update) killme(); notice( t('No such group') . EOL ); - goaway($a->get_baseurl() . '/network'); + goaway($a->get_baseurl(true) . '/network'); // NOTREACHED } @@ -328,7 +334,7 @@ function network_content(&$a, $update = 0) { } else { notice( t('Invalid contact.') . EOL); - goaway($a->get_baseurl() . '/network'); + goaway($a->get_baseurl(true) . '/network'); // NOTREACHED } } @@ -358,6 +364,7 @@ function network_content(&$a, $update = 0) { . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '') . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '') . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : '') + . ((x($_GET,'file')) ? '&file=' . $_GET['file'] : '') . "'; var profile_page = " . $a->pager['page'] . "; \r\n"; } @@ -371,6 +378,9 @@ function network_content(&$a, $update = 0) { dbesc('\\]' . preg_quote($search) . '\\[') ); } + if(strlen($file)) { + $sql_extra .= file_tag_file_query('item',$file); + } if($conv) { $myurl = $a->get_baseurl() . '/profile/'. $a->user['nickname']; @@ -403,7 +413,8 @@ function network_content(&$a, $update = 0) { if(count($r)) { $a->set_pager_total($r[0]['total']); - $a->set_pager_itemspage(40); + $itemspage_network = get_pconfig(local_user(),'system','itemspage_network'); + $a->set_pager_itemspage(((intval($itemspage_network)) ? $itemspage_network : 40)); } $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage'])); } @@ -490,7 +501,9 @@ function network_content(&$a, $update = 0) { $items = conv_sort($items,$ordering); - } + } else { + $items = array(); + } } diff --git a/mod/notifications.php b/mod/notifications.php index 99031a1d59..d478b51634 100755 --- a/mod/notifications.php +++ b/mod/notifications.php @@ -42,12 +42,12 @@ function notifications_post(&$a) { intval(local_user()) ); } - goaway($a->get_baseurl() . '/notifications/intros'); + goaway($a->get_baseurl(true) . '/notifications/intros'); } if($_POST['submit'] == t('Ignore')) { $r = q("UPDATE `intro` SET `ignore` = 1 WHERE `id` = %d LIMIT 1", 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( array( 'label' => t('System'), - 'url'=>$a->get_baseurl() . '/notifications/system', + 'url'=>$a->get_baseurl(true) . '/notifications/system', 'sel'=> (($a->argv[1] == 'system') ? 'active' : ''), ), array( 'label' => t('Network'), - 'url'=>$a->get_baseurl() . '/notifications/network', + 'url'=>$a->get_baseurl(true) . '/notifications/network', 'sel'=> (($a->argv[1] == 'network') ? 'active' : ''), ), array( 'label' => t('Personal'), - 'url'=>$a->get_baseurl() . '/notifications/personal', + 'url'=>$a->get_baseurl(true) . '/notifications/personal', 'sel'=> (($a->argv[1] == 'personal') ? 'active' : ''), ), array( 'label' => t('Home'), - 'url' => $a->get_baseurl() . '/notifications/home', + 'url' => $a->get_baseurl(true) . '/notifications/home', 'sel'=> (($a->argv[1] == 'home') ? 'active' : ''), ), array( 'label' => t('Introductions'), - 'url' => $a->get_baseurl() . '/notifications/intros', + 'url' => $a->get_baseurl(true) . '/notifications/intros', 'sel'=> (($a->argv[1] == 'intros') ? 'active' : ''), ), array( 'label' => t('Messages'), - 'url' => $a->get_baseurl() . '/message', + 'url' => $a->get_baseurl(true) . '/message', 'sel'=> '', ), ); @@ -244,7 +244,7 @@ function notifications_content(&$a) { switch($it['verb']){ case ACTIVITY_LIKE: $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_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']), '$item_when' => relative_date($it['created']) @@ -253,7 +253,7 @@ function notifications_content(&$a) { case ACTIVITY_DISLIKE: $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_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']), '$item_when' => relative_date($it['created']) @@ -267,7 +267,7 @@ function notifications_content(&$a) { $it['fname'] = $obj->title; $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_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']), '$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); $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_text' => $item_text, '$item_when' => relative_date($it['created']) @@ -314,7 +314,7 @@ function notifications_content(&$a) { if (count($r) > 0) { foreach ($r as $it) { $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_text' => strip_tags(bbcode($it['msg'])), '$item_when' => relative_date($it['date']) @@ -334,7 +334,7 @@ function notifications_content(&$a) { $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 = str_replace(array('www.','.'),array('','\\.'),$myurl); $diasp_url = str_replace('/profile/','/u/',$myurl); @@ -369,7 +369,7 @@ function notifications_content(&$a) { switch($it['verb']){ case ACTIVITY_LIKE: $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_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']), '$item_when' => relative_date($it['created']) @@ -378,7 +378,7 @@ function notifications_content(&$a) { case ACTIVITY_DISLIKE: $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_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']), '$item_when' => relative_date($it['created']) @@ -392,7 +392,7 @@ function notifications_content(&$a) { $it['fname'] = $obj->title; $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_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']), '$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); $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_text' => $item_text, '$item_when' => relative_date($it['created']) @@ -456,7 +456,7 @@ function notifications_content(&$a) { switch($it['verb']){ case ACTIVITY_LIKE: $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_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']), '$item_when' => relative_date($it['created']) @@ -465,7 +465,7 @@ function notifications_content(&$a) { break; case ACTIVITY_DISLIKE: $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_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']), '$item_when' => relative_date($it['created']) @@ -479,7 +479,7 @@ function notifications_content(&$a) { $it['fname'] = $obj->title; $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_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']), '$item_when' => relative_date($it['created']) @@ -488,7 +488,7 @@ function notifications_content(&$a) { break; default: $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_text' => sprintf( t("%s commented on %s's post"), $it['author-name'], $it['pname']), '$item_when' => relative_date($it['created']) diff --git a/mod/notify.php b/mod/notify.php index a572b15344..ae8273a1d3 100644 --- a/mod/notify.php +++ b/mod/notify.php @@ -20,7 +20,7 @@ function notify_init(&$a) { 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' ) { @@ -51,7 +51,7 @@ function notify_content(&$a) { if (count($r) > 0) { foreach ($r as $it) { $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_text' => strip_tags(bbcode($it['msg'])), '$item_when' => relative_date($it['date']) diff --git a/mod/openid.php b/mod/openid.php index df074b299f..0be48060e6 100755 --- a/mod/openid.php +++ b/mod/openid.php @@ -10,6 +10,8 @@ function openid_content(&$a) { if($noid) goaway(z_root()); + logger('mod_openid ' . print_r($_REQUEST,true), LOGGER_DATA); + if((x($_GET,'openid_mode')) && (x($_SESSION,'openid'))) { $openid = new LightOpenID; @@ -54,11 +56,16 @@ function openid_content(&$a) { // NOTREACHED } + $authid = normalise_openid($_REQUEST['openid_identity']); + if(! strlen($authid)) + goaway(z_root()); + $r = q("SELECT `user`.*, `user`.`pubkey` as `upubkey`, `user`.`prvkey` as `uprvkey` FROM `user` WHERE `openid` = '%s' AND `blocked` = 0 AND `account_expired` = 0 AND `verified` = 1 LIMIT 1", - dbesc($_SESSION['openid']) + dbesc($authid) ); + if(! count($r)) { notice( t('Login failed.') . EOL ); goaway(z_root()); diff --git a/mod/parse_url.php b/mod/parse_url.php index e0b378f685..27dac4d5d3 100755 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -188,7 +188,7 @@ function parse_url_content(&$a) { if(! $text) { logger('parsing meta'); - $items = $domhead->getElementsByTagName('meta'); + $items = (isset($domhead) && is_object($domhead) ? $domhead->getElementsByTagName('meta') : null); if($items) { foreach($items as $item) { $property = $item->getAttribute('property'); diff --git a/mod/photos.php b/mod/photos.php index e40ae0d74a..b294f0a666 100755 --- a/mod/photos.php +++ b/mod/photos.php @@ -1081,6 +1081,17 @@ function photos_content(&$a) { } + if(! $cmd !== 'edit') { + $a->page['htmlhead'] .= ''; + } + if($prevlink) $prevlink = array($prevlink, '') ; diff --git a/mod/profile.php b/mod/profile.php index 1a701f4077..428679ffc5 100755 --- a/mod/profile.php +++ b/mod/profile.php @@ -27,7 +27,7 @@ function profile_init(&$a) { profile_load($a,$which,$profile); if((x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY)) { - $a->page['htmlhead'] .= ''; + $a->page['htmlhead'] .= ''; } if(x($a->profile,'openidserver')) $a->page['htmlhead'] .= '' . "\r\n"; diff --git a/mod/profile_photo.php b/mod/profile_photo.php index e3dbdaf39c..d1fd08eba6 100755 --- a/mod/profile_photo.php +++ b/mod/profile_photo.php @@ -15,11 +15,13 @@ function profile_photo_init(&$a) { function profile_photo_post(&$a) { - if(! local_user()) { - notice ( t('Permission denied.') . EOL ); - return; - } - + if(! local_user()) { + notice ( t('Permission denied.') . EOL ); + return; + } + + check_form_security_token_redirectOnErr('/profile_photo', 'profile_photo'); + if((x($_POST,'cropfinal')) && ($_POST['cropfinal'] == 1)) { // phase 2 - we have finished cropping @@ -148,7 +150,9 @@ function profile_photo_content(&$a) { notice( t('Permission denied.') . EOL ); return; }; - + + check_form_security_token_redirectOnErr('/profile_photo', 'profile_photo'); + $resource_id = $a->argv[2]; //die(":".local_user()); $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:'), '$title' => t('Upload Profile Photo'), '$submit' => t('Upload'), + '$form_security_token' => get_form_security_token("profile_photo"), '$select' => sprintf('%s %s', t('or'), ($newuser) ? '' . t('skip this step') . '' : '' . t('select a photo from your photo albums') . '') )); @@ -218,6 +223,7 @@ function profile_photo_content(&$a) { '$image_url' => $a->get_baseurl() . '/photo/' . $filename, '$title' => t('Crop Image'), '$desc' => t('Please adjust the image cropping for optimum viewing.'), + '$form_security_token' => get_form_security_token("profile_photo"), '$done' => t('Done Editing') )); return $o; diff --git a/mod/profiles.php b/mod/profiles.php index ccd7d54741..7b3b6ccc1e 100755 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -21,6 +21,9 @@ function profiles_post(&$a) { notice( t('Profile not found.') . EOL); return; } + + check_form_security_token_redirectOnErr('/profiles', 'profile_edit'); + $is_default = (($orig[0]['is-default']) ? 1 : 0); $profile_name = notags(trim($_POST['profile_name'])); @@ -237,9 +240,11 @@ function profiles_content(&$a) { ); if(! count($r)) { notice( t('Profile not found.') . EOL); - goaway($a->get_baseurl() . '/profiles'); + goaway($a->get_baseurl(true) . '/profiles'); return; // NOTREACHED } + + check_form_security_token_redirectOnErr('/profiles', 'profile_drop', 't'); // move every contact using this profile as their default to the user default @@ -255,7 +260,7 @@ function profiles_content(&$a) { if($r) info( t('Profile deleted.') . EOL); - goaway($a->get_baseurl() . '/profiles'); + goaway($a->get_baseurl(true) . '/profiles'); return; // NOTREACHED } @@ -264,6 +269,8 @@ function profiles_content(&$a) { 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", intval(local_user())); @@ -290,11 +297,14 @@ function profiles_content(&$a) { info( t('New profile created.') . EOL); if(count($r3) == 1) - goaway($a->get_baseurl() . '/profiles/' . $r3[0]['id']); - goaway($a->get_baseurl() . '/profiles'); - } + goaway($a->get_baseurl(true) . '/profiles/' . $r3[0]['id']); + + goaway($a->get_baseurl(true) . '/profiles'); + } 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", intval(local_user())); @@ -329,10 +339,12 @@ function profiles_content(&$a) { ); info( t('New profile created.') . EOL); if(count($r3) == 1) - goaway($a->get_baseurl() . '/profiles/' . $r3[0]['id']); - goaway($a->get_baseurl() . '/profiles'); - return; // NOTREACHED - } + goaway($a->get_baseurl(true) . '/profiles/' . $r3[0]['id']); + + goaway($a->get_baseurl(true) . '/profiles'); + + return; // NOTREACHED + } if(($a->argc > 1) && (intval($a->argv[1]))) { @@ -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'] .= ""; $f = get_config('system','birthday_input_format'); @@ -371,6 +383,9 @@ function profiles_content(&$a) { $is_default = (($r[0]['is-default']) ? 1 : 0); $tpl = get_markup_template("profile_edit.tpl"); $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'), '$submit' => t('Submit'), '$viewprof' => t('View this profile'), @@ -410,7 +425,7 @@ function profiles_content(&$a) { '$lbl_work' => t('Work/employment'), '$lbl_school' => t('School/education'), '$disabled' => (($is_default) ? 'onclick="return false;" style="color: #BBBBFF;"' : ''), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$profile_id' => $r[0]['id'], '$profile_name' => $r[0]['profile-name'], '$default' => (($is_default) ? '

                              ' . t('This is your public profile.
                              It may be visible to anybody using the internet.') . '

                              ' : ""), @@ -460,7 +475,8 @@ function profiles_content(&$a) { $o .= replace_macros($tpl_header,array( '$header' => t('Edit/Manage Profiles'), '$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'), '$profile_name' => $rr['profile-name'], '$visible' => (($rr['is-default']) ? '' . t('visible to everybody') . '' - : '' . t('Edit visibility') . '') + : '' . t('Edit visibility') . '') )); } } diff --git a/mod/settings.php b/mod/settings.php index a9d00bc981..59ede47297 100755 --- a/mod/settings.php +++ b/mod/settings.php @@ -53,16 +53,20 @@ function settings_post(&$a) { $old_page_flags = $a->user['page-flags']; if(($a->argc > 1) && ($a->argv[1] === 'oauth') && x($_POST,'remove')){ + check_form_security_token_redirectOnErr('/settings/oauth', 'settings_oauth'); + $key = $_POST['remove']; q("DELETE FROM tokens WHERE id='%s' AND uid=%d", dbesc($key), local_user()); - goaway($a->get_baseurl()."/settings/oauth/"); + goaway($a->get_baseurl(true)."/settings/oauth/"); return; } 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'] : ''); $key = ((x($_POST,'key')) ? $_POST['key'] : ''); $secret = ((x($_POST,'secret')) ? $_POST['secret'] : ''); @@ -100,18 +104,23 @@ function settings_post(&$a) { local_user()); } } - goaway($a->get_baseurl()."/settings/oauth/"); + goaway($a->get_baseurl(true)."/settings/oauth/"); return; } if(($a->argc > 1) && ($a->argv[1] == 'addon')) { + check_form_security_token_redirectOnErr('/settings/addon', 'settings_addon'); + call_hooks('plugin_settings_post', $_POST); return; } 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_port = ((x($_POST,'mail_port')) ? $_POST['mail_port'] : ''); $mail_ssl = ((x($_POST,'mail_ssl')) ? strtolower(trim($_POST['mail_ssl'])) : ''); @@ -185,7 +194,8 @@ function settings_post(&$a) { return; } - + check_form_security_token_redirectOnErr('/settings', 'settings'); + call_hooks('settings_post', $_POST); if((x($_POST,'npassword')) || (x($_POST,'confirm'))) { @@ -237,6 +247,10 @@ function settings_post(&$a) { if($browser_update < 10000) $browser_update = 40000; + $itemspage_network = ((x($_POST,'itemspage_network')) ? intval($_POST['itemspage_network']) : 40); + if($itemspage_network > 100) + $itemspage_network = 40; + $allow_location = (((x($_POST,'allow_location')) && (intval($_POST['allow_location']) == 1)) ? 1: 0); $publish = (((x($_POST,'profile_in_directory')) && (intval($_POST['profile_in_directory']) == 1)) ? 1: 0); @@ -308,6 +322,7 @@ function settings_post(&$a) { $str_contact_deny = perms2str($_POST['contact_deny']); $openidserver = $a->user['openidserver']; + $openid = normalise_openid($openid); // If openid has changed or if there's an openid but no openidserver, try and discover it. @@ -331,6 +346,7 @@ function settings_post(&$a) { set_pconfig(local_user(),'system','suggestme', $suggestme); set_pconfig(local_user(),'system','update_interval', $browser_update); + set_pconfig(local_user(),'system','itemspage_network', $itemspage_network); $r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', `allow_location` = %d, `theme` = '%s', `maxreq` = %d, `expire` = %d, `openidserver` = '%s', `blockwall` = %d, `hidewall` = %d, `blocktags` = %d WHERE `uid` = %d LIMIT 1", dbesc($username), @@ -396,7 +412,7 @@ function settings_post(&$a) { } - goaway($a->get_baseurl() . '/settings' ); + goaway($a->get_baseurl(true) . '/settings' ); return; // NOTREACHED } @@ -420,27 +436,27 @@ function settings_content(&$a) { $tabs = array( array( 'label' => t('Account settings'), - 'url' => $a->get_baseurl().'/settings', + 'url' => $a->get_baseurl(true).'/settings', 'sel' => (($a->argc == 1)?'active':''), ), array( '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':''), ), array( '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':''), ), array( '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':''), ), array( 'label' => t('Export personal data'), - 'url' => $a->get_baseurl() . '/uexport', + 'url' => $a->get_baseurl(true) . '/uexport', 'sel' => '' ) ); @@ -455,6 +471,7 @@ function settings_content(&$a) { if(($a->argc > 2) && ($a->argv[2] === 'add')) { $tpl = get_markup_template("settings_oauth_edit.tpl"); $o .= replace_macros($tpl, array( + '$form_security_token' => get_form_security_token("settings_oauth"), '$tabs' => $tabs, '$title' => t('Add application'), '$submit' => t('Submit'), @@ -481,6 +498,7 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_oauth_edit.tpl"); $o .= replace_macros($tpl, array( + '$form_security_token' => get_form_security_token("settings_oauth"), '$tabs' => $tabs, '$title' => t('Add application'), '$submit' => t('Update'), @@ -495,10 +513,12 @@ function settings_content(&$a) { } 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", dbesc($a->argv[3]), local_user()); - goaway($a->get_baseurl()."/settings/oauth/"); + goaway($a->get_baseurl(true)."/settings/oauth/"); return; } @@ -513,7 +533,8 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_oauth.tpl"); $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'), '$add' => t('Add application'), '$edit' => t('Edit'), @@ -539,6 +560,7 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_addons.tpl"); $o .= replace_macros($tpl, array( + '$form_security_token' => get_form_security_token("settings_addon"), '$title' => t('Plugin Settings'), '$tabs' => $tabs, '$settings_addons' => $settings_addons @@ -581,28 +603,28 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_connectors.tpl"); $o .= replace_macros($tpl, array( + '$form_security_token' => get_form_security_token("settings_connectors"), + '$title' => t('Connector Settings'), '$tabs' => $tabs, - '$diasp_enabled' => $diasp_enabled, - '$ostat_enabled' => $ostat_enabled, - - '$h_imap' => t('Email/Mailbox Setup'), - '$imap_desc' => t("If you wish to communicate with email contacts using this service \x28optional\x29, please specify how to connect to your mailbox."), - '$imap_lastcheck' => array('imap_lastcheck', t('Last successful email check:'), $mail_chk,''), - '$mail_disabled' => (($mail_disabled) ? t('Email access is disabled on this site.') : ''), - '$mail_server' => array('mail_server', t('IMAP server name:'), $mail_server, ''), - '$mail_port' => array('mail_port', t('IMAP port:'), $mail_port, ''), - '$mail_ssl' => array('mail_ssl', t('Security:'), strtoupper($mail_ssl), '', array( ''=>t('None'), 'TLS'=>'TLS', 'SSL'=>'SSL')), - '$mail_user' => array('mail_user', t('Email login name:'), $mail_user, ''), - '$mail_pass' => array('mail_pass', t('Email password:'), '', ''), - '$mail_replyto' => array('mail_replyto', t('Reply-to address:'), '', 'Optional'), - '$mail_pubmail' => array('mail_pubmail', t('Send public posts to all email contacts:'), $mail_pubmail, ''), - '$mail_action' => array('mail_action', t('Action after import:'), $mail_action, '', array(0=>t('None'), 1=>t('Delete'), 2=>t('Mark as seen'), 3=>t('Move to folder'))), - '$mail_movetofolder' => array('mail_movetofolder', t('Move to folder:'), $mail_movetofolder, ''), - '$submit' => t('Submit'), - + '$diasp_enabled' => $diasp_enabled, + '$ostat_enabled' => $ostat_enabled, + '$h_imap' => t('Email/Mailbox Setup'), + '$imap_desc' => t("If you wish to communicate with email contacts using this service \x28optional\x29, please specify how to connect to your mailbox."), + '$imap_lastcheck' => array('imap_lastcheck', t('Last successful email check:'), $mail_chk,''), + '$mail_disabled' => (($mail_disabled) ? t('Email access is disabled on this site.') : ''), + '$mail_server' => array('mail_server', t('IMAP server name:'), $mail_server, ''), + '$mail_port' => array('mail_port', t('IMAP port:'), $mail_port, ''), + '$mail_ssl' => array('mail_ssl', t('Security:'), strtoupper($mail_ssl), '', array( ''=>t('None'), 'TLS'=>'TLS', 'SSL'=>'SSL')), + '$mail_user' => array('mail_user', t('Email login name:'), $mail_user, ''), + '$mail_pass' => array('mail_pass', t('Email password:'), '', ''), + '$mail_replyto' => array('mail_replyto', t('Reply-to address:'), '', 'Optional'), + '$mail_pubmail' => array('mail_pubmail', t('Send public posts to all email contacts:'), $mail_pubmail, ''), + '$mail_action' => array('mail_action', t('Action after import:'), $mail_action, '', array(0=>t('None'), 1=>t('Delete'), 2=>t('Mark as seen'), 3=>t('Move to folder'))), + '$mail_movetofolder' => array('mail_movetofolder', t('Move to folder:'), $mail_movetofolder, ''), + '$submit' => t('Submit'), '$settings_connectors' => $settings_connectors )); @@ -631,23 +653,26 @@ function settings_content(&$a) { $blocktags = $a->user['blocktags']; $expire_items = get_pconfig(local_user(), 'expire','items'); - $expire_items = (($expire_items===false)?1:$expire_items); // default if not set: 1 + $expire_items = (($expire_items===false)? '1' : $expire_items); // default if not set: 1 $expire_notes = get_pconfig(local_user(), 'expire','notes'); - $expire_notes = (($expire_notes===false)?1:$expire_notes); // default if not set: 1 + $expire_notes = (($expire_notes===false)? '1' : $expire_notes); // default if not set: 1 $expire_starred = get_pconfig(local_user(), 'expire','starred'); - $expire_starred = (($expire_starred===false)?1:$expire_starred); // default if not set: 1 + $expire_starred = (($expire_starred===false)? '1' : $expire_starred); // default if not set: 1 $expire_photos = get_pconfig(local_user(), 'expire','photos'); - $expire_photos = (($expire_photos===false)?0:$expire_photos); // default if not set: 0 + $expire_photos = (($expire_photos===false)? '0' : $expire_photos); // default if not set: 0 $suggestme = get_pconfig(local_user(), 'system','suggestme'); - $suggestme = (($suggestme===false)?0:$suggestme); // default if not set: 0 + $suggestme = (($suggestme===false)? '0': $suggestme); // default if not set: 0 $browser_update = intval(get_pconfig(local_user(), 'system','update_interval')); $browser_update = (($browser_update == 0) ? 40 : $browser_update / 1000); // default if not set: 40 seconds + + $itemspage_network = intval(get_pconfig(local_user(), 'system','itemspage_network')); + $itemspage_network = (($itemspage_network > 0 && $itemspage_network < 101) ? $itemspage_network : 40); // default if not set: 40 items if(! strlen($a->user['timezone'])) $timezone = date_default_timezone_get(); @@ -712,13 +737,13 @@ function settings_content(&$a) { )); $blockwall = replace_macros($opt_tpl,array( - '$field' => array('blockwall', t('Allow friends to post to your profile page?'), ! $a->user['blockwall'], '', array(t('No'),t('Yes'))), + '$field' => array('blockwall', t('Allow friends to post to your profile page?'), (intval($a->user['blockwall']) ? '0' : '1'), '', array(t('No'),t('Yes'))), )); $blocktags = replace_macros($opt_tpl,array( - '$field' => array('blocktags', t('Allow friends to tag your posts?'), ! $a->user['blocktags'], '', array(t('No'),t('Yes'))), + '$field' => array('blocktags', t('Allow friends to tag your posts?'), (intval($a->user['blocktags']) ? '0' : '1'), '', array(t('No'),t('Yes'))), )); @@ -765,7 +790,7 @@ function settings_content(&$a) { $theme_selected = (!x($_SESSION,'theme')? $default_theme : $_SESSION['theme']); - $subdir = ((strlen($a->get_path())) ? '
                              ' . t('or') . ' ' . $a->get_baseurl() . '/profile/' . $nickname : ''); + $subdir = ((strlen($a->get_path())) ? '
                              ' . t('or') . ' ' . $a->get_baseurl(true) . '/profile/' . $nickname : ''); $tpl_addr = get_markup_template("settings_nick_set.tpl"); @@ -795,8 +820,9 @@ function settings_content(&$a) { '$ptitle' => t('Account Settings'), '$submit' => t('Submit'), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$uid' => local_user(), + '$form_security_token' => get_form_security_token("settings"), '$nickname_block' => $prof_addr, @@ -814,6 +840,7 @@ function settings_content(&$a) { '$allowloc' => array('allow_location', t('Use Browser Location:'), ($a->user['allow_location'] == 1), ''), '$theme' => array('theme', t('Display Theme:'), $theme_selected, '', $themes), '$ajaxint' => array('browser_update', t("Update browser every xx seconds"), $browser_update, t('Minimum of 10 seconds, no maximum')), + '$itemspage_network' => array('itemspage_network', t("Number of items to display on the network page:"), $itemspage_network, t('Maximum of 100 items')), '$h_prv' => t('Security and Privacy Settings'), diff --git a/mod/share.php b/mod/share.php index f6c025e3ce..47bb851a4f 100755 --- a/mod/share.php +++ b/mod/share.php @@ -17,7 +17,7 @@ function share_init(&$a) { $o = ''; if(local_user() && intval(get_pconfig(local_user(),'system','plaintext'))) { - $o .= '♲ [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']) $o .= '[b]' . $r[0]['title'] . '[/b]' . "\n"; $o .= $r[0]['body'] . "\n"; diff --git a/spec/dfrn-snap2.jpg b/spec/dfrn-snap2.jpg new file mode 100755 index 0000000000..ee00f5654c Binary files /dev/null and b/spec/dfrn-snap2.jpg differ diff --git a/spec/dfrn2.odt b/spec/dfrn2.odt new file mode 100755 index 0000000000..390fc4bb85 Binary files /dev/null and b/spec/dfrn2.odt differ diff --git a/spec/dfrn2.pdf b/spec/dfrn2.pdf new file mode 100755 index 0000000000..e46225f7e9 Binary files /dev/null and b/spec/dfrn2.pdf differ diff --git a/zot.txt b/spec/zot.txt similarity index 100% rename from zot.txt rename to spec/zot.txt diff --git a/tests/autoname_test.php b/tests/autoname_test.php new file mode 100755 index 0000000000..9dae920ca2 --- /dev/null +++ b/tests/autoname_test.php @@ -0,0 +1,73 @@ +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); + } +} \ No newline at end of file diff --git a/tests/contains_attribute_test.php b/tests/contains_attribute_test.php new file mode 100755 index 0000000000..b0bb06acfa --- /dev/null +++ b/tests/contains_attribute_test.php @@ -0,0 +1,51 @@ +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")); + } +} \ No newline at end of file diff --git a/tests/expand_acl_test.php b/tests/expand_acl_test.php new file mode 100755 index 0000000000..b516a3f14d --- /dev/null +++ b/tests/expand_acl_test.php @@ -0,0 +1,142 @@ +<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>"; + $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="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="assertEquals(array(), expand_acl($text)); + } + + /** + * test invalid input, open and close do not match + * + * TODO: should there be an exception? + */ + public function testExpandAclNoMatching1() { + $text=" invalid "; //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)); + } +} \ No newline at end of file diff --git a/tests/get_tags_test.php b/tests/get_tags_test.php new file mode 100644 index 0000000000..9051923be0 --- /dev/null +++ b/tests/get_tags_test.php @@ -0,0 +1,313 @@ +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)); + } +} \ No newline at end of file diff --git a/tests/xss_filter_test.php b/tests/xss_filter_test.php new file mode 100644 index 0000000000..d7dcf0472b --- /dev/null +++ b/tests/xss_filter_test.php @@ -0,0 +1,50 @@ +'; + + $validstring=notags($invalidstring); + $escapedString=escape_tags($invalidstring); + + $this->assertEquals('[submit type="button" onclick="alert(\'failed!\');" /]', $validstring); + $this->assertEquals("<submit type="button" onclick="alert('failed!');" />", $escapedString); + } + + /** + *xmlify and unxmlify + */ + public function testXmlify() { + $text="I want to break\n this!11!"; + $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 +} +?> diff --git a/update.php b/update.php index c29394b480..6a685a6ff0 100755 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ diff --git a/view/atom_feed.tpl b/view/atom_feed.tpl index 72cf8e4fd8..2feb547ee2 100755 --- a/view/atom_feed.tpl +++ b/view/atom_feed.tpl @@ -16,6 +16,7 @@ $hub $salmon + $community $feed_updated diff --git a/view/atom_feed_dfrn.tpl b/view/atom_feed_dfrn.tpl index 3d6bcc5b5a..0bae62b526 100755 --- a/view/atom_feed_dfrn.tpl +++ b/view/atom_feed_dfrn.tpl @@ -12,10 +12,11 @@ $feed_id $feed_title - Friendika + Friendica $hub $salmon + $community $feed_updated diff --git a/view/auto_request.tpl b/view/auto_request.tpl index 204fcf2475..2958397c92 100755 --- a/view/auto_request.tpl +++ b/view/auto_request.tpl @@ -7,8 +7,15 @@ $page_desc
                            • $friendica
                            • $diaspora $diasnote
                            • $statusnet
                            • +
                            • $emailnet

                            +

                            +$invite_desc +

                            +

                            +$desc +

                            diff --git a/view/cropbody.tpl b/view/cropbody.tpl index c9c0f84de1..b484d15bf7 100755 --- a/view/cropbody.tpl +++ b/view/cropbody.tpl @@ -40,6 +40,7 @@ $desc + diff --git a/view/de/messages.po b/view/de/messages.po index 33adc8c760..6aab0bf1b3 100644 --- a/view/de/messages.po +++ b/view/de/messages.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: http://bugs.friendica.com/\n" -"POT-Creation-Date: 2012-02-24 22:44-0800\n" -"PO-Revision-Date: 2012-02-28 20:51+0000\n" +"POT-Creation-Date: 2012-03-06 15:09-0800\n" +"PO-Revision-Date: 2012-03-07 20:47+0000\n" "Last-Translator: greeneyedred \n" "Language-Team: German (http://www.transifex.net/projects/p/friendica/language/de/)\n" "MIME-Version: 1.0\n" @@ -48,8 +48,8 @@ msgstr "Konnte den Kontakt nicht aktualisieren." #: ../../mod/api.php:31 ../../mod/photos.php:129 ../../mod/photos.php:865 #: ../../mod/editpost.php:10 ../../mod/install.php:171 #: ../../mod/notifications.php:62 ../../mod/contacts.php:125 -#: ../../mod/settings.php:49 ../../mod/settings.php:404 -#: ../../mod/settings.php:409 ../../mod/manage.php:86 ../../mod/network.php:6 +#: ../../mod/settings.php:49 ../../mod/settings.php:411 +#: ../../mod/settings.php:416 ../../mod/manage.php:86 ../../mod/network.php:6 #: ../../mod/notes.php:20 ../../mod/attach.php:33 ../../mod/group.php:19 #: ../../mod/viewcontacts.php:22 ../../mod/register.php:36 #: ../../mod/regmod.php:111 ../../mod/item.php:124 ../../mod/item.php:140 @@ -57,11 +57,11 @@ msgstr "Konnte den Kontakt nicht aktualisieren." #: ../../mod/profile_photo.php:148 ../../mod/profile_photo.php:159 #: ../../mod/message.php:9 ../../mod/message.php:46 ../../mod/allfriends.php:9 #: ../../mod/wall_upload.php:42 ../../mod/follow.php:8 ../../mod/common.php:9 -#: ../../mod/display.php:130 ../../mod/profiles.php:7 +#: ../../mod/display.php:133 ../../mod/profiles.php:7 #: ../../mod/profiles.php:229 ../../mod/delegate.php:6 #: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81 #: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:332 -#: ../../include/items.php:2968 ../../index.php:288 +#: ../../include/items.php:3030 ../../index.php:288 msgid "Permission denied." msgstr "Zugriff verweigert." @@ -90,8 +90,8 @@ msgstr "Bitte nutze den Zurück-Button deines Browsers jetzt, w msgid "Return to contact editor" msgstr "Zurück zum Kontakteditor" -#: ../../mod/crepair.php:148 ../../mod/settings.php:455 -#: ../../mod/settings.php:481 ../../mod/admin.php:480 ../../mod/admin.php:489 +#: ../../mod/crepair.php:148 ../../mod/settings.php:462 +#: ../../mod/settings.php:488 ../../mod/admin.php:484 ../../mod/admin.php:493 msgid "Name" msgstr "Name" @@ -133,18 +133,18 @@ msgstr "Neues Foto von dieser URL" #: ../../mod/photos.php:1262 ../../mod/photos.php:1293 #: ../../mod/install.php:251 ../../mod/install.php:289 #: ../../mod/localtime.php:45 ../../mod/contacts.php:319 -#: ../../mod/settings.php:453 ../../mod/settings.php:592 -#: ../../mod/settings.php:786 ../../mod/manage.php:109 ../../mod/group.php:84 -#: ../../mod/group.php:167 ../../mod/admin.php:312 ../../mod/admin.php:477 -#: ../../mod/admin.php:603 ../../mod/admin.php:769 ../../mod/admin.php:847 -#: ../../mod/profiles.php:375 ../../mod/invite.php:106 -#: ../../addon/facebook/facebook.php:411 ../../addon/yourls/yourls.php:76 +#: ../../mod/settings.php:460 ../../mod/settings.php:603 +#: ../../mod/settings.php:797 ../../mod/manage.php:109 ../../mod/group.php:80 +#: ../../mod/admin.php:313 ../../mod/admin.php:481 ../../mod/admin.php:609 +#: ../../mod/admin.php:776 ../../mod/admin.php:856 ../../mod/profiles.php:375 +#: ../../mod/invite.php:106 ../../addon/facebook/facebook.php:411 +#: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:92 #: ../../addon/nsfw/nsfw.php:57 #: ../../addon/uhremotestorage/uhremotestorage.php:89 -#: ../../addon/randplace/randplace.php:179 ../../addon/drpost/drpost.php:110 -#: ../../addon/geonames/geonames.php:187 ../../addon/oembed.old/oembed.php:41 -#: ../../addon/impressum/impressum.php:69 ../../addon/blockem/blockem.php:57 -#: ../../addon/qcomment/qcomment.php:60 +#: ../../addon/randplace/randplace.php:179 ../../addon/dwpost/dwpost.php:92 +#: ../../addon/drpost/drpost.php:110 ../../addon/geonames/geonames.php:187 +#: ../../addon/oembed.old/oembed.php:41 ../../addon/impressum/impressum.php:69 +#: ../../addon/blockem/blockem.php:57 ../../addon/qcomment/qcomment.php:61 #: ../../addon/openstreetmap/openstreetmap.php:70 #: ../../addon/editplain/editplain.php:84 ../../addon/blackout/blackout.php:94 #: ../../addon/pageheader/pageheader.php:52 @@ -154,11 +154,12 @@ msgstr "Neues Foto von dieser URL" #: ../../addon/statusnet/statusnet.php:320 #: ../../addon/statusnet/statusnet.php:345 #: ../../addon/statusnet/statusnet.php:532 ../../addon/tumblr/tumblr.php:90 -#: ../../addon/numfriends/numfriends.php:85 ../../addon/wppost/wppost.php:102 -#: ../../addon/showmore/showmore.php:48 ../../addon/piwik/piwik.php:89 -#: ../../addon/twitter/twitter.php:175 ../../addon/twitter/twitter.php:201 -#: ../../addon/twitter/twitter.php:355 ../../addon/posterous/posterous.php:90 -#: ../../include/conversation.php:542 +#: ../../addon/numfriends/numfriends.php:85 ../../addon/gnot/gnot.php:88 +#: ../../addon/wppost/wppost.php:102 ../../addon/showmore/showmore.php:48 +#: ../../addon/piwik/piwik.php:89 ../../addon/twitter/twitter.php:175 +#: ../../addon/twitter/twitter.php:201 ../../addon/twitter/twitter.php:355 +#: ../../addon/posterous/posterous.php:90 +#: ../../view/theme/quattro/theme.php:15 ../../include/conversation.php:552 msgid "Submit" msgstr "Senden" @@ -212,7 +213,7 @@ msgstr "l, F j" msgid "Edit event" msgstr "Veranstaltung bearbeiten" -#: ../../mod/events.php:272 ../../include/text.php:964 +#: ../../mod/events.php:272 ../../include/text.php:982 msgid "link to source" msgstr "Link zum Originalbeitrag" @@ -266,7 +267,7 @@ msgid "Description:" msgstr "Beschreibung" #: ../../mod/events.php:395 ../../include/event.php:37 -#: ../../include/bb2diaspora.php:290 ../../boot.php:980 +#: ../../include/bb2diaspora.php:260 ../../boot.php:980 msgid "Location:" msgstr "Ort:" @@ -275,8 +276,8 @@ msgid "Share this event" msgstr "Veranstaltung teilen" #: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94 -#: ../../mod/dfrn_request.php:686 ../../mod/settings.php:454 -#: ../../mod/settings.php:480 ../../addon/js_upload/js_upload.php:45 +#: ../../mod/dfrn_request.php:686 ../../mod/settings.php:461 +#: ../../mod/settings.php:487 ../../addon/js_upload/js_upload.php:45 msgid "Cancel" msgstr "Abbrechen" @@ -320,23 +321,23 @@ msgid "" msgstr "Möchtest du dieser Anwendung den Zugriff auf deine Beiträge und Kontakte, sowie das Erstellen neuer Beiträge in deinem Namen gestatten?" #: ../../mod/api.php:105 ../../mod/dfrn_request.php:676 -#: ../../mod/settings.php:681 ../../mod/settings.php:687 -#: ../../mod/settings.php:695 ../../mod/settings.php:699 -#: ../../mod/settings.php:704 ../../mod/settings.php:710 -#: ../../mod/settings.php:716 ../../mod/settings.php:776 -#: ../../mod/settings.php:777 ../../mod/settings.php:778 -#: ../../mod/settings.php:779 ../../mod/register.php:524 +#: ../../mod/settings.php:692 ../../mod/settings.php:698 +#: ../../mod/settings.php:706 ../../mod/settings.php:710 +#: ../../mod/settings.php:715 ../../mod/settings.php:721 +#: ../../mod/settings.php:727 ../../mod/settings.php:787 +#: ../../mod/settings.php:788 ../../mod/settings.php:789 +#: ../../mod/settings.php:790 ../../mod/register.php:524 #: ../../mod/profiles.php:357 msgid "Yes" msgstr "Ja" #: ../../mod/api.php:106 ../../mod/dfrn_request.php:677 -#: ../../mod/settings.php:681 ../../mod/settings.php:687 -#: ../../mod/settings.php:695 ../../mod/settings.php:699 -#: ../../mod/settings.php:704 ../../mod/settings.php:710 -#: ../../mod/settings.php:716 ../../mod/settings.php:776 -#: ../../mod/settings.php:777 ../../mod/settings.php:778 -#: ../../mod/settings.php:779 ../../mod/register.php:525 +#: ../../mod/settings.php:692 ../../mod/settings.php:698 +#: ../../mod/settings.php:706 ../../mod/settings.php:710 +#: ../../mod/settings.php:715 ../../mod/settings.php:721 +#: ../../mod/settings.php:727 ../../mod/settings.php:787 +#: ../../mod/settings.php:788 ../../mod/settings.php:789 +#: ../../mod/settings.php:790 ../../mod/register.php:525 #: ../../mod/profiles.php:358 msgid "No" msgstr "Nein" @@ -390,7 +391,7 @@ msgid "was tagged in a" msgstr "wurde getaggt in einem" #: ../../mod/photos.php:528 ../../mod/like.php:127 ../../mod/tagger.php:70 -#: ../../addon/communityhome/communityhome.php:163 +#: ../../addon/communityhome/communityhome.php:163 ../../include/text.php:1226 #: ../../include/diaspora.php:1600 ../../include/conversation.php:53 #: ../../include/conversation.php:126 msgid "photo" @@ -480,7 +481,7 @@ msgstr "Foto bearbeiten" msgid "Use as profile photo" msgstr "Als Profilbild verwenden" -#: ../../mod/photos.php:1078 ../../include/conversation.php:472 +#: ../../mod/photos.php:1078 ../../include/conversation.php:482 msgid "Private Message" msgstr "Private Nachricht" @@ -513,44 +514,44 @@ msgid "" "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgstr "Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" -#: ../../mod/photos.php:1200 ../../include/conversation.php:519 +#: ../../mod/photos.php:1200 ../../include/conversation.php:529 msgid "I like this (toggle)" msgstr "Ich mag das (toggle)" -#: ../../mod/photos.php:1201 ../../include/conversation.php:520 +#: ../../mod/photos.php:1201 ../../include/conversation.php:530 msgid "I don't like this (toggle)" msgstr "Ich mag das nicht (toggle)" -#: ../../mod/photos.php:1202 ../../include/conversation.php:914 +#: ../../mod/photos.php:1202 ../../include/conversation.php:933 msgid "Share" msgstr "Teilen" #: ../../mod/photos.php:1203 ../../mod/editpost.php:104 #: ../../mod/message.php:155 ../../mod/message.php:296 -#: ../../include/conversation.php:343 ../../include/conversation.php:677 -#: ../../include/conversation.php:931 +#: ../../include/conversation.php:348 ../../include/conversation.php:694 +#: ../../include/conversation.php:950 msgid "Please wait" msgstr "Bitte warten" #: ../../mod/photos.php:1219 ../../mod/photos.php:1259 -#: ../../mod/photos.php:1290 ../../include/conversation.php:539 +#: ../../mod/photos.php:1290 ../../include/conversation.php:549 msgid "This is you" msgstr "Das bist du" #: ../../mod/photos.php:1221 ../../mod/photos.php:1261 -#: ../../mod/photos.php:1292 ../../include/conversation.php:541 +#: ../../mod/photos.php:1292 ../../include/conversation.php:551 #: ../../boot.php:447 msgid "Comment" msgstr "Kommentar" #: ../../mod/photos.php:1223 ../../mod/editpost.php:123 -#: ../../include/conversation.php:543 ../../include/conversation.php:949 +#: ../../include/conversation.php:553 ../../include/conversation.php:968 msgid "Preview" msgstr "Vorschau" -#: ../../mod/photos.php:1320 ../../mod/settings.php:513 -#: ../../mod/group.php:154 ../../mod/admin.php:484 -#: ../../include/conversation.php:302 ../../include/conversation.php:563 +#: ../../mod/photos.php:1320 ../../mod/settings.php:520 +#: ../../mod/settings.php:601 ../../mod/group.php:158 ../../mod/admin.php:488 +#: ../../include/conversation.php:304 ../../include/conversation.php:573 msgid "Delete" msgstr "Löschen" @@ -614,26 +615,26 @@ msgstr "Beitrag nicht gefunden" msgid "Edit post" msgstr "Beitrag bearbeiten" -#: ../../mod/editpost.php:80 ../../include/conversation.php:900 +#: ../../mod/editpost.php:80 ../../include/conversation.php:919 msgid "Post to Email" msgstr "An E-Mail senden" -#: ../../mod/editpost.php:95 ../../mod/settings.php:512 -#: ../../include/conversation.php:550 +#: ../../mod/editpost.php:95 ../../mod/settings.php:519 +#: ../../include/conversation.php:560 msgid "Edit" msgstr "Bearbeiten" #: ../../mod/editpost.php:96 ../../mod/message.php:153 -#: ../../mod/message.php:294 ../../include/conversation.php:915 +#: ../../mod/message.php:294 ../../include/conversation.php:934 msgid "Upload photo" msgstr "Foto hochladen" -#: ../../mod/editpost.php:97 ../../include/conversation.php:917 +#: ../../mod/editpost.php:97 ../../include/conversation.php:936 msgid "Attach file" msgstr "Datei anhängen" #: ../../mod/editpost.php:98 ../../mod/message.php:154 -#: ../../mod/message.php:295 ../../include/conversation.php:919 +#: ../../mod/message.php:295 ../../include/conversation.php:938 msgid "Insert web link" msgstr "Weblink einfügen" @@ -649,31 +650,31 @@ msgstr "Vorbis [.ogg] Video einfügen" msgid "Insert Vorbis [.ogg] audio" msgstr "Vorbis [.ogg] Audio einfügen" -#: ../../mod/editpost.php:102 ../../include/conversation.php:925 +#: ../../mod/editpost.php:102 ../../include/conversation.php:944 msgid "Set your location" msgstr "Deinen Standort festlegen" -#: ../../mod/editpost.php:103 ../../include/conversation.php:927 +#: ../../mod/editpost.php:103 ../../include/conversation.php:946 msgid "Clear browser location" msgstr "Browser-Standort leeren" -#: ../../mod/editpost.php:105 ../../include/conversation.php:932 +#: ../../mod/editpost.php:105 ../../include/conversation.php:951 msgid "Permission settings" msgstr "Berechtigungseinstellungen" -#: ../../mod/editpost.php:113 ../../include/conversation.php:941 +#: ../../mod/editpost.php:113 ../../include/conversation.php:960 msgid "CC: email addresses" msgstr "Cc:-E-Mail-Addressen" -#: ../../mod/editpost.php:114 ../../include/conversation.php:942 +#: ../../mod/editpost.php:114 ../../include/conversation.php:961 msgid "Public post" msgstr "Öffentlicher Beitrag" -#: ../../mod/editpost.php:117 ../../include/conversation.php:930 +#: ../../mod/editpost.php:117 ../../include/conversation.php:949 msgid "Set title" msgstr "Titel setzen" -#: ../../mod/editpost.php:118 ../../include/conversation.php:944 +#: ../../mod/editpost.php:118 ../../include/conversation.php:963 msgid "Example: bob@example.com, mary@example.com" msgstr "Z.B.: bob@example.com, mary@example.com" @@ -782,7 +783,7 @@ msgstr "Bitte bestätige deine Kontaktanfrage bei %s." msgid "Confirm" msgstr "Bestätigen" -#: ../../mod/dfrn_request.php:582 ../../include/items.php:2504 +#: ../../mod/dfrn_request.php:582 ../../include/items.php:2566 msgid "[Name Withheld]" msgstr "[Name unterdrückt]" @@ -830,7 +831,7 @@ msgstr "Friendica" msgid "StatusNet/Federated Social Web" msgstr "StatusNet/Federated Social Web" -#: ../../mod/dfrn_request.php:682 ../../mod/settings.php:548 +#: ../../mod/dfrn_request.php:682 ../../mod/settings.php:555 #: ../../include/contact_selectors.php:80 msgid "Diaspora" msgstr "Diaspora" @@ -1093,7 +1094,7 @@ msgid "Errors encountered creating database tables." msgstr "Fehler aufgetreten während der Erzeugung der Datenbanktabellen." #: ../../mod/localtime.php:12 ../../include/event.php:11 -#: ../../include/bb2diaspora.php:268 +#: ../../include/bb2diaspora.php:238 msgid "l F d, Y \\@ g:i A" msgstr "l F d, Y \\@ g:i A" @@ -1236,7 +1237,7 @@ msgid "if applicable" msgstr "falls anwendbar" #: ../../mod/notifications.php:153 ../../mod/notifications.php:200 -#: ../../mod/admin.php:482 +#: ../../mod/admin.php:486 msgid "Approve" msgstr "Genehmigen" @@ -1321,11 +1322,11 @@ msgstr "Keine weiteren Netzwerk-Benachrichtigungen." msgid "Network Notifications" msgstr "Netzwerk Benachrichtigungen" -#: ../../mod/notifications.php:324 ../../mod/notify.php:59 +#: ../../mod/notifications.php:324 ../../mod/notify.php:61 msgid "No more system notifications." msgstr "Keine weiteren System Benachrichtigungen." -#: ../../mod/notifications.php:328 ../../mod/notify.php:63 +#: ../../mod/notifications.php:328 ../../mod/notify.php:65 msgid "System Notifications" msgstr "System Benachrichtigungen" @@ -1433,12 +1434,12 @@ msgid "View all contacts" msgstr "Alle Kontakte anzeigen" #: ../../mod/contacts.php:297 ../../mod/contacts.php:344 -#: ../../mod/admin.php:486 +#: ../../mod/admin.php:490 msgid "Unblock" msgstr "Entsperren" #: ../../mod/contacts.php:297 ../../mod/contacts.php:344 -#: ../../mod/admin.php:485 +#: ../../mod/admin.php:489 msgid "Block" msgstr "Sperren" @@ -1507,7 +1508,7 @@ msgstr "letzte Aktualisierung:" msgid "Update public posts" msgstr "Öffentliche Beiträge aktualisieren" -#: ../../mod/contacts.php:341 ../../mod/admin.php:896 +#: ../../mod/contacts.php:341 ../../mod/admin.php:905 msgid "Update now" msgstr "Jetzt aktualisieren" @@ -1524,7 +1525,7 @@ msgid "" "Replies/likes to your public posts may still be visible" msgstr "Antworten/Likes auf deine öffentlichen Beiträge könnten weiterhin sichtbar sein" -#: ../../mod/contacts.php:399 ../../mod/group.php:194 +#: ../../mod/contacts.php:399 ../../mod/group.php:179 msgid "All Contacts" msgstr "Alle Kontakte" @@ -1557,23 +1558,23 @@ msgid "you are a fan of" msgstr "du bist Fan von" #: ../../mod/contacts.php:498 ../../include/Contact.php:135 -#: ../../include/conversation.php:773 +#: ../../include/conversation.php:792 msgid "Edit contact" msgstr "Kontakt bearbeiten" -#: ../../mod/contacts.php:518 ../../include/nav.php:132 +#: ../../mod/contacts.php:519 ../../include/nav.php:132 msgid "Contacts" msgstr "Kontakte" -#: ../../mod/contacts.php:522 +#: ../../mod/contacts.php:523 msgid "Search your contacts" msgstr "Suche in deinen Kontakten" -#: ../../mod/contacts.php:523 ../../mod/directory.php:67 +#: ../../mod/contacts.php:524 ../../mod/directory.php:67 msgid "Finding: " msgstr "Funde: " -#: ../../mod/contacts.php:524 ../../mod/directory.php:69 +#: ../../mod/contacts.php:525 ../../mod/directory.php:69 #: ../../include/contact_widgets.php:34 msgid "Find" msgstr "Finde" @@ -1593,8 +1594,8 @@ msgstr "Anfrage zum Zurücksetzen des Passworts auf %s erhalten" #: ../../mod/lostpass.php:44 ../../mod/lostpass.php:106 #: ../../mod/register.php:380 ../../mod/register.php:434 -#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:716 -#: ../../include/items.php:2513 +#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:726 +#: ../../include/items.php:2575 msgid "Administrator" msgstr "Administrator" @@ -1648,429 +1649,445 @@ msgstr "Spitzname oder Email:" msgid "Reset" msgstr "Zurücksetzen" -#: ../../mod/settings.php:70 +#: ../../mod/settings.php:72 msgid "Missing some important data!" msgstr "Wichtige Daten fehlen!" -#: ../../mod/settings.php:73 ../../mod/settings.php:479 ../../mod/admin.php:75 +#: ../../mod/settings.php:75 ../../mod/settings.php:486 ../../mod/admin.php:75 msgid "Update" msgstr "Aktualisierungen" -#: ../../mod/settings.php:168 +#: ../../mod/settings.php:175 msgid "Failed to connect with email account using the settings provided." msgstr "Konnte das Email Konto mit den angegebenen Einstellungen nicht erreichen." -#: ../../mod/settings.php:173 +#: ../../mod/settings.php:180 msgid "Email settings updated." msgstr "EMail Einstellungen bearbeitet." -#: ../../mod/settings.php:191 +#: ../../mod/settings.php:198 msgid "Passwords do not match. Password unchanged." msgstr "Die Passwörter stimmen nicht überein. Das Passwort bleibt unverändert." -#: ../../mod/settings.php:196 +#: ../../mod/settings.php:203 msgid "Empty passwords are not allowed. Password unchanged." msgstr "Leere Passwörter sind nicht erlaubt. Passwort bleibt unverändert." -#: ../../mod/settings.php:207 +#: ../../mod/settings.php:214 msgid "Password changed." msgstr "Passwort ändern." -#: ../../mod/settings.php:209 +#: ../../mod/settings.php:216 msgid "Password update failed. Please try again." msgstr "Aktualisierung des Passworts gescheitert, bitte versuche es noch einmal." -#: ../../mod/settings.php:273 +#: ../../mod/settings.php:280 msgid " Please use a shorter name." msgstr " Bitte verwende einen kürzeren Namen." -#: ../../mod/settings.php:275 +#: ../../mod/settings.php:282 msgid " Name too short." msgstr " Name ist zu kurz." -#: ../../mod/settings.php:281 +#: ../../mod/settings.php:288 msgid " Not valid email." msgstr " Keine gültige E-Mail." -#: ../../mod/settings.php:283 +#: ../../mod/settings.php:290 msgid " Cannot change to that email." msgstr "Ändern der E-Mail nicht möglich. " -#: ../../mod/settings.php:351 ../../addon/facebook/facebook.php:321 +#: ../../mod/settings.php:358 ../../addon/facebook/facebook.php:321 #: ../../addon/impressum/impressum.php:64 #: ../../addon/openstreetmap/openstreetmap.php:80 #: ../../addon/piwik/piwik.php:105 ../../addon/twitter/twitter.php:350 msgid "Settings updated." msgstr "Einstellungen aktualisiert." -#: ../../mod/settings.php:415 ../../include/nav.php:130 +#: ../../mod/settings.php:422 ../../include/nav.php:130 msgid "Account settings" msgstr "Account Einstellungen" -#: ../../mod/settings.php:420 +#: ../../mod/settings.php:427 msgid "Connector settings" msgstr "Connector-Einstellungen" -#: ../../mod/settings.php:425 +#: ../../mod/settings.php:432 msgid "Plugin settings" msgstr "Plugin-Einstellungen" -#: ../../mod/settings.php:430 +#: ../../mod/settings.php:437 msgid "Connections" msgstr "Verbindungen" -#: ../../mod/settings.php:435 +#: ../../mod/settings.php:442 msgid "Export personal data" msgstr "Persönliche Daten exportieren" -#: ../../mod/settings.php:452 ../../mod/settings.php:478 -#: ../../mod/settings.php:511 +#: ../../mod/settings.php:459 ../../mod/settings.php:485 +#: ../../mod/settings.php:518 msgid "Add application" msgstr "Programm hinzufügen" -#: ../../mod/settings.php:456 ../../mod/settings.php:482 +#: ../../mod/settings.php:463 ../../mod/settings.php:489 #: ../../addon/statusnet/statusnet.php:526 msgid "Consumer Key" msgstr "Consumer Key" -#: ../../mod/settings.php:457 ../../mod/settings.php:483 +#: ../../mod/settings.php:464 ../../mod/settings.php:490 #: ../../addon/statusnet/statusnet.php:525 msgid "Consumer Secret" msgstr "Consumer Secret" -#: ../../mod/settings.php:458 ../../mod/settings.php:484 +#: ../../mod/settings.php:465 ../../mod/settings.php:491 msgid "Redirect" msgstr "Umleiten" -#: ../../mod/settings.php:459 ../../mod/settings.php:485 +#: ../../mod/settings.php:466 ../../mod/settings.php:492 msgid "Icon url" msgstr "Icon URL" -#: ../../mod/settings.php:470 +#: ../../mod/settings.php:477 msgid "You can't edit this application." msgstr "Du kannst dieses Programm nicht bearbeiten." -#: ../../mod/settings.php:510 +#: ../../mod/settings.php:517 msgid "Connected Apps" msgstr "Verbundene Programme" -#: ../../mod/settings.php:514 +#: ../../mod/settings.php:521 msgid "Client key starts with" msgstr "Anwender Schlüssel beginnt mit" -#: ../../mod/settings.php:515 +#: ../../mod/settings.php:522 msgid "No name" msgstr "Kein Name" -#: ../../mod/settings.php:516 +#: ../../mod/settings.php:523 msgid "Remove authorization" msgstr "Autorisierung entziehen" -#: ../../mod/settings.php:528 +#: ../../mod/settings.php:535 msgid "No Plugin settings configured" msgstr "Keine Plugin-Einstellungen konfiguriert" -#: ../../mod/settings.php:535 ../../addon/widgets/widgets.php:122 +#: ../../mod/settings.php:542 ../../addon/widgets/widgets.php:122 msgid "Plugin Settings" msgstr "Plugin-Einstellungen" -#: ../../mod/settings.php:548 ../../mod/settings.php:549 +#: ../../mod/settings.php:555 ../../mod/settings.php:556 #, php-format msgid "Built-in support for %s connectivity is %s" msgstr "Eingebaute Unterstützung für Verbindungen zu %s ist %s" -#: ../../mod/settings.php:548 ../../mod/settings.php:549 +#: ../../mod/settings.php:555 ../../mod/settings.php:556 msgid "enabled" msgstr "eingeschaltet" -#: ../../mod/settings.php:548 ../../mod/settings.php:549 +#: ../../mod/settings.php:555 ../../mod/settings.php:556 msgid "disabled" msgstr "ausgeschaltet" -#: ../../mod/settings.php:549 +#: ../../mod/settings.php:556 msgid "StatusNet" msgstr "StatusNet" -#: ../../mod/settings.php:575 +#: ../../mod/settings.php:584 msgid "Connector Settings" msgstr "Verbindungs-Einstellungen" -#: ../../mod/settings.php:581 +#: ../../mod/settings.php:590 msgid "Email/Mailbox Setup" msgstr "E-Mail/Postfach-Einstellungen" -#: ../../mod/settings.php:582 +#: ../../mod/settings.php:591 msgid "" "If you wish to communicate with email contacts using this service " "(optional), please specify how to connect to your mailbox." msgstr "Wenn du mit E-Mail-Kontakten über diesen Service kommunizieren möchtest (optional), gib bitte die Einstellungen für dein Postfach an." -#: ../../mod/settings.php:583 +#: ../../mod/settings.php:592 msgid "Last successful email check:" msgstr "Letzter erfolgreicher Email Check" -#: ../../mod/settings.php:584 +#: ../../mod/settings.php:593 msgid "Email access is disabled on this site." msgstr "Zugriff auf E-Mails für diese Seite deaktiviert." -#: ../../mod/settings.php:585 +#: ../../mod/settings.php:594 msgid "IMAP server name:" msgstr "IMAP-Server-Name:" -#: ../../mod/settings.php:586 +#: ../../mod/settings.php:595 msgid "IMAP port:" msgstr "IMAP-Port:" -#: ../../mod/settings.php:587 +#: ../../mod/settings.php:596 msgid "Security:" msgstr "Sicherheit:" -#: ../../mod/settings.php:587 +#: ../../mod/settings.php:596 ../../mod/settings.php:601 msgid "None" msgstr "Keine" -#: ../../mod/settings.php:588 +#: ../../mod/settings.php:597 msgid "Email login name:" msgstr "E-Mail-Login-Name:" -#: ../../mod/settings.php:589 +#: ../../mod/settings.php:598 msgid "Email password:" msgstr "E-Mail-Passwort:" -#: ../../mod/settings.php:590 +#: ../../mod/settings.php:599 msgid "Reply-to address:" msgstr "Reply-to Adresse:" -#: ../../mod/settings.php:591 +#: ../../mod/settings.php:600 msgid "Send public posts to all email contacts:" msgstr "Sende öffentliche Beiträge an alle E-Mail-Kontakte:" -#: ../../mod/settings.php:648 ../../mod/admin.php:142 ../../mod/admin.php:459 +#: ../../mod/settings.php:601 +msgid "Action after import:" +msgstr "Aktion nach Import:" + +#: ../../mod/settings.php:601 +msgid "Mark as seen" +msgstr "Als gelesen markieren" + +#: ../../mod/settings.php:601 +msgid "Move to folder" +msgstr "In einen Ordner verschieben" + +#: ../../mod/settings.php:602 +msgid "Move to folder:" +msgstr "In diesen Ordner verschieben:" + +#: ../../mod/settings.php:659 ../../mod/admin.php:142 ../../mod/admin.php:462 msgid "Normal Account" msgstr "Normaler Account" -#: ../../mod/settings.php:649 +#: ../../mod/settings.php:660 msgid "This account is a normal personal profile" msgstr "Dieser Account ist ein normales persönliches Profil" -#: ../../mod/settings.php:652 ../../mod/admin.php:143 ../../mod/admin.php:460 +#: ../../mod/settings.php:663 ../../mod/admin.php:143 ../../mod/admin.php:463 msgid "Soapbox Account" msgstr "Sandkasten-Account" -#: ../../mod/settings.php:653 +#: ../../mod/settings.php:664 msgid "Automatically approve all connection/friend requests as read-only fans" msgstr "Freundschaftsanfragen werden automatisch als Nurlese-Fans akzeptiert" -#: ../../mod/settings.php:656 ../../mod/admin.php:144 ../../mod/admin.php:461 +#: ../../mod/settings.php:667 ../../mod/admin.php:144 ../../mod/admin.php:464 msgid "Community/Celebrity Account" msgstr "Gemeinschafts/Promi-Account" -#: ../../mod/settings.php:657 +#: ../../mod/settings.php:668 msgid "" "Automatically approve all connection/friend requests as read-write fans" msgstr "Freundschaftsanfragen werden automatisch als Lese-und-Schreib-Fans akzeptiert" -#: ../../mod/settings.php:660 ../../mod/admin.php:145 ../../mod/admin.php:462 +#: ../../mod/settings.php:671 ../../mod/admin.php:145 ../../mod/admin.php:465 msgid "Automatic Friend Account" msgstr "Automatischer Freundesaccount" -#: ../../mod/settings.php:661 +#: ../../mod/settings.php:672 msgid "Automatically approve all connection/friend requests as friends" msgstr "Freundschaftsanfragen werden automatisch als Freund akzeptiert" -#: ../../mod/settings.php:671 +#: ../../mod/settings.php:682 msgid "OpenID:" msgstr "OpenID:" -#: ../../mod/settings.php:671 +#: ../../mod/settings.php:682 msgid "(Optional) Allow this OpenID to login to this account." msgstr "(Optional) Erlaube die Anmeldung für diesen Account mit dieser OpenID." -#: ../../mod/settings.php:681 +#: ../../mod/settings.php:692 msgid "Publish your default profile in your local site directory?" msgstr "Veröffentliche dein Standardprofil im Verzeichnis der lokalen Seite?" -#: ../../mod/settings.php:687 +#: ../../mod/settings.php:698 msgid "Publish your default profile in the global social directory?" msgstr "Veröffentliche dein Standardprofil im weltweiten Verzeichnis?" -#: ../../mod/settings.php:695 +#: ../../mod/settings.php:706 msgid "Hide your contact/friend list from viewers of your default profile?" msgstr "Liste der Kontakte vor Betrachtern des Standardprofils verbergen?" -#: ../../mod/settings.php:699 +#: ../../mod/settings.php:710 msgid "Hide your profile details from unknown viewers?" msgstr "Profil-Details vor unbekannten Betrachtern verbergen?" -#: ../../mod/settings.php:704 +#: ../../mod/settings.php:715 msgid "Allow friends to post to your profile page?" msgstr "Deinen Kontakten erlauben, auf deine Pinnwand zu schreiben?" -#: ../../mod/settings.php:710 +#: ../../mod/settings.php:721 msgid "Allow friends to tag your posts?" msgstr "Deinen Kontakten erlauben, deine Beiträge mit Schlagwörtern zu versehen?" -#: ../../mod/settings.php:716 +#: ../../mod/settings.php:727 msgid "Allow us to suggest you as a potential friend to new members?" msgstr "Erlaube uns dich als potentiellen Kontakt für neue Mitglieder vorzuschlagen?" -#: ../../mod/settings.php:725 +#: ../../mod/settings.php:736 msgid "Profile is not published." msgstr "Profil ist nicht veröffentlicht." -#: ../../mod/settings.php:757 ../../mod/profile_photo.php:206 +#: ../../mod/settings.php:768 ../../mod/profile_photo.php:206 msgid "or" msgstr "oder" -#: ../../mod/settings.php:762 +#: ../../mod/settings.php:773 msgid "Your Identity Address is" msgstr "Die Adresse deines Profils lautet:" -#: ../../mod/settings.php:773 +#: ../../mod/settings.php:784 msgid "Automatically expire posts after this many days:" msgstr "Beiträge verfallen automatisch nach dieser Anzahl von Tagen" -#: ../../mod/settings.php:773 +#: ../../mod/settings.php:784 msgid "If empty, posts will not expire. Expired posts will be deleted" msgstr "Wenn leer verfallen Beiträge nie automatisch. Verfallene Beiträge werden gelöscht." -#: ../../mod/settings.php:774 +#: ../../mod/settings.php:785 msgid "Advanced expiration settings" msgstr "Erweiterte Verfallseinstellungen" -#: ../../mod/settings.php:775 +#: ../../mod/settings.php:786 msgid "Advanced Expiration" msgstr "Erweitertes Verfallen" -#: ../../mod/settings.php:776 +#: ../../mod/settings.php:787 msgid "Expire posts:" msgstr "Beiträge verfallen lassen:" -#: ../../mod/settings.php:777 +#: ../../mod/settings.php:788 msgid "Expire personal notes:" msgstr "Persönliche Notizen verfallen lassen:" -#: ../../mod/settings.php:778 +#: ../../mod/settings.php:789 msgid "Expire starred posts:" msgstr "Markierte Beiträge verfallen lassen:" -#: ../../mod/settings.php:779 +#: ../../mod/settings.php:790 msgid "Expire photos:" msgstr "Fotos verfallen lassen:" -#: ../../mod/settings.php:784 +#: ../../mod/settings.php:795 msgid "Account Settings" msgstr "Account-Einstellungen" -#: ../../mod/settings.php:792 +#: ../../mod/settings.php:803 msgid "Password Settings" msgstr "Passwort-Einstellungen" -#: ../../mod/settings.php:793 +#: ../../mod/settings.php:804 msgid "New Password:" msgstr "Neues Passwort:" -#: ../../mod/settings.php:794 +#: ../../mod/settings.php:805 msgid "Confirm:" msgstr "Bestätigen:" -#: ../../mod/settings.php:794 +#: ../../mod/settings.php:805 msgid "Leave password fields blank unless changing" msgstr "Lass die Passwort-Felder leer, außer du willst das Passwort ändern" -#: ../../mod/settings.php:798 +#: ../../mod/settings.php:809 msgid "Basic Settings" msgstr "Grundeinstellungen" -#: ../../mod/settings.php:799 ../../include/profile_advanced.php:15 +#: ../../mod/settings.php:810 ../../include/profile_advanced.php:15 msgid "Full Name:" msgstr "Kompletter Name:" -#: ../../mod/settings.php:800 +#: ../../mod/settings.php:811 msgid "Email Address:" msgstr "Emailadresse:" -#: ../../mod/settings.php:801 +#: ../../mod/settings.php:812 msgid "Your Timezone:" msgstr "Deine Zeitzone:" -#: ../../mod/settings.php:802 +#: ../../mod/settings.php:813 msgid "Default Post Location:" msgstr "Standardstandort:" -#: ../../mod/settings.php:803 +#: ../../mod/settings.php:814 msgid "Use Browser Location:" msgstr "Verwende den Standort des Browsers:" -#: ../../mod/settings.php:804 +#: ../../mod/settings.php:815 msgid "Display Theme:" msgstr "Theme:" -#: ../../mod/settings.php:805 +#: ../../mod/settings.php:816 msgid "Update browser every xx seconds" msgstr "Browser alle xx Sekunden aktualisieren" -#: ../../mod/settings.php:805 +#: ../../mod/settings.php:816 msgid "Minimum of 10 seconds, no maximum" msgstr "Minimal 10 Sekunden, kein Maximum" -#: ../../mod/settings.php:807 +#: ../../mod/settings.php:818 msgid "Security and Privacy Settings" msgstr "Sicherheits- und Privatsphäre-Einstellungen" -#: ../../mod/settings.php:809 +#: ../../mod/settings.php:820 msgid "Maximum Friend Requests/Day:" msgstr "Maximale Anzahl von Freundschaftsanfragen/Tag:" -#: ../../mod/settings.php:809 +#: ../../mod/settings.php:820 msgid "(to prevent spam abuse)" msgstr "(um SPAM zu vermeiden)" -#: ../../mod/settings.php:810 +#: ../../mod/settings.php:821 msgid "Default Post Permissions" msgstr "Standard-Zugriffsrechte für Beiträge" -#: ../../mod/settings.php:811 +#: ../../mod/settings.php:822 msgid "(click to open/close)" msgstr "(klicke zum öffnen/schließen)" -#: ../../mod/settings.php:826 +#: ../../mod/settings.php:837 msgid "Notification Settings" msgstr "Benachrichtigungseinstellungen" -#: ../../mod/settings.php:827 +#: ../../mod/settings.php:838 msgid "Send a notification email when:" msgstr "Benachrichtigungs-E-Mail senden wenn:" -#: ../../mod/settings.php:828 +#: ../../mod/settings.php:839 msgid "You receive an introduction" msgstr "- du eine Kontaktanfrage erhältst" -#: ../../mod/settings.php:829 +#: ../../mod/settings.php:840 msgid "Your introductions are confirmed" msgstr "- eine deiner Kontaktanfragen akzeptiert wurde" -#: ../../mod/settings.php:830 +#: ../../mod/settings.php:841 msgid "Someone writes on your profile wall" msgstr "- jemand etwas auf deine Pinnwand schreibt" -#: ../../mod/settings.php:831 +#: ../../mod/settings.php:842 msgid "Someone writes a followup comment" msgstr "- jemand auch einen Kommentar verfasst" -#: ../../mod/settings.php:832 +#: ../../mod/settings.php:843 msgid "You receive a private message" msgstr "- du eine private Nachricht erhältst" -#: ../../mod/settings.php:833 +#: ../../mod/settings.php:844 msgid "You receive a friend suggestion" msgstr "- du eine Empfehlung erhältst" -#: ../../mod/settings.php:834 +#: ../../mod/settings.php:845 msgid "You are tagged in a post" msgstr "- du in einem Beitrag erwähnt wurdest" -#: ../../mod/settings.php:837 +#: ../../mod/settings.php:848 msgid "Advanced Page Settings" msgstr "Erweiterte Seiten-Einstellungen" @@ -2136,27 +2153,27 @@ msgstr[1] "Warnung: Diese Gruppe beinhaltet %s Personen aus unsicheren Netzwerke msgid "Private messages to this group are at risk of public disclosure." msgstr "Private Nachrichten an diese Gruppe könnten an die Öffentlichkeit geraten." -#: ../../mod/network.php:300 +#: ../../mod/network.php:298 msgid "No such group" msgstr "Es gibt keine solche Gruppe" -#: ../../mod/network.php:311 +#: ../../mod/network.php:309 msgid "Group is empty" msgstr "Gruppe ist leer" -#: ../../mod/network.php:315 +#: ../../mod/network.php:313 msgid "Group: " msgstr "Gruppe: " -#: ../../mod/network.php:325 +#: ../../mod/network.php:323 msgid "Contact: " msgstr "Kontakt: " -#: ../../mod/network.php:327 +#: ../../mod/network.php:325 msgid "Private messages to this person are at risk of public disclosure." msgstr "Private Nachrichten an diese Person könnten an die Öffentlichkeit gelangen." -#: ../../mod/network.php:332 +#: ../../mod/network.php:330 msgid "Invalid contact." msgstr "Ungültiger Kontakt." @@ -2164,7 +2181,7 @@ msgstr "Ungültiger Kontakt." msgid "Personal Notes" msgstr "Persönliche Notizen" -#: ../../mod/notes.php:63 ../../include/text.php:639 +#: ../../mod/notes.php:63 ../../include/text.php:645 msgid "Save" msgstr "Speichern" @@ -2291,7 +2308,7 @@ msgstr "Gruppe erstellt." msgid "Could not create group." msgstr "Konnte die Gruppe nicht erstellen." -#: ../../mod/group.php:43 ../../mod/group.php:123 +#: ../../mod/group.php:43 ../../mod/group.php:127 msgid "Group not found." msgstr "Gruppe nicht gefunden." @@ -2303,34 +2320,34 @@ msgstr "Gruppenname geändert." msgid "Permission denied" msgstr "Zugriff verweigert" -#: ../../mod/group.php:82 +#: ../../mod/group.php:85 msgid "Create a group of contacts/friends." msgstr "Eine Gruppe von Kontakten/Freunden anlegen." -#: ../../mod/group.php:83 ../../mod/group.php:166 +#: ../../mod/group.php:86 ../../mod/group.php:166 msgid "Group Name: " msgstr "Gruppenname:" -#: ../../mod/group.php:98 +#: ../../mod/group.php:102 msgid "Group removed." msgstr "Gruppe entfernt." -#: ../../mod/group.php:100 +#: ../../mod/group.php:104 msgid "Unable to remove group." msgstr "Konnte die Gruppe nicht entfernen." -#: ../../mod/group.php:164 ../../mod/profperm.php:105 -msgid "Click on a contact to add or remove." -msgstr "Klicke einen Kontakt an, um ihn hinzuzufügen oder zu entfernen" - #: ../../mod/group.php:165 msgid "Group Editor" msgstr "Gruppeneditor" -#: ../../mod/group.php:179 +#: ../../mod/group.php:177 msgid "Members" msgstr "Mitglieder" +#: ../../mod/group.php:209 ../../mod/profperm.php:105 +msgid "Click on a contact to add or remove." +msgstr "Klicke einen Kontakt an, um ihn hinzuzufügen oder zu entfernen" + #: ../../mod/profperm.php:25 ../../mod/profperm.php:55 msgid "Invalid profile identifier." msgstr "Ungültiger Profil-Bezeichner" @@ -2357,7 +2374,7 @@ msgstr "Alle Kontakte (mit gesichertem Profilzugriff)" msgid "No contacts." msgstr "Keine Kontakte." -#: ../../mod/viewcontacts.php:73 ../../include/text.php:578 +#: ../../mod/viewcontacts.php:74 ../../include/text.php:584 msgid "View Contacts" msgstr "Kontakte anzeigen" @@ -2484,7 +2501,7 @@ msgstr "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung mögli msgid "Your invitation ID: " msgstr "ID deiner Einladung: " -#: ../../mod/register.php:540 ../../mod/admin.php:313 +#: ../../mod/register.php:540 ../../mod/admin.php:314 msgid "Registration" msgstr "Registrierung" @@ -2538,9 +2555,9 @@ msgid "%1$s doesn't like %2$s's %3$s" msgstr "%1$s mag %2$ss %3$s nicht" #: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:127 -#: ../../mod/admin.php:518 ../../mod/admin.php:694 ../../mod/display.php:29 -#: ../../mod/display.php:134 ../../mod/viewd.php:14 -#: ../../include/items.php:2880 +#: ../../mod/admin.php:522 ../../mod/admin.php:700 ../../mod/display.php:29 +#: ../../mod/display.php:137 ../../mod/viewd.php:14 +#: ../../include/items.php:2942 msgid "Item not found." msgstr "Beitrag nicht gefunden." @@ -2575,29 +2592,29 @@ msgstr "Leerer Beitrag wurde verworfen." msgid "Wall Photos" msgstr "Pinnwand-Bilder" -#: ../../mod/item.php:830 +#: ../../mod/item.php:833 msgid "System error. Post not saved." msgstr "Systemfehler. Beitrag konnte nicht gespeichert werden." -#: ../../mod/item.php:855 +#: ../../mod/item.php:858 #, php-format msgid "" "This message was sent to you by %s, a member of the Friendica social " "network." msgstr "Diese Nachricht wurde dir von %s geschickt, einem Mitglied des Sozialen Netzwerks Friendica." -#: ../../mod/item.php:857 +#: ../../mod/item.php:860 #, php-format msgid "You may visit them online at %s" msgstr "Du kannst sie online unter %s besuchen" -#: ../../mod/item.php:858 +#: ../../mod/item.php:861 msgid "" "Please contact the sender by replying to this post if you do not wish to " "receive these messages." msgstr "Falls du diese Beiträge nicht erhalten möchtest, kontaktiere bitte den Autor, indem du auf diese Nachricht antwortest." -#: ../../mod/item.php:860 +#: ../../mod/item.php:863 #, php-format msgid "%s posted an update." msgstr "%s hat ein Update veröffentlicht." @@ -2721,7 +2738,7 @@ msgstr "Nachricht gelöscht." msgid "Conversation removed." msgstr "Unterhaltung gelöscht." -#: ../../mod/message.php:137 ../../include/conversation.php:868 +#: ../../mod/message.php:137 ../../include/conversation.php:887 msgid "Please enter a link URL:" msgstr "Bitte gib die URL des Links ein:" @@ -2775,23 +2792,23 @@ msgstr "Freunde von %s" msgid "No friends to display." msgstr "Keine Freunde zum Anzeigen." -#: ../../mod/admin.php:71 ../../mod/admin.php:311 +#: ../../mod/admin.php:71 ../../mod/admin.php:312 msgid "Site" msgstr "Seite" -#: ../../mod/admin.php:72 ../../mod/admin.php:476 ../../mod/admin.php:488 +#: ../../mod/admin.php:72 ../../mod/admin.php:480 ../../mod/admin.php:492 msgid "Users" msgstr "Nutzer" -#: ../../mod/admin.php:73 ../../mod/admin.php:565 ../../mod/admin.php:602 +#: ../../mod/admin.php:73 ../../mod/admin.php:569 ../../mod/admin.php:608 msgid "Plugins" msgstr "Plugins" -#: ../../mod/admin.php:74 ../../mod/admin.php:736 ../../mod/admin.php:768 +#: ../../mod/admin.php:74 ../../mod/admin.php:742 ../../mod/admin.php:775 msgid "Themes" msgstr "Themen" -#: ../../mod/admin.php:89 ../../mod/admin.php:846 +#: ../../mod/admin.php:89 ../../mod/admin.php:855 msgid "Logs" msgstr "Protokolle" @@ -2799,325 +2816,439 @@ msgstr "Protokolle" msgid "User registrations waiting for confirmation" msgstr "Nutzeranmeldungen die auf Bestätigung warten" -#: ../../mod/admin.php:160 ../../mod/admin.php:310 ../../mod/admin.php:475 -#: ../../mod/admin.php:564 ../../mod/admin.php:601 ../../mod/admin.php:735 -#: ../../mod/admin.php:767 ../../mod/admin.php:845 +#: ../../mod/admin.php:161 ../../mod/admin.php:311 ../../mod/admin.php:479 +#: ../../mod/admin.php:568 ../../mod/admin.php:607 ../../mod/admin.php:741 +#: ../../mod/admin.php:774 ../../mod/admin.php:854 msgid "Administration" msgstr "Administration" -#: ../../mod/admin.php:161 +#: ../../mod/admin.php:162 msgid "Summary" msgstr "Zusammenfassung" -#: ../../mod/admin.php:162 +#: ../../mod/admin.php:163 msgid "Registered users" msgstr "Registrierte Nutzer" -#: ../../mod/admin.php:164 +#: ../../mod/admin.php:165 msgid "Pending registrations" msgstr "Anstehende Anmeldungen" -#: ../../mod/admin.php:165 +#: ../../mod/admin.php:166 msgid "Version" msgstr "Version" -#: ../../mod/admin.php:167 +#: ../../mod/admin.php:168 msgid "Active plugins" msgstr "Aktive Plugins" -#: ../../mod/admin.php:259 +#: ../../mod/admin.php:260 msgid "Site settings updated." msgstr "Seiteneinstellungen aktualisiert." -#: ../../mod/admin.php:303 +#: ../../mod/admin.php:304 msgid "Closed" msgstr "Geschlossen" -#: ../../mod/admin.php:304 +#: ../../mod/admin.php:305 msgid "Requires approval" msgstr "Bedarf der Zustimmung" -#: ../../mod/admin.php:305 +#: ../../mod/admin.php:306 msgid "Open" msgstr "Offen" -#: ../../mod/admin.php:314 +#: ../../mod/admin.php:315 msgid "File upload" msgstr "Datei hochladen" -#: ../../mod/admin.php:315 +#: ../../mod/admin.php:316 msgid "Policies" msgstr "Regeln" -#: ../../mod/admin.php:316 +#: ../../mod/admin.php:317 msgid "Advanced" msgstr "Erweitert" -#: ../../mod/admin.php:320 ../../addon/statusnet/statusnet.php:523 +#: ../../mod/admin.php:321 ../../addon/statusnet/statusnet.php:523 msgid "Site name" msgstr "Seitenname" -#: ../../mod/admin.php:321 +#: ../../mod/admin.php:322 msgid "Banner/Logo" msgstr "Banner/Logo" -#: ../../mod/admin.php:322 +#: ../../mod/admin.php:323 msgid "System language" msgstr "Systemsprache" -#: ../../mod/admin.php:323 +#: ../../mod/admin.php:324 msgid "System theme" msgstr "Systemweites Thema" -#: ../../mod/admin.php:325 +#: ../../mod/admin.php:324 +msgid "Default system theme - may be over-ridden by user profiles" +msgstr "Standard Server Theme - kann von den Benutzereinstellungen überschrieben werden." + +#: ../../mod/admin.php:326 msgid "Maximum image size" msgstr "Maximale Größe von Bildern" -#: ../../mod/admin.php:327 +#: ../../mod/admin.php:326 +msgid "" +"Maximum size in bytes of uploaded images. Default is 0, which means no " +"limits." +msgstr "Maximale Upload-Größe von Bildern in Bytes. Standard ist 0, d.h. ohne Limit." + +#: ../../mod/admin.php:328 msgid "Register policy" msgstr "Registrierungsmethode" -#: ../../mod/admin.php:328 +#: ../../mod/admin.php:329 msgid "Register text" msgstr "Registrierungstext" #: ../../mod/admin.php:329 +msgid "Will be displayed prominently on the registration page." +msgstr "Wird gut sichtbar auf der Registrierungs-Seite angezeigt." + +#: ../../mod/admin.php:330 msgid "Accounts abandoned after x days" msgstr "Accounts gelten nach x Tagen als unbenutzt" -#: ../../mod/admin.php:329 +#: ../../mod/admin.php:330 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "Verschwende keine System-Ressourcen auf das Pollen externer Seiten, wenn Accounts nicht mehr benutzt werden. 0 eingeben für kein Limit." -#: ../../mod/admin.php:330 +#: ../../mod/admin.php:331 msgid "Allowed friend domains" msgstr "Erlaubte Domains für Kontakte" #: ../../mod/admin.php:331 +msgid "" +"Comma separated list of domains which are allowed to establish friendships " +"with this site. Wildcards are accepted. Empty to allow any domains" +msgstr "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben." + +#: ../../mod/admin.php:332 msgid "Allowed email domains" msgstr "Erlaubte Domains für Emails" #: ../../mod/admin.php:332 +msgid "" +"Comma separated list of domains which are allowed in email addresses for " +"registrations to this site. Wildcards are accepted. Empty to allow any " +"domains" +msgstr "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben." + +#: ../../mod/admin.php:333 msgid "Block public" msgstr "Öffentlichen Zugriff blockieren" #: ../../mod/admin.php:333 +msgid "" +"Check to block public access to all otherwise public personal pages on this " +"site unless you are currently logged in." +msgstr "Klicken, um öffentlichen Zugriff auf sonst öffentliche Profile zu blockieren, wenn man nicht eingeloggt ist." + +#: ../../mod/admin.php:334 msgid "Force publish" msgstr "Erzwinge Veröffentlichung" #: ../../mod/admin.php:334 +msgid "" +"Check to force all profiles on this site to be listed in the site directory." +msgstr "Klicken, um Anzeige aller Profile dieses Servers im Verzeichnis zu erzwingen." + +#: ../../mod/admin.php:335 msgid "Global directory update URL" msgstr "URL für Updates beim weltweiten Verzeichnis" -#: ../../mod/admin.php:336 +#: ../../mod/admin.php:335 +msgid "" +"URL to update the global directory. If this is not set, the global directory" +" is completely unavailable to the application." +msgstr "URL für Update des globalen Verzeichnisses. Wenn nichts eingetragen ist, bleibt das globale Verzeichnis unerreichbar." + +#: ../../mod/admin.php:337 msgid "Block multiple registrations" msgstr "Unterbinde Mehrfachregistrierung" #: ../../mod/admin.php:337 +msgid "Disallow users to register additional accounts for use as pages." +msgstr "Benutzern nicht erlauben, weitere Accounts als zusätzliche Profile anzulegen." + +#: ../../mod/admin.php:338 msgid "OpenID support" msgstr "OpenID Unterstützung" #: ../../mod/admin.php:338 +msgid "OpenID support for registration and logins." +msgstr "OpenID-Unterstützung für Registrierung und Login." + +#: ../../mod/admin.php:339 msgid "Gravatar support" msgstr "Gravatar Unterstützung" #: ../../mod/admin.php:339 +msgid "Search new user's photo on Gravatar." +msgstr "Suchfunktion bei Gravatar für Profilbilder neuer Nutzer." + +#: ../../mod/admin.php:340 msgid "Fullname check" msgstr "Namen auf Vollständigkeit überprüfen" #: ../../mod/admin.php:340 +msgid "" +"Force users to register with a space between firstname and lastname in Full " +"name, as an antispam measure" +msgstr "Leerzeichen zwischen Vor- und Nachname im vollständigen Namen erzwingen, um SPAM zu vermeiden." + +#: ../../mod/admin.php:341 msgid "UTF-8 Regular expressions" msgstr "UTF-8 Reguläre Ausdrücke" #: ../../mod/admin.php:341 +msgid "Use PHP UTF8 regular expressions" +msgstr "PHP UTF8 Ausdrücke verwenden" + +#: ../../mod/admin.php:342 msgid "Show Community Page" msgstr "Gemeinschaftsseite anzeigen" #: ../../mod/admin.php:342 +msgid "" +"Display a Community page showing all recent public postings on this site." +msgstr "Zeige die Gemeinschaftsseite mit allen öffentlichen Beiträgen auf diesem Server." + +#: ../../mod/admin.php:343 msgid "Enable OStatus support" msgstr "OStatus Unterstützung aktivieren" #: ../../mod/admin.php:343 +msgid "" +"Provide built-in OStatus (identi.ca, status.net, etc.) compatibility. All " +"communications in OStatus are public, so privacy warnings will be " +"occasionally displayed." +msgstr "Biete die eingebaute OStatus (identi.ca, status.net, etc.) Unterstützung an. Jede Kommunikation in OStatus ist öffentlich, so Privatsphäre Warnungen werden bei Bedarf angezeigt." + +#: ../../mod/admin.php:344 msgid "Enable Diaspora support" msgstr "Diaspora-Support aktivieren" #: ../../mod/admin.php:344 +msgid "Provide built-in Diaspora network compatibility." +msgstr "Verwende die eingebaute Diaspora-Verknüpfung." + +#: ../../mod/admin.php:345 msgid "Only allow Friendica contacts" msgstr "Nur Friendica-Kontakte erlauben" #: ../../mod/admin.php:345 +msgid "" +"All contacts must use Friendica protocols. All other built-in communication " +"protocols disabled." +msgstr "Alle Kontakte müssen das Friendica Protokoll nutzen. Alle anderen Kommunikationsprotokolle werden deaktiviert." + +#: ../../mod/admin.php:346 msgid "Verify SSL" msgstr "SSL Überprüfen" #: ../../mod/admin.php:346 +msgid "" +"If you wish, you can turn on strict certificate checking. This will mean you" +" cannot connect (at all) to self-signed SSL sites." +msgstr "Wenn gewollt, kann man hier eine strenge Zertifikat Kontrolle anstellen. Das bedeutet, das man zu keinen Seiten mit selbst unterzeichneten SSL eine Verbindung herstellen kann." + +#: ../../mod/admin.php:347 msgid "Proxy user" msgstr "Proxy Nutzer" -#: ../../mod/admin.php:347 +#: ../../mod/admin.php:348 msgid "Proxy URL" msgstr "Proxy URL" -#: ../../mod/admin.php:348 +#: ../../mod/admin.php:349 msgid "Network timeout" msgstr "Netzwerk Wartezeit" -#: ../../mod/admin.php:369 -#, php-format -msgid "%s user blocked" -msgid_plural "%s users blocked/unblocked" -msgstr[0] "%s Nutzer gesperrt" -msgstr[1] "%s Nutzer gesperrt/entsperrt" +#: ../../mod/admin.php:349 +msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." +msgstr "Der Wert ist in Sekunden. Setze 0 für unbegrenzt (nicht empfohlen)." -#: ../../mod/admin.php:376 +#: ../../mod/admin.php:370 +#, php-format +msgid "%s user blocked/unblocked" +msgid_plural "%s users blocked/unblocked" +msgstr[0] "%s Benutzer geblockt/freigegeben" +msgstr[1] "%s Benutzer geblockt/freigegeben" + +#: ../../mod/admin.php:377 #, php-format msgid "%s user deleted" msgid_plural "%s users deleted" msgstr[0] "%s Nutzer gelöscht" msgstr[1] "%s Nutzer gelöscht" -#: ../../mod/admin.php:410 +#: ../../mod/admin.php:411 #, php-format msgid "User '%s' deleted" msgstr "Nutzer '%s' gelöscht" -#: ../../mod/admin.php:417 +#: ../../mod/admin.php:418 #, php-format msgid "User '%s' unblocked" msgstr "Nutzer '%s' entsperrt" -#: ../../mod/admin.php:417 +#: ../../mod/admin.php:418 #, php-format msgid "User '%s' blocked" msgstr "Nutzer '%s' gesperrt" -#: ../../mod/admin.php:478 +#: ../../mod/admin.php:482 msgid "select all" msgstr "Alle auswählen" -#: ../../mod/admin.php:479 +#: ../../mod/admin.php:483 msgid "User registrations waiting for confirm" msgstr "Neuanmeldungen, die auf deine Bestätigung warten" -#: ../../mod/admin.php:480 +#: ../../mod/admin.php:484 msgid "Request date" msgstr "Anfrage Datum" -#: ../../mod/admin.php:480 ../../mod/admin.php:489 +#: ../../mod/admin.php:484 ../../mod/admin.php:493 #: ../../include/contact_selectors.php:79 msgid "Email" msgstr "Email" -#: ../../mod/admin.php:481 +#: ../../mod/admin.php:485 msgid "No registrations." msgstr "Keine Neuanmeldungen." -#: ../../mod/admin.php:483 +#: ../../mod/admin.php:487 msgid "Deny" msgstr "Verwehren" -#: ../../mod/admin.php:489 +#: ../../mod/admin.php:493 msgid "Register date" msgstr "Anmeldedatum" -#: ../../mod/admin.php:489 +#: ../../mod/admin.php:493 msgid "Last login" msgstr "Letzte Anmeldung" -#: ../../mod/admin.php:489 +#: ../../mod/admin.php:493 msgid "Last item" msgstr "Letzter Beitrag" -#: ../../mod/admin.php:489 +#: ../../mod/admin.php:493 msgid "Account" msgstr "Nutzerkonto" -#: ../../mod/admin.php:491 +#: ../../mod/admin.php:495 msgid "" "Selected users will be deleted!\\n\\nEverything these users had posted on " "this site will be permanently deleted!\\n\\nAre you sure?" msgstr "Die markierten Nutzer werden gelöscht!\\n\\nAlle Beiträge, die diese Nutzer auf dieser Seite veröffentlicht haben, werden permanent gelöscht!\\n\\nBist du sicher?" -#: ../../mod/admin.php:492 +#: ../../mod/admin.php:496 msgid "" "The user {0} will be deleted!\\n\\nEverything this user has posted on this " "site will be permanently deleted!\\n\\nAre you sure?" msgstr "Der Nutzer {0} wird gelöscht!\\n\\nAlles was dieser Nutzer auf dieser Seite veröffentlicht hat, wird permanent gelöscht!\\n\\nBist du sicher?" -#: ../../mod/admin.php:528 +#: ../../mod/admin.php:532 #, php-format msgid "Plugin %s disabled." msgstr "Plugin %s deaktiviert." -#: ../../mod/admin.php:532 +#: ../../mod/admin.php:536 #, php-format msgid "Plugin %s enabled." msgstr "Plugin %s aktiviert." -#: ../../mod/admin.php:542 ../../mod/admin.php:718 +#: ../../mod/admin.php:546 ../../mod/admin.php:724 msgid "Disable" msgstr "Ausschalten" -#: ../../mod/admin.php:544 ../../mod/admin.php:720 +#: ../../mod/admin.php:548 ../../mod/admin.php:726 msgid "Enable" msgstr "Einschalten" -#: ../../mod/admin.php:566 ../../mod/admin.php:737 +#: ../../mod/admin.php:570 ../../mod/admin.php:743 msgid "Toggle" msgstr "Umschalten" -#: ../../mod/admin.php:567 ../../mod/admin.php:738 ../../include/nav.php:130 +#: ../../mod/admin.php:571 ../../mod/admin.php:744 ../../include/nav.php:130 msgid "Settings" msgstr "Einstellungen" -#: ../../mod/admin.php:683 +#: ../../mod/admin.php:578 ../../mod/admin.php:753 +msgid "Author: " +msgstr "Autor:" + +#: ../../mod/admin.php:579 ../../mod/admin.php:754 +msgid "Maintainer: " +msgstr "Betreuer:" + +#: ../../mod/admin.php:689 msgid "No themes found." msgstr "Keine Themen gefunden." -#: ../../mod/admin.php:795 +#: ../../mod/admin.php:780 +msgid "[Experimental]" +msgstr "[Experimentell]" + +#: ../../mod/admin.php:781 +msgid "[Unsupported]" +msgstr "[Nicht unterstützt]" + +#: ../../mod/admin.php:804 msgid "Log settings updated." msgstr "Protokolleinstellungen aktualisiert." -#: ../../mod/admin.php:848 +#: ../../mod/admin.php:857 msgid "Clear" msgstr "löschen" -#: ../../mod/admin.php:854 +#: ../../mod/admin.php:863 msgid "Debugging" msgstr "Protokoll führen" -#: ../../mod/admin.php:855 +#: ../../mod/admin.php:864 msgid "Log file" msgstr "Protokolldatei" -#: ../../mod/admin.php:855 +#: ../../mod/admin.php:864 msgid "" "Must be writable by web server. Relative to your Friendica top-level " "directory." msgstr "Webserver muss Schreibrechte besitzen. Abhängig vom Friendica-Installationsverzeichnis." -#: ../../mod/admin.php:856 +#: ../../mod/admin.php:865 msgid "Log level" msgstr "Protokoll-Level" -#: ../../mod/admin.php:897 +#: ../../mod/admin.php:906 msgid "Close" msgstr "Schließen" -#: ../../mod/admin.php:903 +#: ../../mod/admin.php:912 msgid "FTP Host" msgstr "FTP Host" -#: ../../mod/admin.php:904 +#: ../../mod/admin.php:913 msgid "FTP Path" msgstr "FTP Pfad" -#: ../../mod/admin.php:905 +#: ../../mod/admin.php:914 msgid "FTP User" msgstr "FTP Nutzername" -#: ../../mod/admin.php:906 +#: ../../mod/admin.php:915 msgid "FTP Password" msgstr "FTP Passwort" @@ -3133,48 +3264,48 @@ msgstr "Der Zugriff zu diesem Profil wurde eingeschränkt." msgid "Tips for New Members" msgstr "Tipps für neue Nutzer" -#: ../../mod/ping.php:146 +#: ../../mod/ping.php:174 msgid "{0} wants to be your friend" msgstr "{0} möchte mit dir in Kontakt treten" -#: ../../mod/ping.php:151 +#: ../../mod/ping.php:179 msgid "{0} sent you a message" msgstr "{0} hat dir eine Nachricht geschickt" -#: ../../mod/ping.php:156 +#: ../../mod/ping.php:184 msgid "{0} requested registration" msgstr "{0} möchte sich registrieren" -#: ../../mod/ping.php:162 +#: ../../mod/ping.php:190 #, php-format msgid "{0} commented %s's post" msgstr "{0} kommentierte einen Beitrag von %s" -#: ../../mod/ping.php:167 +#: ../../mod/ping.php:195 #, php-format msgid "{0} liked %s's post" msgstr "{0} mag %ss Beitrag" -#: ../../mod/ping.php:172 +#: ../../mod/ping.php:200 #, php-format msgid "{0} disliked %s's post" msgstr "{0} mag %ss Beitrag nicht" -#: ../../mod/ping.php:177 +#: ../../mod/ping.php:205 #, php-format msgid "{0} is now friends with %s" msgstr "{0} ist jetzt mit %s befreundet" -#: ../../mod/ping.php:182 +#: ../../mod/ping.php:210 msgid "{0} posted" msgstr "{0} hat etwas veröffentlicht" -#: ../../mod/ping.php:187 +#: ../../mod/ping.php:215 #, php-format msgid "{0} tagged %s's post with #%s" msgstr "{0} hat %ss Beitrag mit dem Schlagwort #%s versehen" -#: ../../mod/ping.php:193 +#: ../../mod/ping.php:221 msgid "{0} mentioned you in a post" msgstr "{0} hat dich in einem Beitrag erwähnt" @@ -3236,7 +3367,7 @@ msgstr "Gemeinsame Freunde" msgid "No friends in common." msgstr "Keine gemeinsamen Freunde." -#: ../../mod/display.php:127 +#: ../../mod/display.php:130 msgid "Item has been removed." msgstr "Eintrag wurde entfernt." @@ -3602,78 +3733,84 @@ msgid "" "Once you have registered, please connect with me via my profile page at:" msgstr "Sobald du registriert bist, kontaktiere mich bitte auf meiner Profilseite:" -#: ../../mod/dfrn_confirm.php:238 +#: ../../mod/dfrn_confirm.php:119 +msgid "" +"This may occasionally happen if contact was requested by both persons and it" +" has already been approved." +msgstr "Das kann passieren, wenn sich zwei Kontakte gegenseitig eingeladen haben und bereits einer angenommen wurde." + +#: ../../mod/dfrn_confirm.php:239 msgid "Response from remote site was not understood." msgstr "Antwort der Gegenstelle unverständlich." -#: ../../mod/dfrn_confirm.php:247 +#: ../../mod/dfrn_confirm.php:248 msgid "Unexpected response from remote site: " msgstr "Unerwartete Antwort der Gegenstelle: " -#: ../../mod/dfrn_confirm.php:255 +#: ../../mod/dfrn_confirm.php:256 msgid "Confirmation completed successfully." msgstr "Bestätigung erfolgreich abgeschlossen." -#: ../../mod/dfrn_confirm.php:257 ../../mod/dfrn_confirm.php:271 -#: ../../mod/dfrn_confirm.php:278 +#: ../../mod/dfrn_confirm.php:258 ../../mod/dfrn_confirm.php:272 +#: ../../mod/dfrn_confirm.php:279 msgid "Remote site reported: " msgstr "Gegenstelle meldet: " -#: ../../mod/dfrn_confirm.php:269 +#: ../../mod/dfrn_confirm.php:270 msgid "Temporary failure. Please wait and try again." msgstr "Zeitweiser Fehler. Bitte warte einige Momente und versuche es dann noch einmal." -#: ../../mod/dfrn_confirm.php:276 +#: ../../mod/dfrn_confirm.php:277 msgid "Introduction failed or was revoked." msgstr "Kontaktanfrage schlug fehl oder wurde zurück gezogen." -#: ../../mod/dfrn_confirm.php:421 +#: ../../mod/dfrn_confirm.php:422 msgid "Unable to set contact photo." msgstr "Konnte das Bild des Kontakts nicht speichern." -#: ../../mod/dfrn_confirm.php:473 ../../include/diaspora.php:495 +#: ../../mod/dfrn_confirm.php:474 ../../include/diaspora.php:495 #: ../../include/conversation.php:101 #, php-format msgid "%1$s is now friends with %2$s" msgstr "%1$s ist nun mit %2$s befreundet" -#: ../../mod/dfrn_confirm.php:543 +#: ../../mod/dfrn_confirm.php:544 #, php-format msgid "No user record found for '%s' " msgstr "Für '%s' wurde kein Nutzer gefunden" -#: ../../mod/dfrn_confirm.php:553 +#: ../../mod/dfrn_confirm.php:554 msgid "Our site encryption key is apparently messed up." msgstr "Der Verschlüsselungsschlüssel unserer Seite ist anscheinend im Arsch." -#: ../../mod/dfrn_confirm.php:564 +#: ../../mod/dfrn_confirm.php:565 msgid "Empty site URL was provided or URL could not be decrypted by us." msgstr "Leere URL für die Seite erhalten oder die URL konnte nicht entschlüsselt werden." -#: ../../mod/dfrn_confirm.php:585 +#: ../../mod/dfrn_confirm.php:586 msgid "Contact record was not found for you on our site." msgstr "Für diesen Kontakt wurde auf unserer Seite kein Eintrag gefunden." -#: ../../mod/dfrn_confirm.php:599 +#: ../../mod/dfrn_confirm.php:600 #, php-format msgid "Site public key not available in contact record for URL %s." msgstr "Die Kontaktdaten für URL %s enthalten keinen Public Key für den Server." -#: ../../mod/dfrn_confirm.php:619 +#: ../../mod/dfrn_confirm.php:620 msgid "" "The ID provided by your system is a duplicate on our system. It should work " "if you try again." msgstr "Die ID, die uns dein System angeboten hat, ist hier bereits vergeben. Bitte versuche es noch einmal." -#: ../../mod/dfrn_confirm.php:630 +#: ../../mod/dfrn_confirm.php:631 msgid "Unable to set your contact credentials on our system." msgstr "Deine Kontaktreferenzen konnten nicht in unserem System gespeichert werden." -#: ../../mod/dfrn_confirm.php:684 +#: ../../mod/dfrn_confirm.php:694 msgid "Unable to update your contact profile details on our system" msgstr "Die Updates für dein Profil konnten nicht gespeichert werden" -#: ../../mod/dfrn_confirm.php:714 +#: ../../mod/dfrn_confirm.php:724 #, php-format msgid "Connection accepted at %s" msgstr "Auf %s wurde die Verbindung akzeptiert" @@ -3786,7 +3923,7 @@ msgid "Facebook post failed. Queued for retry." msgstr "Veröffentlichung bei Facebook gescheitert. Wir versuchen es später erneut." #: ../../addon/facebook/facebook.php:877 ../../addon/facebook/facebook.php:886 -#: ../../include/bb2diaspora.php:132 +#: ../../include/bb2diaspora.php:102 msgid "link" msgstr "Verweis" @@ -3844,6 +3981,30 @@ msgstr "SSL Verwenden " msgid "yourls Settings saved." msgstr "yourls Einstellungen gespeichert" +#: ../../addon/ljpost/ljpost.php:38 +msgid "Post to LiveJournal" +msgstr "In LiveJournal veröffentlichen." + +#: ../../addon/ljpost/ljpost.php:69 +msgid "LiveJournal Post Settings" +msgstr "LiveJournal Veröffentlichungs-Einstellungen" + +#: ../../addon/ljpost/ljpost.php:71 +msgid "Enable LiveJournal Post Plugin" +msgstr "LiveJournal Post Plugin aktivieren" + +#: ../../addon/ljpost/ljpost.php:76 +msgid "LiveJournal username" +msgstr "LiveJournal Benutzername" + +#: ../../addon/ljpost/ljpost.php:81 +msgid "LiveJournal password" +msgstr "LiveJournal Passwort" + +#: ../../addon/ljpost/ljpost.php:86 +msgid "Post to LiveJournal by default" +msgstr "Standardmäßig bei LiveJournal veröffentlichen" + #: ../../addon/nsfw/nsfw.php:47 msgid "\"Not Safe For Work\" Settings" msgstr "\"Not Safe For Work\"-Einstellungen" @@ -3870,12 +4031,15 @@ msgid "%s - Click to open/close" msgstr "%s – Zum Öffnen/Schließen klicken" #: ../../addon/communityhome/communityhome.php:28 -#: ../../addon/communityhome/communityhome.php:34 ../../include/nav.php:62 -#: ../../boot.php:710 +#: ../../addon/communityhome/communityhome.php:34 +#: ../../addon/communityhome/twillingham/communityhome.php:28 +#: ../../addon/communityhome/twillingham/communityhome.php:34 +#: ../../include/nav.php:62 ../../boot.php:710 msgid "Login" msgstr "Anmeldung" #: ../../addon/communityhome/communityhome.php:29 +#: ../../addon/communityhome/twillingham/communityhome.php:29 msgid "OpenID" msgstr "OpenID" @@ -3884,6 +4048,7 @@ msgid "Last users" msgstr "Letzte Nutzer" #: ../../addon/communityhome/communityhome.php:81 +#: ../../addon/communityhome/twillingham/communityhome.php:81 msgid "Most active users" msgstr "Aktivste Nutzer" @@ -3895,11 +4060,15 @@ msgstr "Letzte Fotos" msgid "Last likes" msgstr "Zuletzt gemocht" -#: ../../addon/communityhome/communityhome.php:155 +#: ../../addon/communityhome/communityhome.php:155 ../../include/text.php:1224 #: ../../include/conversation.php:45 ../../include/conversation.php:118 msgid "event" msgstr "Veranstaltung" +#: ../../addon/communityhome/twillingham/communityhome.php:38 +msgid "Latest users" +msgstr "Letzte Benutzer" + #: ../../addon/uhremotestorage/uhremotestorage.php:84 #, php-format msgid "" @@ -3987,6 +4156,30 @@ msgstr "Randplace-Einstellungen" msgid "Enable Randplace Plugin" msgstr "Randplace-Plugin aktivieren" +#: ../../addon/dwpost/dwpost.php:38 +msgid "Post to Dreamwidth" +msgstr "In Dreamwidth veröffentlichen" + +#: ../../addon/dwpost/dwpost.php:69 +msgid "Dreamwidth Post Settings" +msgstr "Dreamwidth Veröffentlichungs-Einstellungen" + +#: ../../addon/dwpost/dwpost.php:71 +msgid "Enable dreamwidth Post Plugin" +msgstr "Dreamwidth Post Plugin aktivieren" + +#: ../../addon/dwpost/dwpost.php:76 +msgid "dreamwidth username" +msgstr "Dreamwidth Benutzername" + +#: ../../addon/dwpost/dwpost.php:81 +msgid "dreamwidth password" +msgstr "Dreamwidth Passwort" + +#: ../../addon/dwpost/dwpost.php:86 +msgid "Post to dreamwidth by default" +msgstr "Standardmäßig bei Dreamwidth veröffentlichen" + #: ../../addon/drpost/drpost.php:35 msgid "Post to Drupal" msgstr "Bei Drupal veröffentlichen" @@ -4165,10 +4358,16 @@ msgid "Quick Comment Settings" msgstr "Schnell-Kommentar Einstellungen" #: ../../addon/qcomment/qcomment.php:56 +msgid "" +"Quick comments are found near comment boxes, sometimes hidden. Click them to" +" provide simple replies." +msgstr "Kurz-Kommentare findet man in der Nähe der Kommentar-Boxen. Ein Klick darauf erstellt einfache Antworten." + +#: ../../addon/qcomment/qcomment.php:57 msgid "Enter quick comments, one per line" msgstr "Gib einen Schnell-Kommentar pro Zeile ein" -#: ../../addon/qcomment/qcomment.php:74 +#: ../../addon/qcomment/qcomment.php:75 msgid "Quick Comment settings saved." msgstr "Schnell-Kommentare Einstellungen gespeichert" @@ -4371,6 +4570,29 @@ msgstr "Numfriends Einstellungen" msgid "How many contacts to display on profile sidebar" msgstr "Wie viele Kontakte sollen in der Seitenleiste angezeigt werden" +#: ../../addon/gnot/gnot.php:48 +msgid "Gnot settings updated." +msgstr "Gnot Einstellungen aktualisiert." + +#: ../../addon/gnot/gnot.php:79 +msgid "Gnot Settings" +msgstr "Gnot Einstellungen" + +#: ../../addon/gnot/gnot.php:81 +msgid "" +"Allows threading of email comment notifications on Gmail and anonymising the" +" subject line." +msgstr "Erlaubt das Veröffentlichen von E-Mail Kommentar Benachrichtigungen bei Gmail mit anonymisiertem Betreff" + +#: ../../addon/gnot/gnot.php:82 +msgid "Enable this plugin/addon?" +msgstr "Dieses Plugin/Addon aktivieren?" + +#: ../../addon/gnot/gnot.php:97 +#, php-format +msgid "[Friendica:Notify] Comment to conversation #%d" +msgstr "[Friendica Meldung] Kommentar zum Beitrag #%d" + #: ../../addon/wppost/wppost.php:42 msgid "Post to Wordpress" msgstr "Bei WordPress veröffentlichen" @@ -4521,6 +4743,10 @@ msgstr "Consumer Key" msgid "Consumer secret" msgstr "Consumer Secret" +#: ../../addon/irc/irc.php:20 +msgid "irc Chatroom" +msgstr "irc Chatroom" + #: ../../addon/posterous/posterous.php:36 msgid "Post to Posterous" msgstr "Nach Posterous senden" @@ -4545,6 +4771,22 @@ msgstr "Posterous-Passwort" msgid "Post to Posterous by default" msgstr "Veröffentliche öffentliche Beiträge standardmäßig bei Posterous" +#: ../../view/theme/quattro/theme.php:17 +msgid "Theme settings" +msgstr "Themen Einstellungen" + +#: ../../view/theme/quattro/theme.php:18 +msgid "Alignment" +msgstr "Ausrichtung" + +#: ../../view/theme/quattro/theme.php:18 +msgid "Left" +msgstr "Links" + +#: ../../view/theme/quattro/theme.php:18 +msgid "Center" +msgstr "Mitte" + #: ../../include/profile_advanced.php:17 ../../boot.php:982 msgid "Gender:" msgstr "Geschlecht:" @@ -4906,142 +5148,154 @@ msgstr "Ist mir nicht wichtig" msgid "Ask me" msgstr "Frag mich" -#: ../../include/event.php:17 ../../include/bb2diaspora.php:274 +#: ../../include/event.php:17 ../../include/bb2diaspora.php:244 msgid "Starts:" msgstr "Beginnt:" -#: ../../include/event.php:27 ../../include/bb2diaspora.php:282 +#: ../../include/event.php:27 ../../include/bb2diaspora.php:252 msgid "Finishes:" msgstr "Endet:" -#: ../../include/delivery.php:424 ../../include/notifier.php:637 +#: ../../include/delivery.php:425 ../../include/notifier.php:638 msgid "(no subject)" msgstr "(kein Betreff)" -#: ../../include/delivery.php:431 ../../include/enotify.php:16 -#: ../../include/notifier.php:644 +#: ../../include/delivery.php:432 ../../include/enotify.php:17 +#: ../../include/notifier.php:645 msgid "noreply" msgstr "noreply" -#: ../../include/text.php:232 +#: ../../include/text.php:238 msgid "prev" msgstr "vorige" -#: ../../include/text.php:234 +#: ../../include/text.php:240 msgid "first" msgstr "erste" -#: ../../include/text.php:263 +#: ../../include/text.php:269 msgid "last" msgstr "letzte" -#: ../../include/text.php:266 +#: ../../include/text.php:272 msgid "next" msgstr "nächste" -#: ../../include/text.php:557 +#: ../../include/text.php:563 msgid "No contacts" msgstr "Keine Kontakte" -#: ../../include/text.php:566 +#: ../../include/text.php:572 #, php-format msgid "%d Contact" msgid_plural "%d Contacts" msgstr[0] "%d Kontakt" msgstr[1] "%d Kontakte" -#: ../../include/text.php:637 ../../include/nav.php:87 +#: ../../include/text.php:643 ../../include/nav.php:87 msgid "Search" msgstr "Suche" -#: ../../include/text.php:813 +#: ../../include/text.php:831 msgid "Monday" msgstr "Montag" -#: ../../include/text.php:813 +#: ../../include/text.php:831 msgid "Tuesday" msgstr "Dienstag" -#: ../../include/text.php:813 +#: ../../include/text.php:831 msgid "Wednesday" msgstr "Mittwoch" -#: ../../include/text.php:813 +#: ../../include/text.php:831 msgid "Thursday" msgstr "Donnerstag" -#: ../../include/text.php:813 +#: ../../include/text.php:831 msgid "Friday" msgstr "Freitag" -#: ../../include/text.php:813 +#: ../../include/text.php:831 msgid "Saturday" msgstr "Samstag" -#: ../../include/text.php:813 +#: ../../include/text.php:831 msgid "Sunday" msgstr "Sonntag" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "January" msgstr "Januar" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "February" msgstr "Februar" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "March" msgstr "März" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "April" msgstr "April" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "May" msgstr "Mai" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "June" msgstr "Juni" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "July" msgstr "Juli" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "August" msgstr "August" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "September" msgstr "September" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "October" msgstr "Oktober" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "November" msgstr "November" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "December" msgstr "Dezember" -#: ../../include/text.php:887 +#: ../../include/text.php:905 msgid "bytes" msgstr "Byte" -#: ../../include/text.php:982 +#: ../../include/text.php:1000 msgid "Select an alternate language" msgstr "Alternative Sprache auswählen" -#: ../../include/text.php:994 +#: ../../include/text.php:1012 msgid "default" msgstr "standard" +#: ../../include/text.php:1228 +msgid "activity" +msgstr "Aktivität" + +#: ../../include/text.php:1230 +msgid "comment" +msgstr "Kommentar" + +#: ../../include/text.php:1231 +msgid "post" +msgstr "Beitrag" + #: ../../include/diaspora.php:570 msgid "Sharing notification from Diaspora network" msgstr "Freigabe-Benachrichtigung von Diaspora" @@ -5055,6 +5309,10 @@ msgstr "Anhänge:" msgid "[Relayed] Comment authored by %s from network %s" msgstr "[Weitergeleitet] Kommentar von %s aus dem %s Netzwerk" +#: ../../include/network.php:814 +msgid "view full size" +msgstr "Volle Größe anzeigen" + #: ../../include/oembed.php:128 msgid "Embedded content" msgstr "Eingebetteter Inhalt" @@ -5350,7 +5608,7 @@ msgstr "Sekunden" msgid "%1$d %2$s ago" msgstr "%1$d %2$s her" -#: ../../include/poller.php:474 +#: ../../include/poller.php:513 msgid "From: " msgstr "Von: " @@ -5371,15 +5629,15 @@ msgstr "Kann die DNS Informationen für den Datenbanken Server '%s' nicht ermitt msgid "[no subject]" msgstr "[kein Betreff]" -#: ../../include/acl_selectors.php:279 +#: ../../include/acl_selectors.php:284 msgid "Visible to everybody" msgstr "Für jeden sichtbar" -#: ../../include/acl_selectors.php:280 +#: ../../include/acl_selectors.php:285 msgid "show" msgstr "zeigen" -#: ../../include/acl_selectors.php:281 +#: ../../include/acl_selectors.php:286 msgid "don't show" msgstr "nicht zeigen" @@ -5396,172 +5654,191 @@ msgstr "Danke," msgid "%s Administrator" msgstr "der Administrator von %s" -#: ../../include/enotify.php:28 +#: ../../include/enotify.php:29 #, php-format -msgid "New mail received at %s" -msgstr "Neue Nachricht auf %s empfangen" +msgid "%s " +msgstr "%s " -#: ../../include/enotify.php:30 +#: ../../include/enotify.php:33 +#, php-format +msgid "[Friendica:Notify] New mail received at %s" +msgstr "[Friendica Meldung] Neue Nachricht erhalten von %s" + +#: ../../include/enotify.php:35 #, php-format msgid "%s sent you a new private message at %s." msgstr "%s hat dir eine neue private Nachricht auf %s geschrieben." -#: ../../include/enotify.php:31 +#: ../../include/enotify.php:36 #, php-format msgid "%s sent you %s." msgstr "%s hat Dir geschickt %s" -#: ../../include/enotify.php:31 +#: ../../include/enotify.php:36 msgid "a private message" msgstr "eine private Nachricht" -#: ../../include/enotify.php:32 +#: ../../include/enotify.php:37 #, php-format msgid "Please visit %s to view and/or reply to your private messages." msgstr "Bitte besuche %s, um deine privaten Nachrichten anzusehen und/oder zu beantworten." -#: ../../include/enotify.php:40 +#: ../../include/enotify.php:67 #, php-format -msgid "%s commented on an item at %s" -msgstr "%s kommentierte einen Beitrag auf %s" +msgid "%s's" +msgstr "%s's" -#: ../../include/enotify.php:41 +#: ../../include/enotify.php:71 +msgid "your" +msgstr "Dein" + +#: ../../include/enotify.php:78 +#, php-format +msgid "[Friendica:Notify] Comment to conversation #%d by %s" +msgstr "[Friendica Meldung] Kommentar zum Beitrag #%d von %s" + +#: ../../include/enotify.php:79 #, php-format msgid "%s commented on an item/conversation you have been following." msgstr "%s hat einen Beitrag kommentiert, dem du folgst." -#: ../../include/enotify.php:42 +#: ../../include/enotify.php:80 #, php-format -msgid "%s commented in %s." -msgstr "%s wurde kommentiert in %s" +msgid "%s commented on %s." +msgstr "%s kommentierte %s." -#: ../../include/enotify.php:42 -msgid "a watched conversation" -msgstr "eine beobachtete Unterhaltung" - -#: ../../include/enotify.php:44 ../../include/enotify.php:54 -#: ../../include/enotify.php:64 ../../include/enotify.php:74 +#: ../../include/enotify.php:82 ../../include/enotify.php:95 +#: ../../include/enotify.php:106 ../../include/enotify.php:117 #, php-format msgid "Please visit %s to view and/or reply to the conversation." msgstr "Bitte besuche %s, um die Konversation anzusehen und/oder zu kommentieren." -#: ../../include/enotify.php:51 +#: ../../include/enotify.php:89 +#, php-format +msgid "[Friendica:Notify] %s posted to your profile wall" +msgstr "[Friendica Meldung] %s hat auf Deine Pinnwand geschrieben" + +#: ../../include/enotify.php:91 #, php-format msgid "%s posted to your profile wall at %s" msgstr "%s hat auf deine Pinnwand bei %s gepostet" -#: ../../include/enotify.php:52 +#: ../../include/enotify.php:93 #, php-format msgid "%s posted to %s" msgstr "%s schrieb an %s" -#: ../../include/enotify.php:52 +#: ../../include/enotify.php:93 msgid "your profile wall." msgstr "Deine Pinnwand" -#: ../../include/enotify.php:61 +#: ../../include/enotify.php:102 +#, php-format +msgid "[Friendica:Notify] %s tagged you" +msgstr "[Friendica Meldung] %s hat Dich erwähnt" + +#: ../../include/enotify.php:103 #, php-format msgid "%s tagged you at %s" msgstr "%s hat dich auf %s erwähnt" -#: ../../include/enotify.php:62 +#: ../../include/enotify.php:104 #, php-format msgid "%s %s." msgstr "%s %s." -#: ../../include/enotify.php:62 +#: ../../include/enotify.php:104 msgid "tagged you" msgstr "erwähnte Dich" -#: ../../include/enotify.php:71 +#: ../../include/enotify.php:113 +#, php-format +msgid "[Friendica:Notify] %s tagged your post" +msgstr "[Friendica Meldung] %s markierte Deinen Beitrag" + +#: ../../include/enotify.php:114 #, php-format msgid "%s tagged your post at %s" msgstr "%s hat deinen Beitrag auf %s getaggt" -#: ../../include/enotify.php:72 +#: ../../include/enotify.php:115 #, php-format msgid "%s tagged %s" msgstr "%s markierte %s" -#: ../../include/enotify.php:72 +#: ../../include/enotify.php:115 msgid "your post" msgstr "Dein Beitrag" -#: ../../include/enotify.php:81 -#, php-format -msgid "Introduction received at %s" -msgstr "Kontaktanfrage auf %s erhalten" +#: ../../include/enotify.php:124 +msgid "[Friendica:Notify] Introduction received" +msgstr "[Friendica Meldung] Kontaktanfrage erhalten" -#: ../../include/enotify.php:82 +#: ../../include/enotify.php:125 #, php-format msgid "You've received an introduction from '%s' at %s" msgstr "Du hast eine Kontaktanfrage von '%s' auf %s erhalten" -#: ../../include/enotify.php:83 +#: ../../include/enotify.php:126 #, php-format msgid "You've received %s from %s." msgstr "Du hast %s von %s erhalten." -#: ../../include/enotify.php:83 +#: ../../include/enotify.php:126 msgid "an introduction" msgstr "eine Einführung" -#: ../../include/enotify.php:84 ../../include/enotify.php:101 +#: ../../include/enotify.php:127 ../../include/enotify.php:144 #, php-format msgid "You may visit their profile at %s" msgstr "Hier kannst du das Profil betrachten: %s" -#: ../../include/enotify.php:86 +#: ../../include/enotify.php:129 #, php-format msgid "Please visit %s to approve or reject the introduction." msgstr "Bitte besuche %s, um die Kontaktanfrage anzunehmen oder abzulehnen." -#: ../../include/enotify.php:93 -#, php-format -msgid "Friend suggestion received at %s" -msgstr "Kontaktvorschlag empfangen auf %s" +#: ../../include/enotify.php:136 +msgid "[Friendica:Notify] Friend suggestion received" +msgstr "[Friendica Meldung] Kontaktvorschlag erhalten" -#: ../../include/enotify.php:94 +#: ../../include/enotify.php:137 #, php-format msgid "You've received a friend suggestion from '%s' at %s" msgstr "Du hast von '%s' einen Kontaktvorschlag erhalten auf %s" -#: ../../include/enotify.php:95 +#: ../../include/enotify.php:138 #, php-format msgid "You've received %s for %s from %s." msgstr "Du hast %s für %s von %s erhalten." -#: ../../include/enotify.php:96 +#: ../../include/enotify.php:139 msgid "a friend suggestion" msgstr "ein Freunde Vorschlag" -#: ../../include/enotify.php:99 +#: ../../include/enotify.php:142 msgid "Name:" msgstr "Name:" -#: ../../include/enotify.php:100 +#: ../../include/enotify.php:143 msgid "Photo:" msgstr "Foto:" -#: ../../include/enotify.php:103 +#: ../../include/enotify.php:146 #, php-format msgid "Please visit %s to approve or reject the suggestion." msgstr "Bitte besuche %s, um den Vorschlag zu akzeptieren oder abzulehnen." -#: ../../include/items.php:2511 +#: ../../include/items.php:2573 msgid "A new person is sharing with you at " msgstr "Eine neue Person teilt mit dir auf " -#: ../../include/items.php:2511 +#: ../../include/items.php:2573 msgid "You have a new follower at " msgstr "Du hast einen neuen Kontakt auf " -#: ../../include/bb2diaspora.php:83 -msgid "view full size" -msgstr "Volle Größe anzeigen" - -#: ../../include/bb2diaspora.php:132 ../../include/bb2diaspora.php:142 -#: ../../include/bb2diaspora.php:143 +#: ../../include/bb2diaspora.php:102 ../../include/bb2diaspora.php:112 +#: ../../include/bb2diaspora.php:113 msgid "image/photo" msgstr "Bild/Foto" @@ -5577,25 +5854,25 @@ msgstr "Bitte lade ein Profilbild hoch." msgid "Welcome back " msgstr "Willkommen zurück " -#: ../../include/Contact.php:131 ../../include/conversation.php:769 +#: ../../include/Contact.php:131 ../../include/conversation.php:788 msgid "View status" msgstr "Status anzeigen" -#: ../../include/Contact.php:132 ../../include/conversation.php:770 +#: ../../include/Contact.php:132 ../../include/conversation.php:789 msgid "View profile" msgstr "Profil anzeigen" -#: ../../include/Contact.php:133 ../../include/conversation.php:771 +#: ../../include/Contact.php:133 ../../include/conversation.php:790 msgid "View photos" msgstr "Fotos ansehen" #: ../../include/Contact.php:134 ../../include/Contact.php:147 -#: ../../include/conversation.php:772 +#: ../../include/conversation.php:791 msgid "View recent" msgstr "Neueste anzeigen" #: ../../include/Contact.php:136 ../../include/Contact.php:147 -#: ../../include/conversation.php:774 +#: ../../include/conversation.php:793 msgid "Send PM" msgstr "Private Nachricht senden" @@ -5608,188 +5885,188 @@ msgstr "Nachricht/Beitrag" msgid "%1$s marked %2$s's %3$s as favorite" msgstr "%1$s hat %2$s\\s %3$s als Favorit markiert" -#: ../../include/conversation.php:301 ../../include/conversation.php:562 +#: ../../include/conversation.php:303 ../../include/conversation.php:572 msgid "Select" msgstr "Auswählen" -#: ../../include/conversation.php:316 ../../include/conversation.php:648 -#: ../../include/conversation.php:649 +#: ../../include/conversation.php:320 ../../include/conversation.php:665 +#: ../../include/conversation.php:666 #, php-format msgid "View %s's profile @ %s" msgstr "Das Profil von %s auf %s betrachten." -#: ../../include/conversation.php:325 ../../include/conversation.php:660 +#: ../../include/conversation.php:330 ../../include/conversation.php:677 #, php-format msgid "%s from %s" msgstr "%s von %s" -#: ../../include/conversation.php:341 +#: ../../include/conversation.php:346 msgid "View in context" msgstr "Im Zusammenhang betrachten" -#: ../../include/conversation.php:456 +#: ../../include/conversation.php:467 #, php-format msgid "%d comment" msgid_plural "%d comments" msgstr[0] "%d Kommentar" msgstr[1] "%d Kommentare" -#: ../../include/conversation.php:459 ../../boot.php:448 +#: ../../include/conversation.php:468 ../../boot.php:448 msgid "show more" msgstr "mehr anzeigen" -#: ../../include/conversation.php:519 +#: ../../include/conversation.php:529 msgid "like" msgstr "mag ich" -#: ../../include/conversation.php:520 +#: ../../include/conversation.php:530 msgid "dislike" msgstr "mag ich nicht" -#: ../../include/conversation.php:522 +#: ../../include/conversation.php:532 msgid "Share this" msgstr "Teile dieses" -#: ../../include/conversation.php:522 +#: ../../include/conversation.php:532 msgid "share" msgstr "Teilen" -#: ../../include/conversation.php:572 +#: ../../include/conversation.php:582 msgid "add star" msgstr "markieren" -#: ../../include/conversation.php:573 +#: ../../include/conversation.php:583 msgid "remove star" msgstr "Markierung entfernen" -#: ../../include/conversation.php:574 +#: ../../include/conversation.php:584 msgid "toggle star status" msgstr "Markierung umschalten" -#: ../../include/conversation.php:577 +#: ../../include/conversation.php:587 msgid "starred" msgstr "markiert" -#: ../../include/conversation.php:578 +#: ../../include/conversation.php:588 msgid "add tag" msgstr "Tag hinzufügen" -#: ../../include/conversation.php:650 +#: ../../include/conversation.php:667 msgid "to" msgstr "zu" -#: ../../include/conversation.php:651 +#: ../../include/conversation.php:668 msgid "Wall-to-Wall" msgstr "Wall-to-Wall" -#: ../../include/conversation.php:652 +#: ../../include/conversation.php:669 msgid "via Wall-To-Wall:" msgstr "via Wall-To-Wall:" -#: ../../include/conversation.php:694 +#: ../../include/conversation.php:713 msgid "Delete Selected Items" msgstr "Lösche die markierten Beiträge" -#: ../../include/conversation.php:826 +#: ../../include/conversation.php:845 #, php-format msgid "%s likes this." msgstr "%s mag das." -#: ../../include/conversation.php:826 +#: ../../include/conversation.php:845 #, php-format msgid "%s doesn't like this." msgstr "%s mag das nicht." -#: ../../include/conversation.php:830 +#: ../../include/conversation.php:849 #, php-format msgid "%2$d people like this." msgstr "%2$d Leute mögen das." -#: ../../include/conversation.php:832 +#: ../../include/conversation.php:851 #, php-format msgid "%2$d people don't like this." msgstr "%2$d Leute mögen das nicht." -#: ../../include/conversation.php:838 +#: ../../include/conversation.php:857 msgid "and" msgstr "und" -#: ../../include/conversation.php:841 +#: ../../include/conversation.php:860 #, php-format msgid ", and %d other people" msgstr " und %d andere" -#: ../../include/conversation.php:842 +#: ../../include/conversation.php:861 #, php-format msgid "%s like this." msgstr "%s mögen das." -#: ../../include/conversation.php:842 +#: ../../include/conversation.php:861 #, php-format msgid "%s don't like this." msgstr "%s mögen das nicht." -#: ../../include/conversation.php:867 +#: ../../include/conversation.php:886 msgid "Visible to everybody" msgstr "Für jedermann sichtbar" -#: ../../include/conversation.php:869 +#: ../../include/conversation.php:888 msgid "Please enter a video link/URL:" msgstr "Bitte Link/URL zum Video einfügen:" -#: ../../include/conversation.php:870 +#: ../../include/conversation.php:889 msgid "Please enter an audio link/URL:" msgstr "Bitte Link/URL zum Audio einfügen:" -#: ../../include/conversation.php:871 +#: ../../include/conversation.php:890 msgid "Tag term:" msgstr "Tag:" -#: ../../include/conversation.php:872 +#: ../../include/conversation.php:891 msgid "Where are you right now?" msgstr "Wo hältst du dich jetzt gerade auf?" -#: ../../include/conversation.php:873 +#: ../../include/conversation.php:892 msgid "Enter a title for this item" msgstr "Gib den Titel für diesen Beitrag ein" -#: ../../include/conversation.php:916 +#: ../../include/conversation.php:935 msgid "upload photo" msgstr "Bild hochladen" -#: ../../include/conversation.php:918 +#: ../../include/conversation.php:937 msgid "attach file" msgstr "Datei anhängen" -#: ../../include/conversation.php:920 +#: ../../include/conversation.php:939 msgid "web link" msgstr "Weblink" -#: ../../include/conversation.php:921 +#: ../../include/conversation.php:940 msgid "Insert video link" msgstr "Video-Adresse einfügen" -#: ../../include/conversation.php:922 +#: ../../include/conversation.php:941 msgid "video link" msgstr "Video-Link" -#: ../../include/conversation.php:923 +#: ../../include/conversation.php:942 msgid "Insert audio link" msgstr "Audio-Adresse einfügen" -#: ../../include/conversation.php:924 +#: ../../include/conversation.php:943 msgid "audio link" msgstr "Audio-Link" -#: ../../include/conversation.php:926 +#: ../../include/conversation.php:945 msgid "set location" msgstr "Ort setzen" -#: ../../include/conversation.php:928 +#: ../../include/conversation.php:947 msgid "clear location" msgstr "Ort löschen" -#: ../../include/conversation.php:933 +#: ../../include/conversation.php:952 msgid "permissions" msgstr "Zugriffsrechte" diff --git a/view/de/strings.php b/view/de/strings.php index a093b70681..5438a1c9fc 100755 --- a/view/de/strings.php +++ b/view/de/strings.php @@ -4,23 +4,23 @@ function string_plural_select_de($n){ return ($n != 1); } ; -$a->strings["Post successful."] = "Beitrag erfolgreich veröffentlicht."; +$a->strings["Post successful."] = "Beitrag erfolgreich ver�ffentlicht."; $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 update failed."] = "Konnte den Kontakt nicht aktualisieren."; $a->strings["Permission denied."] = "Zugriff verweigert."; $a->strings["Contact not found."] = "Kontakt nicht gefunden."; $a->strings["Repair Contact Settings"] = "Kontakt-Einstellungen reparieren"; -$a->strings["WARNING: This is highly advanced and if you enter incorrect information your communications with this contact may stop working."] = "ACHTUNG: Das sind Experten-Einstellungen! Wenn Du etwas Falsches eingibst, funktioniert die Kommunikation mit diesem Kontakt evtl. nicht mehr."; -$a->strings["Please use your browser 'Back' button now if you are uncertain what to do on this page."] = "Bitte nutze den Zurück-Button deines Browsers jetzt, wenn du dir unsicher bist, was du tun willst."; -$a->strings["Return to contact editor"] = "Zurück zum Kontakteditor"; +$a->strings["WARNING: This is highly advanced and if you enter incorrect information your communications with this contact may stop working."] = "ACHTUNG: Das sind Experten-Einstellungen! Wenn Du etwas falsches eingibst, funktioniert die Kommunikation mit diesem Kontakt evtl. nicht mehr."; +$a->strings["Please use your browser 'Back' button now if you are uncertain what to do on this page."] = "Bitte nutze den Zur�ck-Button deines Browsers jetzt, wenn du dir unsicher bist, was auf dieser Seite gemacht wird."; +$a->strings["Return to contact editor"] = "Zur�ck zum Kontakteditor"; $a->strings["Name"] = "Name"; $a->strings["Account Nickname"] = "Account-Spitzname"; -$a->strings["@Tagname - overrides Name/Nickname"] = "@Tagname - überschreibt Name/Spitzname"; +$a->strings["@Tagname - overrides Name/Nickname"] = "@Tagname - �berschreibt Name/Spitzname"; $a->strings["Account URL"] = "Account-URL"; -$a->strings["Friend Request URL"] = "URL für Freundschaftsanfragen"; -$a->strings["Friend Confirm URL"] = "URL für Bestätigungen von Freundschaftsanfragen"; -$a->strings["Notification Endpoint URL"] = "URL-Endpunkt für Benachrichtigungen"; +$a->strings["Friend Request URL"] = "URL f�r Freundschaftsanfragen"; +$a->strings["Friend Confirm URL"] = "URL f�r Best�tigungen von Freundschaftsanfragen"; +$a->strings["Notification Endpoint URL"] = "URL-Endpunkt f�r Benachrichtigungen"; $a->strings["Poll/Feed URL"] = "Pull/Feed-URL"; $a->strings["New photo from this URL"] = "Neues Foto von dieser URL"; $a->strings["Submit"] = "Senden"; @@ -28,7 +28,7 @@ $a->strings["Help:"] = "Hilfe:"; $a->strings["Help"] = "Hilfe"; $a->strings["Not Found"] = "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��er als das erlaubte Limit von %d"; $a->strings["File upload failed."] = "Hochladen der Datei fehlgeschlagen."; $a->strings["Friend suggestion sent."] = "Kontaktvorschlag gesendet."; $a->strings["Suggest Friends"] = "Kontakte vorschlagen"; @@ -40,7 +40,7 @@ $a->strings["link to source"] = "Link zum Originalbeitrag"; $a->strings["Events"] = "Veranstaltungen"; $a->strings["Create New Event"] = "Neue Veranstaltung erstellen"; $a->strings["Previous"] = "Vorherige"; -$a->strings["Next"] = "Nächste"; +$a->strings["Next"] = "N�chste"; $a->strings["hour:minute"] = "Stunde:Minute"; $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."; @@ -409,6 +409,10 @@ $a->strings["Email login name:"] = "E-Mail-Login-Name:"; $a->strings["Email password:"] = "E-Mail-Passwort:"; $a->strings["Reply-to address:"] = "Reply-to Adresse:"; $a->strings["Send public posts to all email contacts:"] = "Sende öffentliche Beiträge an alle E-Mail-Kontakte:"; +$a->strings["Action after import:"] = "Aktion nach Import:"; +$a->strings["Mark as seen"] = "Als gelesen markieren"; +$a->strings["Move to folder"] = "In einen Ordner verschieben"; +$a->strings["Move to folder:"] = "In diesen Ordner verschieben:"; $a->strings["Normal Account"] = "Normaler Account"; $a->strings["This account is a normal personal profile"] = "Dieser Account ist ein normales persönliches Profil"; $a->strings["Soapbox Account"] = "Sandkasten-Account"; @@ -518,9 +522,9 @@ $a->strings["Create a group of contacts/friends."] = "Eine Gruppe von Kontakten/ $a->strings["Group Name: "] = "Gruppenname:"; $a->strings["Group removed."] = "Gruppe entfernt."; $a->strings["Unable to remove group."] = "Konnte die Gruppe nicht entfernen."; -$a->strings["Click on a contact to add or remove."] = "Klicke einen Kontakt an, um ihn hinzuzufügen oder zu entfernen"; $a->strings["Group Editor"] = "Gruppeneditor"; $a->strings["Members"] = "Mitglieder"; +$a->strings["Click on a contact to add or remove."] = "Klicke einen Kontakt an, um ihn hinzuzufügen oder zu entfernen"; $a->strings["Invalid profile identifier."] = "Ungültiger Profil-Bezeichner"; $a->strings["Profile Visibility Editor"] = "Editor für die Profil-Sichtbarkeit"; $a->strings["Profile"] = "Profil"; @@ -643,32 +647,51 @@ $a->strings["Site name"] = "Seitenname"; $a->strings["Banner/Logo"] = "Banner/Logo"; $a->strings["System language"] = "Systemsprache"; $a->strings["System theme"] = "Systemweites Thema"; +$a->strings["Default system theme - may be over-ridden by user profiles"] = "Standard Server Theme - kann von den Benutzereinstellungen überschrieben werden."; $a->strings["Maximum image size"] = "Maximale Größe von Bildern"; +$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Maximale Upload-Größe von Bildern in Bytes. Standard ist 0, d.h. ohne Limit."; $a->strings["Register policy"] = "Registrierungsmethode"; $a->strings["Register text"] = "Registrierungstext"; +$a->strings["Will be displayed prominently on the registration page."] = "Wird gut sichtbar auf der Registrierungs-Seite angezeigt."; $a->strings["Accounts abandoned after x days"] = "Accounts gelten nach x Tagen als unbenutzt"; $a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Verschwende keine System-Ressourcen auf das Pollen externer Seiten, wenn Accounts nicht mehr benutzt werden. 0 eingeben für kein Limit."; $a->strings["Allowed friend domains"] = "Erlaubte Domains für Kontakte"; +$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."; $a->strings["Allowed email domains"] = "Erlaubte Domains für Emails"; +$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."; $a->strings["Block public"] = "Öffentlichen Zugriff blockieren"; +$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Klicken, um öffentlichen Zugriff auf sonst öffentliche Profile zu blockieren, wenn man nicht eingeloggt ist."; $a->strings["Force publish"] = "Erzwinge Veröffentlichung"; +$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Klicken, um Anzeige aller Profile dieses Servers im Verzeichnis zu erzwingen."; $a->strings["Global directory update URL"] = "URL für Updates beim weltweiten Verzeichnis"; +$a->strings["URL to update the global directory. If this is not set, the global directory is completely unavailable to the application."] = "URL für Update des globalen Verzeichnisses. Wenn nichts eingetragen ist, bleibt das globale Verzeichnis unerreichbar."; $a->strings["Block multiple registrations"] = "Unterbinde Mehrfachregistrierung"; +$a->strings["Disallow users to register additional accounts for use as pages."] = "Benutzern nicht erlauben, weitere Accounts als zusätzliche Profile anzulegen."; $a->strings["OpenID support"] = "OpenID Unterstützung"; +$a->strings["OpenID support for registration and logins."] = "OpenID-Unterstützung für Registrierung und Login."; $a->strings["Gravatar support"] = "Gravatar Unterstützung"; +$a->strings["Search new user's photo on Gravatar."] = "Suchfunktion bei Gravatar für Profilbilder neuer Nutzer."; $a->strings["Fullname check"] = "Namen auf Vollständigkeit überprüfen"; +$a->strings["Force users to register with a space between firstname and lastname in Full name, as an antispam measure"] = "Leerzeichen zwischen Vor- und Nachname im vollständigen Namen erzwingen, um SPAM zu vermeiden."; $a->strings["UTF-8 Regular expressions"] = "UTF-8 Reguläre Ausdrücke"; +$a->strings["Use PHP UTF8 regular expressions"] = "PHP UTF8 Ausdrücke verwenden"; $a->strings["Show Community Page"] = "Gemeinschaftsseite anzeigen"; +$a->strings["Display a Community page showing all recent public postings on this site."] = "Zeige die Gemeinschaftsseite mit allen öffentlichen Beiträgen auf diesem Server."; $a->strings["Enable OStatus support"] = "OStatus Unterstützung aktivieren"; +$a->strings["Provide built-in OStatus (identi.ca, status.net, etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = "Biete die eingebaute OStatus (identi.ca, status.net, etc.) Unterstützung an. Jede Kommunikation in OStatus ist öffentlich, so Privatsphäre Warnungen werden bei Bedarf angezeigt."; $a->strings["Enable Diaspora support"] = "Diaspora-Support aktivieren"; +$a->strings["Provide built-in Diaspora network compatibility."] = "Verwende die eingebaute Diaspora-Verknüpfung."; $a->strings["Only allow Friendica contacts"] = "Nur Friendica-Kontakte erlauben"; +$a->strings["All contacts must use Friendica protocols. All other built-in communication protocols disabled."] = "Alle Kontakte müssen das Friendica Protokoll nutzen. Alle anderen Kommunikationsprotokolle werden deaktiviert."; $a->strings["Verify SSL"] = "SSL Überprüfen"; +$a->strings["If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites."] = "Wenn gewollt, kann man hier eine strenge Zertifikat Kontrolle anstellen. Das bedeutet, das man zu keinen Seiten mit selbst unterzeichneten SSL eine Verbindung herstellen kann."; $a->strings["Proxy user"] = "Proxy Nutzer"; $a->strings["Proxy URL"] = "Proxy URL"; $a->strings["Network timeout"] = "Netzwerk Wartezeit"; -$a->strings["%s user blocked"] = array( - 0 => "%s Nutzer gesperrt", - 1 => "%s Nutzer gesperrt/entsperrt", +$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Der Wert ist in Sekunden. Setze 0 für unbegrenzt (nicht empfohlen)."; +$a->strings["%s user blocked/unblocked"] = array( + 0 => "%s Benutzer geblockt/freigegeben", + 1 => "%s Benutzer geblockt/freigegeben", ); $a->strings["%s user deleted"] = array( 0 => "%s Nutzer gelöscht", @@ -695,7 +718,11 @@ $a->strings["Disable"] = "Ausschalten"; $a->strings["Enable"] = "Einschalten"; $a->strings["Toggle"] = "Umschalten"; $a->strings["Settings"] = "Einstellungen"; +$a->strings["Author: "] = "Autor:"; +$a->strings["Maintainer: "] = "Betreuer:"; $a->strings["No themes found."] = "Keine Themen gefunden."; +$a->strings["[Experimental]"] = "[Experimentell]"; +$a->strings["[Unsupported]"] = "[Nicht unterstützt]"; $a->strings["Log settings updated."] = "Protokolleinstellungen aktualisiert."; $a->strings["Clear"] = "löschen"; $a->strings["Debugging"] = "Protokoll führen"; @@ -823,6 +850,7 @@ $a->strings["Please join my social network on %s"] = "Bitte trete meinem Soziale $a->strings["To accept this invitation, please visit:"] = "Um diese Einladung anzunehmen besuche bitte:"; $a->strings["You will need to supply this invitation code: \$invite_code"] = "Du benötigst den folgenden Einladungscode: \$invite_code"; $a->strings["Once you have registered, please connect with me via my profile page at:"] = "Sobald du registriert bist, kontaktiere mich bitte auf meiner Profilseite:"; +$a->strings["This may occasionally happen if contact was requested by both persons and it has already been approved."] = "Das kann passieren, wenn sich zwei Kontakte gegenseitig eingeladen haben und bereits einer angenommen wurde."; $a->strings["Response from remote site was not understood."] = "Antwort der Gegenstelle unverständlich."; $a->strings["Unexpected response from remote site: "] = "Unerwartete Antwort der Gegenstelle: "; $a->strings["Confirmation completed successfully."] = "Bestätigung erfolgreich abgeschlossen."; @@ -882,6 +910,12 @@ $a->strings["Username:"] = "Nutzername:"; $a->strings["Password:"] = "Passwort:"; $a->strings["Use SSL "] = "SSL Verwenden "; $a->strings["yourls Settings saved."] = "yourls Einstellungen gespeichert"; +$a->strings["Post to LiveJournal"] = "In LiveJournal veröffentlichen."; +$a->strings["LiveJournal Post Settings"] = "LiveJournal Veröffentlichungs-Einstellungen"; +$a->strings["Enable LiveJournal Post Plugin"] = "LiveJournal Post Plugin aktivieren"; +$a->strings["LiveJournal username"] = "LiveJournal Benutzername"; +$a->strings["LiveJournal password"] = "LiveJournal Passwort"; +$a->strings["Post to LiveJournal by default"] = "Standardmäßig bei LiveJournal veröffentlichen"; $a->strings["\"Not Safe For Work\" Settings"] = "\"Not Safe For Work\"-Einstellungen"; $a->strings["Enable NSFW filter"] = "NSFW Filter aktivieren"; $a->strings["Comma separated words to treat as NSFW"] = "Wörter, die gefiltert werden sollen (durch Kommas getrennt)"; @@ -895,6 +929,7 @@ $a->strings["Most active users"] = "Aktivste Nutzer"; $a->strings["Last photos"] = "Letzte Fotos"; $a->strings["Last likes"] = "Zuletzt gemocht"; $a->strings["event"] = "Veranstaltung"; +$a->strings["Latest users"] = "Letzte Benutzer"; $a->strings["Allow to use your friendica id (%s) to connecto to external unhosted-enabled storage (like ownCloud). See RemoteStorage WebFinger"] = "Ermöglicht dir, deine friendica id (%s) mit externen unhosted-fähigen Speichern (z.B. ownCloud) zu verbinden. Siehe RemoteStorage WebFinger"; $a->strings["Template URL (with {category})"] = "Vorlagen URL (mit {Kategorie})"; $a->strings["OAuth end-point"] = "OAuth end-point"; @@ -914,6 +949,12 @@ $a->strings["\"Cat\" game!"] = "Unentschieden!"; $a->strings["I won!"] = "Ich gewinne!"; $a->strings["Randplace Settings"] = "Randplace-Einstellungen"; $a->strings["Enable Randplace Plugin"] = "Randplace-Plugin aktivieren"; +$a->strings["Post to Dreamwidth"] = "In Dreamwidth veröffentlichen"; +$a->strings["Dreamwidth Post Settings"] = "Dreamwidth Veröffentlichungs-Einstellungen"; +$a->strings["Enable dreamwidth Post Plugin"] = "Dreamwidth Post Plugin aktivieren"; +$a->strings["dreamwidth username"] = "Dreamwidth Benutzername"; +$a->strings["dreamwidth password"] = "Dreamwidth Passwort"; +$a->strings["Post to dreamwidth by default"] = "Standardmäßig bei Dreamwidth veröffentlichen"; $a->strings["Post to Drupal"] = "Bei Drupal veröffentlichen"; $a->strings["Drupal Post Settings"] = "Drupal-Beitragseinstellungen"; $a->strings["Enable Drupal Post Plugin"] = "Veröffentlichung bei Drupal erlauben"; @@ -956,6 +997,7 @@ $a->strings[":-)"] = ":-)"; $a->strings[":-("] = ":-("; $a->strings["lol"] = "lol"; $a->strings["Quick Comment Settings"] = "Schnell-Kommentar Einstellungen"; +$a->strings["Quick comments are found near comment boxes, sometimes hidden. Click them to provide simple replies."] = "Kurz-Kommentare findet man in der Nähe der Kommentar-Boxen. Ein Klick darauf erstellt einfache Antworten."; $a->strings["Enter quick comments, one per line"] = "Gib einen Schnell-Kommentar pro Zeile ein"; $a->strings["Quick Comment settings saved."] = "Schnell-Kommentare Einstellungen gespeichert"; $a->strings["Tile Server URL"] = "Tile Server URL"; @@ -1002,6 +1044,11 @@ $a->strings["Post to Tumblr by default"] = "Standardmäßig bei Tumblr veröffen $a->strings["Numfriends settings updated."] = "Numfriends Einstellungen aktualisiert"; $a->strings["Numfriends Settings"] = "Numfriends Einstellungen"; $a->strings["How many contacts to display on profile sidebar"] = "Wie viele Kontakte sollen in der Seitenleiste angezeigt werden"; +$a->strings["Gnot settings updated."] = "Gnot Einstellungen aktualisiert."; +$a->strings["Gnot Settings"] = "Gnot Einstellungen"; +$a->strings["Allows threading of email comment notifications on Gmail and anonymising the subject line."] = "Erlaubt das Veröffentlichen von E-Mail Kommentar Benachrichtigungen bei Gmail mit anonymisiertem Betreff"; +$a->strings["Enable this plugin/addon?"] = "Dieses Plugin/Addon aktivieren?"; +$a->strings["[Friendica:Notify] Comment to conversation #%d"] = "[Friendica Meldung] Kommentar zum Beitrag #%d"; $a->strings["Post to Wordpress"] = "Bei WordPress veröffentlichen"; $a->strings["WordPress Post Settings"] = "WordPress-Beitragseinstellungen"; $a->strings["Enable WordPress Post Plugin"] = "WordPress-Plugin aktivieren."; @@ -1034,12 +1081,17 @@ $a->strings["Allow posting to Twitter"] = "Veröffentlichung bei Twitter erlaube $a->strings["Send public postings to Twitter by default"] = "Veröffentliche öffentliche Beiträge standardmäßig bei Twitter"; $a->strings["Consumer key"] = "Consumer Key"; $a->strings["Consumer secret"] = "Consumer Secret"; +$a->strings["irc Chatroom"] = "irc Chatroom"; $a->strings["Post to Posterous"] = "Nach Posterous senden"; $a->strings["Posterous Post Settings"] = "Posterous Beitrags-Einstellungen"; $a->strings["Enable Posterous Post Plugin"] = "Posterous-Plugin aktivieren"; $a->strings["Posterous login"] = "Posterous-Anmeldename"; $a->strings["Posterous password"] = "Posterous-Passwort"; $a->strings["Post to Posterous by default"] = "Veröffentliche öffentliche Beiträge standardmäßig bei Posterous"; +$a->strings["Theme settings"] = "Themen Einstellungen"; +$a->strings["Alignment"] = "Ausrichtung"; +$a->strings["Left"] = "Links"; +$a->strings["Center"] = "Mitte"; $a->strings["Gender:"] = "Geschlecht:"; $a->strings["j F, Y"] = "j F, Y"; $a->strings["j F"] = "j F"; @@ -1166,9 +1218,13 @@ $a->strings["December"] = "Dezember"; $a->strings["bytes"] = "Byte"; $a->strings["Select an alternate language"] = "Alternative Sprache auswählen"; $a->strings["default"] = "standard"; +$a->strings["activity"] = "Aktivität"; +$a->strings["comment"] = "Kommentar"; +$a->strings["post"] = "Beitrag"; $a->strings["Sharing notification from Diaspora network"] = "Freigabe-Benachrichtigung von Diaspora"; $a->strings["Attachments:"] = "Anhänge:"; $a->strings["[Relayed] Comment authored by %s from network %s"] = "[Weitergeleitet] Kommentar von %s aus dem %s Netzwerk"; +$a->strings["view full size"] = "Volle Größe anzeigen"; $a->strings["Embedded content"] = "Eingebetteter Inhalt"; $a->strings["Embedding disabled"] = "Einbettungen deaktiviert"; $a->strings["A deleted group with this name was revived. Existing item permissions may apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Eine gelöschte Gruppe mit diesem Namen wurde wiederbelebt. Bestehende Berechtigungseinstellungen könnten auf diese Gruppe oder zukünftige Mitglieder angewandt werden. Falls du dies nicht möchtest, erstelle bitte eine andere Gruppe mit einem anderen Namen."; @@ -1255,32 +1311,37 @@ $a->strings["don't show"] = "nicht zeigen"; $a->strings["Friendica Notification"] = "Friendica-Benachrichtigung"; $a->strings["Thank You,"] = "Danke,"; $a->strings["%s Administrator"] = "der Administrator von %s"; -$a->strings["New mail received at %s"] = "Neue Nachricht auf %s empfangen"; +$a->strings["%s "] = "%s "; +$a->strings["[Friendica:Notify] New mail received at %s"] = "[Friendica Meldung] Neue Nachricht erhalten von %s"; $a->strings["%s sent you a new private message at %s."] = "%s hat dir eine neue private Nachricht auf %s geschrieben."; $a->strings["%s sent you %s."] = "%s hat Dir geschickt %s"; $a->strings["a private message"] = "eine private Nachricht"; $a->strings["Please visit %s to view and/or reply to your private messages."] = "Bitte besuche %s, um deine privaten Nachrichten anzusehen und/oder zu beantworten."; -$a->strings["%s commented on an item at %s"] = "%s kommentierte einen Beitrag auf %s"; +$a->strings["%s's"] = "%s's"; +$a->strings["your"] = "Dein"; +$a->strings["[Friendica:Notify] Comment to conversation #%d by %s"] = "[Friendica Meldung] Kommentar zum Beitrag #%d von %s"; $a->strings["%s commented on an item/conversation you have been following."] = "%s hat einen Beitrag kommentiert, dem du folgst."; -$a->strings["%s commented in %s."] = "%s wurde kommentiert in %s"; -$a->strings["a watched conversation"] = "eine beobachtete Unterhaltung"; +$a->strings["%s commented on %s."] = "%s kommentierte %s."; $a->strings["Please visit %s to view and/or reply to the conversation."] = "Bitte besuche %s, um die Konversation anzusehen und/oder zu kommentieren."; +$a->strings["[Friendica:Notify] %s posted to your profile wall"] = "[Friendica Meldung] %s hat auf Deine Pinnwand geschrieben"; $a->strings["%s posted to your profile wall at %s"] = "%s hat auf deine Pinnwand bei %s gepostet"; $a->strings["%s posted to %s"] = "%s schrieb an %s"; $a->strings["your profile wall."] = "Deine Pinnwand"; +$a->strings["[Friendica:Notify] %s tagged you"] = "[Friendica Meldung] %s hat Dich erwähnt"; $a->strings["%s tagged you at %s"] = "%s hat dich auf %s erwähnt"; $a->strings["%s %s."] = "%s %s."; $a->strings["tagged you"] = "erwähnte Dich"; +$a->strings["[Friendica:Notify] %s tagged your post"] = "[Friendica Meldung] %s markierte Deinen Beitrag"; $a->strings["%s tagged your post at %s"] = "%s hat deinen Beitrag auf %s getaggt"; $a->strings["%s tagged %s"] = "%s markierte %s"; $a->strings["your post"] = "Dein Beitrag"; -$a->strings["Introduction received at %s"] = "Kontaktanfrage auf %s erhalten"; +$a->strings["[Friendica:Notify] Introduction received"] = "[Friendica Meldung] Kontaktanfrage erhalten"; $a->strings["You've received an introduction from '%s' at %s"] = "Du hast eine Kontaktanfrage von '%s' auf %s erhalten"; $a->strings["You've received %s from %s."] = "Du hast %s von %s erhalten."; $a->strings["an introduction"] = "eine Einführung"; $a->strings["You may visit their profile at %s"] = "Hier kannst du das Profil betrachten: %s"; $a->strings["Please visit %s to approve or reject the introduction."] = "Bitte besuche %s, um die Kontaktanfrage anzunehmen oder abzulehnen."; -$a->strings["Friend suggestion received at %s"] = "Kontaktvorschlag empfangen auf %s"; +$a->strings["[Friendica:Notify] Friend suggestion received"] = "[Friendica Meldung] Kontaktvorschlag erhalten"; $a->strings["You've received a friend suggestion from '%s' at %s"] = "Du hast von '%s' einen Kontaktvorschlag erhalten auf %s"; $a->strings["You've received %s for %s from %s."] = "Du hast %s für %s von %s erhalten."; $a->strings["a friend suggestion"] = "ein Freunde Vorschlag"; @@ -1289,7 +1350,6 @@ $a->strings["Photo:"] = "Foto:"; $a->strings["Please visit %s to approve or reject the suggestion."] = "Bitte besuche %s, um den Vorschlag zu akzeptieren oder abzulehnen."; $a->strings["A new person is sharing with you at "] = "Eine neue Person teilt mit dir auf "; $a->strings["You have a new follower at "] = "Du hast einen neuen Kontakt auf "; -$a->strings["view full size"] = "Volle Größe anzeigen"; $a->strings["image/photo"] = "Bild/Foto"; $a->strings["Welcome "] = "Willkommen "; $a->strings["Please upload a profile photo."] = "Bitte lade ein Profilbild hoch."; diff --git a/view/dfrn_request.tpl b/view/dfrn_request.tpl index cd98a4daab..d8aa8b1818 100755 --- a/view/dfrn_request.tpl +++ b/view/dfrn_request.tpl @@ -7,7 +7,11 @@ $page_desc
                          • $friendica
                          • $diaspora $diasnote
                          • $statusnet
                          • +
                          • $emailnet
                          +$invite_desc +

                          +

                          $desc

                          diff --git a/view/fileas_widget.tpl b/view/fileas_widget.tpl new file mode 100755 index 0000000000..54fba7435f --- /dev/null +++ b/view/fileas_widget.tpl @@ -0,0 +1,12 @@ +
                          +

                          $title

                          +
                          $desc
                          + + + +
                          diff --git a/view/group_drop.tpl b/view/group_drop.tpl index cbae1610f4..2cbebbb8e5 100755 --- a/view/group_drop.tpl +++ b/view/group_drop.tpl @@ -1,5 +1,5 @@ diff --git a/view/login.tpl b/view/login.tpl index 5349fa3d83..4cbbb16240 100755 --- a/view/login.tpl +++ b/view/login.tpl @@ -1,5 +1,5 @@ - +
                          diff --git a/view/logout.tpl b/view/logout.tpl index 6a84a5bbcf..efc971df84 100755 --- a/view/logout.tpl +++ b/view/logout.tpl @@ -1,4 +1,4 @@ - +
                          diff --git a/view/mail_list.tpl b/view/mail_list.tpl old mode 100755 new mode 100644 index b284ffb0e3..22e35dec81 --- a/view/mail_list.tpl +++ b/view/mail_list.tpl @@ -1,6 +1,6 @@
                          - $from_name + $from_name
                          $from_name
                          diff --git a/view/msg-header.tpl b/view/msg-header.tpl index a74154c19c..098333893f 100755 --- a/view/msg-header.tpl +++ b/view/msg-header.tpl @@ -2,55 +2,44 @@ diff --git a/view/photo_view.tpl b/view/photo_view.tpl index 5dbcabadf7..732caf6900 100755 --- a/view/photo_view.tpl +++ b/view/photo_view.tpl @@ -14,7 +14,7 @@
                          {{ if $nextlink }}{{ endif }}
                          -
                          $desc
                          +
                          $desc
                          {{ if $tags }}
                          $tags.0
                          $tags.1
                          diff --git a/view/profile_edit.tpl b/view/profile_edit.tpl index 8dab726492..e5c7162d03 100755 --- a/view/profile_edit.tpl +++ b/view/profile_edit.tpl @@ -5,9 +5,9 @@ $default @@ -17,6 +17,7 @@ $default
                          +
                          diff --git a/view/profile_listing_header.tpl b/view/profile_listing_header.tpl index 09e4fc9b24..61a2737929 100755 --- a/view/profile_listing_header.tpl +++ b/view/profile_listing_header.tpl @@ -3,6 +3,6 @@ $chg_photo

                          diff --git a/view/profile_photo.tpl b/view/profile_photo.tpl index f258b5b86d..0b3a1cac17 100755 --- a/view/profile_photo.tpl +++ b/view/profile_photo.tpl @@ -1,6 +1,7 @@

                          $title

                          +
                          diff --git a/view/profile_vcard.tpl b/view/profile_vcard.tpl index 5bcbfd0b02..7cd02f1648 100755 --- a/view/profile_vcard.tpl +++ b/view/profile_vcard.tpl @@ -18,8 +18,8 @@
                          {{ endif }}
                          - - + + {{ if $pdesc }}
                          $profile.pdesc
                          {{ endif }}
                          $profile.name
                          diff --git a/view/prv_message.tpl b/view/prv_message.tpl index 25bf93b99c..2ce07ce6fd 100755 --- a/view/prv_message.tpl +++ b/view/prv_message.tpl @@ -10,14 +10,14 @@ $parent $select
                          $subject
                          - +
                          $yourmessage
                          - +
                          - +
                          diff --git a/view/settings.tpl b/view/settings.tpl index b7f427b324..25479b5bff 100755 --- a/view/settings.tpl +++ b/view/settings.tpl @@ -5,7 +5,7 @@ $tabs $nickname_block - +

                          $h_pass

                          @@ -30,6 +30,7 @@ $nickname_block {{inc field_checkbox.tpl with $field=$allowloc }}{{endinc}} {{inc field_select.tpl with $field=$theme }}{{endinc}} {{inc field_input.tpl with $field=$ajaxint }}{{endinc}} +{{inc field_input.tpl with $field=$itemspage_network }}{{endinc}}
                          diff --git a/view/settings_addons.tpl b/view/settings_addons.tpl index 2cbfd17e92..28fca53620 100755 --- a/view/settings_addons.tpl +++ b/view/settings_addons.tpl @@ -4,6 +4,7 @@ $tabs + $settings_addons diff --git a/view/settings_connectors.tpl b/view/settings_connectors.tpl index 9493c8bf77..43c0346bba 100755 --- a/view/settings_connectors.tpl +++ b/view/settings_connectors.tpl @@ -6,6 +6,7 @@ $tabs
                          $ostat_enabled
                          + $settings_connectors diff --git a/view/settings_oauth.tpl b/view/settings_oauth.tpl index 0de0dbe98a..da1398ab96 100755 --- a/view/settings_oauth.tpl +++ b/view/settings_oauth.tpl @@ -4,7 +4,8 @@ $tabs - + + {{ endfor }} diff --git a/view/settings_oauth_edit.tpl b/view/settings_oauth_edit.tpl index 98b7457aa4..d293413867 100755 --- a/view/settings_oauth_edit.tpl +++ b/view/settings_oauth_edit.tpl @@ -3,6 +3,8 @@ $tabs

                          $title

                          + + {{ inc field_input.tpl with $field=$name }}{{ endinc }} {{ inc field_input.tpl with $field=$key }}{{ endinc }} {{ inc field_input.tpl with $field=$secret }}{{ endinc }} diff --git a/view/theme/darkbubble/theme.php b/view/theme/darkbubble/theme.php index 326c98bbda..053730c21a 100755 --- a/view/theme/darkbubble/theme.php +++ b/view/theme/darkbubble/theme.php @@ -1,4 +1,22 @@ + */ + + $a->theme_info = array( 'extends' => 'testbubble', ); + + +$a->page['htmlhead'] .= <<< EOT + +EOT; diff --git a/view/theme/darkzero-NS/theme.php b/view/theme/darkzero-NS/theme.php index 521b1859e9..2d3e4fd56e 100755 --- a/view/theme/darkzero-NS/theme.php +++ b/view/theme/darkzero-NS/theme.php @@ -15,6 +15,8 @@ $a->page['htmlhead'] .= <<< EOT +EOT; diff --git a/view/theme/diabook-blue/wall_item.tpl b/view/theme/diabook-blue/wall_item.tpl index 0a02ba8129..ebe40fd4ea 100644 --- a/view/theme/diabook-blue/wall_item.tpl +++ b/view/theme/diabook-blue/wall_item.tpl @@ -1,6 +1,5 @@ {{ if $item.indent }}{{ else }}
                          - $item.star.starred {{ if $item.lock }}$item.lock{{ endif }}
                          @@ -47,7 +46,7 @@
                          -
                          $item.location 
                          +
                          @@ -62,11 +61,9 @@ {{ if $item.star }} - - $item.star.do - - $item.star.undo - $item.star.tagger + + $item.star.do + {{ endif }} {{ if $item.plink }}$item.plink.title{{ endif }} @@ -85,7 +82,7 @@ {{ endif }}
                          - +
                          $item.location 
                          diff --git a/view/theme/diabook-blue/wallwall_item.tpl b/view/theme/diabook-blue/wallwall_item.tpl index effb7273fb..e02e5a8bec 100644 --- a/view/theme/diabook-blue/wallwall_item.tpl +++ b/view/theme/diabook-blue/wallwall_item.tpl @@ -1,6 +1,5 @@ {{ if $item.indent }}{{ else }}
                          - $item.star.starred {{ if $item.lock }}$item.lock{{ endif }}
                          @@ -53,7 +52,7 @@
                          -
                          $item.location 
                          +
                          @@ -68,11 +67,9 @@ {{ if $item.star }} - - $item.star.do - - $item.star.undo - $item.star.tagger + + $item.star.do + {{ endif }} {{ if $item.plink }}$item.plink.title{{ endif }} @@ -91,7 +88,7 @@ {{ endif }}
                          - +
                          $item.location 
                          diff --git a/view/theme/diabook/comment_item.tpl b/view/theme/diabook/comment_item.tpl deleted file mode 100644 index 85176732b7..0000000000 --- a/view/theme/diabook/comment_item.tpl +++ /dev/null @@ -1,35 +0,0 @@ -
                          - - - - - - - - -
                          - $mytitle -
                          -
                          - - - {{ if $qcomment }} -
                            - {{ for $qcomment as $qc }} - - {{ endfor }} -
                          - {{ endif }} - -
                          - - -
                          - - -
                          diff --git a/view/theme/diabook/experimental b/view/theme/diabook/experimental deleted file mode 100755 index e69de29bb2..0000000000 diff --git a/view/theme/diabook/group_side.tpl b/view/theme/diabook/group_side.tpl new file mode 100755 index 0000000000..af183d04da --- /dev/null +++ b/view/theme/diabook/group_side.tpl @@ -0,0 +1,29 @@ +
                          +
                          +

                          $title

                          + +
                          + + +
                          + diff --git a/view/theme/diabook/icons/isstar.png b/view/theme/diabook/icons/isstar.png deleted file mode 100644 index c955b25b5b..0000000000 Binary files a/view/theme/diabook/icons/isstar.png and /dev/null differ diff --git a/view/theme/diabook/icons/next.png b/view/theme/diabook/icons/next.png new file mode 100755 index 0000000000..7b5e25b905 Binary files /dev/null and b/view/theme/diabook/icons/next.png differ diff --git a/view/theme/diabook/icons/notifications.png b/view/theme/diabook/icons/notifications.png index 5bdc34f764..2709977406 100755 Binary files a/view/theme/diabook/icons/notifications.png and b/view/theme/diabook/icons/notifications.png differ diff --git a/view/theme/diabook/icons/prev.png b/view/theme/diabook/icons/prev.png new file mode 100755 index 0000000000..55c1464ba0 Binary files /dev/null and b/view/theme/diabook/icons/prev.png differ diff --git a/view/theme/diabook/icons/starred.png b/view/theme/diabook/icons/starred.png new file mode 100755 index 0000000000..2b82dfca31 Binary files /dev/null and b/view/theme/diabook/icons/starred.png differ diff --git a/view/theme/diabook/icons/toogle_off.png b/view/theme/diabook/icons/toogle_off.png old mode 100755 new mode 100644 index 99490bcd95..0fcce4d5ab Binary files a/view/theme/diabook/icons/toogle_off.png and b/view/theme/diabook/icons/toogle_off.png differ diff --git a/view/theme/diabook/icons/toogle_on.png b/view/theme/diabook/icons/toogle_on.png old mode 100755 new mode 100644 index 81e8f91205..79ce07f0e3 Binary files a/view/theme/diabook/icons/toogle_on.png and b/view/theme/diabook/icons/toogle_on.png differ diff --git a/view/theme/diabook/icons/unglobe.png b/view/theme/diabook/icons/unglobe.png deleted file mode 100755 index aa9b0e1895..0000000000 Binary files a/view/theme/diabook/icons/unglobe.png and /dev/null differ diff --git a/view/theme/diabook/icons/unstarred.png b/view/theme/diabook/icons/unstarred.png index ca20724143..ba3183f5c7 100755 Binary files a/view/theme/diabook/icons/unstarred.png and b/view/theme/diabook/icons/unstarred.png differ diff --git a/view/theme/diabook/nav.tpl b/view/theme/diabook/nav.tpl index a098ae8b7c..5776b6cf75 100644 --- a/view/theme/diabook/nav.tpl +++ b/view/theme/diabook/nav.tpl @@ -26,6 +26,7 @@
                        + {{ endif }} {{ if $nav.messages }} @@ -140,8 +141,9 @@
                        -
                        $langselector
                        -
                        +
                        $langselector
                        +
                        + @@ -150,10 +152,6 @@
                      - - {# diff --git a/view/theme/diabook/photo_view.tpl b/view/theme/diabook/photo_view.tpl new file mode 100755 index 0000000000..511fc73acb --- /dev/null +++ b/view/theme/diabook/photo_view.tpl @@ -0,0 +1,27 @@ +
                      +

                      $album.1

                      + + + +
                      + {{ if $prevlink }}{{ endif }} + + {{ if $nextlink }}{{ endif }} +
                      + +
                      +
                      $desc
                      +{{ if $tags }} +
                      $tags.0
                      +
                      $tags.1
                      +{{ endif }} +{{ if $tags.2 }}{{ endif }} + +{{ if $edit }}$edit{{ endif }} \ No newline at end of file diff --git a/view/theme/diabook/profile_side.tpl b/view/theme/diabook/profile_side.tpl new file mode 100644 index 0000000000..01da55ce1c --- /dev/null +++ b/view/theme/diabook/profile_side.tpl @@ -0,0 +1,20 @@ + + + \ No newline at end of file diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index 768ce13705..437f323faa 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -101,13 +101,12 @@ .icon.pencil { background-image: url("../../../view/theme/diabook/icons/pencil.png");} .icon.recycle { background-image: url("../../../view/theme/diabook/icons/recycle.png");} .icon.remote-link { background-image: url("../../../view/theme/diabook/icons/remote.png");} -.icon.tagged { background-image: url("../../../view/theme/diabook/icons/tagged.png");} -.icon.unstarred { background-image: url("../../../view/theme/diabook/icons/star.png");} -.icon.star { background-image: url("../../../view/theme/diabook/icons/star.png");} +.icon.tagged { background-image: url("../../../view/theme/diabook/icons/tagged.png");} +.star-item.icon.unstarred { background-image: url("../../../view/theme/diabook/icons/unstarred.png");} +.star-item.icon.starred { background-image: url("../../../view/theme/diabook/icons/starred.png");} .icon.link { background-image: url("../../../view/theme/diabook/icons/link.png");} .icon.lock { background-image: url("../../../view/theme/diabook/icons/lock.png");} .icon.unlock { background-image: url("../../../view/theme/diabook/icons/unlock.png");} -.icon.isstar { background-image: url("../../../view/theme/diabook/icons/isstar.png");} .icon.language { background-image: url("../../../view/theme/diabook/icons/language.png");} @@ -178,8 +177,8 @@ .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;} -.prev { background-position: -90px -60px;} -.next { background-position: -110px -60px;} +.icon.prev { background-image: url("../../../view/theme/diabook/icons/prev.png"); background-repeat: no-repeat;} +.icon.next { background-image: url("../../../view/theme/diabook/icons/next.png"); background-repeat: no-repeat;} /*.tagged { background-position: -130px -60px;}*/ .attachtype { @@ -248,7 +247,7 @@ background-image: url("../../../images/icons/10/edit.png"); } .icon.s10.star { - background-image: url("../../../images/icons/10/star.png"); + background-image: url("../../../images/star_dummy.png"); } .icon.s10.menu { background-image: url("../../../images/icons/10/menu.png"); @@ -286,7 +285,7 @@ background-image: url("../../../images/icons/16/edit.png"); }*/ .icon.s16.star { - background-image: url("../../../images/icons/16/star.png"); + background-image: url("../../../images/star_dummy.png"); } .icon.s16.menu { background-image: url("../../../images/icons/16/menu.png"); @@ -324,7 +323,7 @@ background-image: url("../../../images/icons/22/edit.png"); } .icon.s22.star { - background-image: url("../../../images/icons/22/star.png"); + background-image: url("../../../images/star_dummy.png"); } .icon.s22.menu { background-image: url("../../../images/icons/22/menu.png"); @@ -362,7 +361,7 @@ background-image: url("../../../images/icons/48/edit.png"); } .icon.s48.star { - background-image: url("../../../images/icons/48/star.png"); + background-image: url("../../../images/star_dummy.png"); } .icon.s48.menu { background-image: url("../../../images/icons/48/menu.png"); @@ -401,6 +400,7 @@ body { margin: 50px auto auto; display: table; } + h4 { font-size: 1.1em; } @@ -462,7 +462,7 @@ code { } #panel { position: absolute; - width: 10em; + width: 12em; background: #ffffff; color: #2d2d2d; margin: 0px; @@ -516,7 +516,7 @@ header { top: 0px; margin: 0px; padding: 0px; - width: 20%; + width: 22%; height: 32px; background: #000; z-index: 100; @@ -529,8 +529,9 @@ header #site-location { } header #banner { overflow: hidden; - text-align: center; - width: 100%; + text-align: left; + width: 82%%; + margin-left: 25%; } header #banner a, header #banner a:active, @@ -556,12 +557,12 @@ nav { width: 80%; height: 32px; position: fixed; - left: 20%; + left: 22%; top: 0px; padding: 0px; background: #000; color: #ffffff; - z-index: 100; + z-index: 99; -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); @@ -704,21 +705,17 @@ nav #nav-user-linkmenu nav #nav-user-linkmenu{ margin-right: 0px; } -nav #nav-home-link{ +nav #nav-home-link, #nav-directory-link, #nav-apps-link{ margin-left: 0px; + margin-right: 0px; font-weight: bold; + margin: 3px 5px; } nav #nav-directory-link{ - margin-left: 0px; - margin-right: 0px; - font-weight: bold; - margin: 3px 15px; + margin-right: 0px; } -nav #nav-apps-link{ - margin-left: 0px; - margin-right: 0px; - font-weight: bold; - margin: 3px 15px; +nav #nav-home-link{ + margin-left: 0px; } nav #nav-help-link .menu-popup, nav #nav-search-link .menu-popup, @@ -772,8 +769,6 @@ ul.menu-popup { margin: 0px; padding: 0px; list-style: none; - border: 1px solid #364e59; - border-top-color: transparent; z-index: 100000; -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); @@ -866,6 +861,43 @@ ul.menu-popup .empty { 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 { display: table-cell; @@ -876,6 +908,7 @@ aside { float: left; /* background: #F1F1F1; */ } + aside .vcard .fn { font-size: 18px; font-weight: bold; @@ -962,6 +995,10 @@ aside #side-peoplefind-url { widht: 55px; height: 55px; } +#lost-password-link { + float: left; + margin-right: 20px; + } /* widget */ .widget { margin-bottom: 2em; @@ -1036,12 +1073,31 @@ section { width: 800px; padding: 0px 0px 0px 12px; } + +body .pageheader{ + text-align: center; + margin-top: 25px; + font-size: 0px; + } + +#id_username { + width: 173px; + } +#id_password { + width: 173px; + } +#id_openid_url { + width: 173px; + } +#contact-edit-end { + } .pager { padding: 10px; text-align: center; font-size: 1.0em; + clear: both; + display: block; } - .tabs { background-position: 0 -20px; @@ -1077,9 +1133,7 @@ section { top: -10px; width: 16px; } -.unstarred { - display: none; -} + .wall-item-container { display: table; width: 780px; @@ -1116,6 +1170,7 @@ section { } .wall-item-container .wall-item-location { padding-right: 40px; + display: table-cell; } .wall-item-container .wall-item-ago { word-wrap: break-word; @@ -1171,6 +1226,7 @@ section { .wall-item-container .wall-item-actions-social { float: left; margin-bottom: 1px; + display: table-cell; } .wall-item-container .wall-item-actions-social a { margin-right: 1em; @@ -1181,6 +1237,7 @@ section { .wall-item-container .wall-item-actions-tools { float: right; width: 80px; + display: table-cell; } .wall-item-container .wall-item-actions-tools a { float: right; @@ -1845,7 +1902,6 @@ ul.tabs li .active { /* photo */ .lframe { float: left; - margin: 0px 10px 10px 0px; } /* profile match wrapper */ .profile-match-wrapper { @@ -1959,10 +2015,22 @@ box-shadow: 1px 1px 5px 0; } #prvmail-submit { - float: left; + float: right; 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-link-wrapper, #prvmail-rotator-wrapper { @@ -2150,14 +2218,25 @@ a.mail-list-link { padding: 10px; float: left; } +.lightbox{ + float: left; + } #photo-photo { float: left; } #photo-like-div .wall-item-like-buttons { - float: left; - margin-right: 10px; + float: left; + 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 { float: left; } @@ -2270,7 +2349,36 @@ float: left; 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; float: left; margin-top: 15px; @@ -2286,7 +2394,7 @@ float: left; padding: 0px 3px; padding-top: 0.5em; background-color: rgb(255, 255, 255); -} +}*/ #photo-top-end { clear: both; } @@ -2299,5 +2407,4 @@ float: left; #photos-upload-newalbum-div { float: left; width: 175px; -} - +} \ No newline at end of file diff --git a/view/theme/diabook/theme.php b/view/theme/diabook/theme.php new file mode 100755 index 0000000000..9093ac2ca2 --- /dev/null +++ b/view/theme/diabook/theme.php @@ -0,0 +1,119 @@ +theme_info = array( + '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 + + +EOT; diff --git a/view/theme/diabook/wall_item.tpl b/view/theme/diabook/wall_item.tpl index 0a02ba8129..ebe40fd4ea 100644 --- a/view/theme/diabook/wall_item.tpl +++ b/view/theme/diabook/wall_item.tpl @@ -1,6 +1,5 @@ {{ if $item.indent }}{{ else }}
                      - $item.star.starred {{ if $item.lock }}$item.lock{{ endif }}
                      @@ -47,7 +46,7 @@
                      -
                      $item.location 
                      +
                      @@ -62,11 +61,9 @@ {{ if $item.star }} - - $item.star.do - - $item.star.undo - $item.star.tagger + + $item.star.do + {{ endif }} {{ if $item.plink }}$item.plink.title{{ endif }} @@ -85,7 +82,7 @@ {{ endif }}
                      - +
                      $item.location 
                      diff --git a/view/theme/diabook/wallwall_item.tpl b/view/theme/diabook/wallwall_item.tpl index effb7273fb..e02e5a8bec 100644 --- a/view/theme/diabook/wallwall_item.tpl +++ b/view/theme/diabook/wallwall_item.tpl @@ -1,6 +1,5 @@ {{ if $item.indent }}{{ else }}
                      - $item.star.starred {{ if $item.lock }}$item.lock{{ endif }}
                      @@ -53,7 +52,7 @@
                      -
                      $item.location 
                      +
                      @@ -68,11 +67,9 @@ {{ if $item.star }} - - $item.star.do - - $item.star.undo - $item.star.tagger + + $item.star.do + {{ endif }} {{ if $item.plink }}$item.plink.title{{ endif }} @@ -91,7 +88,7 @@ {{ endif }}
                      - +
                      $item.location 
                      diff --git a/view/theme/diabook-blue/comment_item.tpl b/view/theme/dispy-dark/comment_item.tpl similarity index 100% rename from view/theme/diabook-blue/comment_item.tpl rename to view/theme/dispy-dark/comment_item.tpl diff --git a/view/theme/dispy-dark/connect.png b/view/theme/dispy-dark/connect.png new file mode 100644 index 0000000000..b76fc13dce Binary files /dev/null and b/view/theme/dispy-dark/connect.png differ diff --git a/view/theme/dispy-dark/contact_template.tpl b/view/theme/dispy-dark/contact_template.tpl new file mode 100644 index 0000000000..04968bd07d --- /dev/null +++ b/view/theme/dispy-dark/contact_template.tpl @@ -0,0 +1,30 @@ + +
                      +
                      +
                      + + $contact.name + + {{ if $contact.photo_menu }} + menu +
                      +
                        + $contact.photo_menu +
                      +
                      + {{ endif }} +
                      + +
                      +
                      +
                      $contact.name
                      +{{ if $contact.alt_text }}
                      $contact.alt_text
                      {{ endif }} +
                      + Profile URL
                      +
                      $contact.network
                      + +
                      +
                      + diff --git a/view/theme/dispy-dark/conversation.tpl b/view/theme/dispy-dark/conversation.tpl new file mode 100644 index 0000000000..41b6aeadff --- /dev/null +++ b/view/theme/dispy-dark/conversation.tpl @@ -0,0 +1,23 @@ +{{ for $threads as $thread }} +
                      + {{ for $thread.items as $item }} + {{if $item.comment_firstcollapsed}} +
                      + $thread.num_comments $thread.hide_text +
                      + {{endif}} + + {{ inc $item.template }}{{ endinc }} + + + {{ endfor }} +
                      +{{ endfor }} + +{{ if $dropping }} + +{{ endif }} diff --git a/view/theme/diabook-blue/experimental b/view/theme/dispy-dark/experimental old mode 100755 new mode 100644 similarity index 100% rename from view/theme/diabook-blue/experimental rename to view/theme/dispy-dark/experimental diff --git a/view/theme/dispy-dark/group_side.tpl b/view/theme/dispy-dark/group_side.tpl new file mode 100644 index 0000000000..10ecec2e85 --- /dev/null +++ b/view/theme/dispy-dark/group_side.tpl @@ -0,0 +1,30 @@ +
                      +

                      $title

                      + + + +
                      + + diff --git a/view/theme/dispy-dark/head.tpl b/view/theme/dispy-dark/head.tpl new file mode 100644 index 0000000000..f606f2f7e2 --- /dev/null +++ b/view/theme/dispy-dark/head.tpl @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/view/theme/dispy-dark/icons.png b/view/theme/dispy-dark/icons.png new file mode 100644 index 0000000000..648811373a Binary files /dev/null and b/view/theme/dispy-dark/icons.png differ diff --git a/view/theme/dispy-dark/icons.svg b/view/theme/dispy-dark/icons.svg new file mode 100644 index 0000000000..10f8cc667d --- /dev/null +++ b/view/theme/dispy-dark/icons.svg @@ -0,0 +1,2096 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lorem Ip + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ? + ? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/view/theme/dispy-dark/jot-header.tpl b/view/theme/dispy-dark/jot-header.tpl new file mode 100644 index 0000000000..4c8f59d796 --- /dev/null +++ b/view/theme/dispy-dark/jot-header.tpl @@ -0,0 +1,326 @@ + + + + diff --git a/view/theme/dispy-dark/jot.tpl b/view/theme/dispy-dark/jot.tpl new file mode 100644 index 0000000000..94c31da23b --- /dev/null +++ b/view/theme/dispy-dark/jot.tpl @@ -0,0 +1,72 @@ +
                      +
                      +
                       
                      + +
                      + + + + + + + + + + + + + +
                      + + +
                      +
                      + $acl +
                      +
                      $emailcc
                      + +
                      + $jotnets +
                      +
                      + +
                      +{{ if $content }}{{ endif }} diff --git a/view/theme/dispy-dark/login-bg.gif b/view/theme/dispy-dark/login-bg.gif new file mode 100644 index 0000000000..cde836c893 Binary files /dev/null and b/view/theme/dispy-dark/login-bg.gif differ diff --git a/view/theme/dispy-dark/mail_head.tpl b/view/theme/dispy-dark/mail_head.tpl new file mode 100644 index 0000000000..d49d7c1af9 --- /dev/null +++ b/view/theme/dispy-dark/mail_head.tpl @@ -0,0 +1,5 @@ +

                      $messages

                      + +
                      +$tab_content +
                      diff --git a/view/theme/dispy-dark/menu-user-pin.jpg b/view/theme/dispy-dark/menu-user-pin.jpg new file mode 100644 index 0000000000..26449569f4 Binary files /dev/null and b/view/theme/dispy-dark/menu-user-pin.jpg differ diff --git a/view/theme/dispy-dark/nav.tpl b/view/theme/dispy-dark/nav.tpl new file mode 100644 index 0000000000..11469dc661 --- /dev/null +++ b/view/theme/dispy-dark/nav.tpl @@ -0,0 +1,125 @@ + + +
                      +$langselector +
                      + + + diff --git a/view/theme/dispy-dark/nets.tpl b/view/theme/dispy-dark/nets.tpl new file mode 100644 index 0000000000..b322717ad1 --- /dev/null +++ b/view/theme/dispy-dark/nets.tpl @@ -0,0 +1,10 @@ +
                      +

                      $title

                      +
                      $desc
                      + $all +
                        + {{ for $nets as $net }} +
                      • $net.name
                      • + {{ endfor }} +
                      +
                      diff --git a/view/theme/dispy-dark/next.png b/view/theme/dispy-dark/next.png new file mode 100644 index 0000000000..5e0067c4b4 Binary files /dev/null and b/view/theme/dispy-dark/next.png differ diff --git a/view/theme/dispy-dark/notifications.png b/view/theme/dispy-dark/notifications.png new file mode 100644 index 0000000000..66c432eacc Binary files /dev/null and b/view/theme/dispy-dark/notifications.png differ diff --git a/view/theme/dispy-dark/notifications.svg b/view/theme/dispy-dark/notifications.svg new file mode 100644 index 0000000000..0ec2c05699 --- /dev/null +++ b/view/theme/dispy-dark/notifications.svg @@ -0,0 +1,273 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/view/theme/dispy-dark/photo-menu.jpg b/view/theme/dispy-dark/photo-menu.jpg new file mode 100644 index 0000000000..fde5eb5352 Binary files /dev/null and b/view/theme/dispy-dark/photo-menu.jpg differ diff --git a/view/theme/dispy-dark/photo_view.tpl b/view/theme/dispy-dark/photo_view.tpl new file mode 100644 index 0000000000..732caf6900 --- /dev/null +++ b/view/theme/dispy-dark/photo_view.tpl @@ -0,0 +1,37 @@ +
                      +

                      $album.1

                      + + + +{{ if $prevlink }}{{ endif }} +
                      +{{ if $nextlink }}{{ endif }} +
                      +
                      $desc
                      +{{ if $tags }} +
                      $tags.0
                      +
                      $tags.1
                      +{{ endif }} +{{ if $tags.2 }}{{ endif }} + +{{ if $edit }}$edit{{ endif }} + +{{ if $likebuttons }} +
                      + $likebuttons + $like + $dislike +
                      +{{ endif }} + +$comments + +$paginate + diff --git a/view/theme/dispy-dark/premium.png b/view/theme/dispy-dark/premium.png new file mode 100644 index 0000000000..d2855a4f5d Binary files /dev/null and b/view/theme/dispy-dark/premium.png differ diff --git a/view/theme/dispy-dark/prev.png b/view/theme/dispy-dark/prev.png new file mode 100644 index 0000000000..10b10d74f2 Binary files /dev/null and b/view/theme/dispy-dark/prev.png differ diff --git a/view/theme/dispy-dark/profile_vcard.tpl b/view/theme/dispy-dark/profile_vcard.tpl new file mode 100644 index 0000000000..350a6ce4a9 --- /dev/null +++ b/view/theme/dispy-dark/profile_vcard.tpl @@ -0,0 +1,84 @@ +
                      + + {{ if $profile.edit }} +
                      + + $profile.edit.1 + +
                      + {{ endif }} + +
                      $profile.name
                      + + {{ if $pdesc }} +
                      $profile.pdesc
                      + {{ endif }} +
                      + $profile.name +
                      + + {{ if $location }} +
                      + $location +
                      + {{ if $profile.address }} +
                      $profile.address
                      {{ endif }} + + $profile.locality{{ if $profile.locality }}, {{ endif }} + $profile.region + $profile.postal-code + + {{ if $profile.country-name }}$profile.country-name{{ endif }} +
                      +
                      + {{ endif }} + + {{ if $gender }} +
                      + $gender + $profile.gender +
                      + {{ endif }} + + {{ if $profile.pubkey }} + + {{ endif }} + + {{ if $marital }} +
                      + + $marital + $profile.marital +
                      + {{ endif }} + + {{ if $homepage }} +
                      + $homepage + $profile.homepage +
                      {{ endif }} + + {{ inc diaspora_vcard.tpl }}{{ endinc }} + + +
                      + +$contact_block + + diff --git a/view/theme/dispy-dark/saved_searches_aside.tpl b/view/theme/dispy-dark/saved_searches_aside.tpl new file mode 100644 index 0000000000..63a85dda53 --- /dev/null +++ b/view/theme/dispy-dark/saved_searches_aside.tpl @@ -0,0 +1,14 @@ +
                      + + $searchbox + +
                        + {{ for $saved as $search }} +
                      • + + $search.term +
                      • + {{ endfor }} +
                      +
                      +
                      diff --git a/view/theme/dispy-dark/search_item.tpl b/view/theme/dispy-dark/search_item.tpl new file mode 100644 index 0000000000..54c3e389c0 --- /dev/null +++ b/view/theme/dispy-dark/search_item.tpl @@ -0,0 +1,51 @@ +
                      +
                      +
                      +
                      + + $item.name + menu +
                      +
                        + $item.item_photo_menu +
                      +
                      +
                      +
                      +
                      {{ if $item.location }}$item.location {{ endif }}
                      +
                      +
                      + {{ if $item.lock }}
                      $item.lock
                      + {{ else }}
                      {{ endif }} +
                      +
                      +
                      + {{ if $item.drop.dropping }}{{ endif }} +
                      + {{ if $item.drop.dropping }}{{ endif }} +
                      +
                      +
                      +
                      $item.title
                      +
                      +
                      $item.body
                      +
                      +
                      + $item.name +
                      $item.ago
                      + +
                      + +
                      +
                      +
                      + +
                      +
                      + {{ if $item.conv }} + $item.conv.title + {{ endif }} +
                      + diff --git a/view/theme/dispy-dark/star.png b/view/theme/dispy-dark/star.png new file mode 100644 index 0000000000..a327ba14e4 Binary files /dev/null and b/view/theme/dispy-dark/star.png differ diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css new file mode 100644 index 0000000000..eaaa0acbd0 --- /dev/null +++ b/view/theme/dispy-dark/style.css @@ -0,0 +1,2725 @@ +/* + * dispy-dark + * + * modernised, sort of, by simon + * + */ + +/* from html5boilerplate */ + +/* these are to tell browsers they should be displayed a certain way */ +article, aside, details, figcaption, figure, footer, +header, hgroup, nav, section { + display: block; +} +audio, canvas, video, time { + display: inline-block; + *display: inline; + *zoom: 1; +} +audio:not([controls]) { + display: none; +} +[hidden] { + display: none; +} + +/* + * Base + */ + +/* + * 1. Correct text resizing oddly in IE6/7 when body font-size is set using em units + * 2. Force vertical scrollbar in non-IE + * 3. Prevent iOS text size adjust on device orientation change, without disabling user zoom: h5bp.com/g + */ + +html { + font-size: 100%; + overflow-y: scroll; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; + font-size: 16px; + line-height: 1.1em; +} +body, button, input, select, textarea { + font-family: sans-serif; + color: #eec; + /*background-color: #2e3436;*/ + background-color: #2e2f2e; +} +select { + border: 1px #555 dotted; + padding: 3px; + margin: 2px; +} +option { + padding: 3px; + vertical-align: middle; +} +/* remember to define focus styles! */ +:focus { + outline: 0; +} + +/* remember to highlight inserts somehow! */ +ins { + background-color: #2e302e; + color: #ff9; + text-decoration: none; +} +mark { + background-color: #2e302e; + color: #ff9; + font-style: italic; + font-weight: bold; +} +/* Redeclare monospace font family: h5bp.com/j */ +pre, code, kbd, samp, .wall-item-body code { + font-family: monospace, monospace; + _font-family: monospace; + font-size: 1em; } + +/* Improve readability of pre-formatted text in all browsers */ +pre, .wall-item-body code { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +q { + quotes: none; +} +q:before, q:after { + content: ""; + content: none; +} +small { + font-size: 85%; +} + +/* Position subscript and superscript content without affecting line-height: h5bp.com/k */ +sub, sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0 none; + /*vertical-align: middle;*/ +} +a { + color: #88a9d2; + text-decoration: none; + margin-bottom: 1px; +} +a:hover img { + text-decoration: none; +} +blockquote { + background: #444; + color: #eec; + text-indent: 5px; + padding: 5px; + border: 1px #aaa solid; + border-radius: 5px; +} +a:hover { + color: #729fcf; + border-bottom: 1px dotted #729fcf; +} +.required { + display: inline; + color: #ff0; + font-size: 16px; + font-weight: bold; + margin: 3px; +} +.fakelink, .lockview { + color: #729fcf; + cursor: pointer; +} +.fakelink:hover { + color: #729fcf; +} +input[type=submit] { + font-weight: bold; + background-color: #eee; + color: #2e302e; + margin-top: 10px; + height: 22px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + border: 0; +} +.smalltext { + font-size: 0.7em; +} +#panel { + position: absolute; + font-size: 0.8em; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + border: 1px solid #fff; + background-color: #2e302e; + color: #eeeeec; + padding: 1em; +} +.pager { + margin-top: 60px; + display: block; + clear: both; + text-align: center; +} +.pager span { + padding: 4px; + margin: 4px; +} +.pager_current { + background-color: #729fcf; + color: #fff; +} + + +/** + * global + */ +/* .tool .action */ +.action { + margin: 5px 0; +} + + +/** + * login + */ +#login-extra-links a { + margin-right: 20px; +} + + +/** + * nav + */ +nav { + height: 60px; + display: block; + background-color: #1d1f1d; + color: #eeeeec; + position: relative; + padding: 20px 20px 10px 95px; + margin-left: auto; + margin-right: auto; +} +nav a { + text-decoration: none; + color: #eeeeec; + border: 0px; +} +nav a:hover { + text-decoration: none; + color: #eeeeec; + border: 0px; +} +nav #banner { + display: block; + position: absolute; + left: 51px; + top: 25px; +} +nav #banner #logo-text a { + font-size: 40px; + font-weight: bold; + margin-left: 3px; +} +nav #user-menu { + display: block; + width: auto; + float: right; + margin: 3px 68px 0 0; + position: relative; + background-color: #555753; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + background: #555753 url("menu-user-pin.jpg") 98% center no-repeat; + clear: both; +} +nav #user-menu-label { + float: left; + font-size: 12px; + padding: 3px 20px 9px 5px; + height: 10px; +} +ul#user-menu-popup { + display: none; + position: absolute; + background-color: #555753; + width: 100%; + padding: 10px 0px; + margin: 0px; + top: 20px; + left: 0; + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; + z-index: 10000; +} +ul#user-menu-popup li { + display: block; +} +ul#user-menu-popup li a { + display: block; + padding: 5px; +} +ul#user-menu-popup li a:hover { + color: #2e302e; + background-color: #eeeeec; +} +ul#user-menu-popup li a.nav-sep { + border-top: 1px solid #eeeeec; +} +#nav-buttons { + clear: both; + list-style: none; + padding: 0px; +} +#nav-buttons li { + padding: 0; +} +nav .nav-link { + float: right; + display: block; + width: 22px; + height: 22px; + overflow: hidden; + margin: 0px 5px 5px; + text-indent: 50px; + background: transparent url(icons.png) 0 0 no-repeat; +} +#nav-apps-link { + background-position: 0 -66px; +} +#nav-apps-link:hover { + background-position: -22px -66px; +} +#nav-community-link { + background-position: 0 -22px; +} +#nav-community-link:hover { + background-position: -22px -22px; +} +#nav-contacts-link { + background-position: 0 -22px; +} +#nav-contacts-link:hover { + background-position: -22px -22px; +} +#nav-directory-link { + background-position: -44px -154px; +} +#nav-directory-link:hover { + background-position: -66px -154px; +} +#nav-help-link { + background-position: 0 -110px; +} +#nav-help-link:hover { + background-position: -22px -110px; +} +#nav-home-link { + background-position: -44px -132px; +} +#nav-home-link:hover { + background-position: -66px -132px; +} +#nav-intro-link { + background-position: 0px -190px; +} +#nav-intro-link:hover { + background-position: -44px -190px; +} +#nav-login-link { + background-position: 0 -88px; +} +#nav-login-link:hover { + background-position: -22px -88px; +} +#nav-logout-link { + background-position: 0 -88px; +} +#nav-logout-link:hover { + background-position: -22px -88px; +} +#nav-messages-link { + background-position: -44px -88px; +} +#nav-messages-link:hover { + background-position: -66px -88px; +} +#nav-notify-link, #nav-notifications-linkmenu { + background-position: -44px -110px; +} +#nav-notify-link:hover { + background-position: -66px -110px; +} +#nav-network-link { + background-position: 0px -177px; +} +#nav-network-link:hover { + background-position: -22px -177px; +} +#nav-search-link { + background-position: 0 -44px; +} +#nav-search-link:hover { + background-position: -22px -44px; +} +#profile-link, +#profile-title, +#wall-image-upload, +#wall-file-upload, +#profile-attach-wrapper, +#profile-audio, +#profile-link, +#profile-location, +#profile-nolocation, +#profile-title, +#jot-title, +#profile-upload-wrapper, +#profile-video, +#profile-jot-submit, +#wall-image-upload-div, +#wall-file-upload-div, +.icon, .hover, .focus, .pointer { + cursor: pointer; +} +#notifications { + height: 20px; + width: 100%; + position: absolute; + top: -19px; + left: 0; +} +/* popup notifications */ +div.jGrowl div.notice { + background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center; + color: #ffffff; + padding-left: 58px; +} +div.jGrowl div.info { + background: #364e59 url("../../../images/icons/48/info.png") no-repeat 5px center; + color: #ffffff; + padding-left: 58px; +} +#nav-notifications-menu { + margin: 30px 0 0 -45px; + width: 300px; + max-height: 400px; + overflow: auto; + font-size: 9pt; +} +#nav-notifications-menu .contactname { + font-weight: bold; + font-size: 0.9em; +} +#nav-notifications-menu img { + float: left; + margin-right: 5px; +} +#nav-notifications-menu .notif-when { + font-size: 0.8em; + display: block; +} +#nav-notifications-menu li { + padding: 7px 0px 7px 10px; + word-wrap: normal; + border-bottom: 1px solid #000; +} +#nav-notifications-menu li:hover { + color: black; +} +#nav-notifications-menu a:hover { + color: black; + text-decoration: underline; +} +nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-linkmenu.selected .icon.s22.notify { + background-image: url("../../../images/icons/22/notify_on.png"); +} +.show { + display: block; +} +#nav-floater { + position: fixed; + top: 20px; + right: 1%; + padding: 5px; + background: #1d1f1d; + color: transparent; + border-radius: 5px; + z-index: 100; +} +.floaterflip { + display: block; + position: fixed; + z-index: 110; + top: 53px; + right: 19px; + width: 22px; + height: 22px; + overflow: hidden; + margin: 0px; + background: transparent url(icons.png) -190px -60px no-repeat; +} +.nav-ajax-update, .nav-ajax-left { + width: 30px; + height: 19px; + background: transparent url(notifications.png) 0 0 no-repeat; + color: #222; + font-weight: bold; + font-size: 0.8em; + padding-top: 0.2em; + text-align: center; + float: left; + margin: 0 -1px 0 3px; + display: block; + visibility: hidden; +} +.nav-ajax-update.show, .nav-ajax-left.show { + visibility: visible; +} +#net-update { + background-position: 0px 0px; +} +#mail-update { + background-position: -30px 0; +} +#notify-update { + background-position: -60px 0px; +} +#home-update { + background-position: -90px 0px; +} +#intro-update { + background-position: -120px 0px; +} +#lang-select-icon { + cursor: pointer; + position: fixed; + left: 28px; + bottom: 6px; + z-index: 10; +} +#language-selector { + position: fixed; + bottom: 2px; + left: 52px; + z-index: 10; +} +.menu-popup { + position: absolute; + display: none; + width: 11em; + background: #ffffff; + color: #2d2d2d; + margin: 0px; + padding: 0px; + list-style: none; + border: 3px solid #364e59; + z-index: 100000; + -webkit-box-shadow: 3px 3px 10px 0 rgba(0, 0, 0, 0.7); + -moz-box-shadow: 3px 3px 10px 0 rgba(0, 0, 0, 0.7); + box-shadow: 3px 3px 10px 0 rgba(0, 0, 0, 0.7); +} +.menu-popup a { + display: block; + color: #2d2d2d; + padding: 5px 10px; + text-decoration: none; +} +.menu-popup a:hover { + background-color: #bdcdd4; +} +.menu-popup .menu-sep { + border-top: 1px solid #9eabb0; +} +.menu-popup li { + float: none; + overflow: auto; + height: auto; + display: block; +} +.menu-popup li img { + float: left; + width: 16px; + height: 16px; + padding-right: 5px; +} +.menu-popup .empty { + padding: 5px; + text-align: center; + color: #9eabb0; +} +.notif-item { + font-size: small; +} +.notif-item a { + vertical-align: middle; +} +.notif-image { + width: 32px; + height: 32px; + padding: 7px 7px 0px 0px; +} +.notify-seen { + background: #ddd; +} + +/** sysmsg **/ +#sysmsg_info { + position: fixed; + bottom: 0; + -moz-box-shadow: 3px 3px 3px 10px 0 #000; + -webkit-box-shadow: 3px 3px 10px 0 #000; + box-shadow: 3px 3px 10px 0 #000; + padding: 10px; + background-color: #fcaf3e; + border:2px solid #f8911b; + border-bottom: 0; + padding-bottom: 50px; + z-index: 1000; +} +#sysmsg { + position: fixed; + bottom: 0; + -moz-box-shadow: 3px 3px 10px 0 #000; + -webkit-box-shadow: 3px 3px 10px 0 #000; + box-shadow: 3px 3px 10px 0 #000; + padding: 10px; + background-color: #fcaf3e; + border: 2px solid #f8911b; + border-bottom: 0; + padding-bottom: 50px; + z-index: 1000; +} +#sysmsg_info br, +#sysmsg br { + display: block; + margin: 2px 0px; + border-top: 1px solid #ccccce; +} + + +/** +* aside +**/ +aside { + position: absolute; + right: 15px; + width: 245px; + padding-top: 15px; + font-size: smaller; +} +.vcard .fn { + font-size: 1.7em; + font-weight: bold; + border-bottom: 1px solid #729fcf; + padding-bottom: 3px; +} +.vcard #profile-photo-wrapper { + 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 { + box-shadow: 3px 3px 10px 0 #000; +} +aside h4 { + font-size: 1.2em; +} +aside #viewcontacts { + text-align: right; +} +.aprofile dt { + background: #eec; + color: #2e2f2e; + font-weight: bold; + box-shadow: 1px 1px 5px 0 #000; + margin: 15px 0 5px; + padding-left: 5px; +} +#profile-extra-links ul { + margin-left: 0px; + padding-left: 0px; + list-style: none; +} +#dfrn-request-link { + background:#3465A4 url(connect.png) no-repeat 95% center; + border-radius:5px 5px 5px 5px; + color:#fff; + display:block; + font-size:1.2em; + padding:.2em .5em; +} +#netsearch-box { + margin: 30px 0px; +} +.ttright { + margin: 0px 0px 0px 0px; +} + +/** +* contacts block +*/ +.contact-block-div { + width: 50px; + height: 50px; + float: left; +} +.contact-block-textdiv { + width: 150px; + height: 34px; + float: left; +} +#contact-block-end { + clear: both; +} + + +/** + * jot + **/ +#jot { + /*width: 785px;*/ + margin: 10px 0 20px 0px; + width: 100%; +} +#jot #jot-tools { + margin: 0px; + padding: 0px; + height: 35px; + overflow: none; + width: 100%; + /*background-color: #0e232e;*/ + /*border-bottom: 2px solid #9eabb0;*/ +} +#jot #jot-tools span { + float: left; + margin: 10px 20px 2px 0px; +} +#jot #jot-tools span a { + display: block; +} +#jot #jot-tools .perms { + float: right; + width: 40px; +} +#jot #jot-tools li.loading { + float: right; + background-color: #ffffff; + width: 20px; + vertical-align: center; + text-align: center; + border-top: 2px solid #9eabb0; + height: 38px; +} +#jot #jot-tools li.loading img { + margin-top: 10px; +} +#jot #jot-title { + border: 1px solid #ccc; + margin: 0 0 5px; + height: 20px; + width: 90%; + font-weight: bold; + border-radius: 5px; + vertical-align: middle; +} +#jot #character-counter { + width: 6%; + float: right; + text-align: right; + height: 15px; + line-height: 20px; + padding: 2px 20px 5px 0; +} +#profile-jot-text_tbl { + margin-bottom: 10px; +} +#profile-jot-text_ifr { + width:99.900002% !important; +} +[id$="jot-text_ifr"] { + width: 99.900002% !important; + color: #2e2f2e; + background: #eec; +} +[id$="jot-text_ifr"] .mceContentBody { + color: #2e2f2e; + background: #eec; +} +#profile-attach-wrapper, +#profile-audio-wrapper, +#profile-link-wrapper, +#profile-location-wrapper, +#profile-nolocation-wrapper, +#profile-title-wrapper, +#profile-upload-wrapper, +#profile-video-wrapper { + float: left; + margin: 0 20px 0 0; +} +#profile-rotator-wrapper { + float: right; +} +#profile-jot-tools-end, +#profile-jot-banner-end { + clear: both; +} +#profile-jot-email-wrapper { + margin:10px 10% 0; + border:1px solid #555753; + border-bottom:0; +} +#profile-jot-email-label { + background-color:#555753; + color:#ccccce; + padding:5px; +} +#profile-jot-email { + width:90%; + margin:5px; +} +#profile-jot-networks { + margin: 0 10%; + border: 1px solid #555753; + border-top: 0; + border-bottom: 0; + padding: 5px; +} +#profile-jot-net { + margin: 5px 0; +} +#jot-preview-link { + margin: 0 0 0 10px; + border: 0; + text-decoration: none; + float: right; +} +.icon-text-preview { + margin: 0 0 -18px 0; + display: block; + width: 20px; + height: 20px; + background: url(icons.png) no-repeat -128px -40px; + border: 0; + text-decoration: none; + float: right; + cursor: pointer; +} +#profile-jot-perms { + float: right; + background-color: #555753; + height: 22px; + width: 20px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + overflow: hidden; + border: 0px; + margin: 0 10px 0 10px; +} +#profile-jot-plugin-wrapper { + width: 1px; + margin: 10px 0 0 0; + float: right; +} +#profile-jot-submit-wrapper { + float: right; + width: 100%; + list-style: none; + margin: 10px 0 0 0; + padding: 0; +} +#profile-jot-submit { + height: 22px; + background-color: #555753; + color: #eeeeec; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + border: 0; + margin: 0; + float: right; +} +#jot-perms-icon { + height: 22px; + width: 20px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + overflow: hidden; + border: 0; +} +#profile-jot-acl-wrapper { + margin: 0 10px; + border: 1px solid #555753; + border-top: 0; + display: block !important; +} +#group_allow_wrapper, +#group_deny_wrapper, +#acl-permit-outer-wrapper { + width:47%; + float:left; +} +#contact_allow_wrapper, +#contact_deny_wrapper, +#acl-deny-outer-wrapper { + width:47%; + float:right; +} +#acl-permit-text { + background-color: #555753; + color: #ccccce; + padding: 5px; + float: left; +} +#jot-public { + background-color: #555753; + color: #ff0000; + padding: 5px; + float: left; +} +#acl-deny-text { + background-color: #555753; + color: #ccccce; + padding: 5px; + float: left; +} +#acl-permit-text-end, +#acl-deny-text-end { + clear: both; +} +#jot-title-desc { + color: #ccc; +} +#profile-jot-desc { + color: #ff2000; + margin: 5px 0; +} +#jot-title-wrapper { + margin-bottom: 5px; +} +#jot-title-display { + font-weight: bold; +} +.jothidden { + display: none; +} +#jot-preview-content { + background-color: #3e3f3e; + color: #eec; + border: 1px #eec solid; + border-radius: 3px; + padding: 3px 3px 6px 10px; +} +#jot-preview-content .wall-item-outside-wrapper { + border: 0; + border-radius: 0px; +} + + +/** + * section + */ +section { + margin: 20px 8% 0 4%; + font-size: 0.8em; + padding-right: 230px; + min-width: 475px; +} + +/** tabs **/ +.tabs { + list-style: none; + margin: 10px 0; + padding: 0; +} +.tabs li { + display: inline; +} +.tab { + border: 1px solid #729fcf; + padding: 4px; +} +.tab:hover { + background: #88a9d2; + color: #2e2f2e; +} +.tab:active { + background: #88a9d2; + color: #2e2f2e; +} +.tab.active { + background: #88a9d2; + color: #2e2f2e; +} +.tab a { + border: 0; + text-decoration: none; +} + +/** + * items + */ +.wall-item-outside-wrapper { + border: 1px solid #aaa; + border-radius: 5px; +} +.wall-item-outside-wrapper.comment { + margin-top: 5px; +} +.wall-item-outside-wrapper-end { + clear: both; +} +.wall-item-content-wrapper { + position: relative; + padding: 10px; + width: auto; +} +.wall-item-outside-wrapper .wall-item-comment-wrapper { + /*margin-left: 90px;*/ +} +.shiny { + background: #2e3436; +} +.heart { + color: red; +} +.wall-item-content { + overflow-x: auto; +} +/* removing it from here, vs. putting it in .wall-item-content + * might break things for people. we shall see ;) */ +[id^="tread-wrapper"], [class^="tread-wrapper"] { + margin: 15px 0 0 0; + padding: 0px; + /*overflow-x: auto;*/ +} +.wall-item-photo-menu { + display: none; +} +.wall-item-photo-menu-button { + display:none; + text-indent:-99999px; + background:#555753 url(menu-user-pin.jpg) no-repeat 75px center; + position:absolute; + overflow:hidden; + height:20px; + width:90px; + top:85px; + left:0; + -webkit-border-radius:0 0 5px 5px; + -moz-border-radius:0 0 5px 5px; + border-radius:0 0 5px 5px; +} +.wall-item-info { + float: left; + width: 110px; +} +.wall-item-photo-wrapper { + width: 80px; + height: 80px; + position: relative; + padding: 5px; + background-color: #555753; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +[class^="wall-item-tools"] > *, [class^="wall-item-tools"] > * > * { + margin: 0 0 5px 0; +} +.wall-item-tools { + float: right; + filter: alpha(opacity=35); + opacity: 0.4; + -webkit-transition: all 1s ease-in-out; + -moz-transition: all 1s ease-in-out; + -o-transition: all 1s ease-in-out; + -ms-transition: all 1s ease-in-out; + transition: all 1s ease-in-out; +} +.wall-item-tools:hover { + filter: alpha(opacity=100); + opacity: 1; + -webkit-transition: all 1s ease-in-out; + -moz-transition: all 1s ease-in-out; + -o-transition: all 1s ease-in-out; + -ms-transition: all 1s ease-in-out; + transition: all 1s ease-in-out; +} +.wall-item-title { + font-size: 1.2em; + font-weight: bold; + margin-bottom: 1em; +} +.wall-item-body { + margin: 10px 10px 10px 0px; + text-align: left; +} +.wall-item-lock-wrapper { + float: right; +} +.wall-item-dislike, +.wall-item-like { + clear: left; + font-size: 0.8em; + color: #878883; + margin: 5px 0 5px 120px; +} +.wall-item-author, .wall-item-actions-author { + clear: left; + font-size: 0.8em; + color: #878883; + margin: 20px 20px 0 110px; +} +.wall-item-ago { + display: inline; + padding-left: 10px; +} +.wall-item-wrapper-end { + clear:both; +} +.wall-item-location { + margin-top: 15px; + width: 100px; + overflow: hidden; + text-overflow: ellipsis; + -o-text-overflow: ellipsis; +} +.wall-item-location .icon { + float: left; +} +.wall-item-location > a { + margin-left: 25px; + font-size: 0.7em; + display: block; +} +.wall-item-location .smalltext { + margin-left: 25px; + font-size: 0.7em; + display: block; +} +.wall-item-location > br { + display: none; +} +.wallwall .wwto { + left: 5px; + margin: 0; + position: absolute; + top: 75px; + width: 30px; + z-index: 10001; + width: 30px; + height: 30px; +} +.wallwall .wwto img { + width: 30px !important; + height: 30px !important; +} +.wallwall .wall-item-photo-end { + clear: both; +} +.wall-item-arrowphoto-wrapper { + position: absolute; + left: 35px; + top: 80px; + z-index: 10002; +} +.wall-item-photo-menu { + min-width: 92px; + border: 2px solid #FFFFFF; + border-top: 0px; + background: #555753; + position: absolute; + left: -2px; top: 101px; + display: none; + z-index: 10003; + -webkit-border-radius: 0px 5px 5px 5px; + -moz-border-radius: 0px 5px 5px 5px; + border-radius: 0px 5px 5px 5px; +} +.wall-item-photo-menu ul { + margin:0px; + padding: 0px; + list-style: none; +} +.wall-item-photo-menu li a { + white-space: nowrap; + display: block; + padding: 5px 2px; + color: #eeeeec; +} +.wall-item-photo-menu li a:hover { + color: #555753; + background: #eeeeec; +} +#item-delete-selected { + overflow: auto; + width: 100%; +} + + +/** + * comment + */ +.ccollapse-wrapper { + font-size: 0.9em; + margin-left: 80px; +} + +.wall-item-outside-wrapper.comment { + margin-left: 80px; +} +.wall-item-outside-wrapper.comment .wall-item-photo { + width: 40px!important; + height: 40px!important; +} +.wall-item-outside-wrapper.comment .wall-item-photo-wrapper { + width: 40px; + height: 40px; +} +.wall-item-outside-wrapper.comment .wall-item-photo-menu-button { + width: 50px; + top: 45px; + background-position: 35px center; +} +.wall-item-outside-wrapper.comment .wall-item-info { + width: 60px; +} +.wall-item-outside-wrapper.comment .wall-item-body { + margin-left: 10px; +} +.wall-item-outside-wrapper.comment .wall-item-author { + margin-left: 50px; +} + +.wall-item-outside-wrapper.comment .wall-item-photo-menu { + min-width: 50px; + top: 60px; +} +.comment-wwedit-wrapper { + /*margin: 30px 0px 0px 80px;*/ +} +.comment-edit-wrapper { + border-top: 1px #aaa solid; +} +.comment-wwedit-wrapper img, +.comment-edit-wrapper img { + width: 20px; + height: 20px; +} +.comment-edit-photo-link, .comment-edit-photo { + float: left; + margin-left: 10px; +} +.my-comment-photo { + width: 40px; + height: 40px; + padding: 5px; +} +[class^="comment-edit-text"] { + margin: 5px 0 10px 20px; + width: 84.5%; +} +.comment-edit-text-empty { + height: 20px; + border: 2px #c8bebe solid; + border-radius: 5px; + color: #c8bebe; + -webkit-transition: all 0.5s ease-in-out; + -moz-transition: all 0.5s ease-in-out; + -o-transition: all 0.5s ease-in-out; + -ms-transition: all 0.5s ease-in-out; + transition: all 0.5s ease-in-out; +} +.comment-edit-text-empty:hover { + color: #999999; +} +.comment-edit-text-full { + height: 10em; + border-radius: 5px; + -webkit-transition: all 0.5s ease-in-out; + -moz-transition: all 0.5s ease-in-out; + -o-transition: all 0.5s ease-in-out; + -ms-transition: all 0.5s ease-in-out; + transition: all 0.5s ease-in-out; +} +.comment-edit-submit-wrapper { + width: 90%; + margin: 5px 5px 10px 50px; + text-align: right; +} +.comment-edit-submit { + height: 22px; + background-color: #555753; + color: #eeeeec; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + border: 0; +} + + +/** + * item text style + **/ +.wall-item-body code { + display: block; + padding: 0 0 10px 5px; + border-color: #ccc; + border-style: solid; + border-width: 1px 1px 1px 10px; + background: #eee; + color: #2e2f2e; + width: 95%; +} + + +/** + * profile + **/ +div[id$="text"] { + font-weight: bold; + border-bottom: 1px solid #ccc; +} +div[id$="wrapper"] { + height: 100%; + margin-bottom: 1em; +} +div[id$="wrapper"] br { + clear: left; +} +#advanced-profile-with { + margin-left: 200px; +} + + +/** + * photos + **/ +.photos { + height: auto; + overflow: auto; +} +#photo-top-links { + margin-bottom: 30px; +} +.photo-album-image-wrapper, +.photo-top-image-wrapper { + float: left; + -moz-box-shadow: 3px 3px 10px 0 #000; + -webkit-box-shadow: 3px 3px 10px 0 #000; + box-shadow: 3px 3px 10px 0 #000; + background-color: #222; + color: #2e2f2e; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + padding-bottom: 30px; + position: relative; + margin: 0 10px 10px 0; +} + +#photo-photo { + max-width: 100%; +} +#photo-photo img { + max-width: 100%; +} +.photo-top-image-wrapper a:hover, +#photo-photo a:hover, +.photo-album-image-wrapper a:hover { + border-bottom: 0; +} +.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-top-album-name { + position: absolute; + bottom: 0; + padding: 0 5px; +} +.caption { + position: absolute; + bottom: 0; + margin: 0 5px; +} +#photo-photo { + position: relative; + float:left; +} +#photo-photo-end { + clear: both; +} +#photo-prev-link, +#photo-next-link { + position:absolute; + width:30%; + height:100%; + background-color:rgba(255,255,255,0.5); + opacity:0; + -webkit-transition:all .2s ease-in-out; + -moz-transition:all .2s ease-in-out; + -o-transition:all .2s ease-in-out; + -ms-transition:all .2s ease-in-out; + transition:all .2s ease-in-out; + background-position:center center; + background-repeat:no-repeat; +} +#photo-prev-link { + left:0; + top:0; + background-image:url(prev.png); +} +#photo-next-link { + right:0; + top:0; + background-image:url(next.png); +} + +#photo-prev-link a,#photo-next-link a { + display:block; + width:100%; + height:100%; + overflow:hidden; + text-indent:-900000px; +} +#photo-prev-link:hover, +#photo-next-link:hover { + opacity:1; + -webkit-transition:all .2s ease-in-out; + -moz-transition:all .2s ease-in-out; + -o-transition:all .2s ease-in-out; + -ms-transition:all .2s ease-in-out; + transition:all .2s ease-in-out; +} +#photo-next-link .icon, +#photo-prev-link .icon { + display: none; +} +#photos-upload-spacer, +#photos-upload-new-wrapper, +#photos-upload-exist-wrapper { + margin-bottom: 1em; +} +#photos-upload-existing-album-text, +#photos-upload-newalbum-div { + background-color:#555753; + color:#eeeeec; + padding:1px; +} +#photos-upload-album-select, +#photos-upload-newalbum { + width: 99%; +} +#photos-upload-perms-menu { + text-align: right; +} +#photo-edit-caption, #photo-edit-newtag, #photo-edit-albumname { + float: left; + margin-bottom: 25px; +} +#photo-edit-link-wrap { + margin-bottom: 15px; +} +#photo-edit-caption { + width: 100%; +} +#photo-edit-newtag { + width: 100%; +} +#photo-like-div { + margin-bottom: 25px; +} +#photo-edit-caption-end, #photo-edit-tags-end, #photo-edit-albumname-end { + clear: both; +} +#photo-edit-delete-button { + margin-left: 200px; +} +#photo-edit-end { + margin-bottom: 35px; +} +#photo-caption { + font-size: 110%; + font-weight: bold; + margin-top: 15px; + margin-bottom: 15px; +} + +/** + * message + */ +.prvmail-text { + width: 100%; +} +#prvmail-subject { + width: 100%; + color: #2e2f2e; + background: #eec; +} +#prvmail-submit-wrapper { + margin-top: 10px; +} +#prvmail-submit { + float:right; + margin-top: 0; +} +#prvmail-submit-wrapper > div { + margin-right:5px; + float:left; +} +.mail-list-outside-wrapper { + margin-top: 20px; +} +.mail-list-sender { + float: left; +} +.mail-list-detail { + margin-left: 90px; +} +.mail-list-sender-name { + display: inline; + font-size: 1.1em; +} +.mail-list-date { + display: inline; + font-size: 0.9em; + padding-left: 10px; +} +.mail-list-sender-name, .mail-list-date { + font-style: italic; +} +.mail-list-subject { + font-size: 1.2em; +} +.mail-list-delete-wrapper { + float: right; +} +.mail-list-outside-wrapper-end { + clear: both; + border-bottom: 1px #eec dotted; +} +.mail-conv-sender { + float: left; + margin: 0px 5px 5px 0px; +} +.mail-conv-sender-photo { + width: 32px; + height: 32px; +} +.mail-conv-sender-name { + float: left; +} +.mail-conv-date { + float: right; +} +.mail-conv-subject { + clear: right; + font-weight: bold; + font-size: 1.2em; +} +.mail-conv-body { + clear: both; +} +.mail-conv-delete-wrapper { + margin-top: 5px; +} + + +/** + * contacts + */ +.view-contact-wrapper, +.contact-entry-wrapper { + float: left; + margin: 0 5px 40px 0; + width: 120px; + height: 120px; + padding: 3px; + position: relative; +} +.contact-direction-wrapper { + position: absolute; + top: 20px; +} +.contact-edit-links { + position: absolute; + top: 60px; +} +.contact-entry-photo-wrapper { + +} +.contact-entry-photo { + margin-left: 20px; +} +.contact-entry-name { + width: 120px; + font-weight: bold; + /*overflow: hidden;*/ +} +.contact-entry-photo { + position: relative; +} +.contact-entry-edit-links .icon { + border: 1px solid #babdb6; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background-color: #fff; +} +#contact-entry-url, [id^="contact-entry-url"] { + font-size: smaller; + /*overflow: scroll;*/ +} +#contact-entry-network, [id^="contact-entry-network"] { + font-size: smaller; + font-style: italic; +} +#contact-edit-banner-name { + font-size: 1.5em; +} +#contact-edit-photo-wrapper { + position: relative; + float: left; + padding: 20px; +} +#contact-edit-direction-icon { + position:absolute; + top:60px; + left:0; +} +#contact-edit-nav-wrapper { + margin-left: 0px; +} +#contact-edit-links { + margin-top: 23px; +} +#contact-edit-links ul { + list-style-type: none; +} +#contact-drop-links { + margin-left:5px; +} +#contact-edit-nav-wrapper .icon { + border: 1px solid #babdb6; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +#contact-edit-poll-wrapper { + margin-left: 0px; +} +#contact-edit-last-update-text { + margin-bottom: 15px; +} +#contact-edit-last-updated { + font-weight: bold; +} +#contact-edit-poll-text { + display: inline; +} +#contact-edit-info_tbl, #contact-edit-info_parent { + width: 100%; +} +.mceLayout { + width: 100%; +} +#contact-edit-end { + clear: both; + margin-bottom: 65px; +} + +.contact-photo-menu-button { + position: absolute; + background-image: url("photo-menu.jpg"); + background-position: top left; + background-repeat: no-repeat; + margin: 0px; padding: 0px; + width: 16px; + height: 16px; + top: 64px; left:0px; + overflow: hidden; + text-indent: 40px; + display: none; +} +.contact-photo-menu { + width: auto; + border: 2px solid #444; + background: #2e2f2e; + color: #eec; + position: absolute; + left: 0px; top: 90px; + display: none; + z-index: 10000; +} +.contact-photo-menu ul { + margin:0px; + padding: 0px; + list-style: none; +} +.contact-photo-menu li a { + display: block; + padding: 2px; +} +.contact-photo-menu li a:hover { + color: #fff; + background: #3465A4; + text-decoration: none; +} + + +/** + * register, settings & profile forms + */ +#id_openid_url, +.openid { + background:url(login-bg.gif) no-repeat; + background-position:0 50%; + padding-left:18px; +} + +#settings-nickname-desc { + background-color: #eec; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + padding: 5px; + color: #111; +} +#settings-default-perms { + margin-bottom: 20px; +} +#register-form div, +#profile-edit-form div { + clear: both; +} + +/*#register-form label, */ +/*#profile-edit-form label {*/ +/* width: 300px; */ +/* float: left; */ +/*} */ + +/*#register-form span, */ +/*#profile-edit-form span {*/ +/* color: #555753; */ +/* display: block; */ +/* margin-bottom: 20px; */ +/*} */ +#profile-edit-marital-label span { + margin: -4px; +} +.settings-submit-wrapper, +.profile-edit-submit-wrapper { + margin: 30px 0px; +} +.profile-edit-side-div { + /*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-div:hover { + display: block; +} +.profile-edit-side-link { + margin: 3px 0px 0px 70px; +}*/ +#profiles-menu-trigger { + margin: 0px 0px 0px 25px; +} +.profile-listing { + float: left; + margin: 20px 20px 0px 0px; +} +.icon-profile-edit { + background: url("icons.png") -150px 0px no-repeat; + border: 0; + cursor: pointer; + display: block; + float: right; + width: 20px; + height: 20px; + margin: 0 0 -18px; + position: absolute; + text-decoration: none; + top: 18px; + right: 226px; +} +#profile-edit-links ul { + margin: 20px 0; + padding: 0; + list-style: none; +} +.marital { + margin-top: 5px; +} +#register-sitename { + display: inline; + font-weight: bold; +} +#advanced-expire-popup { + background: #2e2f2e; + color: #eec; +} +#id_ssl_policy { + width: 374px; +} + + +/** + * contacts selector + */ +.group-delete-wrapper { + margin: -31px 122px 0 0; + float: right; +} + +#group-edit-submit-wrapper { + margin: 0 0 10px 0; + display: inline; +} +#group-edit-desc { + margin: 10px 0px; +} +#group-members, +#prof-members { + height:200px; + overflow:auto; + border:1px solid #555753; + -webkit-border-radius:5px 5px 0 0; + -moz-border-radius:5px 5px 0 0; + border-radius:5px 5px 0 0; +} +#group-all-contacts, +#prof-all-contacts { + height:200px; + overflow:auto; + border:1px solid #555753; + -webkit-border-radius:0 0 5px 5px; + -moz-border-radius:0 0 5px 5px; + border-radius:0 0 5px 5px; +} +#group-members h3, +#group-all-contacts h3, +#prof-members h3, +#prof-all-contacts h3 { + color:#eeeeec; + background-color:#555753; + margin:0; + padding:5px; +} +#group-separator, +#prof-separator { + display: none; +} + +/** + * profile + */ +#cropimage-wrapper { + float:left; +} +#crop-image-form { + clear:both; +} + +/** + * events + **/ +.clear { clear: both; } +.eventcal { + float:left; + font-size:20px; +} +.vevent { + border:1px solid #ccc; +} +.vevent .event-description, .vevent .event-location { + margin-left: 10px; + margin-right: 10px; +} +.vevent .event-start { + margin-left: 10px; + margin-right: 10px; +} + +#new-event-link { + margin-bottom: 10px; +} +.edit-event-link, .plink-event-link { + float: left; + margin-top: 4px; + margin-right: 4px; + margin-bottom: 15px; +} +.event-description:before { + content: url('../../../images/calendar.png'); + margin-right: 15px; +} +.event-start, .event-end { + margin-left: 10px; + width: 330px; +} +.event-start .dtstart, .event-end .dtend { + float: right; +} +.event-list-date { + margin-bottom: 10px; +} +.prevcal, .nextcal { + float: left; + margin-left: 32px; + margin-right: 32px; + margin-top: 64px; +} +.event-calendar-end { + clear: both; +} +.calendar { + font-family: monospace; +} +.today { + font-weight: bold; + color: #FF0000; +} +#event-start-text, +#event-finish-text { + margin-top: 10px; + margin-bottom: 5px; +} +#event-nofinish-checkbox, +#event-nofinish-text, +#event-adjust-checkbox, +#event-adjust-text, +#event-share-checkbox { + float:left; +} +#event-datetime-break { + margin-bottom: 10px; +} +#event-nofinish-break, +#event-adjust-break, +#event-share-break { + clear: both; +} +#event-desc-text, +#event-location-text { + margin-top: 10px; + margin-bottom: 5px; +} +#event-submit { + margin-top: 10px; +} +.body-tag { + margin: 10px 0; + opacity: 0.5; + filter:alpha(opacity=50); +} +.body-tag:hover { + opacity: 1.0 !important; + filter:alpha(opacity=100) !important; +} +.item-select { + opacity: 0.1; + filter:alpha(opacity=10); + float: right; + margin-right: 10px; + +} +.item-select:hover, .checkeditem { + opacity: 1; + filter:alpha(opacity=100); +} +#item-delete-selected { + margin-top: 30px; +} +/* was tired of having no way of moving it around, so + * here's a little 'hook' to do so */ +.delete-checked { + position: absolute; + left: 35px; + margin-top: 20px; +} +#item-delete-selected-end { + clear: both; +} +#item-delete-selected-icon, #item-delete-selected-desc { + float: left; + margin-right: 5px; +} +#item-delete-selected-desc:hover { + text-decoration: underline; +} + + +/** + * directory + */ +.directory-item { + float: left; + /*margin: 50px 50px 0px 0px;*/ + margin: 0 5px 4px 0; + padding: 3px; + width: 180px; + height: 250px; + position: relative; +} + + +/** + * sidebar + */ +#group-sidebar { + margin-bottom: 10px; +} +.group-selected, .nets-selected { + padding: 3px; + color: #2e2f2e; + background: #88a9d2; + font-weight: bold; +} +.group-selected:hover, .nets-selected:hover { + color: #2e2f2e; +} +.groupsideedit { + margin-right: 10px; +} +#sidebar-group-ul { + padding-left: 0; +} +#sidebar-group-list { + margin: 0 0 5px 0; +} +#sidebar-group-list ul { + list-style-type: none; + list-style-position: inside; +} +#sidebar-group-list li { + margin-top: 10px; +} +#sidebar-group-list .icon { + display: inline-block; + height: 12px; + width: 12px; +} +#sidebar-new-group { + margin: auto; + display: inline-block; + color: #efefef; + text-decoration: none; + text-align: center; +} +#peoplefind-sidebar form { + margin-bottom: 10px; +} +#sidebar-new-group:hover { + /*background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #b20202), color-stop(1, #d60808) );*/ + /*background: -moz-linear-gradient( center top, #b20202 5%, #d60808 100% );*/ + /*background-color: #b20202;*/ +} + +#sidebar-new-group:active { + position: relative; + top: 1px; +} +#side-peoplefind-url { + background-color: #2e2f2e; + color: #eec; + border: 1px 999 solid; + margin-right: 3px; + width: 75%; +} +#side-peoplefind-url:hover, #side-peoplefind-url:focus { + background-color: #efefef; + color: #222; + border: 1px 333 solid; +} +.nets-ul { + list-style-type: none; + padding-left: 0px; +} +.nets-ul li { + margin: 10px 0 0; +} + +.nets-link { + margin-left: 0px; +} +.nets-all { + margin-left: 0px; +} +#netsearch-box { + margin-top: 20px; + width: 150px; +} +#netsearch-box #search-submit { + margin: 5px 0px 0px 0px; +} + +/** + * ADMIN + */ +#pending-update { + float:right; + color: #fff; + font-weight: bold; + background-color: #ff0000; + padding: 0 .3em; +} +.admin.linklist { + border: 0; padding: 0; +} +.admin.link { + list-style-position: inside; +} +#adminpage dl { + clear:left; + margin-bottom: 2px; + padding-bottom: 2px; + border-bottom: 1px solid #000; +} +#adminpage dt { + width: 250px; + float: left; + font-weight: bold; +} +#adminpage dd { + margin-left: 250px; +} +#adminpage h3 { + border-bottom:1px solid #ccc; +} + +#adminpage .submit { + clear:left; +} + +#adminpage #pluginslist { + margin: 0; + padding: 0; +} +#adminpage .plugin { + list-style: none; + display: block; + border: 1px solid #888; + padding: 1em; + margin-bottom: 5px; + clear: left; +} +#adminpage .toggleplugin { + float:left; + margin-right: 1em; +} + +#adminpage table { + width: 100%; + border-bottom: 1px solid #000; + margin: 5px 0; +} +#adminpage table th { + text-align: left; +} +#adminpage td .icon { + float: left; +} +#adminpage table#users img { + width: 16px; height: 16px; +} +#adminpage table tr:hover { + color: #2e2f2e; + background-color: #eec; +} +#adminpage .selectall { + text-align: right; +} +#adminpage #users a { + color: #2e2f2e; + text-decoration: underline; +} + +/** + * Form fields + */ +.field { + /*margin-bottom: 10px;*/ + /*padding-bottom: 10px;*/ + overflow: auto; + width: 100%; +} +.field label, label { + float: left; + width: 275px; + display: block; + font-size: 1.077em; + /*font-weight: bold;*/ + margin: 0 10px 0.5em 0; + border: 1px #2e2f2e solid; + padding: 5px; + background: #eec; + vertical-align: middle; + color: #111; +} +.field input, input[type="text"] { + width: 250px; + height: 25px; + border: 1px #999 solid; +} +.field textarea { + width: 80%; + height: 100px; +} +.field_help { + display: block; + margin-left: 297px; + color: #aaa; +} +.field .onoff { + float: left; + width: 80px; +} +.field .onoff a { + display: block; + border: 1px solid #666; + padding: 3px 6px 4px 10px; + height: 16px; + text-decoration: none; +} +.field .onoff .on { + background: url("../../../images/onoff.jpg") no-repeat 42px 1px #999; + color: #111; + text-align: left; +} +.field .onoff .off { + background: url("../../../images/onoff.jpg") no-repeat 2px 1px #ccc; + color: #333; + text-align: right; +} +.hidden { + display:none !important; +} +.field.radio .field_help { + margin-left: 297px; +} + + +/* + * UPDATE + */ +.popup { + width: 100%; + height: 100%; + top: 0px; + left: 0px; + position: absolute; + display: none; +} +.popup .background { + background-color: rgba(0,0,0,128); + opacity: 0.5; + width: 100%; + height: 100%; + position: absolute; + top:0px; + left:0px; +} +.popup .panel { + top: 25%; + left: 25%; + width: 50%; + height: 50%; + padding: 1em; + position: absolute; + border: 4px solid #000000; + background-color: #FFFFFF; +} +#panel { + z-index: 100; +} +.grey { + color: grey; +} +.orange { + color: orange; +} +.red { + color: red; +} +.popup .panel .panel_text { + display: block; + overflow: auto; + height: 80%; +} +.popup .panel .panel_in { + width: 100%; + height: 100%; + position: relative; +} +.popup .panel .panel_actions { + width: 100%; + bottom: 4px; + left: 0px; + position: absolute; +} +.panel_text .progress { + width: 50%; + overflow: hidden; + height: auto; + border: 1px solid #cccccc; + margin-bottom: 5px; +} +.panel_text .progress span { + float: right; + display: block; + width: 25%; + background-color: #eeeeee; + text-align: right; +} + +/** + * OAuth + */ +.oauthapp { + height: auto; + overflow: auto; + border-bottom: 2px solid #cccccc; + padding-bottom: 1em; + margin-bottom: 1em; +} +.oauthapp img { + float: left; + width: 48px; height: 48px; + margin: 10px; +} +.oauthapp img.noicon { + background-image: url("../../../images/icons/48/plugin.png"); + background-position: center center; + background-repeat: no-repeat; +} +.oauthapp a { + float: left; +} + + +/** + * ICONS + */ +.iconspacer { + display: block; + width: 16px; + height: 16px; +} +.icon { + display: block; + width: 20px; + height: 20px; + background: url(icons.png) no-repeat; + border: 0; + text-decoration: none; + border-radius: 5px; +} +.icon:hover { + border: 0; + text-decoration: none; +} +.icon.drop, +.icon.drophide, .icon.delete { + float: left; +} +.icon.s22.delete { + display: block; + background-position: -110px 0; +} +.icon.s22.text { + padding: 10px 0px 0px 25px; + width: 200px; +} +.icon.text { + text-indent: 0px; +} +.icon.s16 { + min-width: 16px; + height: 16px; +} +.s16 .add { + background: url("../../../images/icons/16/add.png") no-repeat; +} +.add { + margin: 0px 5px; +} +.article { + background-position: -50px 0; +} +.audio { + background-position: -70px 0; +} +.block { + background-position: -90px 0px; +} +.drop, .delete { + background-position: -110px 0; +} +.drophide { + background-position: -130px 0; +} +.edit { + background-position: -150px 0; +} +.camera { + background-position: -170px 0; +} +.dislike { + background-position: -190px 0; +} +.like { + background-position: -211px 0; +} +.link { + background-position: -230px 0; +} +.globe, .location { + background-position: -50px -20px; +} +.noglobe, .nolocation { + background-position: -70px -20px; +} +.no { + background-position: -90px -20px; +} +.pause { + background-position: -110px -20px; +} +.play { + background-position: -130px -20px; +} +.pencil { + background-position: -151px -18px; +} +.small-pencil { + background-position: -170px -20px; +} +.recycle { + background-position: -190px -20px; +} +.remote-link { + background-position: -210px -20px; +} +.share { + background-position: -230px -20px; +} +.tools { + background-position: -50px -40px; +} +.lock { + background-position: -70px -40px; +} +.unlock { + background-position: -88px -40px; +} +.video { + background-position: -110px -40px; +} +.attach { + background-position: -190px -40px; +} +.language { + background-position: -210px -40px; +} +.starred { + background-position: -130px -60px; +} +.unstarred { + background-position: -150px -60px; +} +.tagged { + background-position: -170px -60px; +} +.on { + background-position: -50px -60px; +} +.off { + background-position: -70px -60px; +} +.prev { + background-position: -90px -60px; +} +.next { + background-position: -110px -60px; +} +.icon.dim { + opacity: 0.3; + filter: alpha(opacity=30); +} +#pause { + position: fixed; + bottom: 5px; + right: 5px; +} +.border, .border:hover { + border: 1px solid #babdb6; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.attachtype { + display: block; + width: 20px; + height: 23px; + background-image: url(../../../images/content-types.png); +} +.type-video { + background-position: 0px 0px; +} +.type-image { + background-position: -20px 0; +} +.type-audio { + background-position: -40px 0; +} +.type-text { + background-position: -60px 0px; +} +.type-unkn { + background-position: -80px 0; +} + + +/** + * footer + */ +.cc-license { + margin-top: 100px; + font-size: 0.7em; +} +footer { + display: block; + margin: 50px 20%; + clear: both; +} +#profile-jot-text { + height: 20px; + color: #eec; + border: 1px solid #eec; + border-radius: 5px; + width: 99.5%; +} + + +/** acl **/ +#photo-edit-perms-select, +#photos-upload-permissions-wrapper, +#profile-jot-acl-wrapper { + display: block !important; + background: #2e2f2e; + color: #eec; +} +#acl-wrapper { + width: 660px; + margin: 0 auto; +} +#acl-search { + float: right; + background: #fff url("../../../images/search_18.png") no-repeat right center; + padding-right: 20px; + margin: 6px; +} +#acl-showall { + float: left; + display: block; + width: auto; + height: 18px; + background: #eec url("../../../images/show_all_off.png") 8px 8px no-repeat; + padding: 7px 10px 7px 30px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + color: #999; + margin: 5px 0; +} +#acl-showall.selected { + color: #000; + background: #f90 url(../../../images/show_all_on.png) 8px 8px no-repeat; +} +#acl-list { + height: 210px; + border: 1px solid #ccc; + clear: both; + margin-top: 30px; + overflow: auto; +} +/*#acl-list-content { +}*/ +.acl-list-item { + border: 1px solid #eec; + display: block; + float: left; + height: 110px; + margin: 3px 0 5px 5px; + width: 120px; +} +.acl-list-item img { + width: 22px; + height: 22px; + float: left; + margin: 5px 5px 20px; +} +.acl-list-item p { + height: 12px; + font-size: 10px; + margin: 0 0 22px; + padding: 2px 0 1px; +} +.acl-list-item a { + background: #eec 3px 3px no-repeat; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + 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 { + text-decoration: none; + color: #2e2f2e; + border: 0; +} +.acl-button-show { + background-image: url('../../../images/show_off.png'); + margin: 0 auto; +} +.acl-button-hide { + background-image: url('../../../images/hide_off.png'); + margin: 0 auto; +} +.acl-button-show.selected { + color: #2e2f2e; + background-color: #9ade00; + background-image: url(../../../images/show_on.png); +} +.acl-button-hide.selected { + color: #2e2f2e; + background-color: #ff4141; + background-image: url(../../../images/hide_on.png); +} +.acl-list-item.groupshow { + border-color: #9ade00; +} +.acl-list-item.grouphide { + border-color: #ff4141; +} +/** /acl **/ + + +/* autocomplete popup */ +.acpopup { + max-height: 175px; + max-width: 42%; + background-color: #555753; + color: #fff; + overflow: auto; + z-index: 100000; + border: 1px solid #cccccc; +} +.acpopupitem { + background-color: #555753; + padding: 4px; + clear: left; +} +.acpopupitem img { + float: left; + margin-right: 4px; +} +.acpopupitem.selected { + color: #2e302e; + background-color: #eeeeec; +} +.qcomment-wrapper { + padding: 0px; + margin: 2px; + list-style-type: none; +} +.qcomment, .qcomment:hover { + display: inline; + padding: 5px; + margin: 5px; +} +.qcomment { + opacity: 0.5; + filter:alpha(opacity=50); +} +.qcomment:hover { + opacity: 1.0; + filter:alpha(opacity=100); +} +#network-star-link { + margin-top: 10px; +} +.network-star { + float: left; + margin-right: 5px; +} +.network-star.icon.starred { + display: inline-block; +} + + +@media handheld { + body { + font-size: 15pt; + } +} diff --git a/view/theme/dispy-dark/tag.png b/view/theme/dispy-dark/tag.png new file mode 100644 index 0000000000..9b5a7223eb Binary files /dev/null and b/view/theme/dispy-dark/tag.png differ diff --git a/view/theme/dispy-dark/theme.php b/view/theme/dispy-dark/theme.php new file mode 100644 index 0000000000..7001361739 --- /dev/null +++ b/view/theme/dispy-dark/theme.php @@ -0,0 +1,128 @@ + + * Maintainer: Simon + */ + + +$a->theme_info = array( + 'extends' => 'dispy-dark' +); + +$a->page['htmlhead'] .= <<< EOT + +EOT; + diff --git a/view/theme/dispy-dark/wall_item.tpl b/view/theme/dispy-dark/wall_item.tpl new file mode 100644 index 0000000000..c67a88635c --- /dev/null +++ b/view/theme/dispy-dark/wall_item.tpl @@ -0,0 +1,80 @@ +
                      +
                      +
                      +
                      + + $item.name + + menu +
                      +
                        + $item.item_photo_menu +
                      +
                      +
                      +
                      +
                      {{ if $item.location }}$item.location {{ endif }}
                      +
                      +
                      + {{ if $item.lock }}
                      $item.lock
                      + {{ else }}
                      {{ endif }} +
                      +
                      + {{ if $item.star }} + + + {{ endif }} + + {{ if $item.vote }} + + {{ endif }} + {{ if $item.plink }} + + {{ endif }} + {{ if $item.edpost }} + + {{ endif }} + +
                      + {{ if $item.drop.dropping }}{{ endif }} +
                      + {{ if $item.drop.dropping }}{{ endif }} +
                      + +
                      +
                      +
                      $item.title
                      +
                      +
                      $item.body +
                      + {{ for $item.tags as $tag }} + $tag + {{ endfor }} +
                      +
                      +
                      +
                      + $item.name +
                      $item.ago
                      + +
                      +
                      +
                      + +
                      $item.dislike
                      +
                      + $item.comment +
                      +
                      + +
                      + diff --git a/view/theme/dispy-dark/wallwall_item.tpl b/view/theme/dispy-dark/wallwall_item.tpl new file mode 100644 index 0000000000..f251d7352b --- /dev/null +++ b/view/theme/dispy-dark/wallwall_item.tpl @@ -0,0 +1,86 @@ +
                      +
                      +
                      +
                      + + $item.owner_name +
                      +
                      $item.wall
                      +
                      + + $item.name + menu +
                      +
                        + $item.item_photo_menu +
                      +
                      + +
                      +
                      +
                      {{ if $item.location }}$item.location {{ endif }}
                      +
                      +
                      + {{ if $item.lock }}
                      $item.lock
                      + {{ else }}
                      {{ endif }} +
                      +
                      + {{ if $item.star }} + + + {{ endif }} + + {{ if $item.vote }} + + {{ endif }} + {{ if $item.plink }} + + {{ endif }} + {{ if $item.edpost }} + + {{ endif }} + +
                      + {{ if $item.drop.dropping }}{{ endif }} +
                      + {{ if $item.drop.dropping }}{{ endif }} +
                      + +
                      +
                      +
                      $item.title
                      +
                      +
                      $item.body +
                      + {{ for $item.tags as $tag }} + $tag + {{ endfor }} +
                      +
                      + +
                      +
                      + $item.name +
                      $item.ago
                      +
                      +
                      +
                      + +
                      $item.dislike
                      +
                      + $item.comment +
                      +
                      + +
                      + diff --git a/view/theme/dispy/contact_template.tpl b/view/theme/dispy/contact_template.tpl index fbf354b475..04968bd07d 100644 --- a/view/theme/dispy/contact_template.tpl +++ b/view/theme/dispy/contact_template.tpl @@ -20,9 +20,11 @@
                      $contact.name
                      +{{ if $contact.alt_text }}
                      $contact.alt_text
                      {{ endif }}
                      Profile URL
                      $contact.network
                      + diff --git a/view/theme/dispy/experimental b/view/theme/dispy/experimental deleted file mode 100755 index e69de29bb2..0000000000 diff --git a/view/theme/dispy/group_side.tpl b/view/theme/dispy/group_side.tpl index 516d70d5b4..10ecec2e85 100644 --- a/view/theme/dispy/group_side.tpl +++ b/view/theme/dispy/group_side.tpl @@ -1,5 +1,5 @@ -
                      -

                      $title

                      +
                      +

                      $title

                      +
                      $item.name diff --git a/view/theme/duepuntozero/file.gif b/view/theme/duepuntozero/file.gif new file mode 100644 index 0000000000..7885b998d5 Binary files /dev/null and b/view/theme/duepuntozero/file.gif differ diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index acd97eb941..b79b00ef41 100755 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -309,7 +309,7 @@ div.wall-item-content-wrapper.shiny { margin-bottom: 10px; } -.group-selected, .nets-selected { +.group-selected, .nets-selected, .fileas-selected { padding: 3px; -moz-border-radius: 3px; border-radius: 3px; @@ -1024,6 +1024,10 @@ input#dfrn-url { float: left; } +.filer-item { + margin-left: 10px; + float: left; +} .wall-item-links-wrapper { float: left; @@ -1864,11 +1868,11 @@ a.mail-list-link { margin-top: 10px; } -.nets-ul { +.nets-ul, .fileas-ul { list-style-type: none; } -.nets-ul li { +.nets-ul li, .fileas-ul li { margin-top: 10px; } @@ -1879,6 +1883,14 @@ a.mail-list-link { margin-left: 42px; } +.fileas-link { + margin-left: 24px; +} + +.fileas-all { + margin-left: 0px; +} + #search-save { margin-left: 5px; } @@ -2603,12 +2615,12 @@ aside input[type='text'] { margin-top: 10px; } -.body-tag { +.body-tag, .filesavetags { opacity: 0.5; filter:alpha(opacity=50); } -.body-tag:hover { +.body-tag:hover, .filesavetags:hover { opacity: 1.0 !important; filter:alpha(opacity=100) !important; } @@ -2902,6 +2914,11 @@ aside input[type='text'] { .tagged { background-position: -48px -48px; } +.filer-icon { + display: block; width: 16px; height: 16px; + background-image: url('file.gif'); +} + .icon.dim { opacity: 0.3;filter:alpha(opacity=30); } .attachtype { diff --git a/view/theme/duepuntozero/theme.php b/view/theme/duepuntozero/theme.php index 7d919fedc8..701fb13491 100755 --- a/view/theme/duepuntozero/theme.php +++ b/view/theme/duepuntozero/theme.php @@ -5,6 +5,8 @@ $a->page['htmlhead'] .= <<< EOT +EOT; diff --git a/view/theme/slackr/theme.php b/view/theme/slackr/theme.php index 5d63583f42..ceec4dd976 100755 --- a/view/theme/slackr/theme.php +++ b/view/theme/slackr/theme.php @@ -7,6 +7,8 @@ $a->page['htmlhead'] .= <<< EOT +EOT;