From 6ef86e1fff072911165f66bdd8a4c5e98d90e27e Mon Sep 17 00:00:00 2001 From: Domovoy Date: Fri, 10 Aug 2012 17:46:39 +0200 Subject: [PATCH 001/140] New objects: Conversation and Item --- include/conversation.php | 18 +- object/Conversation.php | 399 +++++++++++++++++++++++++++++++++++++++ object/Item.php | 57 ++++++ 3 files changed, 471 insertions(+), 3 deletions(-) create mode 100644 object/Conversation.php create mode 100644 object/Item.php diff --git a/include/conversation.php b/include/conversation.php index 3c4ff2908..8468c7229 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -834,18 +834,30 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { // Normal View $page_template = get_markup_template("threaded_conversation.tpl"); + require_once('object/Conversation.php'); + require_once('object/Item.php'); + + $conv = new Conversation(); + // get all the topmost parents - // this shouldn't be needed, as we should have only them in ou array + // this shouldn't be needed, as we should have only them in our array // But for now, this array respects the old style, just in case $threads = array(); foreach($items as $item) { if($item['id'] == $item['parent']) { - $threads[] = $item; + // $threads[] = $item; + $item_object = new Item($item); + $conv->add_thread($item_object); } } - $threads = prepare_threads_body($a, $threads, $cmnt_tpl, $page_writeable, $mode, $profile_owner); + //$threads = prepare_threads_body($a, $threads, $cmnt_tpl, $page_writeable, $mode, $profile_owner); + $threads = $conv->get_template_data($a, $cmnt_tpl, $page_writeable, $mode, $profile_owner); + if(!$threads) { + logger('[ERROR] conversation : Failed to get template data.', LOGGER_DEBUG); + $threads = array(); + } } } diff --git a/object/Conversation.php b/object/Conversation.php new file mode 100644 index 000000000..4154dd9cb --- /dev/null +++ b/object/Conversation.php @@ -0,0 +1,399 @@ +get_id(); + if(!$item_id) { + logger('[ERROR] Conversation::add_thread : Item has no ID!!', LOGGER_DEBUG); + return false; + } + if($this->get_thread($item->get_id())) { + logger('[WARN] Conversation::add_thread : Thread already exists ('. $item->get_id() .').', LOGGER_DEBUG); + return false; + } + $this->threads[] = $item; + return end($this->threads); + } + + /** + * Get data in a form usable by a conversation template + * + * We should find a way to avoid using those arguments (at least most of them) + * + * Returns: + * _ The data requested on success + * _ false on failure + */ + public function get_template_data($a, $cmnt_tpl, $page_writeable, $mode, $profile_owner) { + $result = array(); + + /*foreach($this->threads as $item) { + $item_data = $item->get_template_data(); + if(!$item_data) { + logger('[ERROR] Conversation::get_template_data : Failed to get item template data ('. $item->get_id() .').', LOGGER_DEBUG); + return false; + } + $result[] = $item_data; + }*/ + + /* + * This should be moved on the item object; + */ + $threads = array(); + foreach($this->threads as $item) { + $threads[] = $item->get_data(); + } + return $this->prepare_threads_body($a, $threads, $cmnt_tpl, $page_writeable, $mode, $profile_owner); + + return $result; + } + + /** + * Get a thread based on its item id + * + * Returns: + * _ The found item on success + * _ false on failure + */ + private function get_thread($id) { + foreach($this->threads as $item) { + if($item->get_id() == $id) + return $item; + } + + return false; + } + + /** + * Recursively prepare a thread for HTML + */ + + private function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $profile_owner, $thread_level=1) { + $result = array(); + + $wall_template = 'wall_thread.tpl'; + $wallwall_template = 'wallwall_thread.tpl'; + $items_seen = 0; + $nb_items = count($items); + + $total_children = $nb_items; + + foreach($items as $item) { + // prevent private email reply to public conversation from leaking. + if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) { + // Don't count it as a visible item + $nb_items--; + continue; + } + + $items_seen++; + + $alike = array(); + $dlike = array(); + $comment = ''; + $template = $wall_template; + $commentww = ''; + $sparkle = ''; + $owner_url = $owner_photo = $owner_name = ''; + $buttons = ''; + $dropping = false; + $star = false; + $isstarred = "unstarred"; + $photo = $item['photo']; + $thumb = $item['thumb']; + $indent = ''; + $osparkle = ''; + $lastcollapsed = false; + $firstcollapsed = false; + $total_children += count_descendants($item); + + $toplevelpost = (($item['id'] == $item['parent']) ? true : false); + $item_writeable = (($item['writable'] || $item['self']) ? true : false); + $show_comment_box = ((($page_writeable) && ($item_writeable)) ? true : false); + $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) + || strlen($item['deny_cid']) || strlen($item['deny_gid'])))) + ? t('Private Message') + : false); + $redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $item['cid'] ; + $shareable = ((($profile_owner == local_user()) && ($item['private'] != 1)) ? true : false); + if(local_user() && link_compare($a->contact['url'],$item['author-link'])) + $edpost = array($a->get_baseurl($ssl_state)."/editpost/".$item['id'], t("Edit")); + else + $edpost = false; + if((intval($item['contact-id']) && $item['contact-id'] == remote_user()) || ($item['uid'] == local_user())) + $dropping = true; + + $drop = array( + 'dropping' => $dropping, + 'select' => t('Select'), + 'delete' => t('Delete'), + ); + + $filer = (($profile_owner == local_user()) ? t("save to folder") : false); + + $diff_author = ((link_compare($item['url'],$item['author-link'])) ? false : true); + $profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']); + if($item['author-link'] && (! $item['author-name'])) + $profile_name = $item['author-link']; + + $sp = false; + $profile_link = best_link_url($item,$sp); + if($profile_link === 'mailbox') + $profile_link = ''; + if($sp) + $sparkle = ' sparkle'; + else + $profile_link = zrl($profile_link); + + $normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); + if(($normalised != 'mailbox') && (x($a->contacts,$normalised))) + $profile_avatar = $a->contacts[$normalised]['thumb']; + else + $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $a->get_cached_avatar_image($thumb)); + + $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); + call_hooks('render_location',$locate); + $location = ((strlen($locate['html'])) ? $locate['html'] : render_location_google($locate)); + + $tags=array(); + foreach(explode(',',$item['tag']) as $tag){ + $tag = trim($tag); + if ($tag!="") $tags[] = bbcode($tag); + } + + like_puller($a,$item,$alike,'like'); + like_puller($a,$item,$dlike,'dislike'); + + $like = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : ''); + $dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : ''); + + if($toplevelpost) { + if((! $item['self']) && ($mode !== 'profile')) { + if($item['wall']) { + + // On the network page, I am the owner. On the display page it will be the profile owner. + // This will have been stored in $a->page_contact by our calling page. + // Put this person as the wall owner of the wall-to-wall notice. + + $owner_url = zrl($a->page_contact['url']); + $owner_photo = $a->page_contact['thumb']; + $owner_name = $a->page_contact['name']; + $template = $wallwall_template; + $commentww = 'ww'; + } + } + else if($item['owner-link']) { + + $owner_linkmatch = (($item['owner-link']) && link_compare($item['owner-link'],$item['author-link'])); + $alias_linkmatch = (($item['alias']) && link_compare($item['alias'],$item['author-link'])); + $owner_namematch = (($item['owner-name']) && $item['owner-name'] == $item['author-name']); + if((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) { + + // The author url doesn't match the owner (typically the contact) + // and also doesn't match the contact alias. + // The name match is a hack to catch several weird cases where URLs are + // all over the park. It can be tricked, but this prevents you from + // seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn + // well that it's the same Bob Smith. + + // But it could be somebody else with the same name. It just isn't highly likely. + + + $owner_url = $item['owner-link']; + $owner_photo = $item['owner-avatar']; + $owner_name = $item['owner-name']; + $template = $wallwall_template; + $commentww = 'ww'; + // If it is our contact, use a friendly redirect link + if((link_compare($item['owner-link'],$item['url'])) + && ($item['network'] === NETWORK_DFRN)) { + $owner_url = $redirect_url; + $osparkle = ' sparkle'; + } + else + $owner_url = zrl($owner_url); + } + } + if($profile_owner == local_user()) { + $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' => "", + ); + } + } else { + $indent = 'comment'; + // Collapse comments + if(($nb_items > 2) || ($thread_level > 2)) { + if($items_seen == 1) { + $firstcollapsed = true; + } + if($thread_level > 2) { + if($items_seen == $nb_items) + $lastcollapsed = true; + } + else if($items_seen == ($nb_items - 2)) { + $lastcollapsed = true; + } + } + } + + if($page_writeable) { + $buttons = array( + 'like' => array( t("I like this \x28toggle\x29"), t("like")), + 'dislike' => array( t("I don't like this \x28toggle\x29"), t("dislike")), + ); + if ($shareable) $buttons['share'] = array( t('Share this'), t('share')); + + + if($show_comment_box) { + $qc = $qcomment = null; + + if(in_array('qcomment',$a->plugins)) { + $qc = ((local_user()) ? get_pconfig(local_user(),'qcomment','words') : null); + $qcomment = (($qc) ? explode("\n",$qc) : null); + } + $comment = replace_macros($cmnt_tpl,array( + '$return_path' => '', + '$jsreload' => (($mode === 'display') ? $_SESSION['return_url'] : ''), + '$type' => (($mode === 'profile') ? 'wall-comment' : 'net-comment'), + '$id' => $item['item_id'], + '$parent' => $item['item_id'], + '$qcomment' => $qcomment, + '$profile_uid' => $profile_owner, + '$mylink' => $a->contact['url'], + '$mytitle' => t('This is you'), + '$myphoto' => $a->contact['thumb'], + '$comment' => t('Comment'), + '$submit' => t('Submit'), + '$edbold' => t('Bold'), + '$editalic' => t('Italic'), + '$eduline' => t('Underline'), + '$edquote' => t('Quote'), + '$edcode' => t('Code'), + '$edimg' => t('Image'), + '$edurl' => t('Link'), + '$edvideo' => t('Video'), + '$preview' => t('Preview'), + '$sourceapp' => t($a->sourcename), + '$ww' => (($mode === 'network') ? $commentww : '') + )); + } + } + + if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0) + $indent .= ' shiny'; + + localize_item($item); + + $body = prepare_body($item,true); + + $tmp_item = array( + // collapse comments in template. I don't like this much... + 'comment_firstcollapsed' => $firstcollapsed, + 'comment_lastcollapsed' => $lastcollapsed, + // template to use to render item (wall, walltowall, search) + 'template' => $template, + + 'type' => implode("",array_slice(explode("/",$item['verb']),-1)), + 'tags' => $tags, + 'body' => template_escape($body), + 'text' => strip_tags(template_escape($body)), + 'id' => $item['item_id'], + 'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])), + 'olinktitle' => sprintf( t('View %s\'s profile @ %s'), $owner_name, ((strlen($item['owner-link'])) ? $item['owner-link'] : $item['url'])), + 'to' => t('to'), + 'wall' => t('Wall-to-Wall'), + 'vwall' => t('via Wall-To-Wall:'), + 'profile_url' => $profile_link, + 'item_photo_menu' => item_photo_menu($item), + 'name' => template_escape($profile_name), + 'thumb' => $profile_avatar, + 'osparkle' => $osparkle, + 'sparkle' => $sparkle, + 'title' => template_escape($item['title']), + 'ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])), + 'lock' => $lock, + 'location' => template_escape($location), + 'indent' => $indent, + 'owner_url' => $owner_url, + 'owner_photo' => $owner_photo, + 'owner_name' => template_escape($owner_name), + 'plink' => get_plink($item), + 'edpost' => $edpost, + 'isstarred' => $isstarred, + 'star' => $star, + 'filer' => $filer, + 'drop' => $drop, + 'vote' => $buttons, + 'like' => $like, + 'dislike' => $dislike, + 'comment' => $comment, + 'previewing' => $previewing, + 'wait' => t('Please wait'), + ); + + $arr = array('item' => $item, 'output' => $tmp_item); + call_hooks('display_item', $arr); + + $item_result = $arr['output']; + if($firstcollapsed) { + $item_result['num_comments'] = sprintf( tt('%d comment','%d comments',$total_children),$total_children ); + $item_result['hide_text'] = t('show more'); + } + + $item_result['children'] = array(); + if(count($item['children'])) { + $item_result['children'] = prepare_threads_body($a, $item['children'], $cmnt_tpl, $page_writeable, $mode, $profile_owner, ($thread_level + 1)); + } + $item_result['private'] = $item['private']; + $item_result['toplevel'] = ($toplevelpost ? 'toplevel_item' : ''); + + /* + * I don't like this very much... + */ + if(get_config('system','thread_allow')) { + $item_result['flatten'] = false; + $item_result['threaded'] = true; + } + else { + $item_result['flatten'] = true; + $item_result['threaded'] = false; + if(!$toplevelpost) { + $item_result['comment'] = false; + } + } + + $result[] = $item_result; + } + + return $result; + } +} +?> diff --git a/object/Item.php b/object/Item.php new file mode 100644 index 000000000..0f474e5de --- /dev/null +++ b/object/Item.php @@ -0,0 +1,57 @@ +data = $data; + } + + /** + * Get the item ID + * + * Returns: + * _ the ID on success + * _ false on failure + */ + public function get_id() { + if(!x($this->data['id'])) { + logger('[ERROR] Item::get_id : Item has no ID!!', LOGGER_DEBUG); + return false; + } + + return $this->data['id']; + } + + /** + * Get data in a form usable by a conversation template + * + * Returns: + * _ The data requested on success + * _ false on failure + */ + public function get_template_data() { + $result = array(); + + + + return $result; + } + + /** + * Get raw data + * + * We shouldn't need this + */ + public function get_data() { + return $this->data; + } +} +?> From 75d355a2aa23a208864e40e3901b3fa431887dc7 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Fri, 10 Aug 2012 19:57:39 +0200 Subject: [PATCH 002/140] Rendering is now done by Item objects --- include/conversation.php | 5 +- index.php | 2 + object/BaseObject.php | 37 ++++ object/Conversation.php | 347 ++---------------------------------- object/Item.php | 372 +++++++++++++++++++++++++++++++++++++-- 5 files changed, 413 insertions(+), 350 deletions(-) create mode 100644 object/BaseObject.php diff --git a/include/conversation.php b/include/conversation.php index 8468c7229..7d9dfa1e7 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -837,7 +837,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { require_once('object/Conversation.php'); require_once('object/Item.php'); - $conv = new Conversation(); + $conv = new Conversation($mode); // get all the topmost parents // this shouldn't be needed, as we should have only them in our array @@ -853,11 +853,12 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { } //$threads = prepare_threads_body($a, $threads, $cmnt_tpl, $page_writeable, $mode, $profile_owner); - $threads = $conv->get_template_data($a, $cmnt_tpl, $page_writeable, $mode, $profile_owner); + $threads = $conv->get_template_data($cmnt_tpl); if(!$threads) { logger('[ERROR] conversation : Failed to get template data.', LOGGER_DEBUG); $threads = array(); } + logger('[DEBUG] conversation : $threads = '. print_r($threads, true), LOGGER_DEBUG); } } diff --git a/index.php b/index.php index c9b7f34d7..eaa7295e2 100644 --- a/index.php +++ b/index.php @@ -13,8 +13,10 @@ */ require_once('boot.php'); +require_once('object/BaseObject.php'); $a = new App; +BaseObject::set_app($a); /** * diff --git a/object/BaseObject.php b/object/BaseObject.php new file mode 100644 index 000000000..14f0d8fd0 --- /dev/null +++ b/object/BaseObject.php @@ -0,0 +1,37 @@ + diff --git a/object/Conversation.php b/object/Conversation.php index 4154dd9cb..0ce016649 100644 --- a/object/Conversation.php +++ b/object/Conversation.php @@ -2,6 +2,8 @@ if(class_exists('Conversation')) return; +require_once('boot.php'); +require_once('object/BaseObject.php'); require_once('object/Item.php'); require_once('include/text.php'); @@ -10,8 +12,13 @@ require_once('include/text.php'); * * We should think about making this a SPL Iterator */ -class Conversation { +class Conversation extends BaseObject { private $threads = array(); + private $mode = null; + + public function __construct($mode) { + $this->mode = $mode; + } /** * Add a thread to the conversation @@ -43,26 +50,19 @@ class Conversation { * _ The data requested on success * _ false on failure */ - public function get_template_data($a, $cmnt_tpl, $page_writeable, $mode, $profile_owner) { + public function get_template_data($cmnt_tpl) { $result = array(); - /*foreach($this->threads as $item) { - $item_data = $item->get_template_data(); + foreach($this->threads as $item) { + if($item->get_network() === NETWORK_MAIL && local_user() != $item->get_uid()) + continue; + $item_data = $item->get_template_data($cmnt_tpl, $this->mode); if(!$item_data) { logger('[ERROR] Conversation::get_template_data : Failed to get item template data ('. $item->get_id() .').', LOGGER_DEBUG); return false; } $result[] = $item_data; - }*/ - - /* - * This should be moved on the item object; - */ - $threads = array(); - foreach($this->threads as $item) { - $threads[] = $item->get_data(); } - return $this->prepare_threads_body($a, $threads, $cmnt_tpl, $page_writeable, $mode, $profile_owner); return $result; } @@ -75,325 +75,12 @@ class Conversation { * _ false on failure */ private function get_thread($id) { - foreach($this->threads as $item) { - if($item->get_id() == $id) - return $item; - } - - return false; - } - - /** - * Recursively prepare a thread for HTML - */ - - private function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $profile_owner, $thread_level=1) { - $result = array(); - - $wall_template = 'wall_thread.tpl'; - $wallwall_template = 'wallwall_thread.tpl'; - $items_seen = 0; - $nb_items = count($items); - - $total_children = $nb_items; - - foreach($items as $item) { - // prevent private email reply to public conversation from leaking. - if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) { - // Don't count it as a visible item - $nb_items--; - continue; - } - - $items_seen++; - - $alike = array(); - $dlike = array(); - $comment = ''; - $template = $wall_template; - $commentww = ''; - $sparkle = ''; - $owner_url = $owner_photo = $owner_name = ''; - $buttons = ''; - $dropping = false; - $star = false; - $isstarred = "unstarred"; - $photo = $item['photo']; - $thumb = $item['thumb']; - $indent = ''; - $osparkle = ''; - $lastcollapsed = false; - $firstcollapsed = false; - $total_children += count_descendants($item); - - $toplevelpost = (($item['id'] == $item['parent']) ? true : false); - $item_writeable = (($item['writable'] || $item['self']) ? true : false); - $show_comment_box = ((($page_writeable) && ($item_writeable)) ? true : false); - $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) - || strlen($item['deny_cid']) || strlen($item['deny_gid'])))) - ? t('Private Message') - : false); - $redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $item['cid'] ; - $shareable = ((($profile_owner == local_user()) && ($item['private'] != 1)) ? true : false); - if(local_user() && link_compare($a->contact['url'],$item['author-link'])) - $edpost = array($a->get_baseurl($ssl_state)."/editpost/".$item['id'], t("Edit")); - else - $edpost = false; - if((intval($item['contact-id']) && $item['contact-id'] == remote_user()) || ($item['uid'] == local_user())) - $dropping = true; - - $drop = array( - 'dropping' => $dropping, - 'select' => t('Select'), - 'delete' => t('Delete'), - ); - - $filer = (($profile_owner == local_user()) ? t("save to folder") : false); - - $diff_author = ((link_compare($item['url'],$item['author-link'])) ? false : true); - $profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']); - if($item['author-link'] && (! $item['author-name'])) - $profile_name = $item['author-link']; - - $sp = false; - $profile_link = best_link_url($item,$sp); - if($profile_link === 'mailbox') - $profile_link = ''; - if($sp) - $sparkle = ' sparkle'; - else - $profile_link = zrl($profile_link); - - $normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); - if(($normalised != 'mailbox') && (x($a->contacts,$normalised))) - $profile_avatar = $a->contacts[$normalised]['thumb']; - else - $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $a->get_cached_avatar_image($thumb)); - - $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); - call_hooks('render_location',$locate); - $location = ((strlen($locate['html'])) ? $locate['html'] : render_location_google($locate)); - - $tags=array(); - foreach(explode(',',$item['tag']) as $tag){ - $tag = trim($tag); - if ($tag!="") $tags[] = bbcode($tag); - } - - like_puller($a,$item,$alike,'like'); - like_puller($a,$item,$dlike,'dislike'); - - $like = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : ''); - $dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : ''); - - if($toplevelpost) { - if((! $item['self']) && ($mode !== 'profile')) { - if($item['wall']) { - - // On the network page, I am the owner. On the display page it will be the profile owner. - // This will have been stored in $a->page_contact by our calling page. - // Put this person as the wall owner of the wall-to-wall notice. - - $owner_url = zrl($a->page_contact['url']); - $owner_photo = $a->page_contact['thumb']; - $owner_name = $a->page_contact['name']; - $template = $wallwall_template; - $commentww = 'ww'; - } - } - else if($item['owner-link']) { - - $owner_linkmatch = (($item['owner-link']) && link_compare($item['owner-link'],$item['author-link'])); - $alias_linkmatch = (($item['alias']) && link_compare($item['alias'],$item['author-link'])); - $owner_namematch = (($item['owner-name']) && $item['owner-name'] == $item['author-name']); - if((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) { - - // The author url doesn't match the owner (typically the contact) - // and also doesn't match the contact alias. - // The name match is a hack to catch several weird cases where URLs are - // all over the park. It can be tricked, but this prevents you from - // seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn - // well that it's the same Bob Smith. - - // But it could be somebody else with the same name. It just isn't highly likely. - - - $owner_url = $item['owner-link']; - $owner_photo = $item['owner-avatar']; - $owner_name = $item['owner-name']; - $template = $wallwall_template; - $commentww = 'ww'; - // If it is our contact, use a friendly redirect link - if((link_compare($item['owner-link'],$item['url'])) - && ($item['network'] === NETWORK_DFRN)) { - $owner_url = $redirect_url; - $osparkle = ' sparkle'; - } - else - $owner_url = zrl($owner_url); - } - } - if($profile_owner == local_user()) { - $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' => "", - ); - } - } else { - $indent = 'comment'; - // Collapse comments - if(($nb_items > 2) || ($thread_level > 2)) { - if($items_seen == 1) { - $firstcollapsed = true; - } - if($thread_level > 2) { - if($items_seen == $nb_items) - $lastcollapsed = true; - } - else if($items_seen == ($nb_items - 2)) { - $lastcollapsed = true; - } - } - } - - if($page_writeable) { - $buttons = array( - 'like' => array( t("I like this \x28toggle\x29"), t("like")), - 'dislike' => array( t("I don't like this \x28toggle\x29"), t("dislike")), - ); - if ($shareable) $buttons['share'] = array( t('Share this'), t('share')); - - - if($show_comment_box) { - $qc = $qcomment = null; - - if(in_array('qcomment',$a->plugins)) { - $qc = ((local_user()) ? get_pconfig(local_user(),'qcomment','words') : null); - $qcomment = (($qc) ? explode("\n",$qc) : null); - } - $comment = replace_macros($cmnt_tpl,array( - '$return_path' => '', - '$jsreload' => (($mode === 'display') ? $_SESSION['return_url'] : ''), - '$type' => (($mode === 'profile') ? 'wall-comment' : 'net-comment'), - '$id' => $item['item_id'], - '$parent' => $item['item_id'], - '$qcomment' => $qcomment, - '$profile_uid' => $profile_owner, - '$mylink' => $a->contact['url'], - '$mytitle' => t('This is you'), - '$myphoto' => $a->contact['thumb'], - '$comment' => t('Comment'), - '$submit' => t('Submit'), - '$edbold' => t('Bold'), - '$editalic' => t('Italic'), - '$eduline' => t('Underline'), - '$edquote' => t('Quote'), - '$edcode' => t('Code'), - '$edimg' => t('Image'), - '$edurl' => t('Link'), - '$edvideo' => t('Video'), - '$preview' => t('Preview'), - '$sourceapp' => t($a->sourcename), - '$ww' => (($mode === 'network') ? $commentww : '') - )); - } - } - - if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0) - $indent .= ' shiny'; - - localize_item($item); - - $body = prepare_body($item,true); - - $tmp_item = array( - // collapse comments in template. I don't like this much... - 'comment_firstcollapsed' => $firstcollapsed, - 'comment_lastcollapsed' => $lastcollapsed, - // template to use to render item (wall, walltowall, search) - 'template' => $template, - - 'type' => implode("",array_slice(explode("/",$item['verb']),-1)), - 'tags' => $tags, - 'body' => template_escape($body), - 'text' => strip_tags(template_escape($body)), - 'id' => $item['item_id'], - 'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])), - 'olinktitle' => sprintf( t('View %s\'s profile @ %s'), $owner_name, ((strlen($item['owner-link'])) ? $item['owner-link'] : $item['url'])), - 'to' => t('to'), - 'wall' => t('Wall-to-Wall'), - 'vwall' => t('via Wall-To-Wall:'), - 'profile_url' => $profile_link, - 'item_photo_menu' => item_photo_menu($item), - 'name' => template_escape($profile_name), - 'thumb' => $profile_avatar, - 'osparkle' => $osparkle, - 'sparkle' => $sparkle, - 'title' => template_escape($item['title']), - 'ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])), - 'lock' => $lock, - 'location' => template_escape($location), - 'indent' => $indent, - 'owner_url' => $owner_url, - 'owner_photo' => $owner_photo, - 'owner_name' => template_escape($owner_name), - 'plink' => get_plink($item), - 'edpost' => $edpost, - 'isstarred' => $isstarred, - 'star' => $star, - 'filer' => $filer, - 'drop' => $drop, - 'vote' => $buttons, - 'like' => $like, - 'dislike' => $dislike, - 'comment' => $comment, - 'previewing' => $previewing, - 'wait' => t('Please wait'), - ); - - $arr = array('item' => $item, 'output' => $tmp_item); - call_hooks('display_item', $arr); - - $item_result = $arr['output']; - if($firstcollapsed) { - $item_result['num_comments'] = sprintf( tt('%d comment','%d comments',$total_children),$total_children ); - $item_result['hide_text'] = t('show more'); - } - - $item_result['children'] = array(); - if(count($item['children'])) { - $item_result['children'] = prepare_threads_body($a, $item['children'], $cmnt_tpl, $page_writeable, $mode, $profile_owner, ($thread_level + 1)); - } - $item_result['private'] = $item['private']; - $item_result['toplevel'] = ($toplevelpost ? 'toplevel_item' : ''); - - /* - * I don't like this very much... - */ - if(get_config('system','thread_allow')) { - $item_result['flatten'] = false; - $item_result['threaded'] = true; - } - else { - $item_result['flatten'] = true; - $item_result['threaded'] = false; - if(!$toplevelpost) { - $item_result['comment'] = false; - } - } - - $result[] = $item_result; + foreach($this->threads as $item) { + if($item->get_id() == $id) + return $item; } - return $result; + return false; } } ?> diff --git a/object/Item.php b/object/Item.php index 0f474e5de..fbdb1a220 100644 --- a/object/Item.php +++ b/object/Item.php @@ -2,32 +2,23 @@ if(class_exists('Item')) return; +require_once('object/BaseObject.php'); require_once('include/text.php'); /** * An item */ -class Item { +class Item extends BaseObject { private $data = array(); + private $template = null; + private $available_templates = array( + 'wall' => 'wall_thread.tpl', + 'wall2wall' => 'wallwall_thread.tpl' + ); public function __construct($data) { $this->data = $data; - } - - /** - * Get the item ID - * - * Returns: - * _ the ID on success - * _ false on failure - */ - public function get_id() { - if(!x($this->data['id'])) { - logger('[ERROR] Item::get_id : Item has no ID!!', LOGGER_DEBUG); - return false; - } - - return $this->data['id']; + $this->template = $this->available_templates['wall']; } /** @@ -37,13 +28,332 @@ class Item { * _ The data requested on success * _ false on failure */ - public function get_template_data() { + public function get_template_data($cmnt_tpl, $mode) { $result = array(); + $a = $this->get_app(); + + $page_writeable = false; + $profile_owner = 0; + + switch($mode) { + case 'network': + case 'notes': + $profile_owner = local_user(); + $page_writeable = true; + break; + case 'profile': + $profile_owner = $a->profile['profile_uid']; + $page_writeable = can_write_wall($a,$profile_owner); + break; + case 'display': + $profile_owner = $a->profile['uid']; + $page_writeable = can_write_wall($a,$profile_owner); + break; + default: + logger('[ERROR] Item::prepare_threads_body : Unhandled mode ('. $mode .').', LOGGER_DEBUG); + return false; + break; + } + + $item = $this->get_data(); + + $alike = array(); + $dlike = array(); + $template = $this->available_templates['wall']; + $comment = ''; + $commentww = ''; + $sparkle = ''; + $owner_url = $owner_photo = $owner_name = ''; + $buttons = ''; + $dropping = false; + $star = false; + $isstarred = "unstarred"; + $photo = $item['photo']; + $thumb = $item['thumb']; + $indent = ''; + $osparkle = ''; + $lastcollapsed = false; + $firstcollapsed = false; + $total_children += count_descendants($item); + + $toplevelpost = (($item['id'] == $item['parent']) ? true : false); + $item_writeable = (($item['writable'] || $item['self']) ? true : false); + $show_comment_box = ((($page_writeable) && ($item_writeable)) ? true : false); + $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) + || strlen($item['deny_cid']) || strlen($item['deny_gid'])))) + ? t('Private Message') + : false); + $redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $item['cid'] ; + $shareable = ((($profile_owner == local_user()) && ($item['private'] != 1)) ? true : false); + if(local_user() && link_compare($a->contact['url'],$item['author-link'])) + $edpost = array($a->get_baseurl($ssl_state)."/editpost/".$item['id'], t("Edit")); + else + $edpost = false; + if((intval($item['contact-id']) && $item['contact-id'] == remote_user()) || ($item['uid'] == local_user())) + $dropping = true; + + $drop = array( + 'dropping' => $dropping, + 'select' => t('Select'), + 'delete' => t('Delete'), + ); + $filer = (($profile_owner == local_user()) ? t("save to folder") : false); + + $diff_author = ((link_compare($item['url'],$item['author-link'])) ? false : true); + $profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']); + if($item['author-link'] && (! $item['author-name'])) + $profile_name = $item['author-link']; + + $sp = false; + $profile_link = best_link_url($item,$sp); + if($profile_link === 'mailbox') + $profile_link = ''; + if($sp) + $sparkle = ' sparkle'; + else + $profile_link = zrl($profile_link); + + $normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']); + if(($normalised != 'mailbox') && (x($a->contacts,$normalised))) + $profile_avatar = $a->contacts[$normalised]['thumb']; + else + $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $a->get_cached_avatar_image($thumb)); + + $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); + call_hooks('render_location',$locate); + $location = ((strlen($locate['html'])) ? $locate['html'] : render_location_google($locate)); + + $tags=array(); + foreach(explode(',',$item['tag']) as $tag){ + $tag = trim($tag); + if ($tag!="") $tags[] = bbcode($tag); + } + + like_puller($a,$item,$alike,'like'); + like_puller($a,$item,$dlike,'dislike'); + + $like = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : ''); + $dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : ''); + + if($toplevelpost) { + if((! $item['self']) && ($mode !== 'profile')) { + if($item['wall']) { + + // On the network page, I am the owner. On the display page it will be the profile owner. + // This will have been stored in $a->page_contact by our calling page. + // Put this person as the wall owner of the wall-to-wall notice. + + $owner_url = zrl($a->page_contact['url']); + $owner_photo = $a->page_contact['thumb']; + $owner_name = $a->page_contact['name']; + $template = $this->available_templates['wall2wall']; + $commentww = 'ww'; + } + } + else if($item['owner-link']) { + + $owner_linkmatch = (($item['owner-link']) && link_compare($item['owner-link'],$item['author-link'])); + $alias_linkmatch = (($item['alias']) && link_compare($item['alias'],$item['author-link'])); + $owner_namematch = (($item['owner-name']) && $item['owner-name'] == $item['author-name']); + if((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) { + + // The author url doesn't match the owner (typically the contact) + // and also doesn't match the contact alias. + // The name match is a hack to catch several weird cases where URLs are + // all over the park. It can be tricked, but this prevents you from + // seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn + // well that it's the same Bob Smith. + + // But it could be somebody else with the same name. It just isn't highly likely. + + + $owner_url = $item['owner-link']; + $owner_photo = $item['owner-avatar']; + $owner_name = $item['owner-name']; + $template = $this->available_templates['wall2wall']; + $commentww = 'ww'; + // If it is our contact, use a friendly redirect link + if((link_compare($item['owner-link'],$item['url'])) + && ($item['network'] === NETWORK_DFRN)) { + $owner_url = $redirect_url; + $osparkle = ' sparkle'; + } + else + $owner_url = zrl($owner_url); + } + } + if($profile_owner == local_user()) { + $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' => "", + ); + } + } else { + $indent = 'comment'; + // Collapse comments + if(($nb_items > 2) || ($thread_level > 2)) { + if($items_seen == 1) { + $firstcollapsed = true; + } + if($thread_level > 2) { + if($items_seen == $nb_items) + $lastcollapsed = true; + } + else if($items_seen == ($nb_items - 2)) { + $lastcollapsed = true; + } + } + } + + if($page_writeable) { + $buttons = array( + 'like' => array( t("I like this \x28toggle\x29"), t("like")), + 'dislike' => array( t("I don't like this \x28toggle\x29"), t("dislike")), + ); + if ($shareable) $buttons['share'] = array( t('Share this'), t('share')); + + + if($show_comment_box) { + $qc = $qcomment = null; + + if(in_array('qcomment',$a->plugins)) { + $qc = ((local_user()) ? get_pconfig(local_user(),'qcomment','words') : null); + $qcomment = (($qc) ? explode("\n",$qc) : null); + } + $comment = replace_macros($cmnt_tpl,array( + '$return_path' => '', + '$jsreload' => (($mode === 'display') ? $_SESSION['return_url'] : ''), + '$type' => (($mode === 'profile') ? 'wall-comment' : 'net-comment'), + '$id' => $item['item_id'], + '$parent' => $item['item_id'], + '$qcomment' => $qcomment, + '$profile_uid' => $profile_owner, + '$mylink' => $a->contact['url'], + '$mytitle' => t('This is you'), + '$myphoto' => $a->contact['thumb'], + '$comment' => t('Comment'), + '$submit' => t('Submit'), + '$edbold' => t('Bold'), + '$editalic' => t('Italic'), + '$eduline' => t('Underline'), + '$edquote' => t('Quote'), + '$edcode' => t('Code'), + '$edimg' => t('Image'), + '$edurl' => t('Link'), + '$edvideo' => t('Video'), + '$preview' => t('Preview'), + '$sourceapp' => t($a->sourcename), + '$ww' => (($mode === 'network') ? $commentww : '') + )); + } + } + + if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0) + $indent .= ' shiny'; + + localize_item($item); + + $body = prepare_body($item,true); + + $tmp_item = array( + // collapse comments in template. I don't like this much... + 'comment_firstcollapsed' => $firstcollapsed, + 'comment_lastcollapsed' => $lastcollapsed, + // template to use to render item (wall, walltowall, search) + 'template' => $template, + + 'type' => implode("",array_slice(explode("/",$item['verb']),-1)), + 'tags' => $tags, + 'body' => template_escape($body), + 'text' => strip_tags(template_escape($body)), + 'id' => $item['item_id'], + 'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])), + 'olinktitle' => sprintf( t('View %s\'s profile @ %s'), $owner_name, ((strlen($item['owner-link'])) ? $item['owner-link'] : $item['url'])), + 'to' => t('to'), + 'wall' => t('Wall-to-Wall'), + 'vwall' => t('via Wall-To-Wall:'), + 'profile_url' => $profile_link, + 'item_photo_menu' => item_photo_menu($item), + 'name' => template_escape($profile_name), + 'thumb' => $profile_avatar, + 'osparkle' => $osparkle, + 'sparkle' => $sparkle, + 'title' => template_escape($item['title']), + 'ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])), + 'lock' => $lock, + 'location' => template_escape($location), + 'indent' => $indent, + 'owner_url' => $owner_url, + 'owner_photo' => $owner_photo, + 'owner_name' => template_escape($owner_name), + 'plink' => get_plink($item), + 'edpost' => $edpost, + 'isstarred' => $isstarred, + 'star' => $star, + 'filer' => $filer, + 'drop' => $drop, + 'vote' => $buttons, + 'like' => $like, + 'dislike' => $dislike, + 'comment' => $comment, + 'previewing' => $previewing, + 'wait' => t('Please wait'), + ); + + $arr = array('item' => $item, 'output' => $tmp_item); + call_hooks('display_item', $arr); + + $item_result = $arr['output']; + if($firstcollapsed) { + $item_result['num_comments'] = sprintf( tt('%d comment','%d comments',$total_children),$total_children ); + $item_result['hide_text'] = t('show more'); + } + + $item_result['children'] = array(); + if(count($item['children'])) { + $item_result['children'] = prepare_threads_body($a, $item['children'], $cmnt_tpl, $page_writeable, $mode, $profile_owner, ($thread_level + 1)); + } + $item_result['private'] = $item['private']; + $item_result['toplevel'] = ($toplevelpost ? 'toplevel_item' : ''); + + if(get_config('system','thread_allow')) { + $item_result['flatten'] = false; + $item_result['threaded'] = true; + } + else { + $item_result['flatten'] = true; + $item_result['threaded'] = false; + if(!$toplevelpost) { + $item_result['comment'] = false; + } + } + + $result = $item_result; return $result; } + + public function get_id() { + return $this->get_data_value('id'); + } + + public function get_network() { + return $this->get_data_value('network'); + } + + public function get_uid() { + return $this->get_data_value('uid'); + } /** * Get raw data @@ -53,5 +363,31 @@ class Item { public function get_data() { return $this->data; } + + /** + * Get a data value + * + * Returns: + * _ value on success + * _ false on failure + */ + private function get_data_value($name) { + if(!x($this->data[$name])) { + logger('[ERROR] Item::get_data_value : Item has no value name "'. $name .'".', LOGGER_DEBUG); + return false; + } + + return $this->data[$name]; + } + + /** + * Set the mode we'll be displayed on + */ + private function set_mode($mode) { + if($this->get_mode() == $mode) + return; + + + } } ?> From f1731b3cec5f95be59faca44678841877597ab8c Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sat, 11 Aug 2012 15:44:47 +0200 Subject: [PATCH 003/140] New methods on Item: set|get_mode, get_profile_owner, is_page_writeable --- object/Item.php | 89 ++++++++++++++++++++++++++++++------------------- 1 file changed, 55 insertions(+), 34 deletions(-) diff --git a/object/Item.php b/object/Item.php index fbdb1a220..796f9cae6 100644 --- a/object/Item.php +++ b/object/Item.php @@ -15,6 +15,9 @@ class Item extends BaseObject { 'wall' => 'wall_thread.tpl', 'wall2wall' => 'wallwall_thread.tpl' ); + private $mode = null; + private $page_writeable = false; + private $profile_owner = 0; public function __construct($data) { $this->data = $data; @@ -33,28 +36,7 @@ class Item extends BaseObject { $a = $this->get_app(); - $page_writeable = false; - $profile_owner = 0; - - switch($mode) { - case 'network': - case 'notes': - $profile_owner = local_user(); - $page_writeable = true; - break; - case 'profile': - $profile_owner = $a->profile['profile_uid']; - $page_writeable = can_write_wall($a,$profile_owner); - break; - case 'display': - $profile_owner = $a->profile['uid']; - $page_writeable = can_write_wall($a,$profile_owner); - break; - default: - logger('[ERROR] Item::prepare_threads_body : Unhandled mode ('. $mode .').', LOGGER_DEBUG); - return false; - break; - } + $this->set_mode($mode); $item = $this->get_data(); @@ -79,13 +61,13 @@ class Item extends BaseObject { $toplevelpost = (($item['id'] == $item['parent']) ? true : false); $item_writeable = (($item['writable'] || $item['self']) ? true : false); - $show_comment_box = ((($page_writeable) && ($item_writeable)) ? true : false); + $show_comment_box = ((($this->is_page_writeable()) && ($item_writeable)) ? true : false); $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) || strlen($item['deny_cid']) || strlen($item['deny_gid'])))) ? t('Private Message') : false); $redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $item['cid'] ; - $shareable = ((($profile_owner == local_user()) && ($item['private'] != 1)) ? true : false); + $shareable = ((($this->get_profile_owner() == local_user()) && ($item['private'] != 1)) ? true : false); if(local_user() && link_compare($a->contact['url'],$item['author-link'])) $edpost = array($a->get_baseurl($ssl_state)."/editpost/".$item['id'], t("Edit")); else @@ -99,7 +81,7 @@ class Item extends BaseObject { 'delete' => t('Delete'), ); - $filer = (($profile_owner == local_user()) ? t("save to folder") : false); + $filer = (($this->get_profile_owner() == local_user()) ? t("save to folder") : false); $diff_author = ((link_compare($item['url'],$item['author-link'])) ? false : true); $profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']); @@ -138,7 +120,7 @@ class Item extends BaseObject { $dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : ''); if($toplevelpost) { - if((! $item['self']) && ($mode !== 'profile')) { + if((! $item['self']) && ($this->get_mode() !== 'profile')) { if($item['wall']) { // On the network page, I am the owner. On the display page it will be the profile owner. @@ -184,7 +166,7 @@ class Item extends BaseObject { $owner_url = zrl($owner_url); } } - if($profile_owner == local_user()) { + if($this->get_profile_owner() == local_user()) { $isstarred = (($item['starred']) ? "starred" : "unstarred"); $star = array( @@ -215,7 +197,7 @@ class Item extends BaseObject { } } - if($page_writeable) { + if($this->is_page_writeable()) { $buttons = array( 'like' => array( t("I like this \x28toggle\x29"), t("like")), 'dislike' => array( t("I don't like this \x28toggle\x29"), t("dislike")), @@ -232,12 +214,12 @@ class Item extends BaseObject { } $comment = replace_macros($cmnt_tpl,array( '$return_path' => '', - '$jsreload' => (($mode === 'display') ? $_SESSION['return_url'] : ''), - '$type' => (($mode === 'profile') ? 'wall-comment' : 'net-comment'), + '$jsreload' => (($this->get_mode() === 'display') ? $_SESSION['return_url'] : ''), + '$type' => (($this->get_mode() === 'profile') ? 'wall-comment' : 'net-comment'), '$id' => $item['item_id'], '$parent' => $item['item_id'], '$qcomment' => $qcomment, - '$profile_uid' => $profile_owner, + '$profile_uid' => $this->get_profile_owner(), '$mylink' => $a->contact['url'], '$mytitle' => t('This is you'), '$myphoto' => $a->contact['thumb'], @@ -253,7 +235,7 @@ class Item extends BaseObject { '$edvideo' => t('Video'), '$preview' => t('Preview'), '$sourceapp' => t($a->sourcename), - '$ww' => (($mode === 'network') ? $commentww : '') + '$ww' => (($this->get_mode() === 'network') ? $commentww : '') )); } } @@ -321,7 +303,7 @@ class Item extends BaseObject { $item_result['children'] = array(); if(count($item['children'])) { - $item_result['children'] = prepare_threads_body($a, $item['children'], $cmnt_tpl, $page_writeable, $mode, $profile_owner, ($thread_level + 1)); + $item_result['children'] = prepare_threads_body($a, $item['children'], $cmnt_tpl, $this->is_page_writeable(), $this->get_mode(), $this->get_profile_owner(), ($thread_level + 1)); } $item_result['private'] = $item['private']; $item_result['toplevel'] = ($toplevelpost ? 'toplevel_item' : ''); @@ -387,7 +369,46 @@ class Item extends BaseObject { if($this->get_mode() == $mode) return; - + switch($mode) { + case 'network': + case 'notes': + $this->profile_owner = local_user(); + $this->page_writeable = true; + break; + case 'profile': + $this->profile_owner = $a->profile['profile_uid']; + $this->page_writeable = can_write_wall($a,$this->profile_owner); + break; + case 'display': + $this->profile_owner = $a->profile['uid']; + $this->page_writeable = can_write_wall($a,$this->profile_owner); + break; + default: + logger('[ERROR] Item::set_mode : Unhandled mode ('. $mode .').', LOGGER_DEBUG); + return false; + break; + } + } + + /** + * Get mode + */ + private function get_mode() { + return $this->mode; + } + + /** + * Get profile owner + */ + private function get_profile_owner() { + return $this->profile_owner; + } + + /** + * Get page writable + */ + private function is_page_writeable() { + return $this->page_writeable; } } ?> From 56cae53e509cc88f0c714e9e1a3699a4ed214636 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sat, 11 Aug 2012 16:56:10 +0200 Subject: [PATCH 004/140] Item: new methods get|set_template --- object/Conversation.php | 4 ++-- object/Item.php | 32 +++++++++++++++++++++++--------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/object/Conversation.php b/object/Conversation.php index 0ce016649..6675a0053 100644 --- a/object/Conversation.php +++ b/object/Conversation.php @@ -50,13 +50,13 @@ class Conversation extends BaseObject { * _ The data requested on success * _ false on failure */ - public function get_template_data($cmnt_tpl) { + public function get_template_data($cmnt_tpl, $alike, $dlike) { $result = array(); foreach($this->threads as $item) { if($item->get_network() === NETWORK_MAIL && local_user() != $item->get_uid()) continue; - $item_data = $item->get_template_data($cmnt_tpl, $this->mode); + $item_data = $item->get_template_data($cmnt_tpl, $this->mode, $alike, $dlike); if(!$item_data) { logger('[ERROR] Conversation::get_template_data : Failed to get item template data ('. $item->get_id() .').', LOGGER_DEBUG); return false; diff --git a/object/Item.php b/object/Item.php index 796f9cae6..b96b7e44f 100644 --- a/object/Item.php +++ b/object/Item.php @@ -4,6 +4,7 @@ if(class_exists('Item')) require_once('object/BaseObject.php'); require_once('include/text.php'); +require_once('boot.php'); /** * An item @@ -21,7 +22,7 @@ class Item extends BaseObject { public function __construct($data) { $this->data = $data; - $this->template = $this->available_templates['wall']; + $this->set_template('wall'); } /** @@ -31,7 +32,7 @@ class Item extends BaseObject { * _ The data requested on success * _ false on failure */ - public function get_template_data($cmnt_tpl, $mode) { + public function get_template_data($cmnt_tpl, $mode, $alike, $dlike) { $result = array(); $a = $this->get_app(); @@ -40,9 +41,6 @@ class Item extends BaseObject { $item = $this->get_data(); - $alike = array(); - $dlike = array(); - $template = $this->available_templates['wall']; $comment = ''; $commentww = ''; $sparkle = ''; @@ -130,7 +128,7 @@ class Item extends BaseObject { $owner_url = zrl($a->page_contact['url']); $owner_photo = $a->page_contact['thumb']; $owner_name = $a->page_contact['name']; - $template = $this->available_templates['wall2wall']; + $this->set_template('wall2wall'); $commentww = 'ww'; } } @@ -154,7 +152,7 @@ class Item extends BaseObject { $owner_url = $item['owner-link']; $owner_photo = $item['owner-avatar']; $owner_name = $item['owner-name']; - $template = $this->available_templates['wall2wall']; + $this->set_template('wall2wall'); $commentww = 'ww'; // If it is our contact, use a friendly redirect link if((link_compare($item['owner-link'],$item['url'])) @@ -252,7 +250,7 @@ class Item extends BaseObject { 'comment_firstcollapsed' => $firstcollapsed, 'comment_lastcollapsed' => $lastcollapsed, // template to use to render item (wall, walltowall, search) - 'template' => $template, + 'template' => $this->get_template(), 'type' => implode("",array_slice(explode("/",$item['verb']),-1)), 'tags' => $tags, @@ -303,7 +301,7 @@ class Item extends BaseObject { $item_result['children'] = array(); if(count($item['children'])) { - $item_result['children'] = prepare_threads_body($a, $item['children'], $cmnt_tpl, $this->is_page_writeable(), $this->get_mode(), $this->get_profile_owner(), ($thread_level + 1)); + $item_result['children'] = prepare_threads_body($a, $item['children'], $cmnt_tpl, $this->is_page_writeable(), $this->get_mode(), $this->get_profile_owner(), $alike, $dlike, ($thread_level + 1)); } $item_result['private'] = $item['private']; $item_result['toplevel'] = ($toplevelpost ? 'toplevel_item' : ''); @@ -410,5 +408,21 @@ class Item extends BaseObject { private function is_page_writeable() { return $this->page_writeable; } + + /** + * Set template + */ + private function set_template($name) { + if(!x($this->available_templates, $name)) + return false; + $this->template = $this->available_templates[$name]; + } + + /** + * Get template + */ + private function get_template() { + return $this->template; + } } ?> From 1ffca59a9ed95bb7bd9c6bf69d8e4392f497da0d Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sat, 11 Aug 2012 17:04:07 +0200 Subject: [PATCH 005/140] Item: new method get_thumb --- object/Item.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/object/Item.php b/object/Item.php index b96b7e44f..c92b5e19e 100644 --- a/object/Item.php +++ b/object/Item.php @@ -49,8 +49,6 @@ class Item extends BaseObject { $dropping = false; $star = false; $isstarred = "unstarred"; - $photo = $item['photo']; - $thumb = $item['thumb']; $indent = ''; $osparkle = ''; $lastcollapsed = false; @@ -99,7 +97,7 @@ class Item extends BaseObject { if(($normalised != 'mailbox') && (x($a->contacts,$normalised))) $profile_avatar = $a->contacts[$normalised]['thumb']; else - $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $a->get_cached_avatar_image($thumb)); + $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $a->get_cached_avatar_image($this->get_thumb())); $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); call_hooks('render_location',$locate); @@ -334,6 +332,10 @@ class Item extends BaseObject { public function get_uid() { return $this->get_data_value('uid'); } + + public function get_thumb() { + return $this->get_data_value('thumb'); + } /** * Get raw data @@ -352,7 +354,7 @@ class Item extends BaseObject { * _ false on failure */ private function get_data_value($name) { - if(!x($this->data[$name])) { + if(!x($this->data, $name)) { logger('[ERROR] Item::get_data_value : Item has no value name "'. $name .'".', LOGGER_DEBUG); return false; } @@ -413,8 +415,10 @@ class Item extends BaseObject { * Set template */ private function set_template($name) { - if(!x($this->available_templates, $name)) + if(!x($this->available_templates, $name)) { + logger('[ERROR] Item::set_template : Template not available ("'. $name .'").', LOGGER_DEBUG); return false; + } $this->template = $this->available_templates[$name]; } From 531801ff50a20c2b5360cdc005d62e037733dbb6 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sat, 11 Aug 2012 17:09:35 +0200 Subject: [PATCH 006/140] Item: new method is_toplevel --- object/Item.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/object/Item.php b/object/Item.php index c92b5e19e..c89fd7ad7 100644 --- a/object/Item.php +++ b/object/Item.php @@ -19,10 +19,12 @@ class Item extends BaseObject { private $mode = null; private $page_writeable = false; private $profile_owner = 0; + private $toplevel = false; public function __construct($data) { $this->data = $data; $this->set_template('wall'); + $this->toplevel = ($this->get_id() == $this->get_parent()); } /** @@ -55,7 +57,6 @@ class Item extends BaseObject { $firstcollapsed = false; $total_children += count_descendants($item); - $toplevelpost = (($item['id'] == $item['parent']) ? true : false); $item_writeable = (($item['writable'] || $item['self']) ? true : false); $show_comment_box = ((($this->is_page_writeable()) && ($item_writeable)) ? true : false); $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) @@ -115,7 +116,7 @@ class Item extends BaseObject { $like = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : ''); $dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : ''); - if($toplevelpost) { + if($this->is_toplevel()) { if((! $item['self']) && ($this->get_mode() !== 'profile')) { if($item['wall']) { @@ -302,7 +303,7 @@ class Item extends BaseObject { $item_result['children'] = prepare_threads_body($a, $item['children'], $cmnt_tpl, $this->is_page_writeable(), $this->get_mode(), $this->get_profile_owner(), $alike, $dlike, ($thread_level + 1)); } $item_result['private'] = $item['private']; - $item_result['toplevel'] = ($toplevelpost ? 'toplevel_item' : ''); + $item_result['toplevel'] = ($this->is_toplevel() ? 'toplevel_item' : ''); if(get_config('system','thread_allow')) { $item_result['flatten'] = false; @@ -311,7 +312,7 @@ class Item extends BaseObject { else { $item_result['flatten'] = true; $item_result['threaded'] = false; - if(!$toplevelpost) { + if(!$htis->is_toplevel()) { $item_result['comment'] = false; } } @@ -336,6 +337,10 @@ class Item extends BaseObject { public function get_thumb() { return $this->get_data_value('thumb'); } + + public function get_parent() { + return $this->get_data_value('parent'); + } /** * Get raw data @@ -428,5 +433,12 @@ class Item extends BaseObject { private function get_template() { return $this->template; } + + /** + * Check if this is a toplevel post + */ + private function is_toplevel() { + return $this->toplevel; + } } ?> From adbe126d1058ee6f2aaba5bb409adecea9b99ef6 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sat, 11 Aug 2012 17:15:19 +0200 Subject: [PATCH 007/140] Item: new method is_writeable --- object/Item.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/object/Item.php b/object/Item.php index c89fd7ad7..1a88fe36b 100644 --- a/object/Item.php +++ b/object/Item.php @@ -20,11 +20,13 @@ class Item extends BaseObject { private $page_writeable = false; private $profile_owner = 0; private $toplevel = false; + private $writeable = false; public function __construct($data) { $this->data = $data; $this->set_template('wall'); $this->toplevel = ($this->get_id() == $this->get_parent()); + $this->writeable = ($this->get_data_value('writeable') || $this->get_data_value('self')); } /** @@ -57,8 +59,7 @@ class Item extends BaseObject { $firstcollapsed = false; $total_children += count_descendants($item); - $item_writeable = (($item['writable'] || $item['self']) ? true : false); - $show_comment_box = ((($this->is_page_writeable()) && ($item_writeable)) ? true : false); + $show_comment_box = ((($this->is_page_writeable()) && ($this->is_writeable())) ? true : false); $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) || strlen($item['deny_cid']) || strlen($item['deny_gid'])))) ? t('Private Message') @@ -440,5 +441,12 @@ class Item extends BaseObject { private function is_toplevel() { return $this->toplevel; } + + /** + * Check if this is writeable + */ + private function is_writeable() { + return $this->writeable; + } } ?> From e6c55de07010feb137512964ea76d3515157c45e Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sat, 11 Aug 2012 17:39:11 +0200 Subject: [PATCH 008/140] Item: parent/children relationship. get_parent now returns an Item (or null) --- object/Item.php | 83 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 79 insertions(+), 4 deletions(-) diff --git a/object/Item.php b/object/Item.php index 1a88fe36b..882567894 100644 --- a/object/Item.php +++ b/object/Item.php @@ -21,12 +21,20 @@ class Item extends BaseObject { private $profile_owner = 0; private $toplevel = false; private $writeable = false; + private $children = array(); + private $parent = null; public function __construct($data) { $this->data = $data; $this->set_template('wall'); - $this->toplevel = ($this->get_id() == $this->get_parent()); + $this->toplevel = ($this->get_id() == $this->get_data_value('parent')); $this->writeable = ($this->get_data_value('writeable') || $this->get_data_value('self')); + + // Prepare the children + foreach($data['children'] as $item) { + $child = new Item($item); + $this->add_child($child); + } } /** @@ -338,9 +346,76 @@ class Item extends BaseObject { public function get_thumb() { return $this->get_data_value('thumb'); } - - public function get_parent() { - return $this->get_data_value('parent'); + + /** + * Add a child item + */ + public function add_child($item) { + $item_id = $item->get_id(); + if(!$item_id) { + logger('[ERROR] Item::add_child : Item has no ID!!', LOGGER_DEBUG); + return false; + } + if($this->get_child($item->get_id())) { + logger('[WARN] Item::add_child : Item already exists ('. $item->get_id() .').', LOGGER_DEBUG); + return false; + } + $item->set_parent($this); + $this->children[] = $item; + return end($this->children); + } + + /** + * Get a child by its ID + */ + public function get_child($id) { + foreach($this->get_children() as $child) { + if($child->get_id() == $id) + return $child; + } + return null; + } + + /** + * Get all ou children + */ + public function get_children() { + return $this->children; + } + + /** + * Set our parent + */ + protected function set_parent($item) { + $parent = $this->get_parent(); + if($parent) { + $parent->remove_child($this); + } + $this->parent = $item; + } + + /** + * Remove a child + */ + public function remove_child($item) { + $id = $item->get_id(); + foreach($this->get_children() as $key => $child) { + if($child->get_id() == $id) { + unset($this->children[$key]); + // Reindex the array, in order to make sure there won't be any trouble on loops using count() + $this->children = array_values($this->children); + return true; + } + } + logger('[WARN] Item::remove_child : Item is not a child ('. $id .').', LOGGER_DEBUG); + return false; + } + + /** + * Get parent item + */ + protected function get_parent() { + return $this->parent; } /** From 7c2ed027ff8385ba1618fcde7bcff95803708843 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sat, 11 Aug 2012 17:48:07 +0200 Subject: [PATCH 009/140] Item: new method count_descendants --- object/Item.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/object/Item.php b/object/Item.php index 882567894..a9115ee08 100644 --- a/object/Item.php +++ b/object/Item.php @@ -65,7 +65,7 @@ class Item extends BaseObject { $osparkle = ''; $lastcollapsed = false; $firstcollapsed = false; - $total_children += count_descendants($item); + $total_children = $this->count_descendants(); $show_comment_box = ((($this->is_page_writeable()) && ($this->is_writeable())) ? true : false); $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) @@ -523,5 +523,19 @@ class Item extends BaseObject { private function is_writeable() { return $this->writeable; } + + /** + * Count the total of our descendants + */ + private function count_descendants() { + $children = $this->get_children(); + $total = count($children); + if($total > 0) { + foreach($children as $child) { + $total += $child->count_descendants(); + } + } + return $total; + } } ?> From 1c36d14673c057cb8b49621b0d50d3fd4811f1f9 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sat, 11 Aug 2012 17:51:25 +0200 Subject: [PATCH 010/140] Got of the get_* function about data, use get_data_value instead (except for get_id, which is very conveniant). --- object/Conversation.php | 2 +- object/Item.php | 16 ++-------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/object/Conversation.php b/object/Conversation.php index 6675a0053..a42e6d038 100644 --- a/object/Conversation.php +++ b/object/Conversation.php @@ -54,7 +54,7 @@ class Conversation extends BaseObject { $result = array(); foreach($this->threads as $item) { - if($item->get_network() === NETWORK_MAIL && local_user() != $item->get_uid()) + if($item->get_data_value('network') === NETWORK_MAIL && local_user() != $item->get_data_value('uid')) continue; $item_data = $item->get_template_data($cmnt_tpl, $this->mode, $alike, $dlike); if(!$item_data) { diff --git a/object/Item.php b/object/Item.php index a9115ee08..8deabb1b6 100644 --- a/object/Item.php +++ b/object/Item.php @@ -107,7 +107,7 @@ class Item extends BaseObject { if(($normalised != 'mailbox') && (x($a->contacts,$normalised))) $profile_avatar = $a->contacts[$normalised]['thumb']; else - $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $a->get_cached_avatar_image($this->get_thumb())); + $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $a->get_cached_avatar_image($this->get_data_value('thumb'))); $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); call_hooks('render_location',$locate); @@ -334,18 +334,6 @@ class Item extends BaseObject { public function get_id() { return $this->get_data_value('id'); } - - public function get_network() { - return $this->get_data_value('network'); - } - - public function get_uid() { - return $this->get_data_value('uid'); - } - - public function get_thumb() { - return $this->get_data_value('thumb'); - } /** * Add a child item @@ -434,7 +422,7 @@ class Item extends BaseObject { * _ value on success * _ false on failure */ - private function get_data_value($name) { + public function get_data_value($name) { if(!x($this->data, $name)) { logger('[ERROR] Item::get_data_value : Item has no value name "'. $name .'".', LOGGER_DEBUG); return false; From 9b6e99a6ba1b502470e99f83575997fea822b01f Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sat, 11 Aug 2012 18:12:35 +0200 Subject: [PATCH 011/140] mode is handled by Conversation --- object/Conversation.php | 58 ++++++++++++++++++++- object/Item.php | 109 ++++++++++++++++------------------------ 2 files changed, 99 insertions(+), 68 deletions(-) diff --git a/object/Conversation.php b/object/Conversation.php index a42e6d038..ca2ed2bb8 100644 --- a/object/Conversation.php +++ b/object/Conversation.php @@ -15,9 +15,62 @@ require_once('include/text.php'); class Conversation extends BaseObject { private $threads = array(); private $mode = null; + private $writeable = false; + private $profile_owner = 0; public function __construct($mode) { - $this->mode = $mode; + $this->set_mode($mode); + } + + /** + * Set the mode we'll be displayed on + */ + private function set_mode($mode) { + if($this->get_mode() == $mode) + return; + + $a = $this->get_app(); + + switch($mode) { + case 'network': + case 'notes': + $this->profile_owner = local_user(); + $this->writeable = true; + break; + case 'profile': + $this->profile_owner = $a->profile['profile_uid']; + $this->writeable = can_write_wall($a,$this->profile_owner); + break; + case 'display': + $this->profile_owner = $a->profile['uid']; + $this->writeable = can_write_wall($a,$this->profile_owner); + break; + default: + logger('[ERROR] Conversation::set_mode : Unhandled mode ('. $mode .').', LOGGER_DEBUG); + return false; + break; + } + } + + /** + * Get mode + */ + public function get_mode() { + return $this->mode; + } + + /** + * Check if page is writeable + */ + public function is_writeable() { + return $this->writeable; + } + + /** + * Get profile owner + */ + public function get_profile_owner() { + return $this->profile_owner; } /** @@ -37,6 +90,7 @@ class Conversation extends BaseObject { logger('[WARN] Conversation::add_thread : Thread already exists ('. $item->get_id() .').', LOGGER_DEBUG); return false; } + $item->set_conversation($this); $this->threads[] = $item; return end($this->threads); } @@ -56,7 +110,7 @@ class Conversation extends BaseObject { foreach($this->threads as $item) { if($item->get_data_value('network') === NETWORK_MAIL && local_user() != $item->get_data_value('uid')) continue; - $item_data = $item->get_template_data($cmnt_tpl, $this->mode, $alike, $dlike); + $item_data = $item->get_template_data($cmnt_tpl, $alike, $dlike); if(!$item_data) { logger('[ERROR] Conversation::get_template_data : Failed to get item template data ('. $item->get_id() .').', LOGGER_DEBUG); return false; diff --git a/object/Item.php b/object/Item.php index 8deabb1b6..be07a3db9 100644 --- a/object/Item.php +++ b/object/Item.php @@ -16,13 +16,11 @@ class Item extends BaseObject { 'wall' => 'wall_thread.tpl', 'wall2wall' => 'wallwall_thread.tpl' ); - private $mode = null; - private $page_writeable = false; - private $profile_owner = 0; private $toplevel = false; private $writeable = false; private $children = array(); private $parent = null; + private $conversation = null; public function __construct($data) { $this->data = $data; @@ -44,13 +42,11 @@ class Item extends BaseObject { * _ The data requested on success * _ false on failure */ - public function get_template_data($cmnt_tpl, $mode, $alike, $dlike) { + public function get_template_data($cmnt_tpl, $alike, $dlike) { $result = array(); $a = $this->get_app(); - $this->set_mode($mode); - $item = $this->get_data(); $comment = ''; @@ -67,13 +63,15 @@ class Item extends BaseObject { $firstcollapsed = false; $total_children = $this->count_descendants(); - $show_comment_box = ((($this->is_page_writeable()) && ($this->is_writeable())) ? true : false); + $conv = $this->get_conversation(); + + $show_comment_box = ((($conv->is_writeable()) && ($this->is_writeable())) ? true : false); $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) || strlen($item['deny_cid']) || strlen($item['deny_gid'])))) ? t('Private Message') : false); $redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $item['cid'] ; - $shareable = ((($this->get_profile_owner() == local_user()) && ($item['private'] != 1)) ? true : false); + $shareable = ((($conv->get_profile_owner() == local_user()) && ($item['private'] != 1)) ? true : false); if(local_user() && link_compare($a->contact['url'],$item['author-link'])) $edpost = array($a->get_baseurl($ssl_state)."/editpost/".$item['id'], t("Edit")); else @@ -87,7 +85,7 @@ class Item extends BaseObject { 'delete' => t('Delete'), ); - $filer = (($this->get_profile_owner() == local_user()) ? t("save to folder") : false); + $filer = (($conv->get_profile_owner() == local_user()) ? t("save to folder") : false); $diff_author = ((link_compare($item['url'],$item['author-link'])) ? false : true); $profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']); @@ -126,7 +124,7 @@ class Item extends BaseObject { $dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : ''); if($this->is_toplevel()) { - if((! $item['self']) && ($this->get_mode() !== 'profile')) { + if((! $item['self']) && ($conv->get_mode() !== 'profile')) { if($item['wall']) { // On the network page, I am the owner. On the display page it will be the profile owner. @@ -172,7 +170,7 @@ class Item extends BaseObject { $owner_url = zrl($owner_url); } } - if($this->get_profile_owner() == local_user()) { + if($conv->get_profile_owner() == local_user()) { $isstarred = (($item['starred']) ? "starred" : "unstarred"); $star = array( @@ -203,7 +201,7 @@ class Item extends BaseObject { } } - if($this->is_page_writeable()) { + if($conv->is_writeable()) { $buttons = array( 'like' => array( t("I like this \x28toggle\x29"), t("like")), 'dislike' => array( t("I don't like this \x28toggle\x29"), t("dislike")), @@ -220,12 +218,12 @@ class Item extends BaseObject { } $comment = replace_macros($cmnt_tpl,array( '$return_path' => '', - '$jsreload' => (($this->get_mode() === 'display') ? $_SESSION['return_url'] : ''), - '$type' => (($this->get_mode() === 'profile') ? 'wall-comment' : 'net-comment'), + '$jsreload' => (($conv->get_mode() === 'display') ? $_SESSION['return_url'] : ''), + '$type' => (($conv->get_mode() === 'profile') ? 'wall-comment' : 'net-comment'), '$id' => $item['item_id'], '$parent' => $item['item_id'], '$qcomment' => $qcomment, - '$profile_uid' => $this->get_profile_owner(), + '$profile_uid' => $conv->get_profile_owner(), '$mylink' => $a->contact['url'], '$mytitle' => t('This is you'), '$myphoto' => $a->contact['thumb'], @@ -241,7 +239,7 @@ class Item extends BaseObject { '$edvideo' => t('Video'), '$preview' => t('Preview'), '$sourceapp' => t($a->sourcename), - '$ww' => (($this->get_mode() === 'network') ? $commentww : '') + '$ww' => (($conv->get_mode() === 'network') ? $commentww : '') )); } } @@ -309,7 +307,7 @@ class Item extends BaseObject { $item_result['children'] = array(); if(count($item['children'])) { - $item_result['children'] = prepare_threads_body($a, $item['children'], $cmnt_tpl, $this->is_page_writeable(), $this->get_mode(), $this->get_profile_owner(), $alike, $dlike, ($thread_level + 1)); + $item_result['children'] = prepare_threads_body($a, $item['children'], $cmnt_tpl, $conv->is_writeable(), $conv->get_mode(), $conv->get_profile_owner(), $alike, $dlike, ($thread_level + 1)); } $item_result['private'] = $item['private']; $item_result['toplevel'] = ($this->is_toplevel() ? 'toplevel_item' : ''); @@ -380,6 +378,15 @@ class Item extends BaseObject { $parent->remove_child($this); } $this->parent = $item; + $this->set_conversation($item->get_conversation()); + } + + /** + * Remove our parent + */ + protected function remove_parent() { + $this->parent = null; + $this->conversation = null; } /** @@ -389,6 +396,7 @@ class Item extends BaseObject { $id = $item->get_id(); foreach($this->get_children() as $key => $child) { if($child->get_id() == $id) { + $child->remove_parent(); unset($this->children[$key]); // Reindex the array, in order to make sure there won't be any trouble on loops using count() $this->children = array_values($this->children); @@ -406,6 +414,24 @@ class Item extends BaseObject { return $this->parent; } + /** + * set conversation + */ + public function set_conversation($conv) { + $this->conversation = $conv; + + // Set it on our children too + foreach($this->get_children() as $child) + $child->set_conversation($conv); + } + + /** + * get conversation + */ + public function get_conversation() { + return $this->conversation; + } + /** * Get raw data * @@ -431,55 +457,6 @@ class Item extends BaseObject { return $this->data[$name]; } - /** - * Set the mode we'll be displayed on - */ - private function set_mode($mode) { - if($this->get_mode() == $mode) - return; - - switch($mode) { - case 'network': - case 'notes': - $this->profile_owner = local_user(); - $this->page_writeable = true; - break; - case 'profile': - $this->profile_owner = $a->profile['profile_uid']; - $this->page_writeable = can_write_wall($a,$this->profile_owner); - break; - case 'display': - $this->profile_owner = $a->profile['uid']; - $this->page_writeable = can_write_wall($a,$this->profile_owner); - break; - default: - logger('[ERROR] Item::set_mode : Unhandled mode ('. $mode .').', LOGGER_DEBUG); - return false; - break; - } - } - - /** - * Get mode - */ - private function get_mode() { - return $this->mode; - } - - /** - * Get profile owner - */ - private function get_profile_owner() { - return $this->profile_owner; - } - - /** - * Get page writable - */ - private function is_page_writeable() { - return $this->page_writeable; - } - /** * Set template */ From 5084cff8f482663a33fb0793b3bf4d68287b3533 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sat, 11 Aug 2012 19:23:18 +0200 Subject: [PATCH 012/140] Should fix the like problem --- object/Item.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/object/Item.php b/object/Item.php index be07a3db9..b78d9b220 100644 --- a/object/Item.php +++ b/object/Item.php @@ -116,9 +116,6 @@ class Item extends BaseObject { $tag = trim($tag); if ($tag!="") $tags[] = bbcode($tag); } - - like_puller($a,$item,$alike,'like'); - like_puller($a,$item,$dlike,'dislike'); $like = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : ''); $dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : ''); From 91edb06bcb7bcd86eaaf814bd00971d841f9e06a Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sat, 11 Aug 2012 19:58:57 +0200 Subject: [PATCH 013/140] prepare_threads_body is not used by Item anymore --- object/Item.php | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/object/Item.php b/object/Item.php index b78d9b220..7aaec5c46 100644 --- a/object/Item.php +++ b/object/Item.php @@ -42,7 +42,7 @@ class Item extends BaseObject { * _ The data requested on success * _ false on failure */ - public function get_template_data($cmnt_tpl, $alike, $dlike) { + public function get_template_data($cmnt_tpl, $alike, $dlike, $thread_level=1) { $result = array(); $a = $this->get_app(); @@ -183,19 +183,6 @@ class Item extends BaseObject { } } else { $indent = 'comment'; - // Collapse comments - if(($nb_items > 2) || ($thread_level > 2)) { - if($items_seen == 1) { - $firstcollapsed = true; - } - if($thread_level > 2) { - if($items_seen == $nb_items) - $lastcollapsed = true; - } - else if($items_seen == ($nb_items - 2)) { - $lastcollapsed = true; - } - } } if($conv->is_writeable()) { @@ -297,15 +284,28 @@ class Item extends BaseObject { call_hooks('display_item', $arr); $item_result = $arr['output']; - if($firstcollapsed) { - $item_result['num_comments'] = sprintf( tt('%d comment','%d comments',$total_children),$total_children ); - $item_result['hide_text'] = t('show more'); - } $item_result['children'] = array(); - if(count($item['children'])) { - $item_result['children'] = prepare_threads_body($a, $item['children'], $cmnt_tpl, $conv->is_writeable(), $conv->get_mode(), $conv->get_profile_owner(), $alike, $dlike, ($thread_level + 1)); + $children = $this->get_children(); + $nb_children = count($children); + if($nb_children > 0) { + foreach($this->get_children() as $child) { + $item_result['children'][] = $child->get_template_data($cmnt_tpl, $alike, $dlike, $thread_level + 1); + } + // Collapse + if(($nb_children > 2) || ($thread_level > 1)) { + $item_result['children'][0]['comment_firstcollapsed'] = true; + $item_result['children'][0]['num_comments'] = sprintf( tt('%d comment','%d comments',$total_children),$total_children ); + $item_result['children'][0]['hide_text'] = t('show more'); + if($thread_level > 1) { + $item_result['children'][$nb_children - 1]['comment_lastcollapsed'] = true; + } + else { + $item_result['children'][$nb_children - 3]['comment_lastcollapsed'] = true; + } + } } + $item_result['private'] = $item['private']; $item_result['toplevel'] = ($this->is_toplevel() ? 'toplevel_item' : ''); From d603f7667886bb96517cf8c3f4ed1a643ce2774d Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 12 Aug 2012 15:39:21 +0200 Subject: [PATCH 014/140] Some fix on forgotten or useless vars --- object/Conversation.php | 1 + object/Item.php | 5 ----- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/object/Conversation.php b/object/Conversation.php index ca2ed2bb8..634a09397 100644 --- a/object/Conversation.php +++ b/object/Conversation.php @@ -50,6 +50,7 @@ class Conversation extends BaseObject { return false; break; } + $this->mode = $mode; } /** diff --git a/object/Item.php b/object/Item.php index 7aaec5c46..5ed2e2e74 100644 --- a/object/Item.php +++ b/object/Item.php @@ -59,8 +59,6 @@ class Item extends BaseObject { $isstarred = "unstarred"; $indent = ''; $osparkle = ''; - $lastcollapsed = false; - $firstcollapsed = false; $total_children = $this->count_descendants(); $conv = $this->get_conversation(); @@ -236,9 +234,6 @@ class Item extends BaseObject { $body = prepare_body($item,true); $tmp_item = array( - // collapse comments in template. I don't like this much... - 'comment_firstcollapsed' => $firstcollapsed, - 'comment_lastcollapsed' => $lastcollapsed, // template to use to render item (wall, walltowall, search) 'template' => $this->get_template(), From 71f11a9a32ed169b7954bf4ead1eb6e506c71f87 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 12 Aug 2012 16:02:47 +0200 Subject: [PATCH 015/140] Item: new method get_comment_box --- include/conversation.php | 2 +- object/Conversation.php | 4 +- object/Item.php | 105 ++++++++++++++++++++++++--------------- 3 files changed, 68 insertions(+), 43 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 06d06cb5a..8cab95af3 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -870,7 +870,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { } } - $threads = $conv->get_template_data($cmnt_tpl, $alike, $dlike); + $threads = $conv->get_template_data($alike, $dlike); if(!$threads) { logger('[ERROR] conversation : Failed to get template data.', LOGGER_DEBUG); $threads = array(); diff --git a/object/Conversation.php b/object/Conversation.php index 634a09397..d8d14589d 100644 --- a/object/Conversation.php +++ b/object/Conversation.php @@ -105,13 +105,13 @@ class Conversation extends BaseObject { * _ The data requested on success * _ false on failure */ - public function get_template_data($cmnt_tpl, $alike, $dlike) { + public function get_template_data($alike, $dlike) { $result = array(); foreach($this->threads as $item) { if($item->get_data_value('network') === NETWORK_MAIL && local_user() != $item->get_data_value('uid')) continue; - $item_data = $item->get_template_data($cmnt_tpl, $alike, $dlike); + $item_data = $item->get_template_data($alike, $dlike); if(!$item_data) { logger('[ERROR] Conversation::get_template_data : Failed to get item template data ('. $item->get_id() .').', LOGGER_DEBUG); return false; diff --git a/object/Item.php b/object/Item.php index 5ed2e2e74..84a74be52 100644 --- a/object/Item.php +++ b/object/Item.php @@ -16,6 +16,7 @@ class Item extends BaseObject { 'wall' => 'wall_thread.tpl', 'wall2wall' => 'wallwall_thread.tpl' ); + private $comment_box_template = 'comment_item.tpl'; private $toplevel = false; private $writeable = false; private $children = array(); @@ -42,14 +43,13 @@ class Item extends BaseObject { * _ The data requested on success * _ false on failure */ - public function get_template_data($cmnt_tpl, $alike, $dlike, $thread_level=1) { + public function get_template_data($alike, $dlike, $thread_level=1) { $result = array(); $a = $this->get_app(); $item = $this->get_data(); - $comment = ''; $commentww = ''; $sparkle = ''; $owner_url = $owner_photo = $owner_name = ''; @@ -63,7 +63,6 @@ class Item extends BaseObject { $conv = $this->get_conversation(); - $show_comment_box = ((($conv->is_writeable()) && ($this->is_writeable())) ? true : false); $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) || strlen($item['deny_cid']) || strlen($item['deny_gid'])))) ? t('Private Message') @@ -189,41 +188,6 @@ class Item extends BaseObject { 'dislike' => array( t("I don't like this \x28toggle\x29"), t("dislike")), ); if ($shareable) $buttons['share'] = array( t('Share this'), t('share')); - - - if($show_comment_box) { - $qc = $qcomment = null; - - if(in_array('qcomment',$a->plugins)) { - $qc = ((local_user()) ? get_pconfig(local_user(),'qcomment','words') : null); - $qcomment = (($qc) ? explode("\n",$qc) : null); - } - $comment = replace_macros($cmnt_tpl,array( - '$return_path' => '', - '$jsreload' => (($conv->get_mode() === 'display') ? $_SESSION['return_url'] : ''), - '$type' => (($conv->get_mode() === 'profile') ? 'wall-comment' : 'net-comment'), - '$id' => $item['item_id'], - '$parent' => $item['item_id'], - '$qcomment' => $qcomment, - '$profile_uid' => $conv->get_profile_owner(), - '$mylink' => $a->contact['url'], - '$mytitle' => t('This is you'), - '$myphoto' => $a->contact['thumb'], - '$comment' => t('Comment'), - '$submit' => t('Submit'), - '$edbold' => t('Bold'), - '$editalic' => t('Italic'), - '$eduline' => t('Underline'), - '$edquote' => t('Quote'), - '$edcode' => t('Code'), - '$edimg' => t('Image'), - '$edurl' => t('Link'), - '$edvideo' => t('Video'), - '$preview' => t('Preview'), - '$sourceapp' => t($a->sourcename), - '$ww' => (($conv->get_mode() === 'network') ? $commentww : '') - )); - } } if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0) @@ -270,7 +234,7 @@ class Item extends BaseObject { 'vote' => $buttons, 'like' => $like, 'dislike' => $dislike, - 'comment' => $comment, + 'comment' => $this->get_comment_box($commentww), 'previewing' => $previewing, 'wait' => t('Please wait'), ); @@ -285,7 +249,7 @@ class Item extends BaseObject { $nb_children = count($children); if($nb_children > 0) { foreach($this->get_children() as $child) { - $item_result['children'][] = $child->get_template_data($cmnt_tpl, $alike, $dlike, $thread_level + 1); + $item_result['children'][] = $child->get_template_data($alike, $dlike, $thread_level + 1); } // Collapse if(($nb_children > 2) || ($thread_level > 1)) { @@ -494,5 +458,66 @@ class Item extends BaseObject { } return $total; } + + /** + * Get the template for the comment box + */ + private function get_comment_box_template() { + return $this->comment_box_template; + } + + /** + * Get the comment box + * + * Returns: + * _ The comment box string (empty if no comment box) + * _ false on failure + */ + private function get_comment_box($ww) { + $comment_box = ''; + $conv = $this->get_conversation(); + $template = get_markup_template($this->get_comment_box_template()); + + if($conv->is_writeable() && $this->is_writeable()) { + $a = $this->get_app(); + $qc = $qcomment = null; + + /* + * Hmmm, code depending on the presence of a particular plugin? + * This should be better if done by a hook + */ + if(in_array('qcomment',$a->plugins)) { + $qc = ((local_user()) ? get_pconfig(local_user(),'qcomment','words') : null); + $qcomment = (($qc) ? explode("\n",$qc) : null); + } + $comment_box = replace_macros($template,array( + '$return_path' => '', + '$jsreload' => (($conv->get_mode() === 'display') ? $_SESSION['return_url'] : ''), + '$type' => (($conv->get_mode() === 'profile') ? 'wall-comment' : 'net-comment'), + '$id' => $this->get_id(), + '$parent' => $this->get_id(), + '$qcomment' => $qcomment, + '$profile_uid' => $conv->get_profile_owner(), + '$mylink' => $a->contact['url'], + '$mytitle' => t('This is you'), + '$myphoto' => $a->contact['thumb'], + '$comment' => t('Comment'), + '$submit' => t('Submit'), + '$edbold' => t('Bold'), + '$editalic' => t('Italic'), + '$eduline' => t('Underline'), + '$edquote' => t('Quote'), + '$edcode' => t('Code'), + '$edimg' => t('Image'), + '$edurl' => t('Link'), + '$edvideo' => t('Video'), + '$preview' => t('Preview'), + '$sourceapp' => t($a->sourcename), + '$ww' => (($conv->get_mode() === 'network') ? $ww : '') + )); + } + + return $comment_box; + } } ?> From 9f57afe160a026d499501d44a9d61d51c92bc8c4 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 12 Aug 2012 16:18:53 +0200 Subject: [PATCH 016/140] Item: new method get_redirect_url --- object/Item.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/object/Item.php b/object/Item.php index 84a74be52..3a2b1fd83 100644 --- a/object/Item.php +++ b/object/Item.php @@ -22,13 +22,19 @@ class Item extends BaseObject { private $children = array(); private $parent = null; private $conversation = null; + private $redirect_url = null; public function __construct($data) { + $a = $this->get_app(); + $this->data = $data; $this->set_template('wall'); $this->toplevel = ($this->get_id() == $this->get_data_value('parent')); $this->writeable = ($this->get_data_value('writeable') || $this->get_data_value('self')); + $ssl_state = ((local_user()) ? true : false); + $this->redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $this->get_data_value('cid') ; + // Prepare the children foreach($data['children'] as $item) { $child = new Item($item); @@ -67,7 +73,6 @@ class Item extends BaseObject { || strlen($item['deny_cid']) || strlen($item['deny_gid'])))) ? t('Private Message') : false); - $redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $item['cid'] ; $shareable = ((($conv->get_profile_owner() == local_user()) && ($item['private'] != 1)) ? true : false); if(local_user() && link_compare($a->contact['url'],$item['author-link'])) $edpost = array($a->get_baseurl($ssl_state)."/editpost/".$item['id'], t("Edit")); @@ -157,7 +162,7 @@ class Item extends BaseObject { // If it is our contact, use a friendly redirect link if((link_compare($item['owner-link'],$item['url'])) && ($item['network'] === NETWORK_DFRN)) { - $owner_url = $redirect_url; + $owner_url = $this->get_redirect_url(); $osparkle = ' sparkle'; } else @@ -205,7 +210,7 @@ class Item extends BaseObject { 'tags' => $tags, 'body' => template_escape($body), 'text' => strip_tags(template_escape($body)), - 'id' => $item['item_id'], + 'id' => $this->get_id(), 'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])), 'olinktitle' => sprintf( t('View %s\'s profile @ %s'), $owner_name, ((strlen($item['owner-link'])) ? $item['owner-link'] : $item['url'])), 'to' => t('to'), @@ -519,5 +524,9 @@ class Item extends BaseObject { return $comment_box; } + + private function get_redirect_url() { + return $this->redirect_url; + } } ?> From 4e4774ff4ffca4ec31de3c92117eb53508739423 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 12 Aug 2012 16:26:37 +0200 Subject: [PATCH 017/140] Improved get_comment_box --- object/Item.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/object/Item.php b/object/Item.php index 3a2b1fd83..0ddafff2a 100644 --- a/object/Item.php +++ b/object/Item.php @@ -36,9 +36,11 @@ class Item extends BaseObject { $this->redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $this->get_data_value('cid') ; // Prepare the children - foreach($data['children'] as $item) { - $child = new Item($item); - $this->add_child($child); + if(count($data['children'])) { + foreach($data['children'] as $item) { + $child = new Item($item); + $this->add_child($child); + } } } @@ -280,9 +282,6 @@ class Item extends BaseObject { else { $item_result['flatten'] = true; $item_result['threaded'] = false; - if(!$htis->is_toplevel()) { - $item_result['comment'] = false; - } } $result = $item_result; @@ -479,6 +478,10 @@ class Item extends BaseObject { * _ false on failure */ private function get_comment_box($ww) { + if(!$this->is_toplevel() && !get_config('system','thread_allow')) { + return ''; + } + $comment_box = ''; $conv = $this->get_conversation(); $template = get_markup_template($this->get_comment_box_template()); From c8cf87efc419a21b1e546d25d5d25205e7e0ec9d Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 12 Aug 2012 16:32:02 +0200 Subject: [PATCH 018/140] rename $item_result to $result --- object/Item.php | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/object/Item.php b/object/Item.php index 0ddafff2a..ecf7aba59 100644 --- a/object/Item.php +++ b/object/Item.php @@ -249,42 +249,40 @@ class Item extends BaseObject { $arr = array('item' => $item, 'output' => $tmp_item); call_hooks('display_item', $arr); - $item_result = $arr['output']; + $result = $arr['output']; - $item_result['children'] = array(); + $result['children'] = array(); $children = $this->get_children(); $nb_children = count($children); if($nb_children > 0) { foreach($this->get_children() as $child) { - $item_result['children'][] = $child->get_template_data($alike, $dlike, $thread_level + 1); + $result['children'][] = $child->get_template_data($alike, $dlike, $thread_level + 1); } // Collapse if(($nb_children > 2) || ($thread_level > 1)) { - $item_result['children'][0]['comment_firstcollapsed'] = true; - $item_result['children'][0]['num_comments'] = sprintf( tt('%d comment','%d comments',$total_children),$total_children ); - $item_result['children'][0]['hide_text'] = t('show more'); + $result['children'][0]['comment_firstcollapsed'] = true; + $result['children'][0]['num_comments'] = sprintf( tt('%d comment','%d comments',$total_children),$total_children ); + $result['children'][0]['hide_text'] = t('show more'); if($thread_level > 1) { - $item_result['children'][$nb_children - 1]['comment_lastcollapsed'] = true; + $result['children'][$nb_children - 1]['comment_lastcollapsed'] = true; } else { - $item_result['children'][$nb_children - 3]['comment_lastcollapsed'] = true; + $result['children'][$nb_children - 3]['comment_lastcollapsed'] = true; } } } - $item_result['private'] = $item['private']; - $item_result['toplevel'] = ($this->is_toplevel() ? 'toplevel_item' : ''); + $result['private'] = $item['private']; + $result['toplevel'] = ($this->is_toplevel() ? 'toplevel_item' : ''); if(get_config('system','thread_allow')) { - $item_result['flatten'] = false; - $item_result['threaded'] = true; + $result['flatten'] = false; + $result['threaded'] = true; } else { - $item_result['flatten'] = true; - $item_result['threaded'] = false; + $result['flatten'] = true; + $result['threaded'] = false; } - - $result = $item_result; return $result; } From b1a801fe611dd79a7ecfea7f84369027c60da845 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 12 Aug 2012 17:20:38 +0200 Subject: [PATCH 019/140] Item: new methods check_wall_to_wall, is_wall_to_wall, get_owner_url, get_owner_photo, get_owner_name --- object/Item.php | 152 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 101 insertions(+), 51 deletions(-) diff --git a/object/Item.php b/object/Item.php index ecf7aba59..57a7ec0b2 100644 --- a/object/Item.php +++ b/object/Item.php @@ -23,6 +23,10 @@ class Item extends BaseObject { private $parent = null; private $conversation = null; private $redirect_url = null; + private $owner_url = ''; + private $owner_photo = ''; + private $owner_name = ''; + private $wall_to_wall = false; public function __construct($data) { $a = $this->get_app(); @@ -60,7 +64,6 @@ class Item extends BaseObject { $commentww = ''; $sparkle = ''; - $owner_url = $owner_photo = $owner_name = ''; $buttons = ''; $dropping = false; $star = false; @@ -124,53 +127,16 @@ class Item extends BaseObject { $like = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : ''); $dislike = ((x($dlike,$item['uri'])) ? format_like($dlike[$item['uri']],$dlike[$item['uri'] . '-l'],'dislike',$item['uri']) : ''); + /* + * We should avoid doing this all the time, but it depends on the conversation mode + * And the conv mode may change when we change the conv, or it changes its mode + * Maybe we should establish a way to be notified about conversation changes + */ + $this->check_wall_to_wall(); + if($this->is_wall_to_wall() && ($this->get_owner_url() == $this->get_redirect_url())) + $osparkle = ' sparkle'; + if($this->is_toplevel()) { - if((! $item['self']) && ($conv->get_mode() !== 'profile')) { - if($item['wall']) { - - // On the network page, I am the owner. On the display page it will be the profile owner. - // This will have been stored in $a->page_contact by our calling page. - // Put this person as the wall owner of the wall-to-wall notice. - - $owner_url = zrl($a->page_contact['url']); - $owner_photo = $a->page_contact['thumb']; - $owner_name = $a->page_contact['name']; - $this->set_template('wall2wall'); - $commentww = 'ww'; - } - } - else if($item['owner-link']) { - - $owner_linkmatch = (($item['owner-link']) && link_compare($item['owner-link'],$item['author-link'])); - $alias_linkmatch = (($item['alias']) && link_compare($item['alias'],$item['author-link'])); - $owner_namematch = (($item['owner-name']) && $item['owner-name'] == $item['author-name']); - if((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) { - - // The author url doesn't match the owner (typically the contact) - // and also doesn't match the contact alias. - // The name match is a hack to catch several weird cases where URLs are - // all over the park. It can be tricked, but this prevents you from - // seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn - // well that it's the same Bob Smith. - - // But it could be somebody else with the same name. It just isn't highly likely. - - - $owner_url = $item['owner-link']; - $owner_photo = $item['owner-avatar']; - $owner_name = $item['owner-name']; - $this->set_template('wall2wall'); - $commentww = 'ww'; - // If it is our contact, use a friendly redirect link - if((link_compare($item['owner-link'],$item['url'])) - && ($item['network'] === NETWORK_DFRN)) { - $owner_url = $this->get_redirect_url(); - $osparkle = ' sparkle'; - } - else - $owner_url = zrl($owner_url); - } - } if($conv->get_profile_owner() == local_user()) { $isstarred = (($item['starred']) ? "starred" : "unstarred"); @@ -214,7 +180,7 @@ class Item extends BaseObject { 'text' => strip_tags(template_escape($body)), 'id' => $this->get_id(), 'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])), - 'olinktitle' => sprintf( t('View %s\'s profile @ %s'), $owner_name, ((strlen($item['owner-link'])) ? $item['owner-link'] : $item['url'])), + 'olinktitle' => sprintf( t('View %s\'s profile @ %s'), $this->get_owner_name(), ((strlen($item['owner-link'])) ? $item['owner-link'] : $item['url'])), 'to' => t('to'), 'wall' => t('Wall-to-Wall'), 'vwall' => t('via Wall-To-Wall:'), @@ -229,9 +195,9 @@ class Item extends BaseObject { 'lock' => $lock, 'location' => template_escape($location), 'indent' => $indent, - 'owner_url' => $owner_url, - 'owner_photo' => $owner_photo, - 'owner_name' => template_escape($owner_name), + 'owner_url' => $this->get_owner_url(), + 'owner_photo' => $this->get_owner_photo(), + 'owner_name' => template_escape($this->get_owner_name()), 'plink' => get_plink($item), 'edpost' => $edpost, 'isstarred' => $isstarred, @@ -376,6 +342,8 @@ class Item extends BaseObject { * set conversation */ public function set_conversation($conv) { + $previous_mode = ($this->conversation ? $this->conversation->get_mode() : ''); + $this->conversation = $conv; // Set it on our children too @@ -483,6 +451,9 @@ class Item extends BaseObject { $comment_box = ''; $conv = $this->get_conversation(); $template = get_markup_template($this->get_comment_box_template()); + $ww = ''; + if( ($conv->get_mode() === 'network') && $this->is_wall_to_wall() ) + $ww = 'ww'; if($conv->is_writeable() && $this->is_writeable()) { $a = $this->get_app(); @@ -529,5 +500,84 @@ class Item extends BaseObject { private function get_redirect_url() { return $this->redirect_url; } + + /** + * Check if we are a wall to wall item and set the relevant properties + */ + protected function check_wall_to_wall() { + $a = $this->get_app(); + $conv = $this->get_conversation(); + $this->wall_to_wall = false; + + if($this->is_toplevel()) { + if( (! $this->get_data_value('self')) && ($conv->get_mode() !== 'profile')) { + if($this->get_data_value('wall')) { + + // On the network page, I am the owner. On the display page it will be the profile owner. + // This will have been stored in $a->page_contact by our calling page. + // Put this person as the wall owner of the wall-to-wall notice. + + $this->owner_url = zrl($a->page_contact['url']); + $this->owner_photo = $a->page_contact['thumb']; + $this->owner_name = $a->page_contact['name']; + $this->set_template('wall2wall'); + $this->wall_to_wall = true; + } + } + else if($this->get_data_value('owner-link')) { + + $owner_linkmatch = (($this->get_data_value('owner-link')) && link_compare($this->get_data_value('owner-link'),$this->get_data_value('author-link'))); + $alias_linkmatch = (($this->get_data_value('alias')) && link_compare($this->get_data_value('alias'),$this->get_data_value('author-link'))); + $owner_namematch = (($this->get_data_value('owner-name')) && $this->get_data_value('owner-name') == $this->get_data_value('author-name')); + if((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) { + + // The author url doesn't match the owner (typically the contact) + // and also doesn't match the contact alias. + // The name match is a hack to catch several weird cases where URLs are + // all over the park. It can be tricked, but this prevents you from + // seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn + // well that it's the same Bob Smith. + + // But it could be somebody else with the same name. It just isn't highly likely. + + + $this->owner_photo = $this->get_data_value('owner-avatar'); + $this->owner_name = $this->get_data_value('owner-name'); + $this->set_template('wall2wall'); + $this->wall_to_wall = true; + // If it is our contact, use a friendly redirect link + if((link_compare($this->get_data_value('owner-link'),$this->get_data_value('url'))) + && ($this->get_data_value('network') === NETWORK_DFRN)) { + $this->owner_url = $this->get_redirect_url(); + } + else + $this->owner_url = zrl($this->get_data_value('owner-link')); + } + } + } + + if(!$this->wall_to_wall) { + $this->set_template('wall'); + $this->owner_url = ''; + $this->owner_photo = ''; + $this->owner_name = ''; + } + } + + private function is_wall_to_wall() { + return $this->wall_to_wall; + } + + private function get_owner_url() { + return $this->owner_url; + } + + private function get_owner_photo() { + return $this->owner_photo; + } + + private function get_owner_name() { + return $this->owner_name; + } } ?> From d4f44b15304eba0f2365d177471299beec192796 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 12 Aug 2012 17:34:02 +0200 Subject: [PATCH 020/140] Some fixes --- object/Item.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/object/Item.php b/object/Item.php index 57a7ec0b2..0639e4db7 100644 --- a/object/Item.php +++ b/object/Item.php @@ -133,6 +133,7 @@ class Item extends BaseObject { * Maybe we should establish a way to be notified about conversation changes */ $this->check_wall_to_wall(); + if($this->is_wall_to_wall() && ($this->get_owner_url() == $this->get_redirect_url())) $osparkle = ' sparkle'; @@ -171,7 +172,6 @@ class Item extends BaseObject { $body = prepare_body($item,true); $tmp_item = array( - // template to use to render item (wall, walltowall, search) 'template' => $this->get_template(), 'type' => implode("",array_slice(explode("/",$item['verb']),-1)), @@ -207,7 +207,7 @@ class Item extends BaseObject { 'vote' => $buttons, 'like' => $like, 'dislike' => $dislike, - 'comment' => $this->get_comment_box($commentww), + 'comment' => $this->get_comment_box(), 'previewing' => $previewing, 'wait' => t('Please wait'), ); @@ -221,7 +221,7 @@ class Item extends BaseObject { $children = $this->get_children(); $nb_children = count($children); if($nb_children > 0) { - foreach($this->get_children() as $child) { + foreach($children as $child) { $result['children'][] = $child->get_template_data($alike, $dlike, $thread_level + 1); } // Collapse @@ -443,7 +443,7 @@ class Item extends BaseObject { * _ The comment box string (empty if no comment box) * _ false on failure */ - private function get_comment_box($ww) { + private function get_comment_box() { if(!$this->is_toplevel() && !get_config('system','thread_allow')) { return ''; } From 82d779a33b287699cb1e543d384445422e50710f Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 12 Aug 2012 17:46:02 +0200 Subject: [PATCH 021/140] Conversation and Item now handles (dis)like as they should --- include/conversation.php | 9 +++++++++ object/Conversation.php | 12 ++++++++++++ object/Item.php | 21 +++++++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/include/conversation.php b/include/conversation.php index 19ca0dc4c..2c1c27469 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -862,9 +862,18 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $threads = array(); foreach($items as $item) { + // Can we put this after the visibility check? like_puller($a,$item,$alike,'like'); like_puller($a,$item,$dlike,'dislike'); + // Only add what is visible + if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) { + continue; + } + if($item['verb'] === ACTIVITY_LIKE || $item['verb'] === ACTIVITY_DISLIKE) { + continue; + } + if($item['id'] == $item['parent']) { $item_object = new Item($item); $conv->add_thread($item_object); diff --git a/object/Conversation.php b/object/Conversation.php index d8d14589d..b9b0cb74c 100644 --- a/object/Conversation.php +++ b/object/Conversation.php @@ -91,6 +91,18 @@ class Conversation extends BaseObject { logger('[WARN] Conversation::add_thread : Thread already exists ('. $item->get_id() .').', LOGGER_DEBUG); return false; } + + /* + * Only add will be displayed + */ + if($item->get_data_value('network') === NETWORK_MAIL && local_user() != $item->get_data_value('uid')) { + logger('[WARN] Conversation::add_thread : Thread is a mail ('. $item->get_id() .').', LOGGER_DEBUG); + return false; + } + if($item->get_data_value('verb') === ACTIVITY_LIKE || $item->get_data_value('verb') === ACTIVITY_DISLIKE) { + logger('[WARN] Conversation::add_thread : Thread is a (dis)like ('. $item->get_id() .').', LOGGER_DEBUG); + return false; + } $item->set_conversation($this); $this->threads[] = $item; return end($this->threads); diff --git a/object/Item.php b/object/Item.php index 0639e4db7..7f883b41d 100644 --- a/object/Item.php +++ b/object/Item.php @@ -42,6 +42,15 @@ class Item extends BaseObject { // Prepare the children if(count($data['children'])) { foreach($data['children'] as $item) { + /* + * Only add will be displayed + */ + if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) { + continue; + } + if($item['verb'] === ACTIVITY_LIKE || $item['verb'] === ACTIVITY_DISLIKE) { + continue; + } $child = new Item($item); $this->add_child($child); } @@ -270,6 +279,18 @@ class Item extends BaseObject { logger('[WARN] Item::add_child : Item already exists ('. $item->get_id() .').', LOGGER_DEBUG); return false; } + /* + * Only add will be displayed + */ + if($item->get_data_value('network') === NETWORK_MAIL && local_user() != $item->get_data_value('uid')) { + logger('[WARN] Item::add_child : Item is a mail ('. $item->get_id() .').', LOGGER_DEBUG); + return false; + } + if($item->get_data_value('verb') === ACTIVITY_LIKE || $item->get_data_value('verb') === ACTIVITY_DISLIKE) { + logger('[WARN] Item::add_child : Item is a (dis)like ('. $item->get_id() .').', LOGGER_DEBUG); + return false; + } + $item->set_parent($this); $this->children[] = $item; return end($this->children); From cc4361fddf6c77839a7e252a3bcbf2ea48a86f90 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 12 Aug 2012 20:11:14 +0200 Subject: [PATCH 022/140] Problem with comment box, debug. --- object/Item.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/object/Item.php b/object/Item.php index 7f883b41d..2505b8aee 100644 --- a/object/Item.php +++ b/object/Item.php @@ -477,6 +477,8 @@ class Item extends BaseObject { $ww = 'ww'; if($conv->is_writeable() && $this->is_writeable()) { + logger('[DEBUG] Item::get_comment_box : Comment box is visible.', LOGGER_DEBUG); + $a = $this->get_app(); $qc = $qcomment = null; @@ -514,6 +516,9 @@ class Item extends BaseObject { '$ww' => (($conv->get_mode() === 'network') ? $ww : '') )); } + else { + logger('[DEBUG] Item::get_comment_box : Comment box is NOT visible. Conv: '. ($conv->is_writeable() ? 'yes' : 'no') .' Item: '. ($this->is_writeable() ? 'yes' : 'no'), LOGGER_DEBUG); + } return $comment_box; } From 429870015fc9b1d94b24234152ad236f433e7f5a Mon Sep 17 00:00:00 2001 From: Domovoy Date: Fri, 17 Aug 2012 16:20:28 +0200 Subject: [PATCH 023/140] Comments on friends are back (stupid typo) --- include/conversation.php | 1 - object/Item.php | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 2c1c27469..e45495a44 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -885,7 +885,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { logger('[ERROR] conversation : Failed to get template data.', LOGGER_DEBUG); $threads = array(); } - logger('[DEBUG] conversation : $threads = '. print_r($threads, true), LOGGER_DEBUG); } } diff --git a/object/Item.php b/object/Item.php index 2505b8aee..933b9825a 100644 --- a/object/Item.php +++ b/object/Item.php @@ -34,7 +34,7 @@ class Item extends BaseObject { $this->data = $data; $this->set_template('wall'); $this->toplevel = ($this->get_id() == $this->get_data_value('parent')); - $this->writeable = ($this->get_data_value('writeable') || $this->get_data_value('self')); + $this->writeable = ($this->get_data_value('writable') || $this->get_data_value('self')); $ssl_state = ((local_user()) ? true : false); $this->redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $this->get_data_value('cid') ; From 441c6d79e36e389e1cc747c99eeeabdee34c5233 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Fri, 17 Aug 2012 16:40:41 +0200 Subject: [PATCH 024/140] Use correct english --- object/Conversation.php | 14 +++++++------- object/Item.php | 16 ++++++++-------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/object/Conversation.php b/object/Conversation.php index b9b0cb74c..f4f9c0972 100644 --- a/object/Conversation.php +++ b/object/Conversation.php @@ -15,7 +15,7 @@ require_once('include/text.php'); class Conversation extends BaseObject { private $threads = array(); private $mode = null; - private $writeable = false; + private $writable = false; private $profile_owner = 0; public function __construct($mode) { @@ -35,15 +35,15 @@ class Conversation extends BaseObject { case 'network': case 'notes': $this->profile_owner = local_user(); - $this->writeable = true; + $this->writable = true; break; case 'profile': $this->profile_owner = $a->profile['profile_uid']; - $this->writeable = can_write_wall($a,$this->profile_owner); + $this->writable = can_write_wall($a,$this->profile_owner); break; case 'display': $this->profile_owner = $a->profile['uid']; - $this->writeable = can_write_wall($a,$this->profile_owner); + $this->writable = can_write_wall($a,$this->profile_owner); break; default: logger('[ERROR] Conversation::set_mode : Unhandled mode ('. $mode .').', LOGGER_DEBUG); @@ -61,10 +61,10 @@ class Conversation extends BaseObject { } /** - * Check if page is writeable + * Check if page is writable */ - public function is_writeable() { - return $this->writeable; + public function is_writable() { + return $this->writable; } /** diff --git a/object/Item.php b/object/Item.php index 933b9825a..01e117ff7 100644 --- a/object/Item.php +++ b/object/Item.php @@ -18,7 +18,7 @@ class Item extends BaseObject { ); private $comment_box_template = 'comment_item.tpl'; private $toplevel = false; - private $writeable = false; + private $writable = false; private $children = array(); private $parent = null; private $conversation = null; @@ -34,7 +34,7 @@ class Item extends BaseObject { $this->data = $data; $this->set_template('wall'); $this->toplevel = ($this->get_id() == $this->get_data_value('parent')); - $this->writeable = ($this->get_data_value('writable') || $this->get_data_value('self')); + $this->writable = ($this->get_data_value('writable') || $this->get_data_value('self')); $ssl_state = ((local_user()) ? true : false); $this->redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $this->get_data_value('cid') ; @@ -165,7 +165,7 @@ class Item extends BaseObject { $indent = 'comment'; } - if($conv->is_writeable()) { + if($conv->is_writable()) { $buttons = array( 'like' => array( t("I like this \x28toggle\x29"), t("like")), 'dislike' => array( t("I don't like this \x28toggle\x29"), t("dislike")), @@ -430,10 +430,10 @@ class Item extends BaseObject { } /** - * Check if this is writeable + * Check if this is writable */ - private function is_writeable() { - return $this->writeable; + private function is_writable() { + return $this->writable; } /** @@ -476,7 +476,7 @@ class Item extends BaseObject { if( ($conv->get_mode() === 'network') && $this->is_wall_to_wall() ) $ww = 'ww'; - if($conv->is_writeable() && $this->is_writeable()) { + if($conv->is_writable() && $this->is_writable()) { logger('[DEBUG] Item::get_comment_box : Comment box is visible.', LOGGER_DEBUG); $a = $this->get_app(); @@ -517,7 +517,7 @@ class Item extends BaseObject { )); } else { - logger('[DEBUG] Item::get_comment_box : Comment box is NOT visible. Conv: '. ($conv->is_writeable() ? 'yes' : 'no') .' Item: '. ($this->is_writeable() ? 'yes' : 'no'), LOGGER_DEBUG); + logger('[DEBUG] Item::get_comment_box : Comment box is NOT visible. Conv: '. ($conv->is_writable() ? 'yes' : 'no') .' Item: '. ($this->is_writable() ? 'yes' : 'no'), LOGGER_DEBUG); } return $comment_box; From 17f9fcaec960644d0168da769abd81ec774c56dd Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sat, 18 Aug 2012 17:17:33 +0200 Subject: [PATCH 025/140] Checks done on topmost parent in local_delivery, closes #10 --- include/items.php | 40 +++++++++++++++++++++++++--------------- object/Item.php | 7 +------ 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/include/items.php b/include/items.php index 8de6f7cc8..a2b0fe053 100755 --- a/include/items.php +++ b/include/items.php @@ -2617,22 +2617,32 @@ function local_delivery($importer,$data) { // Specifically, the recipient? $is_a_remote_comment = false; - - // POSSIBLE CLEANUP --> Why select so many fields when only forum_mode and wall are used? - $r = q("select `item`.`id`, `item`.`uri`, `item`.`tag`, `item`.`forum_mode`,`item`.`origin`,`item`.`wall`, - `contact`.`name`, `contact`.`url`, `contact`.`thumb` from `item` - LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` - WHERE `item`.`uri` = '%s' AND (`item`.`parent-uri` = '%s' or `item`.`thr-parent` = '%s') - AND `item`.`uid` = %d - $sql_extra + $top_uri = $parent_uri; + + $r = q("select `item`.`parent-uri` from `item` + WHERE `item`.`uri` = '%s' LIMIT 1", - dbesc($parent_uri), - dbesc($parent_uri), - dbesc($parent_uri), - intval($importer['importer_uid']) + dbesc($parent_uri) ); - if($r && count($r)) - $is_a_remote_comment = true; + if($r && count($r)) { + $top_uri = $r[0]['parent-uri']; + + // POSSIBLE CLEANUP --> Why select so many fields when only forum_mode and wall are used? + $r = q("select `item`.`id`, `item`.`uri`, `item`.`tag`, `item`.`forum_mode`,`item`.`origin`,`item`.`wall`, + `contact`.`name`, `contact`.`url`, `contact`.`thumb` from `item` + LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` + WHERE `item`.`uri` = '%s' AND (`item`.`parent-uri` = '%s' or `item`.`thr-parent` = '%s') + AND `item`.`uid` = %d + $sql_extra + LIMIT 1", + dbesc($top_uri), + dbesc($top_uri), + dbesc($top_uri), + intval($importer['importer_uid']) + ); + if($r && count($r)) + $is_a_remote_comment = true; + } // Does this have the characteristics of a community or private group comment? // If it's a reply to a wall post on a community/prvgroup page it's a @@ -2936,7 +2946,7 @@ function local_delivery($importer,$data) { if(!x($datarray['type']) || $datarray['type'] != 'activity') { $myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 AND `deleted` = 0", - dbesc($parent_uri), + dbesc($top_uri), intval($importer['importer_uid']) ); diff --git a/object/Item.php b/object/Item.php index 01e117ff7..bfd2db711 100644 --- a/object/Item.php +++ b/object/Item.php @@ -396,7 +396,7 @@ class Item extends BaseObject { * _ false on failure */ public function get_data_value($name) { - if(!x($this->data, $name)) { + if(!isset($this->data[$name])) { logger('[ERROR] Item::get_data_value : Item has no value name "'. $name .'".', LOGGER_DEBUG); return false; } @@ -477,8 +477,6 @@ class Item extends BaseObject { $ww = 'ww'; if($conv->is_writable() && $this->is_writable()) { - logger('[DEBUG] Item::get_comment_box : Comment box is visible.', LOGGER_DEBUG); - $a = $this->get_app(); $qc = $qcomment = null; @@ -516,9 +514,6 @@ class Item extends BaseObject { '$ww' => (($conv->get_mode() === 'network') ? $ww : '') )); } - else { - logger('[DEBUG] Item::get_comment_box : Comment box is NOT visible. Conv: '. ($conv->is_writable() ? 'yes' : 'no') .' Item: '. ($this->is_writable() ? 'yes' : 'no'), LOGGER_DEBUG); - } return $comment_box; } From 8efe4077d3ac2db458de54eda532227f1b52dda1 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sat, 18 Aug 2012 17:36:38 +0200 Subject: [PATCH 026/140] Correct identification of wall-to-wall items (see friendica/friendica@96b9cda43df132ae9d71c6c867504fc29f5a621) --- object/Item.php | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/object/Item.php b/object/Item.php index bfd2db711..b1656ed05 100644 --- a/object/Item.php +++ b/object/Item.php @@ -544,35 +544,35 @@ class Item extends BaseObject { $this->set_template('wall2wall'); $this->wall_to_wall = true; } - } - else if($this->get_data_value('owner-link')) { + else if($this->get_data_value('owner-link')) { - $owner_linkmatch = (($this->get_data_value('owner-link')) && link_compare($this->get_data_value('owner-link'),$this->get_data_value('author-link'))); - $alias_linkmatch = (($this->get_data_value('alias')) && link_compare($this->get_data_value('alias'),$this->get_data_value('author-link'))); - $owner_namematch = (($this->get_data_value('owner-name')) && $this->get_data_value('owner-name') == $this->get_data_value('author-name')); - if((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) { + $owner_linkmatch = (($this->get_data_value('owner-link')) && link_compare($this->get_data_value('owner-link'),$this->get_data_value('author-link'))); + $alias_linkmatch = (($this->get_data_value('alias')) && link_compare($this->get_data_value('alias'),$this->get_data_value('author-link'))); + $owner_namematch = (($this->get_data_value('owner-name')) && $this->get_data_value('owner-name') == $this->get_data_value('author-name')); + if((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) { - // The author url doesn't match the owner (typically the contact) - // and also doesn't match the contact alias. - // The name match is a hack to catch several weird cases where URLs are - // all over the park. It can be tricked, but this prevents you from - // seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn - // well that it's the same Bob Smith. + // The author url doesn't match the owner (typically the contact) + // and also doesn't match the contact alias. + // The name match is a hack to catch several weird cases where URLs are + // all over the park. It can be tricked, but this prevents you from + // seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn + // well that it's the same Bob Smith. - // But it could be somebody else with the same name. It just isn't highly likely. - + // But it could be somebody else with the same name. It just isn't highly likely. + - $this->owner_photo = $this->get_data_value('owner-avatar'); - $this->owner_name = $this->get_data_value('owner-name'); - $this->set_template('wall2wall'); - $this->wall_to_wall = true; - // If it is our contact, use a friendly redirect link - if((link_compare($this->get_data_value('owner-link'),$this->get_data_value('url'))) - && ($this->get_data_value('network') === NETWORK_DFRN)) { - $this->owner_url = $this->get_redirect_url(); + $this->owner_photo = $this->get_data_value('owner-avatar'); + $this->owner_name = $this->get_data_value('owner-name'); + $this->set_template('wall2wall'); + $this->wall_to_wall = true; + // If it is our contact, use a friendly redirect link + if((link_compare($this->get_data_value('owner-link'),$this->get_data_value('url'))) + && ($this->get_data_value('network') === NETWORK_DFRN)) { + $this->owner_url = $this->get_redirect_url(); + } + else + $this->owner_url = zrl($this->get_data_value('owner-link')); } - else - $this->owner_url = zrl($this->get_data_value('owner-link')); } } } From fd29ab9629af6a310ef38d4b229069535880c48c Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sat, 18 Aug 2012 17:49:07 +0200 Subject: [PATCH 027/140] Add ability for themes to prevent threading (see friendica/friendica@5e09fc31f51ee1cc207afb3d0771094eac5ed85b) --- object/Item.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/object/Item.php b/object/Item.php index b1656ed05..17b2cbe7b 100644 --- a/object/Item.php +++ b/object/Item.php @@ -216,7 +216,7 @@ class Item extends BaseObject { 'vote' => $buttons, 'like' => $like, 'dislike' => $dislike, - 'comment' => $this->get_comment_box(), + 'comment' => $this->get_comment_box($indent), 'previewing' => $previewing, 'wait' => t('Please wait'), ); @@ -250,7 +250,7 @@ class Item extends BaseObject { $result['private'] = $item['private']; $result['toplevel'] = ($this->is_toplevel() ? 'toplevel_item' : ''); - if(get_config('system','thread_allow')) { + if(get_config('system','thread_allow') && $a->theme_thread_allow) { $result['flatten'] = false; $result['threaded'] = true; } @@ -464,7 +464,7 @@ class Item extends BaseObject { * _ The comment box string (empty if no comment box) * _ false on failure */ - private function get_comment_box() { + private function get_comment_box($indent) { if(!$this->is_toplevel() && !get_config('system','thread_allow')) { return ''; } @@ -510,6 +510,7 @@ class Item extends BaseObject { '$edurl' => t('Link'), '$edvideo' => t('Video'), '$preview' => t('Preview'), + '$indent' => $indent, '$sourceapp' => t($a->sourcename), '$ww' => (($conv->get_mode() === 'network') ? $ww : '') )); From b558dbbdb282aeedbca501bfa8a314e322722863 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sat, 18 Aug 2012 17:56:38 +0200 Subject: [PATCH 028/140] add 'thread_level' to $item array (friendica/friendica@fc07f50fd8d2972009bebb3c974cbcbee321c642) --- object/Item.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/object/Item.php b/object/Item.php index 17b2cbe7b..ce4caa9cb 100644 --- a/object/Item.php +++ b/object/Item.php @@ -219,6 +219,7 @@ class Item extends BaseObject { 'comment' => $this->get_comment_box($indent), 'previewing' => $previewing, 'wait' => t('Please wait'), + 'thread_level' => $thread_level ); $arr = array('item' => $item, 'output' => $tmp_item); @@ -280,7 +281,7 @@ class Item extends BaseObject { return false; } /* - * Only add will be displayed + * Only add what will be displayed */ if($item->get_data_value('network') === NETWORK_MAIL && local_user() != $item->get_data_value('uid')) { logger('[WARN] Item::add_child : Item is a mail ('. $item->get_id() .').', LOGGER_DEBUG); From 3e5c711a7215f53166ac5bfed6e738b452675de1 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Thu, 23 Aug 2012 10:54:21 +0200 Subject: [PATCH 029/140] Sync objects with upstream --- object/Item.php | 14 ++++++++++++-- view/wall_thread.tpl | 2 ++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/object/Item.php b/object/Item.php index ce4caa9cb..be959dcb3 100644 --- a/object/Item.php +++ b/object/Item.php @@ -27,6 +27,7 @@ class Item extends BaseObject { private $owner_photo = ''; private $owner_name = ''; private $wall_to_wall = false; + private $threaded = false; public function __construct($data) { $a = $this->get_app(); @@ -39,6 +40,9 @@ class Item extends BaseObject { $ssl_state = ((local_user()) ? true : false); $this->redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $this->get_data_value('cid') ; + if(get_config('system','thread_allow') && $a->theme_thread_allow) + $this->threaded = true; + // Prepare the children if(count($data['children'])) { foreach($data['children'] as $item) { @@ -200,6 +204,7 @@ class Item extends BaseObject { 'osparkle' => $osparkle, 'sparkle' => $sparkle, 'title' => template_escape($item['title']), + 'localtime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'r'), 'ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])), 'lock' => $lock, 'location' => template_escape($location), @@ -251,7 +256,7 @@ class Item extends BaseObject { $result['private'] = $item['private']; $result['toplevel'] = ($this->is_toplevel() ? 'toplevel_item' : ''); - if(get_config('system','thread_allow') && $a->theme_thread_allow) { + if($this->is_threaded()) { $result['flatten'] = false; $result['threaded'] = true; } @@ -267,6 +272,10 @@ class Item extends BaseObject { return $this->get_data_value('id'); } + public function is_threaded() { + return $this->threaded; + } + /** * Add a child item */ @@ -490,7 +499,8 @@ class Item extends BaseObject { $qcomment = (($qc) ? explode("\n",$qc) : null); } $comment_box = replace_macros($template,array( - '$return_path' => '', + '$return_path' => '', + '$threaded' => $this->is_threaded(), '$jsreload' => (($conv->get_mode() === 'display') ? $_SESSION['return_url'] : ''), '$type' => (($conv->get_mode() === 'profile') ? 'wall-comment' : 'net-comment'), '$id' => $this->get_id(), diff --git a/view/wall_thread.tpl b/view/wall_thread.tpl index f64f2e44a..373f01ec8 100644 --- a/view/wall_thread.tpl +++ b/view/wall_thread.tpl @@ -93,10 +93,12 @@ {{ inc $item.template }}{{ endinc }} {{ endfor }} +{{ if $item.comment }} {{ if $item.flatten }}
$item.comment
{{ endif }} +{{ endif }} {{if $item.comment_lastcollapsed}}{{endif}} From c8ba00d7980a2fab2f19fb47e6e44581896972c2 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Thu, 23 Aug 2012 10:56:22 +0200 Subject: [PATCH 030/140] Toplevel items a treaded as non-threaded ones (comment-box is at the bottom) --- object/Item.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/object/Item.php b/object/Item.php index be959dcb3..c7b40070d 100644 --- a/object/Item.php +++ b/object/Item.php @@ -40,7 +40,7 @@ class Item extends BaseObject { $ssl_state = ((local_user()) ? true : false); $this->redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $this->get_data_value('cid') ; - if(get_config('system','thread_allow') && $a->theme_thread_allow) + if(get_config('system','thread_allow') && $a->theme_thread_allow && !$this->is_toplevel()) $this->threaded = true; // Prepare the children From 5dd3e8a990214fb1e4bae6ae8294709cc70f1c05 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Thu, 23 Aug 2012 13:09:35 +0200 Subject: [PATCH 031/140] One click comments on threaded items. comment-wwedit-wrapper and wall-item-outside-wrapper get the additional class "threaded" when applicable. --- view/comment_item.tpl | 9 ++++----- view/theme/darkzero/style.css | 20 +++++++++++++++----- view/theme/darkzero/theme.php | 18 +++++++++++++----- view/theme/duepuntozero/comment_item.tpl | 11 +++++------ view/theme/duepuntozero/style.css | 18 +++++++++++++++--- view/theme/duepuntozero/theme.php | 14 +++++++++++--- view/wall_thread.tpl | 4 ++++ 7 files changed, 67 insertions(+), 27 deletions(-) diff --git a/view/comment_item.tpl b/view/comment_item.tpl index 98173aa30..3de24ca8d 100644 --- a/view/comment_item.tpl +++ b/view/comment_item.tpl @@ -1,10 +1,9 @@ + {{ if $threaded }} +
+ {{ else }}
- {{ if $threaded }} - $comment -
+ + +
From 67563d5c827ec929b1ab5bc9cffe6a9dea7902e2 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Wed, 12 Sep 2012 11:55:09 +0200 Subject: [PATCH 054/140] Fallback to gd if Imagick can't load the data --- include/Photo.php | 104 +++++++++++++++++++++++++++++----------------- 1 file changed, 65 insertions(+), 39 deletions(-) diff --git a/include/Photo.php b/include/Photo.php index 5b6e6d846..8e4eb84bd 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -46,9 +46,52 @@ class Photo { } $this->type = $type; - if($this->is_imagick()) { - $this->image = new Imagick(); - $this->image->readImageBlob($data); + if($this->is_imagick() && $this->load_data($data)) { + return true; + } else { + // Failed to load with Imagick, fallback + $this->imagick = false; + } + return $this->load_data($data); + } + + public function __destruct() { + if($this->image) { + if($this->is_imagick()) { + $this->image->clear(); + $this->image->destroy(); + return; + } + imagedestroy($this->image); + } + } + + public function is_imagick() { + return $this->imagick; + } + + /** + * Maps Mime types to Imagick formats + */ + public function get_FormatsMap() { + $m = array( + 'image/jpeg' => 'JPG', + 'image/png' => 'PNG', + 'image/gif' => 'GIF' + ); + return $m; + } + + private function load_data($data) { + if($this->is_imagick()) { + $this->image = new Imagick(); + try { + $this->image->readImageBlob($data); + } + catch (Exception $e) { + // Imagick couldn't use the data + return false; + } /** * Setup the image to the format it will be saved to @@ -85,45 +128,28 @@ class Photo { $quality = JPEG_QUALITY; $this->image->setCompressionQuality($quality); } - } else { - $this->valid = false; - $this->image = @imagecreatefromstring($data); - if($this->image !== FALSE) { - $this->width = imagesx($this->image); - $this->height = imagesy($this->image); - $this->valid = true; - imagealphablending($this->image, false); - imagesavealpha($this->image, true); - } - } - } - public function __destruct() { - if($this->image) { - if($this->is_imagick()) { - $this->image->clear(); - $this->image->destroy(); - return; - } - imagedestroy($this->image); - } - } + $this->width = $this->image->getImageWidth(); + $this->height = $this->image->getImageHeight(); + $this->valid = true; - public function is_imagick() { - return $this->imagick; - } + return true; + } - /** - * Maps Mime types to Imagick formats - */ - public function get_FormatsMap() { - $m = array( - 'image/jpeg' => 'JPG', - 'image/png' => 'PNG', - 'image/gif' => 'GIF' - ); - return $m; - } + $this->valid = false; + $this->image = @imagecreatefromstring($data); + if($this->image !== FALSE) { + $this->width = imagesx($this->image); + $this->height = imagesy($this->image); + $this->valid = true; + imagealphablending($this->image, false); + imagesavealpha($this->image, true); + + return true; + } + + return false; + } public function is_valid() { if($this->is_imagick()) From 207451d82d8c56760630e4960e7cb4a9e160b841 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Wed, 12 Sep 2012 14:42:10 +0200 Subject: [PATCH 055/140] modified: view/theme/smoothly/style.css --- view/theme/smoothly/style.css | 36 +++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index f856f66bb..f501877d2 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -3,7 +3,7 @@ Smoothly Created by Anne Walk and Devlon Duthie on 2011-09-24 - Modified by alex@friendica.pixelbits.de on 2012-09-11 + Modified by alex@friendica.pixelbits.de on 2012-09-12 ** Colors ** @@ -22,7 +22,7 @@ You can switch out the colors of the header, buttons and links by using a find a body { margin: 0 auto; padding-bottom: 3em; - position: relative; + /*position: relative;*/ width: 960px; font-family: "Lucida Grande","Lucida Sans Unicode",Arial,Verdana,sans-serif; font-size: 15px; @@ -300,7 +300,7 @@ nav { height: 40px; position: fixed; color: #efefef; - background: url("nav-bg.png") no-repeat scroll 0px 0px transparent; + /*background: url("nav-bg.png") no-repeat scroll 0px 0px transparent;*/ /*background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #7c7d7b), color-stop(1, #555753) );*/ /*background:-moz-linear-gradient( center top, #7c7d7b 5%, #555753 100% );*/ /*filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7c7d7b', endColorstr='#555753');*/ @@ -308,6 +308,14 @@ nav { margin-bottom: 16px; font-size: 15px; /*border-bottom: 1px solid #494948;*/ + + background: -moz-linear-gradient(center top , #BDBDBD 5%, #A2A2A2 100%) repeat scroll 0 0 #BDBDBD; + /*background-color: #f3f3f3;*/ + border: 1px solid #C5C5C5; /*1px solid #dddddd;*/ + -moz-box-shadow: 3px 3px 4px #959494; + -webkit-box-shadow: 3px 3px 4px #959494; + box-shadow: 0 0 8px #BDBDBD; /*3px 3px 4px #959494;*/ + border-radius: 5px 5px 5px 5px; } nav a { text-decoration: none; color: #eeeeec; border:0px;} nav a:hover { text-decoration: none; color: #eeeeec; border:0px;} @@ -467,11 +475,11 @@ ul#user-menu-popup li a.nav-sep { border-top: 1px solid #989898; border-style:in aside { float: right; - margin-right: 5px; /*10%*/ + /*margin-right: 5px;/ /*width: 21%;*/ - width: 200px; /*250*/ + width: 205px; /*250*/ margin-top: 40px; /*50*/ - font-size: 1.0em; + font-size: 0.9em; font-style: bold; } @@ -516,7 +524,7 @@ aside h4 { font-size: 1.3em; } color: #626262; text-align: center; font-weight: bold; - font-size: 1.1em; + font-size: 1em; } .allcontact-link a { padding-bottom: 10px; @@ -769,9 +777,12 @@ ul .sidebar-group-li .icon{ /* ================== */ .contact-block-img { - width: 48px; /*42*/ - height: 48px; - padding-right: 2px; + width: 47px; + height: 47px; + margin-right: 2px; + border: 1px solid #C5C5C5; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 0 8px #BDBDBD; } .contact-block-div { float: left; @@ -1092,9 +1103,10 @@ profile-jot-banner-wrapper { .wall-item-location .icon { float: left; } .wall-item-location > a { margin-left: 0px; /*25*/ + margin-right: 2px; font-size: 0.9em; display: block; -/* font-variant:small-caps; */ + font-variant:small-caps; color: #898989; } @@ -3170,7 +3182,7 @@ a.active { background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); background-color:#1873a2; - color:#efefef; + color:#fec01d; padding: 5px 10px 5px 10px; margin-right: 5px; } From a283d6844c10fe62c785536db96eacc71e4a70e2 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Wed, 12 Sep 2012 14:44:42 +0200 Subject: [PATCH 056/140] modified: view/theme/smoothly/theme.php --- view/theme/smoothly/theme.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/theme/smoothly/theme.php b/view/theme/smoothly/theme.php index 70542a40f..f101fe564 100644 --- a/view/theme/smoothly/theme.php +++ b/view/theme/smoothly/theme.php @@ -3,7 +3,7 @@ /* * Name: Smoothly * Description: Theme optimized for iPad/iPad2 - * Version: 0.5 + * Version: 0.6 * Author: Alex * Maintainer: Alex * Screenshot: Screenshot From 77aee41280484d712bfcb73c89633a617c7977b0 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Wed, 12 Sep 2012 15:49:18 +0200 Subject: [PATCH 057/140] modified: view/theme/smoothly/style.css --- view/theme/smoothly/style.css | 80 +++++++++++++++++------------------ 1 file changed, 39 insertions(+), 41 deletions(-) diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index f501877d2..a34cc0e18 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -176,34 +176,39 @@ section { } .button { - border: none; + border: 1px solid #7C7D7B; + box-shadow: 0 0 8px #BDBDBD; + -moz-box-shadow: 3px 3px 4px #959494; + -webkit-box-shadow: 3px 3px 4px #959494; + border-radius: 5px 5px 5px 5px; font-size: 1em; - -moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - box-shadow:inset 0px 1px 0px 0px #cfcfcf; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); - background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); - background-color:#bdbdbd; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; - color:#efefef; - text-align: center; + box-shadow: inset 0px 0px 0px 0px #cfcfcf; + -moz-box-shadow:inset 0px 0px 0px 0px #cfcfcf; + -webkit-box-shadow:inset 0px 0px 0px 0px #cfcfcf; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); + background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); + background-color: #bdbdbd; + color: #efefef; + text-align: center; } .button:hover { - border: none; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; - color: #efefef; + border: 1px solid #7C7D7B; + box-shadow: 0 0 8px #BDBDBD; + -moz-box-shadow: 3px 3px 4px #959494; + -webkit-box-shadow: 3px 3px 4px #959494; + border-radius: 5px 5px 5px 5px; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; + color: #efefef; } .button:active { - position:relative; - top:1px; + position: relative; + top: 1px; } .button a { @@ -300,21 +305,13 @@ nav { height: 40px; position: fixed; color: #efefef; - /*background: url("nav-bg.png") no-repeat scroll 0px 0px transparent;*/ - /*background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #7c7d7b), color-stop(1, #555753) );*/ - /*background:-moz-linear-gradient( center top, #7c7d7b 5%, #555753 100% );*/ - /*filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7c7d7b', endColorstr='#555753');*/ - /*background-color:#7c7d7b;*/ margin-bottom: 16px; font-size: 15px; - /*border-bottom: 1px solid #494948;*/ - background: -moz-linear-gradient(center top , #BDBDBD 5%, #A2A2A2 100%) repeat scroll 0 0 #BDBDBD; - /*background-color: #f3f3f3;*/ - border: 1px solid #C5C5C5; /*1px solid #dddddd;*/ - -moz-box-shadow: 3px 3px 4px #959494; - -webkit-box-shadow: 3px 3px 4px #959494; - box-shadow: 0 0 8px #BDBDBD; /*3px 3px 4px #959494;*/ + border: 1px solid #7C7D7B; + box-shadow: 0 0 8px #BDBDBD; + -moz-box-shadow: 3px 3px 4px #959494; + -webkit-box-shadow: 3px 3px 4px #959494; border-radius: 5px 5px 5px 5px; } nav a { text-decoration: none; color: #eeeeec; border:0px;} @@ -334,9 +331,9 @@ nav #banner #logo-text a { } nav #user-menu { display: block; - width: 190px; /*240*/ + width: 190px; float: right; - margin-right: 5px; /*20%*/ + margin-right: 5px; margin-top: 3px; padding: 5px; position: relative; @@ -348,7 +345,7 @@ nav #user-menu { -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; - border: 1px solid #9A9A9A; + border: 1px solid #7C7D8B; color:#efefef; text-decoration:none; text-align: center; @@ -1788,12 +1785,13 @@ margin-left: 0px; .mail-list-sender { float: left; - padding: 5px; + padding: 2px; background-color: #efefef; - border: 1px dotted #eeeeee; - -moz-box-shadow: 3px 3px 4px #959494; - -webkit-box-shadow: 3px 3px 4px #959494; - box-shadow: 3px 3px 4px #959494; + border: 1px solid #C5C5C5; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 0 8px #BDBDBD; + -moz-box-shadow: 3px 3px 4px #959494; + -webkit-box-shadow: 3px 3px 4px #959494; } .mail-list-detail { From a3add1d851bdf6739cd1468967b88eab514ead20 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Wed, 12 Sep 2012 16:20:44 +0200 Subject: [PATCH 058/140] modified: view/theme/smoothly/profile_vcard.tpl modified: view/theme/smoothly/style.css --- view/theme/smoothly/profile_vcard.tpl | 2 +- view/theme/smoothly/style.css | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/view/theme/smoothly/profile_vcard.tpl b/view/theme/smoothly/profile_vcard.tpl index f798c58ea..6d5fb10b7 100644 --- a/view/theme/smoothly/profile_vcard.tpl +++ b/view/theme/smoothly/profile_vcard.tpl @@ -3,7 +3,7 @@ {{ if $pdesc }}
$profile.pdesc
{{ endif }} -
$profile.name
+
$profile.name
diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index a34cc0e18..a19f13372 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -504,8 +504,8 @@ aside a{ .vcard #profile-photo-wrapper { margin: 10px 0px; - padding: 12px; - width: 175px; + padding: 6px; + width: auto; background: none repeat scroll 0 0 #FFFFFF; /*background-color: #f3f3f3;*/ border: 1px solid #C5C5C5; /*1px solid #dddddd;*/ From e3d20b51c8e075157b8e3aae2d6ac6d25c8654ad Mon Sep 17 00:00:00 2001 From: pixelroot Date: Wed, 12 Sep 2012 16:27:31 +0200 Subject: [PATCH 059/140] modified: view/theme/smoothly/style.css --- view/theme/smoothly/style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index a19f13372..acb7c435a 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -328,6 +328,7 @@ nav #banner #logo-text a { font-size: 40px; font-weight: bold; margin-left: 3px; + text-shadow: #7C7D7B 3px 3px 5px; } nav #user-menu { display: block; From 864e2c03d9b5f7868f2286b0c34034af592847ab Mon Sep 17 00:00:00 2001 From: pixelroot Date: Wed, 12 Sep 2012 17:25:44 +0200 Subject: [PATCH 060/140] modified: view/theme/smoothly/style.css --- view/theme/smoothly/style.css | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index acb7c435a..361199525 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -263,13 +263,13 @@ section { border-radius: 5px; border: 1px solid #494948; background-color: #2e3436; - opacity:50%; + opacity: 50%; color: #eeeeec; padding:1em; z-index: 200; - -moz-box-shadow: 7px 7px 12px #434343; - -webkit-box-shadow: 7px75px 12px #434343; box-shadow: 7px 7px 10px #434343; + -moz-box-shadow: 7px 7px 12px #434343; + -webkit-box-shadow: 7px75px 12px #434343; } /* ========= */ @@ -307,7 +307,9 @@ nav { color: #efefef; margin-bottom: 16px; font-size: 15px; + background-color: #BDBDBD; background: -moz-linear-gradient(center top , #BDBDBD 5%, #A2A2A2 100%) repeat scroll 0 0 #BDBDBD; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); border: 1px solid #7C7D7B; box-shadow: 0 0 8px #BDBDBD; -moz-box-shadow: 3px 3px 4px #959494; @@ -335,7 +337,7 @@ nav #user-menu { width: 190px; float: right; margin-right: 5px; - margin-top: 3px; + margin-top: 4px; padding: 5px; position: relative; vertical-align: middle; From ae0b830b7c5b0aee40d0a46367d5da6c47b7a2b2 Mon Sep 17 00:00:00 2001 From: Thomas Willingham Date: Wed, 12 Sep 2012 22:12:08 +0100 Subject: [PATCH 061/140] Couple of spare smiley images removed. Should have been deleted when these got moved to smiley_pack --- images/smiley-beard.png | Bin 1094 -> 0 bytes images/smiley-whitebeard.png | Bin 1060 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 images/smiley-beard.png delete mode 100644 images/smiley-whitebeard.png diff --git a/images/smiley-beard.png b/images/smiley-beard.png deleted file mode 100644 index 5d4b28463f6d1b09991299734da0a0fdbbf285ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1094 zcmV-M1iAZ(P)Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RX0|pj23M2yA-v9srLUct~bVF}# zZDnqB07FtmK~zstIv{6cEoyLOXCQVlE-)Y{b#rNMXCO&RM<7a2MMofZHZmzJAaQkJ zY-x0PAUz;4Ffa4?JXdVOr zL{)(l@JJmX;K{#~Zl6_~&JxEBB$K5p>Y-RXAW?CQBq<;n@Js^;0r2RUb#1?~`X|3# zJE^0?e-VXCs10x^7G-IvPiJOtuz&b1aSGt>(h=1fs@qUtqx==6*$;K_!F6y;WW5&F zZXrfV-F8%VvtH?DwY-;o!>@{Ekc?3b0;*NwL{Y8r>(o(AHqd6dTTj1%e*96Sapj;^ zmPhpIC(%pa9MHyEzg8B|@}0M}9xG1UFphwXf%5Y2^cEX<0?oLapRT}#FRK_Y$KvuD zzg&est}oz=As@n0=~{a(s-TL8`eaPZ^pBtG%EBUH7_fh2fD^BD)3>XFv41nL*D?Mc z96L6Gb%wL&=DG6oMP7XA2Zlxup=uDDq>|!V zs(sAOhD=OMQ7ZXZ*NvD!PK}>uaPU#QwUyhPKl=%Zb%+*;w(Vw5e>b0tz673+I1A)RDU!NEyHm{q5!Qx`jvfJ%C2a|ULjX@yDfILKyFgR&(RS9$ zG0oVptM4K1tSo`868I3e9ET2%@!IJRB|@O@})1(Oo5kAydzF`aNh$v5NUy$wrW)^s){;AZHwbPx#32;bRa{vGf6951U69E94oEQKA00(qQO+^RX0|pj40fFXX)c^nhLUct~bVF}# zZDnqB07FtmK~zstIv{6cEoyLOXCQVlE-)Y{b#rNMXCO&RM<7a2MMofZHZmzJAaQkJ zY-x0PAUz;4Ffag_u6|INeD1xzz~SZLzNH!3)TW2d;kfG4vgCX3ZOa|05Fn(Y)aq( z1CedhZhkHAZ<9_YSXZE2U7)_}xT)6PAtX+&0Ejw`n69Lg2=p(CNsRp1dTy+03@5=>;B!(dG48n5H^^LbG+{X z5HycCKr*P&-8{&P$38MSM{q_MV?Y{_ra~HU^|zDCdnoNz^~o~&@{6iQ{nwQ|JfXKw zp2vMMC7wRm<>-+ixdLa;4mkD3X)2|NsIWk( z_CCF>H+ka8f{`p{dwZK!^O_DH-j9oG$a@G)?zg_7Ub#%6utu;M!S7`>K1!iPRG?HWW5_XNL@w~bnfF*-S>d~H&(msdaO3(K%O8J6kmZ#V$AAe^#%P=ZF<>!1 z%jqQ@mCFU@D!T|cEFPH9`uirAuil{E*v-k;UZqs4fntJ*84mgsBT+2R8wk^@ZS^{G zkx0Fx(O5zVOFFX->=+6=n;>F5*`g4Ga}@&+K_K8*?{p{@W2)6E)|SXA;wbL$1i%RL zET!9Rk>@Fk3;S@TnY%*>v!}`!jk=mldXl^pq#M_7Y0w{OJjoR#1xf9DO)1}EkUUhs z*PVGy7zNEH4-AJR#gV1I*}>;S_UxTE-Ckd%N|hu@a5iT5;(jw%Y=G=++v(aS$YYom zgWu*+=Yh(#Dz(~z$*~x~5qLc8E6pa%&o3FtAp-{OU}qMYg*;O=Ktx~+(*J+}X4*Z> e#J4*~fd2qjcOya))CaTx0000 Date: Wed, 12 Sep 2012 17:18:10 -0700 Subject: [PATCH 062/140] rev update --- boot.php | 2 +- util/messages.po | 56 ++++++++++++++++++++++++++---------------------- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/boot.php b/boot.php index f56f2fc0f..5d08e7cec 100644 --- a/boot.php +++ b/boot.php @@ -11,7 +11,7 @@ require_once('include/cache.php'); require_once('library/Mobile_Detect/Mobile_Detect.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1463' ); +define ( 'FRIENDICA_VERSION', '3.0.1464' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1154 ); diff --git a/util/messages.po b/util/messages.po index e34abcab9..694414f4a 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1463\n" +"Project-Id-Version: 3.0.1464\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-09-11 10:00-0700\n" +"POT-Creation-Date: 2012-09-12 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -47,8 +47,8 @@ msgstr "" #: ../../mod/group.php:19 ../../mod/viewcontacts.php:22 #: ../../mod/register.php:38 ../../mod/regmod.php:116 ../../mod/item.php:126 #: ../../mod/item.php:142 ../../mod/mood.php:114 -#: ../../mod/profile_photo.php:19 ../../mod/profile_photo.php:142 -#: ../../mod/profile_photo.php:153 ../../mod/profile_photo.php:166 +#: ../../mod/profile_photo.php:19 ../../mod/profile_photo.php:169 +#: ../../mod/profile_photo.php:180 ../../mod/profile_photo.php:193 #: ../../mod/message.php:38 ../../mod/message.php:168 #: ../../mod/allfriends.php:9 ../../mod/nogroup.php:25 #: ../../mod/wall_upload.php:64 ../../mod/follow.php:9 @@ -398,10 +398,10 @@ msgid "Contact information unavailable" msgstr "" #: ../../mod/photos.php:149 ../../mod/photos.php:653 ../../mod/photos.php:1073 -#: ../../mod/photos.php:1088 ../../mod/profile_photo.php:60 -#: ../../mod/profile_photo.php:67 ../../mod/profile_photo.php:74 -#: ../../mod/profile_photo.php:177 ../../mod/profile_photo.php:261 -#: ../../mod/profile_photo.php:270 +#: ../../mod/photos.php:1088 ../../mod/profile_photo.php:74 +#: ../../mod/profile_photo.php:81 ../../mod/profile_photo.php:88 +#: ../../mod/profile_photo.php:204 ../../mod/profile_photo.php:296 +#: ../../mod/profile_photo.php:305 #: ../../addon/communityhome/communityhome.php:111 #: ../../view/theme/diabook/theme.php:599 ../../include/user.php:318 #: ../../include/user.php:325 ../../include/user.php:332 @@ -444,12 +444,12 @@ msgstr "" msgid "Image file is empty." msgstr "" -#: ../../mod/photos.php:729 ../../mod/profile_photo.php:126 +#: ../../mod/photos.php:729 ../../mod/profile_photo.php:153 #: ../../mod/wall_upload.php:110 msgid "Unable to process image." msgstr "" -#: ../../mod/photos.php:756 ../../mod/profile_photo.php:266 +#: ../../mod/photos.php:756 ../../mod/profile_photo.php:301 #: ../../mod/wall_upload.php:136 msgid "Image upload failed." msgstr "" @@ -2367,7 +2367,7 @@ msgstr "" msgid "Profile is not published." msgstr "" -#: ../../mod/settings.php:944 ../../mod/profile_photo.php:214 +#: ../../mod/settings.php:944 ../../mod/profile_photo.php:248 msgid "or" msgstr "" @@ -2771,7 +2771,7 @@ msgstr "" msgid "Profile" msgstr "" -#: ../../mod/newmember.php:36 ../../mod/profile_photo.php:211 +#: ../../mod/newmember.php:36 ../../mod/profile_photo.php:244 msgid "Upload Profile Photo" msgstr "" @@ -3193,61 +3193,65 @@ msgstr "" msgid "Set your current mood and tell your friends" msgstr "" -#: ../../mod/profile_photo.php:30 +#: ../../mod/profile_photo.php:44 msgid "Image uploaded but image cropping failed." msgstr "" -#: ../../mod/profile_photo.php:63 ../../mod/profile_photo.php:70 -#: ../../mod/profile_photo.php:77 ../../mod/profile_photo.php:273 +#: ../../mod/profile_photo.php:77 ../../mod/profile_photo.php:84 +#: ../../mod/profile_photo.php:91 ../../mod/profile_photo.php:308 #, php-format msgid "Image size reduction [%s] failed." msgstr "" -#: ../../mod/profile_photo.php:91 +#: ../../mod/profile_photo.php:118 msgid "" "Shift-reload the page or clear browser cache if the new photo does not " "display immediately." msgstr "" -#: ../../mod/profile_photo.php:101 +#: ../../mod/profile_photo.php:128 msgid "Unable to process image" msgstr "" -#: ../../mod/profile_photo.php:117 ../../mod/wall_upload.php:88 +#: ../../mod/profile_photo.php:144 ../../mod/wall_upload.php:88 #, php-format msgid "Image exceeds size limit of %d" msgstr "" -#: ../../mod/profile_photo.php:210 +#: ../../mod/profile_photo.php:242 msgid "Upload File:" msgstr "" -#: ../../mod/profile_photo.php:212 +#: ../../mod/profile_photo.php:243 +msgid "Select a profile:" +msgstr "" + +#: ../../mod/profile_photo.php:245 #: ../../addon/dav/friendica/layout.fnk.php:152 msgid "Upload" msgstr "" -#: ../../mod/profile_photo.php:214 +#: ../../mod/profile_photo.php:248 msgid "skip this step" msgstr "" -#: ../../mod/profile_photo.php:214 +#: ../../mod/profile_photo.php:248 msgid "select a photo from your photo albums" msgstr "" -#: ../../mod/profile_photo.php:227 +#: ../../mod/profile_photo.php:262 msgid "Crop Image" msgstr "" -#: ../../mod/profile_photo.php:228 +#: ../../mod/profile_photo.php:263 msgid "Please adjust the image cropping for optimum viewing." msgstr "" -#: ../../mod/profile_photo.php:230 +#: ../../mod/profile_photo.php:265 msgid "Done Editing" msgstr "" -#: ../../mod/profile_photo.php:264 +#: ../../mod/profile_photo.php:299 msgid "Image uploaded successfully." msgstr "" From db09724aec91a55ba76d8e0cd451a91895bc1e9c Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 12 Sep 2012 17:19:26 -0700 Subject: [PATCH 063/140] use local photo for tag notifications if available --- include/items.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/include/items.php b/include/items.php index 7b43bf500..2f5b5f1f7 100755 --- a/include/items.php +++ b/include/items.php @@ -1184,6 +1184,15 @@ function tag_deliver($uid,$item_id) { // send a notification + // use a local photo if we have one + + $r = q("select thumb from contact where uid = %d and nurl = '%s' limit 1", + intval($u[0]['uid']), + dbesc(normalise_link($item['author-link'])) + ); + $photo = (($r && count($r)) ? $r[0]['thumb'] : $item['author-avatar']); + + require_once('include/enotify.php'); notification(array( 'type' => NOTIFY_TAGSELF, @@ -1196,7 +1205,7 @@ function tag_deliver($uid,$item_id) { 'link' => $a->get_baseurl() . '/display/' . $u[0]['nickname'] . '/' . $item['id'], 'source_name' => $item['author-name'], 'source_link' => $item['author-link'], - 'source_photo' => $item['author-avatar'], + 'source_photo' => $photo, 'verb' => ACTIVITY_TAG, 'otype' => 'item' )); From f4e3f335efb2d81a84d86434afb022b52481979a Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 12 Sep 2012 18:53:20 -0700 Subject: [PATCH 064/140] don't allow followers to get a post through unless it's a tag deliver --- include/items.php | 91 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 73 insertions(+), 18 deletions(-) diff --git a/include/items.php b/include/items.php index 2f5b5f1f7..f70e96fcb 100755 --- a/include/items.php +++ b/include/items.php @@ -1256,6 +1256,59 @@ function tag_deliver($uid,$item_id) { +function tgroup_check($uid,$item) { + + $a = get_app(); + + $mention = false; + + // check that the message originated elsewhere and is a top-level post + + if(($item['wall']) || ($item['origin']) || ($item['uri'] != $item['parent-uri'])) + return false; + + + $u = q("select * from user where uid = %d limit 1", + intval($uid) + ); + if(! count($u)) + return false; + + $community_page = (($u[0]['page-flags'] == PAGE_COMMUNITY) ? true : false); + $prvgroup = (($u[0]['page-flags'] == PAGE_PRVGROUP) ? true : false); + + + $link = normalise_link($a->get_baseurl() . '/profile/' . $u[0]['nickname']); + + // Diaspora uses their own hardwired link URL in @-tags + // instead of the one we supply with webfinger + + $dlink = normalise_link($a->get_baseurl() . '/u/' . $u[0]['nickname']); + + $cnt = preg_match_all('/[\@\!]\[url\=(.*?)\](.*?)\[\/url\]/ism',$item['body'],$matches,PREG_SET_ORDER); + if($cnt) { + foreach($matches as $mtch) { + if(link_compare($link,$mtch[1]) || link_compare($dlink,$mtch[1])) { + $mention = true; + logger('tgroup_check: mention found: ' . $mtch[2]); + } + } + } + + if(! $mention) + return false; + + if((! $community_page) && (! $prvgroup)) + return false; + + + + return true; + +} + + + @@ -1812,6 +1865,12 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) if($pass == 1) continue; + // not allowed to post + + if($contact['rel'] == CONTACT_IS_FOLLOWER) + continue; + + // Have we seen it? If not, import it. $item_id = $item->get_id(); @@ -2086,6 +2145,14 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) $datarray['owner-avatar'] = $contact['thumb']; } + // We've allowed "followers" to reach this point so we can decide if they are + // posting an @-tag delivery, which followers are allowed to do for certain + // page types. Now that we've parsed the post, let's check if it is legit. Otherwise ignore it. + + if(($contact['rel'] == CONTACT_IS_FOLLOWER) && (! tgroup_check($importer['uid'],$datarray))) + continue; + + $r = item_store($datarray); continue; @@ -2708,15 +2775,6 @@ function local_delivery($importer,$data) { } - // TODO: make this next part work against both delivery threads of a community post - -// if((! link_compare($datarray['author-link'],$importer['url'])) && (! $community)) { -// logger('local_delivery: received relay claiming to be from ' . $importer['url'] . ' however comment author url is ' . $datarray['author-link'] ); - // they won't know what to do so don't report an error. Just quietly die. -// return 0; -// } - - // our user with $importer['importer_uid'] is the owner $own = q("select name,url,thumb from contact where uid = %d and self = 1 limit 1", intval($importer['importer_uid']) @@ -2786,15 +2844,6 @@ function local_delivery($importer,$data) { } } -// if($community) { -// $newtag = '@[url=' . $a->get_baseurl() . '/profile/' . $importer['nickname'] . ']' . $importer['username'] . '[/url]'; -// if(! stristr($datarray['tag'],$newtag)) { -// if(strlen($datarray['tag'])) -// $datarray['tag'] .= ','; -// $datarray['tag'] .= $newtag; -// } -// } - $posted_id = item_store($datarray); $parent = 0; @@ -2864,6 +2913,9 @@ function local_delivery($importer,$data) { $item_id = $item->get_id(); $datarray = get_atom_elements($feed,$item); + if($importer['rel'] == CONTACT_IS_FOLLOWER) + continue; + $r = q("SELECT `uid`, `last-child`, `edited`, `body` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($item_id), intval($importer['importer_uid']) @@ -3098,6 +3150,9 @@ function local_delivery($importer,$data) { $datarray['owner-avatar'] = $importer['thumb']; } + if(($importer['rel'] == CONTACT_IS_FOLLOWER) && (! tgroup_check($importer['importer_uid'],$datarray))) + continue; + $posted_id = item_store($datarray); if(stristr($datarray['verb'],ACTIVITY_POKE)) { From 3ea5001bb0908f81349d0b5924de089ca1062642 Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 12 Sep 2012 19:35:28 -0700 Subject: [PATCH 065/140] allow events to be ignored --- boot.php | 2 +- database.sql | 4 +++- update.php | 10 +++++++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/boot.php b/boot.php index 5d08e7cec..c0a7a0e29 100644 --- a/boot.php +++ b/boot.php @@ -13,7 +13,7 @@ require_once('library/Mobile_Detect/Mobile_Detect.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_VERSION', '3.0.1464' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); -define ( 'DB_UPDATE_VERSION', 1154 ); +define ( 'DB_UPDATE_VERSION', 1155 ); define ( 'EOL', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/database.sql b/database.sql index 6ba4921cb..da3462a75 100644 --- a/database.sql +++ b/database.sql @@ -260,6 +260,7 @@ CREATE TABLE IF NOT EXISTS `event` ( `type` char(255) NOT NULL, `nofinish` tinyint(1) NOT NULL DEFAULT '0', `adjust` tinyint(1) NOT NULL DEFAULT '1', + `ignore` tinyint(1) NOT NULL DEFAULT '0', `allow_cid` mediumtext NOT NULL, `allow_gid` mediumtext NOT NULL, `deny_cid` mediumtext NOT NULL, @@ -271,7 +272,8 @@ CREATE TABLE IF NOT EXISTS `event` ( KEY `type` ( `type` ), KEY `start` ( `start` ), KEY `finish` ( `finish` ), - KEY `adjust` ( `adjust` ) + KEY `adjust` ( `adjust` ), + KEY `ignore` ( `ignore` ), ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -------------------------------------------------------- diff --git a/update.php b/update.php index 19e6cf3bd..cf6fa138e 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ Date: Wed, 12 Sep 2012 21:35:51 -0600 Subject: [PATCH 066/140] add mobile toggle to frost mobile --- boot.php | 33 +++++++++++++++++++++---- mod/toggle_mobile.php | 17 +++++++++++++ view/theme/frost-mobile/default.php | 8 +++++- view/theme/frost-mobile/login-style.css | 6 +++++ view/theme/frost-mobile/style.css | 4 +-- 5 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 mod/toggle_mobile.php diff --git a/boot.php b/boot.php index c0a7a0e29..758193450 100644 --- a/boot.php +++ b/boot.php @@ -1511,14 +1511,20 @@ if(! function_exists('current_theme')) { $is_mobile = $mobile_detect->isMobile() || $mobile_detect->isTablet(); if($is_mobile) { - $system_theme = ((isset($a->config['system']['mobile-theme'])) ? $a->config['system']['mobile-theme'] : ''); - $theme_name = ((isset($_SESSION) && x($_SESSION,'mobile-theme')) ? $_SESSION['mobile-theme'] : $system_theme); - - if($theme_name === '---') { - // user has selected to have the mobile theme be the same as the normal one + if(isset($_SESSION['show-mobile']) && !$_SESSION['show-mobile']) { $system_theme = ''; $theme_name = ''; } + else { + $system_theme = ((isset($a->config['system']['mobile-theme'])) ? $a->config['system']['mobile-theme'] : ''); + $theme_name = ((isset($_SESSION) && x($_SESSION,'mobile-theme')) ? $_SESSION['mobile-theme'] : $system_theme); + + if($theme_name === '---') { + // user has selected to have the mobile theme be the same as the normal one + $system_theme = ''; + $theme_name = ''; + } + } } if(!$is_mobile || ($system_theme === '' && $theme_name === '')) { $system_theme = ((isset($a->config['system']['theme'])) ? $a->config['system']['theme'] : ''); @@ -1760,3 +1766,20 @@ function build_querystring($params, $name=null) { } return $ret; } + +/** +* Returns the complete URL of the current page, e.g.: http(s)://something.com/network +* +* Taken from http://webcheatsheet.com/php/get_current_page_url.php +*/ +function curPageURL() { + $pageURL = 'http'; + if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} + $pageURL .= "://"; + if ($_SERVER["SERVER_PORT"] != "80" && $_SERVER["SERVER_PORT"] != "443") { + $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; + } else { + $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; + } + return $pageURL; +} diff --git a/mod/toggle_mobile.php b/mod/toggle_mobile.php new file mode 100644 index 000000000..00991e44c --- /dev/null +++ b/mod/toggle_mobile.php @@ -0,0 +1,17 @@ +get_baseurl(); + + goaway($address); +} + diff --git a/view/theme/frost-mobile/default.php b/view/theme/frost-mobile/default.php index d076c10f0..c2a20255f 100644 --- a/view/theme/frost-mobile/default.php +++ b/view/theme/frost-mobile/default.php @@ -21,6 +21,9 @@
+
@@ -33,7 +36,10 @@
module === 'contacts') && x($page,'aside')) echo $page['aside']; ?> -
+ diff --git a/view/theme/frost-mobile/login-style.css b/view/theme/frost-mobile/login-style.css index 5c07aba77..37661cfbc 100644 --- a/view/theme/frost-mobile/login-style.css +++ b/view/theme/frost-mobile/login-style.css @@ -152,3 +152,9 @@ div.section-wrapper { #login-submit-wrapper { text-align: center; } + +footer { + text-align: center; + padding-top: 3em; + padding-bottom: 1em; +} diff --git a/view/theme/frost-mobile/style.css b/view/theme/frost-mobile/style.css index ef08bcb3f..c58a32df6 100644 --- a/view/theme/frost-mobile/style.css +++ b/view/theme/frost-mobile/style.css @@ -393,8 +393,8 @@ section { /* footer */ footer { - display: none; - + text-align: center; + padding-bottom: 1em; } .birthday-today, .event-today { From 4ba7ce03083412f9743484df638394c32df3d2cc Mon Sep 17 00:00:00 2001 From: pixelroot Date: Thu, 13 Sep 2012 09:34:50 +0200 Subject: [PATCH 067/140] modified: view/theme/smoothly/peoplefind.tpl modified: view/theme/smoothly/style.css --- view/theme/smoothly/peoplefind.tpl | 6 +-- view/theme/smoothly/style.css | 87 ++++++++++++------------------ 2 files changed, 37 insertions(+), 56 deletions(-) diff --git a/view/theme/smoothly/peoplefind.tpl b/view/theme/smoothly/peoplefind.tpl index 106abdb1e..00b7174b0 100644 --- a/view/theme/smoothly/peoplefind.tpl +++ b/view/theme/smoothly/peoplefind.tpl @@ -4,9 +4,9 @@ - - - + + + {{ if $inv }} {{ endif }} diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index 361199525..5fda70698 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -3,7 +3,7 @@ Smoothly Created by Anne Walk and Devlon Duthie on 2011-09-24 - Modified by alex@friendica.pixelbits.de on 2012-09-12 + Modified by alex@friendica.pixelbits.de on 2012-09-13 ** Colors ** @@ -106,30 +106,27 @@ input[type=text-sidebar] { input[type=submit] { margin: 10px; - border: none; font-size: 0.9em; padding: 5px; - -moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - box-shadow:inset 0px 1px 0px 0px #cfcfcf; background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); background-color:#bdbdbd; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; color:#efefef; text-align: center; + border: 1px solid #7C7D7B; + border-radius: 5px 5px 5px 5px; } input[type=submit]:hover { - border: none; background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); background-color:#1873a2; color: #efefef; + border: 1px solid #7C7D7B; + box-shadow: 0 0 8px #BDBDBD; + border-radius: 5px 5px 5px 5px; } input[type=submit]:active { position:relative; @@ -143,7 +140,7 @@ input[type=submit]:active { section { float: left; - padding-top: 40px; /*60*/ + padding-top: 45px; /*60*/ width: 730px; font-size: 0.9em; line-height: 1.2em; @@ -164,11 +161,6 @@ section { border: 1px solid #C5C5C5; border-radius: 3px 3px 3px 3px; box-shadow: 0 0 8px #BDBDBD; - /*background-color: #efefef; - border: 1px solid #dddddd; - -moz-box-shadow: 3px 3px 4px #959494; - -webkit-box-shadow: 3px 3px 4px #959494; - box-shadow: 3px 3px 4px #959494;*/ } #wall-item-lock { @@ -177,14 +169,8 @@ section { .button { border: 1px solid #7C7D7B; - box-shadow: 0 0 8px #BDBDBD; - -moz-box-shadow: 3px 3px 4px #959494; - -webkit-box-shadow: 3px 3px 4px #959494; border-radius: 5px 5px 5px 5px; font-size: 1em; - box-shadow: inset 0px 0px 0px 0px #cfcfcf; - -moz-box-shadow:inset 0px 0px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 0px 0px 0px #cfcfcf; background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); @@ -196,8 +182,8 @@ section { .button:hover { border: 1px solid #7C7D7B; box-shadow: 0 0 8px #BDBDBD; - -moz-box-shadow: 3px 3px 4px #959494; - -webkit-box-shadow: 3px 3px 4px #959494; + /* -moz-box-shadow: 3px 3px 4px #959494; + -webkit-box-shadow: 3px 3px 4px #959494;*/ border-radius: 5px 5px 5px 5px; background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); @@ -312,8 +298,8 @@ nav { background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); border: 1px solid #7C7D7B; box-shadow: 0 0 8px #BDBDBD; - -moz-box-shadow: 3px 3px 4px #959494; - -webkit-box-shadow: 3px 3px 4px #959494; + /* -moz-box-shadow: 3px 3px 4px #959494; + -webkit-box-shadow: 3px 3px 4px #959494;*/ border-radius: 5px 5px 5px 5px; } nav a { text-decoration: none; color: #eeeeec; border:0px;} @@ -628,7 +614,6 @@ h3#search:before { -webkit-border-radius:5px; border-radius:5px; color:#7c7d7b; - /*text-shadow:-1px 0px 0px #bdbdbd;*/ border: 1px solid #cdcdcd; } @@ -637,20 +622,16 @@ h3#search:before { width: 165px; margin: auto; margin-left: 10px; /*40*/ - -moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - box-shadow:inset 0px 1px 0px 0px #cfcfcf; background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); background-color:#bdbdbd; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; display:inline-block; color:#efefef; text-decoration:none; text-align: center; + border: 1px solid #7C7D7B; + border-radius: 5px 5px 5px 5px; } @@ -659,6 +640,9 @@ h3#search:before { background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); background-color:#1873a2; + border: 1px solid #7C7D7B; + box-shadow: 0 0 8px #BDBDBD; + border-radius: 5px 5px 5px 5px; } #sidebar-new-group:active { @@ -1103,7 +1087,7 @@ profile-jot-banner-wrapper { .wall-item-location .icon { float: left; } .wall-item-location > a { margin-left: 0px; /*25*/ - margin-right: 2px; + margin-right: 3px; font-size: 0.9em; display: block; font-variant:small-caps; @@ -2073,20 +2057,16 @@ margin-left: 0px; width: 158px; padding: 10px; margin: auto 10px 20px; - -moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - box-shadow:inset 0px 1px 0px 0px #cfcfcf; background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); background-color:#bdbdbd; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; padding: 5px 10px 5px 10px; color: #efefef; font-size: 1.1em; text-align: center; + border: 1px solid #7C7D7B; + border-radius: 5px 5px 5px 5px; } #side-match-link:hover { @@ -2095,6 +2075,9 @@ margin-left: 0px; background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); background-color:#1873a2; + border: 1px solid #7C7D7B; + box-shadow: 0 0 8px #BDBDBD; + border-radius: 5px 5px 5px 5px; } #side-match-link:active { @@ -2112,20 +2095,16 @@ margin-left: 0px; padding: 10px; margin: auto; margin-bottom: 20px; - -moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - box-shadow:inset 0px 1px 0px 0px #cfcfcf; background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); background-color:#bdbdbd; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; padding: 5px 10px 5px 10px; color: #efefef; font-size: 1.1em; - text-align: center; + text-align: center; + border: 1px solid #7C7D7B; + border-radius: 5px 5px 5px 5px; } #side-invite-link:hover { @@ -2134,6 +2113,9 @@ margin-left: 0px; background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); background-color:#1873a2; + border: 1px solid #7C7D7B; + box-shadow: 0 0 8px #BDBDBD; + border-radius: 5px 5px 5px 5px; } @@ -2152,20 +2134,16 @@ margin-left: 0px; padding: 10px; margin: auto; margin-bottom: 20px; - -moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - box-shadow:inset 0px 1px 0px 0px #cfcfcf; background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); background-color:#bdbdbd; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; padding: 5px 10px 5px 10px; color: #efefef; font-size: 1.1em; - text-align: center; + text-align: center; + border: 1px solid #7C7D7B; + border-radius: 5px 5px 5px 5px; } #side-suggest-link:hover { @@ -2174,6 +2152,9 @@ margin-left: 0px; background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); background-color:#1873a2; + border: 1px solid #7C7D7B; + box-shadow: 0 0 8px #BDBDBD; + border-radius: 5px 5px 5px 5px; } #side-suggest-link:active { From 16e35d17874a86f4dea13c76952ca057b4236181 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Thu, 13 Sep 2012 09:35:12 +0200 Subject: [PATCH 068/140] new file: view/theme/smoothly/message_side.tpl --- view/theme/smoothly/message_side.tpl | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 view/theme/smoothly/message_side.tpl diff --git a/view/theme/smoothly/message_side.tpl b/view/theme/smoothly/message_side.tpl new file mode 100644 index 000000000..a35c74ed9 --- /dev/null +++ b/view/theme/smoothly/message_side.tpl @@ -0,0 +1,13 @@ +
+
+ + +
    + {{ for $tabs as $t }} +
  • + $t.label +
  • + {{ endfor }} +
+ +
From 931e1c6c66d5aff01f63fa59b611bf08ec13954e Mon Sep 17 00:00:00 2001 From: pixelroot Date: Thu, 13 Sep 2012 09:48:02 +0200 Subject: [PATCH 069/140] modified: view/theme/smoothly/style.css --- view/theme/smoothly/style.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index 5fda70698..59e4c2d5f 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -3,7 +3,7 @@ Smoothly Created by Anne Walk and Devlon Duthie on 2011-09-24 - Modified by alex@friendica.pixelbits.de on 2012-09-13 + Modified by alex@friendica.pixelbits.de on 2012-09-12 ** Colors ** @@ -3324,3 +3324,7 @@ hr.line-dots { } #scrollup a:hover{text-decoration:none;border:0;} +.shiny { +background: #2e3436; +border-radius: 5px; +} \ No newline at end of file From 2b9c2b2d1d2f2be1f38f0dc7715d6c3b97597339 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Thu, 13 Sep 2012 09:54:27 +0200 Subject: [PATCH 070/140] modified: view/theme/smoothly/style.css --- view/theme/smoothly/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index 59e4c2d5f..c5430ba69 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -3325,6 +3325,6 @@ hr.line-dots { #scrollup a:hover{text-decoration:none;border:0;} .shiny { -background: #2e3436; +background: #fbfde9; border-radius: 5px; } \ No newline at end of file From a1ed9c72c213a7e2ed8a138e06c4237f21ae3aa4 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Thu, 13 Sep 2012 11:41:14 +0200 Subject: [PATCH 071/140] modified: view/theme/smoothly/star.png modified: view/theme/smoothly/theme.php --- view/theme/smoothly/star.png | Bin 2129 -> 684 bytes view/theme/smoothly/theme.php | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/view/theme/smoothly/star.png b/view/theme/smoothly/star.png index a327ba14e462a494523d9d5be1195989b08b36ad..f03948faf2514b010c4ba132fbc530463cab8024 100644 GIT binary patch delta 661 zcmV;G0&4xy5Ud4|BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU! zPDw;TRCwBAG&VM7AOHk_SRcy12*e+dCC{8WgQA#;fiRE&;&>>QAf%WW1BHP&0E&eP zDP|$UKv4&spMoI9fh+8ylo|+fk-EItUl?Bv7usQyHE;< z&2{Ad!1(4+F}wzv0I?|$O9JsfB)M-u>^wQ`gNOh(L>R=*oh6V2WXc0E7f8&+1f-pT z5s04x@d-v?IxGP)O42>PivRzQFzv@LMg~*WUkn!NzffFo;wBrz>Dz1!9Bc^1Ak${< z;-Y@`JfNaUPpNtIlRieLv%)3DR9uz6dfH($- zr&^bb{rHef%NAPoFdKoGv3{@jQOip13VwLUn zZ`fFw|1&&%#mvyVfrnw@W*&y8Ze#%CZXro(`k^X>~4hNxa4P=VS8jmbGc+y%7Y z=Ck+AFrS2?XGQe9ECj@sK>Ry-vfx!9-3!D^kmRQT@z1Cpp&}ry04*$p2o(;XjQawJ vt3a`cCI>3VW`j}y5KjYQR&-wi1Q-C_lBqm|TMkIY00000NkvXXu0mjf2-qR% literal 2129 zcmZ8h3pf+%8=p&!&6Eg9TEpnJ86(!LT*9)MTji2z7S4x@eU49cNQa*7D)vFxC)8h!x261T1zje1vR6om@o}h zTzF|>zLN?Ck3*;!`AQN z#MCp|d*RNzSM}8KJ_u&j4ca3)QpRxQQgAQ-f||yRKD0TRk%0|8wzB2Alzq>ZEt)Y0pLsFkGC9KoruRjq@DJ_l~-En(7Z#}&dtm3hhGG6OK zramT}^yrVanmF&3`#l=mWu7B7KC;F~P58$Q`OB6_5Ghedl-u(BVdv{AjgI)k+i;bI zUgGxm#@&SO>5#^jlzIDh-G%cg2fu=5BVvAv&8HXcV3U`-m@d+p-xIrOrrDwy7udi^qLdFc_k>Irqx`1t^kfQ)YLDh*44KGm(fEHnJ&I;006AH zED8XAzAgZu5JL0z;rI{rBgW+D3=}?#l~=LVLuQU zxxVa1!k|AOoCsT(578a!z+h3KXapKz2E&1%P$-ra5{mJ3bov=Cw`^hI91atMM8?F# zAYv>K3|1HtWn*K5G&4t(1dq_TrqG$x0}h=MNXr35je zIkqs^a-m=6XPAmpRDBkkX#BAi9(nme`S^jV&xn$4lF8#!(e$c7?C);lFhgZ%T2a-qrJ3$<1{rFLJ`MRRv9qqiWH41VD zBQ!m<+PmJ<%1~uA0pVgFqFt+A+b^{wI#C$^Ed`0YmehRB!*0dpIlQ}8JuV4mx&)R6 z`LB3Zj?+r?8!F?MJk<*x8VEJl?80l}J)D^%69&=+DRS6$veRrZQu~}ip4duf7Q!Qv zV3}V+OD5B@a%LA|5&5$5Xr04W%5}WaK$G-0?=QWyH{AI5KG)LuTR52NWtSASpCSOM+Xu;B`>#O_UlyZi`jIxnl%)@mt~Rtl~|HL4FpBfBkK* znI5VimD^F8t-GT;N3>Pol+!8`^#(l+J&IXWzR}5klIMG*Ea)RQ-#Uz>C2N!8Ri+43zD5Z;!92h*!7kK|i(J@cbOe>-y&K00YH_A~pXB z9|V(hc~@ZzwDAgPhtS!{$yz(WY?~7HteJAKAhGbRm z3Y+d6vtqm$5YNeEDWMjX%&djC4>FEBOJ6l1k3>f+jetYU@dE*{@!xg5*l`5n_{$q) z0cbVaH^8eWVY0EzbZ`FV=fDQj#Z$*6nGa_YR(%*gYq0C6B4fC@!>_7O5#daXa}CYC zg|>+3uXm_vUZPSvG<)cc+(be-;>JK*K_;BAi|cQ9I{ zQrzbVFWeUikro-5pGPn{0DV$TTX&uSpZT^pGS9Qia(vG`Ba9%y*KBq9MmmJny8wr` zM??o`0)c01-0Z9mZ&7<7a;C&V0XNT3SK~EP+d{YLc%(+CaBHb|^;|zDv9Q`*34Z<# zneT)zI<8EKs$cC)KZZ?Vy*UcxHl>`)*M2#xh?IpS*nmwt>are{#O#4xcJ0i!g%HI= z+f;3&5HA)%@}Va82nKMB@a z_1_OdwfoiIkZNaB;rZ&$4 * Maintainer: Alex * Screenshot: Screenshot From 664680cdd86e1831a5e64cc196611370b2657630 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Thu, 13 Sep 2012 16:30:12 +0200 Subject: [PATCH 072/140] modified: view/theme/smoothly/style.css --- view/theme/smoothly/style.css | 1932 ++++++++++++++++++++------------- 1 file changed, 1188 insertions(+), 744 deletions(-) diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index c5430ba69..8fc103994 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -3,7 +3,7 @@ Smoothly Created by Anne Walk and Devlon Duthie on 2011-09-24 - Modified by alex@friendica.pixelbits.de on 2012-09-12 + Modified by alex@friendica.pixelbits.de on 2012-09-13 ** Colors ** @@ -15,8 +15,6 @@ Grey Gradients (buttons and other gradients) - #bdbdbd and #a2a2a2 Dark Grey Gradients - #7c7d7b and #555753 Orange - #fec01d -You can switch out the colors of the header, buttons and links by using a find and replace in your text editor. - */ body { @@ -36,10 +34,21 @@ body { color: #333333; } -img {border: 0 none; max-width: 550px; } +img { + border: 0 none; + max-width: 550px; +} -a { color: #1873a2; text-decoration: none; margin-bottom:1px;} -a:hover { color: #6da6c4; padding-bottom: 0px;} +a { + color: #1873a2; + text-decoration: none; + margin-bottom: 1px; +} + +a:hover { + color: #6da6c4; + padding-bottom: 0px; +} h3 > a, h4 > a { font-size: 18px; @@ -58,7 +67,6 @@ h2 { } p { - max-width: 600px; } @@ -69,18 +77,32 @@ label { li { list-style: none outside none; } + li.widget-list { list-style: none outside none; background: url("arrow.png") no-repeat scroll left center transparent; - /*border-bottom: 1px dotted #D3D3D3;*/ display: block; - padding: 3px 24px; + padding: 3px 24px; } -.required { display: inline; color: #1873a2; } -.fakelink { color: #1873a2; cursor: pointer; } -.fakelink :hover { color: #6da6c4; } -.heart { color: #FF0000; font-size: 100%; } +.required { + display: inline; + color: #1873a2; +} + +.fakelink { + color: #1873a2; + cursor: pointer; +} + +.fakelink :hover { + color: #6da6c4; +} + +.heart { + color: #FF0000; + font-size: 100%; +} input[type=text] { @@ -88,9 +110,9 @@ input[type=text] { padding: 2px; width: 466px; margin-left: 0px; - -webkit-border-radius: 3px 3px 3px 3px; - -moz-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; } input[type=text-sidebar] { @@ -99,44 +121,53 @@ input[type=text-sidebar] { width: 172px; margin-left: 10px; margin-top: 10px; - -webkit-border-radius: 3px 3px 3px 3px; - -moz-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; } input[type=submit] { margin: 10px; font-size: 0.9em; padding: 5px; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); - background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); - background-color:#bdbdbd; - color:#efefef; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); + background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); + background-color: #bdbdbd; + color: #efefef; text-align: center; border: 1px solid #7C7D7B; border-radius: 5px 5px 5px 5px; } input[type=submit]:hover { - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; color: #efefef; border: 1px solid #7C7D7B; box-shadow: 0 0 8px #BDBDBD; border-radius: 5px 5px 5px 5px; } input[type=submit]:active { - position:relative; - top:1px; + position: relative; + top: 1px; } -.smalltext { font-size: 0.7em } +.smalltext { + font-size: 0.7em +} -::selection { background:#fdf795; color: #000; /* Safari and Opera */ } -::-moz-selection { background:#fdf795; color: #000; /* Firefox */ } +::selection { + background: #fdf795; + color: #000; /* Safari and Opera */ +} + +::-moz-selection { + background: #fdf795; + color: #000; /* Firefox */ +} section { float: left; @@ -148,9 +179,9 @@ section { .lframe { border: 1px solid #dddddd; - -moz-box-shadow: 3px 3px 6px #959494; - -webkit-box-shadow: 3px 3px 6px #959494; box-shadow: 3px 3px 6px #959494; + -moz-box-shadow: 3px 3px 6px #959494; + -webkit-box-shadow: 3px 3px 6px #959494; background-color: #efefef; padding: 10px; } @@ -243,10 +274,10 @@ section { #panel { position: absolute; - font-size:0.8em; - -webkit-border-radius: 5px ; - -moz-border-radius: 5px; + font-size: 0.8em; border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; border: 1px solid #494948; background-color: #2e3436; opacity: 50%; @@ -264,7 +295,7 @@ section { .pager { padding-top: 30px; - display:block; + display: block; clear: both; text-align: center; } @@ -273,8 +304,15 @@ section { color: #626262; } -.pager span { padding: 4px; margin:4px; } -.pager_current { background-color: #1873a2; color: #ffffff; } +.pager span { + padding: 4px; + margin: 4px; +} + +.pager_current { + background-color: #1873a2; + color: #ffffff; +} /* ======= */ /* = Nav = */ @@ -302,15 +340,27 @@ nav { -webkit-box-shadow: 3px 3px 4px #959494;*/ border-radius: 5px 5px 5px 5px; } -nav a { text-decoration: none; color: #eeeeec; border:0px;} -nav a:hover { text-decoration: none; color: #eeeeec; border:0px;} + +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; - margin-left: 3px; /*10*/ - margin-top: 3px; /*5*/ - padding-bottom:5px; + margin-left: 3px; + margin-top: 3px; + padding-bottom: 5px; } + nav #banner #logo-text a { display: hidden; font-size: 40px; @@ -318,6 +368,7 @@ nav #banner #logo-text a { margin-left: 3px; text-shadow: #7C7D7B 3px 3px 5px; } + nav #user-menu { display: block; width: 190px; @@ -327,35 +378,37 @@ nav #user-menu { padding: 5px; position: relative; vertical-align: middle; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #797979), color-stop(1, #898988) ); - background:-moz-linear-gradient( center top, #797979 5%, #898988 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#797979', endColorstr='#898988'); - background-color:#a2a2a2; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #797979), color-stop(1, #898988) ); + background: -moz-linear-gradient( center top, #797979 5%, #898988 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#797979', endColorstr='#898988'); + background-color: #a2a2a2; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; border: 1px solid #7C7D8B; - color:#efefef; - text-decoration:none; + color: #efefef; + text-decoration: none; text-align: center; } nav #user-menu-label::after { content: url("menu-user-pin.png") no-repeat; padding-left: 15px; } + nav #user-menu-label { vertical-align: middle; font-size: 12px; padding: 5px; text-align: center; } + ul#user-menu-popup { display: none; position: absolute; - background:-webk/* margin-right:10px;*/it-gradient( linear, left top, left bottom, color-stop(0.05, #797979), color-stop(1, #898988) ); - background:-moz-linear-gradient( center top, #a2a2a2 5%, #898988 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#797979', endColorstr='#898988'); - background-color:#898988; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #797979), color-stop(1, #898988) ); + background: -moz-linear-gradient( center top, #a2a2a2 5%, #898988 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#797979', endColorstr='#898988'); + background-color: #898988; width: 100%; padding: 10px 0px; margin: 0px; @@ -372,16 +425,28 @@ ul#user-menu-popup { box-shadow: 5px 5px 10px #242424; 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 { + display: block; +} + +ul#user-menu-popup li a { + display: block; + padding: 5px; +} + ul#user-menu-popup li a:hover { color: #efefef; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #6da6c4), color-stop(1, #1873a2) ); - background:-moz-linear-gradient( center top, #6da6c4 5%, #1873a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#6da6c4', endColorstr='#1873a2'); - background-color:#6da6c4; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #6da6c4), color-stop(1, #1873a2) ); + background: -moz-linear-gradient( center top, #6da6c4 5%, #1873a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#6da6c4', endColorstr='#1873a2'); + background-color: #6da6c4; +} + +ul#user-menu-popup li a.nav-sep { + border-top: 1px solid #989898; + border-style:inset; } -ul#user-menu-popup li a.nav-sep { border-top: 1px solid #989898; border-style:inset; } /* ============= */ /* = Notifiers = */ @@ -390,8 +455,10 @@ ul#user-menu-popup li a.nav-sep { border-top: 1px solid #989898; border-style:in #notifications { height: 32px; position: absolute; - top:3px; left: 35%; + top: 3px; + left: 35%; } + .nav-ajax-update { width: 44px; height: 32px; @@ -403,11 +470,26 @@ ul#user-menu-popup li a.nav-sep { border-top: 1px solid #989898; border-style:in float: left; padding-left: 11px; } -#notify-update { background-position: 0px -168px; } -#net-update { background-position: 0px -126px; } -#mail-update { background-position: 0px -40px; } -#intro-update { background-position: 0px -84px; } -#home-update { background-position: 0px 0px; } + +#notify-update { + background-position: 0px -168px; +} + +#net-update { + background-position: 0px -126px; +} + +#mail-update { + background-position: 0px -40px; +} + +#intro-update { + background-position: 0px -84px; +} + +#home-update { + background-position: 0px 0px; +} #lang-select-icon { bottom: 6px; @@ -417,10 +499,10 @@ ul#user-menu-popup li a.nav-sep { border-top: 1px solid #989898; border-style:in z-index: 10; } #language-selector { - position:fixed; - bottom:2px; - left:52px; - z-index:10; + position: fixed; + bottom: 2px; + left: 52px; + z-index: 10; } /* =================== */ @@ -428,26 +510,27 @@ ul#user-menu-popup li a.nav-sep { border-top: 1px solid #989898; border-style:in /* =================== */ #sysmsg_info, #sysmsg { - position:fixed; + position: fixed; bottom: 0px; right:20%; - -moz-box-shadow: 7px 7px 12px #434343; - -webkit-box-shadow: 7px75px 12px #434343; box-shadow: 7px 7px 10px #434343; + -moz-box-shadow: 7px 7px 12px #434343; + -webkit-box-shadow: 7px75px 12px #434343; padding: 10px; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; - -webkit-border-radius: 5px 5px 0px 0px; - -moz-border-radius: 5px 5px 0px 0px; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; border-radius: 5px 5px 0px 0px; + -webkit-border-radius: 5px 5px 0px 0px; + -moz-border-radius: 5px 5px 0px 0px; border: 1px solid #da2c2c; - border-bottom:0px; + border-bottom: 0px; padding-bottom: 50px; z-index: 1000; color: #efefef; font-style: bold; } + #sysmsg_info br, #sysmsg br { display:block; @@ -461,17 +544,14 @@ ul#user-menu-popup li a.nav-sep { border-top: 1px solid #989898; border-style:in aside { float: right; - /*margin-right: 5px;/ - /*width: 21%;*/ - width: 205px; /*250*/ - margin-top: 40px; /*50*/ + width: 205px; + margin-top: 40px; font-size: 0.9em; font-style: bold; } aside a{ padding-bottom: 5px; - } .vcard { @@ -496,15 +576,16 @@ aside a{ padding: 6px; width: auto; background: none repeat scroll 0 0 #FFFFFF; - /*background-color: #f3f3f3;*/ - border: 1px solid #C5C5C5; /*1px solid #dddddd;*/ - -moz-box-shadow: 3px 3px 4px #959494; - -webkit-box-shadow: 3px 3px 4px #959494; - box-shadow: 0 0 8px #BDBDBD; /*3px 3px 4px #959494;*/ + border: 1px solid #C5C5C5; + box-shadow: 0 0 8px #BDBDBD; + -moz-box-shadow: 3px 3px 4px #959494; + -webkit-box-shadow: 3px 3px 4px #959494; border-radius: 5px 5px 5px 5px; } -aside h4 { font-size: 1.3em; } +aside h4 { + font-size: 1.3em; +} .allcontact-link { color: #626262; @@ -516,42 +597,46 @@ aside h4 { font-size: 1.3em; } padding-bottom: 10px; } -#profile-extra-links ul { margin-left: 0px; padding-left: 0px; list-style: none; } +#profile-extra-links ul { + margin-left: 0px; + padding-left: 0px; + list-style: none; +} #dfrn-request-link { - -moz-box-shadow:inset 0px 1px 0px 0px #a65151; - -webkit-box-shadow:inset 0px 1px 0px 0px #a65151; - box-shadow:inset 0px 1px 0px 0px #a65151; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #6da6c4), color-stop(1, #1873a2) ); - background:-moz-linear-gradient( center top, #6da6c4 5%, #1873a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#6da6c4', endColorstr='#1873a2'); - background-color:#6da6c4; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; - border:1px solid #fc5656; - display:inline-block; - color:#f0e7e7; - font-family:Trebuchet MS; - font-size:19px; - font-weight:bold; + box-shadow: inset 0px 1px 0px 0px #a65151; + -moz-box-shadow: inset 0px 1px 0px 0px #a65151; + -webkit-box-shadow: inset 0px 1px 0px 0px #a65151; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #6da6c4), color-stop(1, #1873a2) ); + background: -moz-linear-gradient( center top, #6da6c4 5%, #1873a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#6da6c4', endColorstr='#1873a2'); + background-color: #6da6c4; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border: 1px solid #fc5656; + display: inline-block; + color: #f0e7e7; + font-family: Trebuchet MS; + font-size: 19px; + font-weight: bold; text-align: center; - padding:10px; + padding: 10px; width: 185px; - text-decoration:none; - text-shadow:1px 1px 0px #b36f6f; + text-decoration: none; + text-shadow: 1px 1px 0px #b36f6f; } #dfrn-request-link:hover { - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; } #dfrn-request-link:active { - position:relative; - top:1px; + position: relative; + top: 1px; } #dfrn-request-intro { @@ -567,7 +652,6 @@ aside h4 { font-size: 1.3em; } } #netsearch-box input[type="submit"] { width: auto; - /*margin-top: 5px;*/ } h3#search:before { @@ -580,9 +664,9 @@ h3#search:before { background-color: #f3f3f3; border: 1px solid #cdcdcd; margin-bottom: 10px; - -webkit-border-radius: 5px 5px 5px 5px; - -moz-border-radius: 5px 5px 5px 5px; border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + -moz-border-radius: 5px 5px 5px 5px; } #group-sidebar { @@ -603,32 +687,32 @@ h3#search:before { .widget { margin-top: 20px; - -moz-box-shadow: 1px 2px 6px 0px #959494; - -webkit-box-shadow: 1px 2px 6px 0px #959494; box-shadow: 1px 2px 6px 0px #959494; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #f8f8f8), color-stop(1, #f6f6f6) ); - background:-moz-linear-gradient( center top, #f8f8f8 5%, #f6f6f6 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#f6f6f6'); - background-color:#f8f8f8; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; - color:#7c7d7b; + -moz-box-shadow: 1px 2px 6px 0px #959494; + -webkit-box-shadow: 1px 2px 6px 0px #959494; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #f8f8f8), color-stop(1, #f6f6f6) ); + background: -moz-linear-gradient( center top, #f8f8f8 5%, #f6f6f6 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#f6f6f6'); + background-color: #f8f8f8; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + color: #7c7d7b; border: 1px solid #cdcdcd; } #sidebar-new-group { - padding:7px; + padding: 7px; width: 165px; margin: auto; - margin-left: 10px; /*40*/ - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); - background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); - background-color:#bdbdbd; - display:inline-block; - color:#efefef; - text-decoration:none; + margin-left: 10px; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); + background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); + background-color: #bdbdbd; + display: inline-block; + color: #efefef; + text-decoration: none; text-align: center; border: 1px solid #7C7D7B; border-radius: 5px 5px 5px 5px; @@ -636,37 +720,37 @@ h3#search:before { #sidebar-new-group:hover { - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; border: 1px solid #7C7D7B; box-shadow: 0 0 8px #BDBDBD; border-radius: 5px 5px 5px 5px; } #sidebar-new-group:active { - position:relative; - top:1px; + position: relative; + top: 1px; } .group-selected, .nets-selected { padding-bottom: 0px; padding-left: 2px; padding-right: 2px; - -moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - box-shadow:inset 0px 1px 0px 0px #cfcfcf; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); - background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); - background-color:#bdbdbd; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; - display:inline-block; - color:#efefef; - text-decoration:none; + box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -moz-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -webkit-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); + background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); + background-color: #bdbdbd; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + display: inline-block; + color: #efefef; + text-decoration: none; } #sidebar-new-group a { @@ -676,19 +760,18 @@ h3#search:before { margin: auto; } -ul .sidebar-group-li{ +ul .sidebar-group-li { list-style: none; font-size: 1.0em; padding-bottom: 5px; } -ul .sidebar-group-li .icon{ +ul .sidebar-group-li .icon { display: inline-block; height: 12px; width: 12px; } - .nets-ul { list-style-type: none; } @@ -704,31 +787,30 @@ ul .sidebar-group-li .icon{ margin-left: 42px; } - -.widget h3{ - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #f0edf0), color-stop(1, #e2e2e2) ); - background:-moz-linear-gradient( center top, #f0edf0 5%, #e2e2e2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0edf0', endColorstr='#e2e2e2'); - background-color:#f0edf0; - -moz-border-radius:5px 5px 0px 0px; - -webkit-border-radius:5px 5px 0px 0px; - border-radius:5px 5px 0px 0px; - border:1px solid #e2e2e2; +.widget h3 { + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #f0edf0), color-stop(1, #e2e2e2) ); + background: -moz-linear-gradient( center top, #f0edf0 5%, #e2e2e2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0edf0', endColorstr='#e2e2e2'); + background-color: #f0edf0; + border-radius: 5px 5px 0px 0px; + -moz-border-radius: 5px 5px 0px 0px; + -webkit-border-radius: 5px 5px 0px 0px; + border: 1px solid #e2e2e2; border-bottom: 1px solid #cdcdcd; - padding-top:5px; + padding-top: 5px; padding-bottom: 5px; vertical-align: baseline; text-align: center; - text-shadow:-1px 0px 0px #bdbdbd; + text-shadow: -1px 0px 0px #bdbdbd; } -#group-sidebar h3:before{ +#group-sidebar h3:before { content: url("groups.png"); padding-right: 10px; vertical-align: middle; } -#saved-search-list{ +#saved-search-list { margin-top: 15px; padding-bottom: 20px; } @@ -772,15 +854,28 @@ ul .sidebar-group-li .icon{ float: left; } -.contact-block-textdiv { width: 150px; height: 34px; float: left; } -#contact-block-end { clear: both; } +.contact-block-textdiv { + width: 150px; + height: 34px; + float: left; +} + +#contact-block-end { + clear: both; +} /* ======= */ /* = Jot = */ /* ======= */ -#profile-jot-text_tbl { margin-bottom: 10px; } -#profile-jot-text_ifr { width: 99.9%!important } +#profile-jot-text_tbl { + margin-bottom: 10px; +} + +#profile-jot-text_ifr { + width: 99.9%!important +} + #profile-jot-submit-wrapper { } @@ -792,12 +887,17 @@ ul .sidebar-group-li .icon{ border: 1px solid #cccccc; } -#jot-title::-webkit-input-placeholder{font-weight: normal;} -#jot-title:-moz-placeholder{font-weight: normal;} - +#jot-title::-webkit-input-placeholder { + font-weight: normal; +} + +#jot-title:-moz-placeholder { + font-weight: normal; +} + #jot-title:hover, #jot-title:focus { - border: 1px solid #cccccc + border: 1px solid #cccccc; } .preview { @@ -807,19 +907,19 @@ ul .sidebar-group-li .icon{ #profile-jot-perms, #profile-jot-submit, #jot-preview-link { width: 60px; font-size: 12px; - -moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - box-shadow:inset 0px 1px 0px 0px #cfcfcf; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); - background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); - background-color:#bdbdbd; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; - display:inline-block; - color:#efefef; - text-decoration:none; + box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -moz-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -webkit-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); + background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); + background-color: #bdbdbd; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + display: inline-block; + color: #efefef; + text-decoration: none; text-align: center; } @@ -836,25 +936,32 @@ ul .sidebar-group-li .icon{ #profile-jot-submit { float: left; - margin-right:5px; + margin-right: 5px; border: 0px; margin-top: 0px; margin-left: -30px; } -#profile-jot-perms:hover, #profile-jot-submit:hover, #jot-preview-link:hover { - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; +#profile-jot-perms:hover, +#profile-jot-submit:hover, +#jot-preview-link:hover { + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; } -#profile-jot-perms:active, #profile-jot-submit:active, #jot-preview-link:active { - position:relative; - top:1px; + +#profile-jot-perms:active, +#profile-jot-submit:active, +#jot-preview-link:active { + position: relative; + top: 1px; } #character-counter { - position: absolute: right: 100px; top:100px; + position: absolute: + right: 100px; + top:100px; } #profile-rotator-wrapper { float: right; @@ -864,16 +971,28 @@ ul .sidebar-group-li .icon{ float: left; margin-right: 5px; } + #profile-jot-tools-end, -#profile-jot-banner-end { clear: both; } +#profile-jot-banner-end { + clear: both; +} #profile-jot-email-wrapper { margin: 10px 10% 0px 10%; border: 1px solid #eeeeee; border-bottom: 0px; } -#profile-jot-email-label { background-color: #555753; color: #ccccce; padding: 5px;} -#profile-jot-email { margin: 5px; width: 95%; } + +#profile-jot-email-label { + background-color: #555753; + color: #ccccce; + padding: 5px; +} + +#profile-jot-email { + margin: 5px; + width: 95%; +} #profile-jot-networks { margin: 0px 10%; @@ -886,22 +1005,48 @@ ul .sidebar-group-li .icon{ margin: 0px 10px; border: 1px solid #eeeeee; border-top: 0px; - display:block!important; + display:block!important; } + #group_allow_wrapper, #group_deny_wrapper, -#acl-permit-outer-wrapper { width: 47%; float: left; } +#acl-permit-outer-wrapper { + width: 47%; + float: left; +} #contact_allow_wrapper, #contact_deny_wrapper, -#acl-deny-outer-wrapper { width: 47%; float: right; } +#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 { + 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; } +#acl-deny-text-end { + clear: both; +} + #profile-jot-wrapper { margin-top: 0px; padding-top: 0px; @@ -926,7 +1071,10 @@ profile-jot-banner-wrapper { padding: 20px 0px 0px; font-size: 0.9em; } -.tabs li { display: inline;} + +.tabs li { + display: inline; +} .tab { padding: 5px 10px 5px 10px; @@ -952,43 +1100,57 @@ profile-jot-banner-wrapper { padding-right: 10px; padding-left: 12px; background: none repeat scroll 0 0 #FFFFFF; - /*background: -moz-linear-gradient(center top , #F8F8F8 5%, #F6F6F6 100%) repeat scroll 0 0 #F8F8F8;*/ border: 1px solid #CDCDCD; border-radius: 5px 5px 5px 5px; - box-shadow: 0 0 8px #BDBDBD; /*3px 3px 4px 0 #959494;*/ - margin-top: 20px; + box-shadow: 0 0 8px #BDBDBD; +} + +.wall-item-outside-wrapper-end { + clear: both; +} + +.wall-item-content-wrapper { + position: relative; + max-width: 100%; + padding-top: 10px; +} + +.wall-item-photo-menu { + display: none; } -.wall-item-outside-wrapper-end { clear: both;} -.wall-item-content-wrapper { position: relative; max-width: 100%; padding-top: 10px; } -.wall-item-photo-menu { display: none;} .wall-item-photo-menu-button { - display:none; + display: none; text-indent: -99999px; background: #eeeeee url("menu-user-pin.png") no-repeat 75px center; position: absolute; overflow: hidden; - height: 20px; width: 90px; - top: 85px; left: -1px; - -webkit-border-radius: 0px 0px 5px 5px; - -moz-border-radius: 0px 0px 5px 5px; + height: 20px; + width: 90px; + top: 85px; + left: -1px; border-radius: 0px 0px 5px 5px; + -webkit-border-radius: 0px 0px 5px 5px; + -moz-border-radius: 0px 0px 5px 5px; +} + +.wall-item-info { + float: left; + width: 100px; } -.wall-item-info { float: left; width: 100px; } /*140*/ .wall-item-photo-wrapper { - width: 80px; height: 80px; + width: 80px; + height: 80px; position: relative; } .wall-item-tools { filter: alpha(opacity=60); opacity: 0.7; - -webkit-transition: all 0.25s ease-in-out; - -moz-transition: all 0.25s ease-in-out; - -o-transition: all 0.25s ease-in-out; - -ms-transition: all 0.25s ease-in-out; - transition: all 0.25s ease-in-out; + transition: all 0.25s ease-in-out; + -webkit-transition: all 0.25s ease-in-out; + -moz-transition: all 0.25s ease-in-out; margin-top: 10px; padding-bottom: 5px; float: right; @@ -997,11 +1159,9 @@ profile-jot-banner-wrapper { .wall-item-tools:hover { filter: alpha(opacity=100); opacity: 1; - -webkit-transition: all 0.25s ease-in-out; - -moz-transition: all 0.25s ease-in-out; - -o-transition: all 0.25s ease-in-out; - -ms-transition: all 0.25s ease-in-out; transition: all 0.25s ease-in-out; + -webkit-transition: all 0.25s ease-in-out; + -moz-transition: all 0.25s ease-in-out; margin-left: 140px; } @@ -1014,24 +1174,29 @@ profile-jot-banner-wrapper { float: left; padding-left: 10px; } + .wall-item-like-buttons a.icon { float: left; margin-right: 5px; display: inline; } + .wall-item-links-wrapper { - width: 30px; /*20*/ + width: 30px; float: left; } + .wall-item-delete-wrapper { float: left; margin-right: 5px; } + .wall-item-links-wrapper a.icon { float: left; margin-right: 5px; display: inline; } + .pencil { float: left; } @@ -1039,31 +1204,46 @@ profile-jot-banner-wrapper { .star-item { float: left; } + .tag-item { float: left; } -.wall-item-title { font-size: 1.2em; font-weight: bold; padding-top: 5px; margin-left: 100px;} -.wall-item-body { - margin-left: 100px; /*140*/ - padding-right: 10px; - padding-top: 5px; - max-width: 100%; /*85*/ + +.wall-item-title { + font-size: 1.2em; + font-weight: bold; + padding-top: 5px; + margin-left: 100px; } -.wall-item-body img { max-width: 100%; height: auto; } +.wall-item-body { + margin-left: 100px; + padding-right: 10px; + padding-top: 5px; + max-width: 100%; +} + +.wall-item-body img { + max-width: 100%; + height: auto; +} .wall-item-body p { font-size: 0.8em; } -.wall-item-lock-wrapper { float: right; } + +.wall-item-lock-wrapper { + float: right; +} + .wall-item-dislike, .wall-item-like { clear: left; font-size: 0.9em; margin: 0px 0px 10px 450px; padding-left: 0px; - } + .wall-item-author { font-size: 0.9em; margin: 0px 0px 0px 100px; @@ -1074,28 +1254,47 @@ profile-jot-banner-wrapper { color: #898989; } -.wall-item-ago { display: inline; padding-left: 0px; color: #898989;} /*10*/ -.wall-item-wrapper-end { clear:both; } -.wall-item-location { - margin-top:5px; - width: 100px; - overflow: hidden; - text-overflow: ellipsis; - -o-text-overflow: ellipsis; -} - -.wall-item-location .icon { float: left; } -.wall-item-location > a { - margin-left: 0px; /*25*/ - margin-right: 3px; - font-size: 0.9em; - display: block; - font-variant:small-caps; +.wall-item-ago { + display: inline; + padding-left: 0px; color: #898989; } -.wall-item-location .smalltext { margin-left: 25px; font-size: 0.9em; display: block;} -.wall-item-location > br { display: none; } +.wall-item-wrapper-end { + clear:both; +} + +.wall-item-location { + margin-top: 5px; + width: 100px; + overflow: hidden; + text-overflow: ellipsis; + -o-text-overflow: ellipsis; +} + +.wall-item-location .icon { + float: left; +} + +.wall-item-location > a { + margin-left: 0px; + margin-right: 3px; + font-size: 0.9em; + display: block; + font-variant: small-caps; + color: #898989; +} + +.wall-item-location .smalltext { + margin-left: 25px; + font-size: 0.9em; + display: block; +} + +.wall-item-location > br { + display: none; +} + .wall-item-conv a{ font-size: 0.9em; color: #898989; @@ -1112,8 +1311,15 @@ profile-jot-banner-wrapper { height: 30px; } -.wallwall .wwto img { width: 30px!important; height: 30px!important;} -.wallwall .wall-item-photo-end { clear: both; } +.wallwall .wwto img { + width: 30px!important; + height: 30px!important; +} + +.wallwall .wall-item-photo-end { + clear: both; +} + .wall-item-arrowphoto-wrapper { position: absolute; left: 20px; @@ -1130,50 +1336,68 @@ profile-jot-banner-wrapper { border-left: 1px solid #dddddd; border-bottom: 1px solid #dddddd; position: absolute; - left: -2px; top: 101px; + left: -2px; + top: 101px; display: none; z-index: 10000; - -webkit-border-radius: 0px 5px 5px 5px; - -moz-border-radius: 0px 5px 5px 5px; border-radius: 0px 5px 5px 5px; - -moz-box-shadow: 3px 3px 4px #959494; - -webkit-box-shadow: 3px 3px 4px #959494; + -webkit-border-radius: 0px 5px 5px 5px; + -moz-border-radius: 0px 5px 5px 5px; box-shadow: 3px 3px 4px #959494; + -moz-box-shadow: 3px 3px 4px #959494; + -webkit-box-shadow: 3px 3px 4px #959494; + } .wall-item-photo-menu-button { border-right: 1px solid #dddddd; border-left: 1px solid #dddddd; border-bottom: 1px solid #dddddd; - -moz-box-shadow: 3px 3px 4px #959494; - -webkit-box-shadow: 3px 3px 4px #959494; box-shadow: 3px 3px 4px #959494; + -moz-box-shadow: 3px 3px 4px #959494; + -webkit-box-shadow: 3px 3px 4px #959494; } .fakelink wall-item-photo-menu-button { -webkit-border-radius: 0px 5px 5px 5px; -moz-border-radius: 0px 5px 5px 5px; border-radius: 0px 5px 5px 5px; - -moz-box-shadow: 3px 3px 4px #959494; - -webkit-box-shadow: 3px 3px 4px #959494; box-shadow: 3px 3px 4px #959494; + -moz-box-shadow: 3px 3px 4px #959494; + -webkit-box-shadow: 3px 3px 4px #959494; +} + +.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: #2e3436; } -.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: #2e3436; } .wall-item-photo-menu li a:hover { color: #efefef; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; - order-bottom: none; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; + /*order-bottom: none;*/ } .icon.drop, -.icon.drophide { float: right;} -#item-delete-selected { overflow: auto; width: 100%;} +.icon.drophide { + float: right; +} +#item-delete-selected { + overflow: auto; + width: 100%; +} /* ============ */ /* = Comments = */ @@ -1183,30 +1407,42 @@ profile-jot-banner-wrapper { font-size: 0.9em; color: #898989; margin-left: 60px; - /*font-variant:small-caps;*/ } -.wall-item-outside-wrapper.comment { margin-left: 70px; } +.wall-item-outside-wrapper.comment { + margin-left: 70px; +} + .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-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-info { + width: 60px; +} + .wall-item-outside-wrapper.comment .wall-item-body { - margin-left: 60px;/*70*/ + margin-left: 60px; max-width: 100%; padding-right: 10px; padding-left: 0px; } -.wall-item-outside-wrapper.comment .wall-item-author { margin-left: 60px; } /*10*/ +.wall-item-outside-wrapper.comment .wall-item-author { + margin-left: 60px; +} .wall-item-outside-wrapper.comment .wall-item-photo-menu { min-width: 50px; @@ -1218,37 +1454,55 @@ profile-jot-banner-wrapper { } .comment-wwedit-wrapper, -.comment-edit-wrapper { margin: 30px 0px 0px 80px;} +.comment-edit-wrapper { + margin: 30px 0px 0px 80px; +} + .comment-wwedit-wrapper img, -.comment-edit-wrapper img { width: 20px; height: 20px; } -.comment-edit-photo-link { float: left; width: 40px;} +.comment-edit-wrapper img { + width: 20px; + height: 20px; +} + +.comment-edit-photo-link { + float: left; + width: 40px; +} + .comment-edit-text-empty { width: 80%; height: 20px; - /*border: 0px;*/ color: #babdb6; - -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; + -webkit-transition: all 0.5s ease-in-out; + -moz-transition: all 0.5s ease-in-out; } -.comment-edit-text-empty:hover { color: #999999;} -.comment-edit-text-full { width: 80%; height: 6em; - -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; + +.comment-edit-text-empty:hover { + color: #999999; +} + +.comment-edit-text-full { + width: 80%; + height: 6em; transition: all 0.5s ease-in-out; + -webkit-transition: all 0.5s ease-in-out; + -moz-transition: all 0.5s ease-in-out; } -.comment-edit-submit-wrapper { width: 80%; margin-left: 40px; text-align: right; } + +.comment-edit-submit-wrapper { + width: 80%; + margin-left: 40px; + text-align: right; +} + .comment-edit-submit { height: 22px; background-color: #a2a2a2; color: #eeeeec; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; border: 0px; } @@ -1292,21 +1546,28 @@ profile-jot-banner-wrapper { margin-bottom: 0px; padding-bottom: 5px; font-size: 18px; - /*font-variant:small-caps;*/ } -div[id$="wrapper"] { height: 100%;} -div[id$="wrapper"] br { clear: left; } -#advanced-profile-with { margin-left: 20px;} +div[id$="wrapper"] { + height: 100%; +} + +div[id$="wrapper"] br { + clear: left; +} + +#advanced-profile-with { + margin-left: 20px; +} #profile-listing-desc { float: left; display: inline; padding: 5px 10px 5px 10px; width: 150px; - margin-bottom:20px; + margin-bottom: 20px; margin-top: 20px; - display:inline-block; + display: inline-block; font-style: bold; text-align: center; } @@ -1315,7 +1576,7 @@ div[id$="wrapper"] br { clear: left; } float: left; display: inline; width: auto; - margin-left:5px; + margin-left: 5px; margin-top: 20px; padding: 5px 10px 5px 10px; font-style: bold; @@ -1332,16 +1593,16 @@ div[id$="wrapper"] br { clear: left; } #profile-edit-links li { display: inline; width: 150px; - margin-bottom:20px; + margin-bottom: 20px; margin-top: 20px; background-color: #a2a2a2; color: #eeeeec; padding: 5px 10px 5px 10px; margin-right: 5px; font-style: bold; - -webkit-border-radius: 5px 5px 5px 5px; - -moz-border-radius: 5px 5px 5px 5px; border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + -moz-border-radius: 5px 5px 5px 5px; } #profile-edit-links li a { @@ -1364,8 +1625,13 @@ div[id$="wrapper"] br { clear: left; } position: absolute; } -#cropimage-wrapper { float:left; } -#crop-image-form { clear:both; } +#cropimage-wrapper { + float:left; +} + +#crop-image-form { + clear:both; +} .profile-match-name a{ color: #999; @@ -1379,13 +1645,13 @@ div[id$="wrapper"] br { clear: left; } .profile-match-wrapper { width: 82%; padding: 5px; - margin-bottom:10px; + margin-bottom: 10px; margin-left: 20px; background-color: #f6f6f6; border: 1px solid #dddddd; - -moz-box-shadow: 3px 3px 4px #959494; - -webkit-box-shadow: 3px 3px 4px #959494; box-shadow: 3px 3px 4px #959494; + -moz-box-shadow: 3px 3px 4px #959494; + -webkit-box-shadow: 3px 3px 4px #959494; clear: both; } @@ -1423,17 +1689,18 @@ div[id$="wrapper"] br { clear: left; } #photo-top-links { width: 130px; - margin-bottom:20px; + margin-bottom: 20px; margin-top: 20px; background-color: #a2a2a2; color: #eeeeec; padding: 5px 10px 5px 10px; margin-right: 5px; font-style: bold; - -webkit-border-radius: 5px 5px 5px 5px; - -moz-border-radius: 5px 5px 5px 5px; border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + -moz-border-radius: 5px 5px 5px 5px; } + #photo-top-links a { color: #efefef; } @@ -1450,7 +1717,7 @@ div[id$="wrapper"] br { clear: left; } float: left; margin: 0px 10px 10px 0px; padding-bottom: 30px; - position:relative; + position: relative; } .photo-top-image-wrapper { @@ -1459,7 +1726,7 @@ div[id$="wrapper"] br { clear: left; } height: 180px; margin: 0px 10px 10px 0px; padding-bottom: 30px; - position:relative; + position: relative; } #photo-album-wrapper-inner { @@ -1470,8 +1737,14 @@ div[id$="wrapper"] br { clear: left; } overflow: hidden; } -#photo-photo { max-width: 85%; height: auto; } -#photo-photo img { max-width: 100% } +#photo-photo { + max-width: 85%; + height: auto; +} + +#photo-photo img { + max-width: 100% +} .photo-top-image-wrapper a:hover, #photo-photo a:hover, @@ -1487,10 +1760,10 @@ div[id$="wrapper"] br { clear: left; } bottom: 0px; padding: 0px 5px; font-weight: bold; - font-stretch:semi-expanded; + font-stretch: semi-expanded; } -.photo-top-album-name a{ +.photo-top-album-name a { text-align: center; color: #6e6e6e; } @@ -1503,9 +1776,9 @@ div[id$="wrapper"] br { clear: left; } font-size: 0.9em; } -#photo-photo{ +#photo-photo { position: relative; - float:left; + float: left; } #photo-caption { @@ -1514,28 +1787,41 @@ div[id$="wrapper"] br { clear: left; } font-size: 1.1em; } -#photo-photo-end { clear: both; } +#photo-photo-end { + clear: both; +} + #photo-prev-link, -#photo-next-link{ +#photo-next-link { position: absolute; - width:10%; + width: 10%; height: 100%; background-color: rgba(255,255,255,0.2); opacity: 0; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - -ms-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; background-position: center center; background-repeat: no-repeat; } -#photo-prev-link { left:0px; top:0px; background-image: url('prev.png'); } -#photo-next-link { right:0px; top:0px; background-image: url('next.png');} +#photo-prev-link { + left: 0px; + top: 0px; + background-image: url('prev.png'); +} + +#photo-next-link { + right: 0px; + top: 0px; + background-image: url('next.png'); +} + #photo-prev-link a, -#photo-next-link a{ - display: block; width: 100%; height: 100%; +#photo-next-link a { + display: block; + width: 100%; + height: 100%; overflow: hidden; text-indent: -900000px; } @@ -1543,19 +1829,22 @@ div[id$="wrapper"] br { clear: left; } #photo-prev-link:hover, #photo-next-link:hover { opacity: 1; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - -ms-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; } #photo-next-link .icon, -#photo-prev-link .icon { display: none } +#photo-prev-link .icon { + display: none; +} #photos-upload-spacer, #photos-upload-new-wrapper, -#photos-upload-exist-wrapper { margin-bottom: 1em; } +#photos-upload-exist-wrapper { + margin-bottom: 1em; +} + #photos-upload-existing-album-text, #photos-upload-newalbum-div { background-color: #fff; @@ -1567,7 +1856,9 @@ div[id$="wrapper"] br { clear: left; } } #photos-upload-album-select, -#photos-upload-newalbum { width: 400px; } +#photos-upload-newalbum { + width: 400px; +} #photos-upload-perms-menu { width: 180px; @@ -1582,12 +1873,14 @@ select, input { margin-top: 0px; border: 1px solid #b0b0b0; padding: 2px; - -webkit-border-radius: 3px 3px 3px 3px; - -moz-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; } -select[size], select[multiple], select[size][multiple] { +select[size], +select[multiple], +select[size][multiple] { -webkit-appearance: listbox; } @@ -1599,7 +1892,7 @@ select { } keygen, select { - -webkit-border-radius: ; + /*-webkit-border-radius: ;*/ } input, textarea, keygen { @@ -1615,23 +1908,23 @@ input, textarea, keygen { } .qq-upload-button { - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; } #album-edit-link { width: 70px; - margin-bottom:20px; + margin-bottom: 20px; margin-top: 20px; background-color: #a2a2a2; color: #eeeeec; padding: 5px 10px 5px 10px; margin-right: 5px; font-style: bold; - -webkit-border-radius: 5px 5px 5px 5px; - -moz-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + -moz-border-radius: 5px 5px 5px 5px; } #album-edit-link a { @@ -1648,7 +1941,7 @@ input, textarea, keygen { #photo_edit_form { width: 500px; - margin-top:20px; + margin-top: 20px; text-align: left; } @@ -1684,7 +1977,9 @@ input#photo_edit_form { /* = Messages = */ /* ============ */ -#prvmail-wrapper, .mail-conv-detail, .mail-list-detail { +#prvmail-wrapper, +.mail-conv-detail, +.mail-list-detail { position: relative; width: 500px; padding: 50px; @@ -1695,7 +1990,12 @@ input#photo_edit_form { box-shadow: 0 0 5px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1); } -#prvmail-wrapper:before, #prvmail-wrapper:after, .mail-conv-detail:before, .mail-conv-detail:after, .mail-list-detail:before, .mail-list-detail:after { +#prvmail-wrapper:before, +#prvmail-wrapper:after, +.mail-conv-detail:before, +.mail-conv-detail:after, +.mail-list-detail:before, +.mail-list-detail:after { position: absolute; width: 40%; height: 10px; @@ -1703,25 +2003,27 @@ input#photo_edit_form { left: 12px; bottom: 12px; background: transparent; - -webkit-transform: skew(-5deg) rotate(-5deg); - -moz-transform: skew(-5deg) rotate(-5deg); - -ms-transform: skew(-5deg) rotate(-5deg); - -o-transform: skew(-5deg) rotate(-5deg); transform: skew(-5deg) rotate(-5deg); - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3); + -webkit-transform: skew(-5deg) rotate(-5deg); + -moz-transform: skew(-5deg) rotate(-5deg); + -ms-transform: skew(-5deg) rotate(-5deg); + -o-transform: skew(-5deg) rotate(-5deg); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3); z-index: -1; } -#prvmail-wrapper:after, .mail-conv-detail:after, .mail-list-detail:after { +#prvmail-wrapper:after, +.mail-conv-detail:after, +.mail-list-detail:after { left: auto; right: 12px; - -webkit-transform: skew(5deg) rotate(5deg); - -moz-transform: skew(5deg) rotate(5deg); - -ms-transform: skew(5deg) rotate(5deg); - -o-transform: skew(5deg) rotate(5deg); transform: skew(5deg) rotate(5deg); + -webkit-transform: skew(5deg) rotate(5deg); + -moz-transform: skew(5deg) rotate(5deg); + -ms-transform: skew(5deg) rotate(5deg); + -o-transform: skew(5deg) rotate(5deg); } .prvmail-text { @@ -1730,27 +2032,33 @@ input#photo_edit_form { #prvmail-form input -#prvmail-subject { width: 490px;; padding-left: 10px; font-size: 1.1em; font-style: bold;} -#prvmail-subject .input{ - border: none !important ; +#prvmail-subject { + width: 490px; + padding-left: 10px; + font-size: 1.1em; + font-style: bold; } -#prvmail-subject-label { -/* font-variant:small-caps; */ +#prvmail-subject .input { + border: none !important; } +#prvmail-subject-label {} + #prvmail-to { padding-left: 10px; } -#prvmail-to-label { -/* font-variant:small-caps; */ -} + +#prvmail-to-label {} #prvmail-message-label { font-size: 1em; } -#prvmail-submit-wrapper { margin-top: 10px; } +#prvmail-submit-wrapper { + margin-top: 10px; +} + #prvmail-submit { float: right; margin-top: 0px; @@ -1786,9 +2094,9 @@ margin-left: 0px; width: 600px; min-height: 70px; padding: 20px; - padding-top:10px; + padding-top: 10px; border: 1px solid #dddddd; - } +} .mail-list-sender-name { font-size: 1.1em; @@ -1801,7 +2109,7 @@ margin-left: 0px; display: inline; font-size: 0.9em; padding-left: 10px; - font-stretch:ultra-condensed; + font-stretch: ultra-condensed; } .mail-list-subject { @@ -1815,7 +2123,10 @@ margin-left: 0px; color: #626262; } -.mail-list-delete-wrapper { float: right;} +.mail-list-delete-wrapper { + float: right; +} + .mail-list-outside-wrapper-end { clear: both; } @@ -1825,15 +2136,31 @@ margin-left: 0px; margin-top: 30px; } -.mail-conv-sender {float: left; margin: 0px 5px 5px 0px; } +.mail-conv-sender { + float: left; + margin: 0px 5px 5px 0px; +} + .mail-conv-sender-photo { width: 64px; height: 64px; } -.mail-conv-sender-name { float: left; font-style: bold; } -.mail-conv-date { float: right; } -.mail-conv-subject { clear: right; font-weight: bold; font-size: 1.2em } +.mail-conv-sender-name { + float: left; + font-style: bold; +} + +.mail-conv-date { + float: right; +} + +.mail-conv-subject { + clear: right; + font-weight: bold; + font-size: 1.2em; +} + .mail-conv-body { clear: both; } @@ -1848,8 +2175,16 @@ margin-left: 0px; margin: auto; border: 1px solid #dddddd; } -.mail-conv-break { display: none; border: none;} -.mail-conv-delete-wrapper { padding-top: 10px; width: 510px; text-align: right; } +.mail-conv-break { + display: none; + border: none; +} + +.mail-conv-delete-wrapper { + padding-top: 10px; + width: 510px; + text-align: right; +} #prvmail-subject { font-weight: bold; @@ -1862,16 +2197,16 @@ margin-left: 0px; #notification-show-hide-wrapper { width: 160px; - -moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - box-shadow:inset 0px 1px 0px 0px #cfcfcf; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); - background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); - background-color:#bdbdbd; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; + box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -moz-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -webkit-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); + background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); + background-color: #bdbdbd; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; padding: 5px 10px 5px 10px; margin-right: 5px; margin-top: 10px; @@ -1882,16 +2217,16 @@ margin-left: 0px; #notification-show-hide-wrapper:hover { color: #efefef; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; } #notification-show-hide-wrapper:active { background-color: #1873a2; - position:relative; - top:1px; + position: relative; + top: 1px; } #notification-show-hide-wrapper a { @@ -1916,18 +2251,30 @@ margin-left: 0px; position: relative; } -.contact-entry-direction-wrapper {position: absolute; top: 20px;} -.contact-entry-edit-links { position: absolute; top: 60px; } -#contacts-show-hide-link { margin-bottom: 20px; margin-top: 10px; font-weight: bold;} +.contact-entry-direction-wrapper { + position: absolute; + top: 20px; +} + +.contact-entry-edit-links { + position: absolute; + top: 60px; +} + +#contacts-show-hide-link { + margin-bottom: 20px; + margin-top: 10px; + font-weight: bold; +} .contact-entry-name { width: 100px; overflow: hidden; font: #999; font-size: 12px; - text-align:center; + text-align: center; font-weight: bold; - margin-top:5px; + margin-top: 5px; } .contact-entry-photo { @@ -1936,45 +2283,48 @@ margin-left: 0px; .contact-entry-edit-links .icon { border: 1px solid #babdb6; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; background-color: #ffffff; } -#contact-edit-banner-name { font-size: 1.5em; margin-left: 30px; } +#contact-edit-banner-name { + font-size: 1.5em; + margin-left: 30px; +} #contact-edit-update-now { - padding:7px; + padding: 7px; width: 165px; margin: auto; margin-left: 40px; - -moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - box-shadow:inset 0px 1px 0px 0px #cfcfcf; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); - background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); - background-color:#bdbdbd; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; - display:inline-block; - color:#efefef; - text-decoration:none; + box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -moz-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -webkit-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); + background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); + background-color: #bdbdbd; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + display: inline-block; + color: #efefef; + text-decoration: none; text-align: center; } #contact-edit-update-now:hover { - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; } #contact-edit-update-now:active { - position:relative; - top:1px; + position: relative; + top: 1px; } #contact-edit-update-now a { @@ -2006,30 +2356,39 @@ margin-left: 0px; left: 0px; top: 90px; display: none; z-index: 10000; - -moz-box-shadow: 3px 3px 5px #888; - -webkit-box-shadow: 3px 3px 5px #888; box-shadow: 3px 3px 5px #888; + -moz-box-shadow: 3px 3px 5px #888; + -webkit-box-shadow: 3px 3px 5px #888; +} + +.contact-photo-menu ul { + margin: 0px; + padding: 0px; + list-style: none; +} + +.contact-photo-menu li a { + display: block; + padding: 3px; + color: #626262; + font-size: 1em; } -.contact-photo-menu ul { margin:0px; padding: 0px; list-style: none } -.contact-photo-menu li a { display: block; padding: 3px; color: #626262; font-size: 1em; } .contact-photo-menu li a:hover { color: #FFFFFF; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; text-decoration: none; } -.view-contact-name { -/* font-variant: small-caps; */ -} +.view-contact-name {} #div.side-link { background-color: #efefef; padding: 10px; - margin-top:20px; + margin-top: 20px; } #follow-sidebar { @@ -2057,10 +2416,10 @@ margin-left: 0px; width: 158px; padding: 10px; margin: auto 10px 20px; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); - background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); - background-color:#bdbdbd; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); + background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); + background-color: #bdbdbd; padding: 5px 10px 5px 10px; color: #efefef; font-size: 1.1em; @@ -2071,10 +2430,10 @@ margin-left: 0px; #side-match-link:hover { color: #efefef; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; border: 1px solid #7C7D7B; box-shadow: 0 0 8px #BDBDBD; border-radius: 5px 5px 5px 5px; @@ -2082,8 +2441,8 @@ margin-left: 0px; #side-match-link:active { background-color: #1873a2; - position:relative; - top:1px; + position: relative; + top: 1px; } #side-match-link a { @@ -2095,10 +2454,10 @@ margin-left: 0px; padding: 10px; margin: auto; margin-bottom: 20px; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); - background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); - background-color:#bdbdbd; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); + background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); + background-color: #bdbdbd; padding: 5px 10px 5px 10px; color: #efefef; font-size: 1.1em; @@ -2109,10 +2468,10 @@ margin-left: 0px; #side-invite-link:hover { color: #efefef; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; border: 1px solid #7C7D7B; box-shadow: 0 0 8px #BDBDBD; border-radius: 5px 5px 5px 5px; @@ -2121,8 +2480,8 @@ margin-left: 0px; #side-invite-link:active { background-color: #1873a2; - position:relative; - top:1px; + position: relative; + top: 1px; } #side-invite-link a { @@ -2134,10 +2493,10 @@ margin-left: 0px; padding: 10px; margin: auto; margin-bottom: 20px; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); - background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); - background-color:#bdbdbd; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); + background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); + background-color: #bdbdbd; padding: 5px 10px 5px 10px; color: #efefef; font-size: 1.1em; @@ -2148,10 +2507,10 @@ margin-left: 0px; #side-suggest-link:hover { color: #efefef; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; border: 1px solid #7C7D7B; box-shadow: 0 0 8px #BDBDBD; border-radius: 5px 5px 5px 5px; @@ -2159,29 +2518,31 @@ margin-left: 0px; #side-suggest-link:active { background-color: #1873a2; - position:relative; - top:1px; + position: relative; + top: 1px; } #side-suggest-link a { color: #efefef; } -#invite-message, #invite-recipients, #invite-recipient-text { +#invite-message, +#invite-recipients, +#invite-recipient-text { padding: 10px; } #side-follow-wrapper { font-size: 1em; font-weight: bold; - font-stretch:semi-expanded; + font-stretch: semi-expanded; background-color: #f3f3f3; border: 1px solid #cdcdcd; padding: 10px; margin-top: 20px; - -webkit-border-radius: 5px 5px 5px 5px; - -moz-border-radius: 5px 5px 5px 5px; border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + -moz-border-radius: 5px 5px 5px 5px; } #side-follow-wrapper label{ @@ -2195,16 +2556,16 @@ margin-left: 0px; width: 120px; padding: 10px; margin-bottom: 20px; - -moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - box-shadow:inset 0px 1px 0px 0px #cfcfcf; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); - background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); - background-color:#bdbdbd; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; + box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -moz-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -webkit-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); + background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); + background-color: #bdbdbd; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; padding: 5px 10px 5px 10px; color: #efefef; font-size: 1.2em; @@ -2213,16 +2574,16 @@ margin-left: 0px; #contact-suggest:hover { color: #efefef; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; } #contact-suggest:active { background-color: #1873a2; - position:relative; - top:1px; + position: relative; + top: 1px; } #contact-suggest a { @@ -2273,52 +2634,52 @@ margin-left: 0px; #uexport-link { width: 140px; - -moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - box-shadow:inset 0px 1px 0px 0px #cfcfcf; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #7c7d7b), color-stop(1, #555753) ); - background:-moz-linear-gradient( center top, #7c7d7b 5%, #555753 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7c7d7b', endColorstr='#555753'); - background-color:#7c7d7b; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; + box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -moz-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -webkit-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #7c7d7b), color-stop(1, #555753) ); + background: -moz-linear-gradient( center top, #7c7d7b 5%, #555753 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7c7d7b', endColorstr='#555753'); + background-color: #7c7d7b; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; padding: 5px 10px 5px 10px; margin-bottom: 10px; } #uexport-link:hover { color: #efefef; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #555753), color-stop(1, #7c7d7b) ); - background:-moz-linear-gradient( center top, #555753 5%, #7c7d7b 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#555753', endColorstr='#7c7d7b'); - background-color:#555753; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #555753), color-stop(1, #7c7d7b) ); + background: -moz-linear-gradient( center top, #555753 5%, #7c7d7b 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555753', endColorstr='#7c7d7b'); + background-color: #555753; } #uexport-link:active { color: #efefef; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; - position:relative; - top:1px; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; + position: relative; + top: 1px; } #settings-default-perms { width: 260px; text-align: center; - -moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - box-shadow:inset 0px 1px 0px 0px #cfcfcf; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #7c7d7b), color-stop(1, #555753) ); + box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -moz-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -webkit-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #7c7d7b), color-stop(1, #555753) ); background: -moz-linear-gradient(center top , #BDBDBD 5%, #A2A2A2 100%) repeat scroll 0 0 #BDBDBD; - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7c7d7b', endColorstr='#555753'); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7c7d7b', endColorstr='#555753'); color: #EFEFEF; - background-color:#7c7d7b; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; + background-color: #7c7d7b; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; padding: 5px 10px 5px 10px; margin-bottom: 10px; } @@ -2329,29 +2690,29 @@ margin-left: 0px; #settings-default-perms:hover { color: #efefef; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #555753), color-stop(1, #7c7d7b) ); - background:-moz-linear-gradient( center top, #555753 5%, #7c7d7b 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#555753', endColorstr='#7c7d7b'); - background-color:#555753; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #555753), color-stop(1, #7c7d7b) ); + background: -moz-linear-gradient( center top, #555753 5%, #7c7d7b 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555753', endColorstr='#7c7d7b'); + background-color: #555753; } #settings-default-perms:active { color: #efefef; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; - position:relative; - top:1px; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; + position: relative; + top: 1px; } #settings-nickname-desc { width: 80%; background-color: #efefef; margin-bottom: 10px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; padding: 5px; } @@ -2370,25 +2731,39 @@ margin-left: 0px; #register-form label, #profile-edit-form label { - width: 300px; float: left; + width: 300px; + float: left; } /* #register-form span, #profile-edit-form span { */ #register-form span { color: #555753; - display:block; + display: block; margin-bottom: 20px; } .settings-submit-wrapper, -.profile-edit-submit-wrapper { margin: 30px 0px;} -.profile-listing { float: left; clear: both; margin: 20px 20px 0px 0px} +.profile-edit-submit-wrapper { + margin: 30px 0px; +} -#profile-edit-links ul { margin: 20px 0px; padding: 0px; list-style: none; } +.profile-listing { + float: left; + clear: both; + margin: 20px 20px 0px 0px; +} +#profile-edit-links ul { + margin: 20px 0px; + padding: 0px; + list-style: none; +} -#register-sitename { display: inline; font-weight: bold;} +#register-sitename { + display: inline; + font-weight: bold; +} /* ===================== */ /* = Contacts Selector = */ @@ -2414,30 +2789,30 @@ margin-left: 0px; display: inline; padding: 5px; margin-bottom: 10px; - -moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - box-shadow:inset 0px 1px 0px 0px #cfcfcf; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); - background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); - background-color:#bdbdbd; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; + box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -moz-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -webkit-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); + background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); + background-color: #bdbdbd; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; } .group-delete-wrapper:hover { - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; } .group-delete-wrapper:active { - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; } .group-delete-wrapper a { @@ -2445,8 +2820,14 @@ margin-left: 0px; font-size: 0.9em; } -#group-edit-desc { margin: 10px 0xp; } -#group-new-text {font-size: 1.1em;} +#group-edit-desc { + margin: 10px 0xp; +} + +#group-new-text { + font-size: 1.1em; +} + #group-members, #prof-members { width: 83%; @@ -2480,13 +2861,19 @@ margin-left: 0px; } #group-separator, -#prof-separator { display: none;} +#prof-separator { + display: none; +} /* ========== */ /* = Events = */ /* ========== */ -.clear { clear: both; } +.clear { + clear: both; + margin-top: 10px; +} + .eventcal { float: left; font-size: 20px; @@ -2501,12 +2888,13 @@ margin-left: 0px; margin: 0 0px; margin-bottom: 10px; background-color: #fff; - -webkit-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1); box-shadow: 0 0 5px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1); } -.vevent:before, .vevent:after { +.vevent:before, +.vevent:after { position: absolute; width: 40%; height: 10px; @@ -2514,45 +2902,45 @@ margin-left: 0px; left: 12px; bottom: 12px; background: transparent; - -webkit-transform: skew(-5deg) rotate(-5deg); - -moz-transform: skew(-5deg) rotate(-5deg); - -ms-transform: skew(-5deg) rotate(-5deg); - -o-transform: skew(-5deg) rotate(-5deg); transform: skew(-5deg) rotate(-5deg); - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3); - -moz-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3); + -webkit-transform: skew(-5deg) rotate(-5deg); + -moz-transform: skew(-5deg) rotate(-5deg); + -ms-transform: skew(-5deg) rotate(-5deg); + -o-transform: skew(-5deg) rotate(-5deg); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3); z-index: -1; } .vevent:after { left: auto; right: 12px; - -webkit-transform: skew(5deg) rotate(5deg); - -moz-transform: skew(5deg) rotate(5deg); - -ms-transform: skew(5deg) rotate(5deg); - -o-transform: skew(5deg) rotate(5deg); transform: skew(5deg) rotate(5deg); + -webkit-transform: skew(5deg) rotate(5deg); + -moz-transform: skew(5deg) rotate(5deg); + -ms-transform: skew(5deg) rotate(5deg); + -o-transform: skew(5deg) rotate(5deg); } .vevent .event-description { margin-left: 10px; margin-right: 10px; - text-align:center; + text-align: center; font-size: 1.2em; - font-weight:bolder; + font-weight: bolder; } - .vevent .event-location{ + .vevent .event-location { margin-left: 10px; margin-right: 10px; font-size: 1em; font-style: oblique; text-align: center; - } -.vevent .event-start, .vevent .event-end { +.vevent .event-start, +.vevent .event-end { margin-left: 20px; margin-right: 20px; margin-bottom: 2px; @@ -2561,36 +2949,36 @@ margin-left: 0px; text-align: left; } -#new-event-link{ +#new-event-link { width: 130px; padding: 7px; margin-bottom: 10px; - margin-left: 170px; ; - -moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - box-shadow:inset 0px 1px 0px 0px #cfcfcf; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); - background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); - background-color:#bdbdbd; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; + margin-left: 170px; + box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -moz-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -webkit-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); + background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); + background-color: #bdbdbd; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; color: #efefef; } #new-event-link:hover { color: #efefef; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; } #new-event-link:active { background-color: #1873a2; - position:relative; - top:1px; + position: relative; + top: 1px; } #new-event-link a { @@ -2611,22 +2999,25 @@ margin-left: 0px; vertical-align: middle; } -.event-start, .event-end { +.event-start, +.event-end { margin-left: 10px; width: 330px; } -.event-start .dtstart, .event-end .dtend { +.event-start .dtstart, +.event-end .dtend { float: right; } .event-list-date { color: #626262; margin-bottom: 10px; - font-stretch:condensed; + font-stretch: condensed; } -.prevcal, .nextcal { +.prevcal, +.nextcal { float: left; margin-left: 32px; margin-right: 32px; @@ -2643,24 +3034,24 @@ margin-left: 0px; background-color: #f1f1f1; border: 1px solid #dedede; margin-bottom: 10px; - -moz-box-shadow: 5px 5px 8px #959494; - -webkit-box-shadow: 5px 5px 8px #959494; - box-shadow: 5px 5px 8px #959494; + box-shadow: 5px 5px 8px #959494; + -moz-box-shadow: 5px 5px 8px #959494; + -webkit-box-shadow: 5px 5px 8px #959494; } -.calendar caption{ - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #6da6c4), color-stop(1, #1873a2) ); - background:-moz-linear-gradient( center top, #6da6c4 5%, #1873a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#6da6c4', endColorstr='#1873a2'); +.calendar caption { + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #6da6c4), color-stop(1, #1873a2) ); + background: -moz-linear-gradient( center top, #6da6c4 5%, #1873a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#6da6c4', endColorstr='#1873a2'); background-color: #1873a2; padding: 10px 0px 10px 0px; width: 300px; color: #ffffff; font-weight: bold; - text-align:center; - -moz-box-shadow: 5px 2px 8px #959494; - -webkit-box-shadow: 5px 2px 8px #959494; + text-align: center; box-shadow: 5px 2px 8px #959494; + -moz-box-shadow: 5px 2px 8px #959494; + -webkit-box-shadow: 5px 2px 8px #959494; } tr { @@ -2676,7 +3067,7 @@ tr { .calendar td > a { background-color: #cdcdcd; padding: 2px; - color: #000; + color: #000000; } .calendar th { @@ -2687,7 +3078,7 @@ tr { font-weight: bold; text-align: center; background-color: #1873a2; - color: #fff; + color: #ffffff; } #event-start-text, @@ -2797,8 +3188,10 @@ tr { clear:left; } -#adminpage #pluginslist { - margin: 0px; padding: 0px; +#adminpage +#pluginslist { + margin: 0px; + padding: 0px; } #adminpage .plugin { @@ -2811,16 +3204,36 @@ tr { } #adminpage .toggleplugin { - float:left; + float: left; margin-right: 1em; } -#adminpage table {width:100%; border-bottom: 1p solid #000000; margin: 5px 0px;} -#adminpage table th { text-align: left;} -#adminpage td .icon { float: left;} -#adminpage table#users img { width: 16px; height: 16px; } -#adminpage table tr:hover { background-color: #eeeeee; } -#adminpage .selectall { text-align: right; } +#adminpage table { + width: 100%; + border-bottom: 1p solid #000000; + margin: 5px 0px; +} + +#adminpage table th { + text-align: left; +} + +#adminpage td .icon { + float: left; +} + +#adminpage table#users img { + width: 16px; + height: 16px; +} + +#adminpage table tr:hover { + background-color: #eeeeee; +} + +#adminpage .selectall { + text-align: right; +} /* =============== */ /* = Form Fields = */ @@ -2830,13 +3243,12 @@ tr { margin-bottom: 10px; margin-top: 10px; padding-bottom: 0px; - /*overflow: auto;*/ width: 90%; } .field label { float: left; - width: 480px; /*550*/ + width: 480px; } .field input, @@ -2844,9 +3256,11 @@ tr { width: 220px; border: 1px solid #CDCDCD; border-radius: 5px 5px 5px 5px; - /*box-shadow: 3px 3px 4px 0 #959494;*/ } -.field textarea { height: 100px; } +.field textarea { + height: 100px; +} + .field_help { display: block; margin-left: 100px; @@ -2859,15 +3273,15 @@ tr { } .field .onoff a { display: block; - border:1px solid #c1c1c1; - background-image:url("../../../images/onoff.jpg"); + border: 1px solid #c1c1c1; + background-image: url("../../../images/onoff.jpg"); background-repeat: no-repeat; padding: 4px 2px 2px 2px; height: 16px; text-decoration: none; } .field .onoff .off { - border-color:#c1c1c1; + border-color: #c1c1c1; padding-left: 40px; background-position: left center; background-color: #cccccc; @@ -2876,7 +3290,7 @@ tr { } .field .onoff .on { - border-color:#c1c1c1; + border-color: #c1c1c1; padding-right: 40px; background-position: right center; background-color: #1873a2; @@ -2884,9 +3298,13 @@ tr { text-align: left; } -.hidden { display: none!important; } +.hidden { + display: none!important; +} -.field.radio .field_help { margin-left: 0px; } +.field.radio .field_help { + margin-left: 0px; +} /* ========= */ /* = Icons = */ @@ -2899,11 +3317,13 @@ tr { .icon { margin-left: 5px; margin-right: 5px; - display: block; width: 20px; height: 20px; + display: block; + width: 20px; + height: 20px; background-image: url("icons.png"); } .starred { - background-image: url("star.png"); + background-image: url("star.png"); repeat: no-repeat; } .unstarred { @@ -2912,15 +3332,15 @@ tr { } .notify { - background-image: url("notifications.png");} + background-image: url("notifications.png"); repeat: no-repeat; } .border { border: 1px solid #c1c1c1; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; } .article { background-position: -50px 0px;} @@ -2929,16 +3349,16 @@ tr { .drop { background-position: -110px 0px;} .drophide { background-position: -130px 0px;} .edit { background-position: -150px 0px;} -.camera { background-position: -170px 0px;} +.camera { background-position: -170px 0px;} .dislike { background-position: -190px 0px;} .like { background-position: -210px 0px;} .link { background-position: -230px 0px;} .globe { background-position: -50px -20px;} .noglobe { background-position: -70px -20px;} -.no { background-position: -90px -20px;} +.no { background-position: -90px -20px;} .pause { background-position: -110px -20px;} .play { background-position: -130px -20px;} -.pencil { background-position: -150px -20px;} +.pencil { background-position: -150px -20px;} .small-pencil { background-position: -170px -20px;} .recycle { background-position: -190px -20px;} .remote-link { background-position: -210px -20px;} @@ -2962,18 +3382,14 @@ tr { .video { background-position: -110px -40px;} .youtube { background-position: -130px -40px;} - -.attach { background-position: -190px -40px;} +.attach { background-position: -190px -40px;} .language { background-position: -210px -40px;} - - -.on { background-position: -50px -60px;} +.on { background-position: -50px -60px;} .off { background-position: -70px -60px;} .prev { background-position: -90px -60px;} .next { background-position: -110px -60px;} -.tagged { background-position: -130px -60px;} - -.icon.dim { opacity: 0.3;filter:alpha(opacity=30); } +.tagged { background-position: -130px -60px;} +.icon.dim { opacity: 0.3;filter:alpha(opacity=30);} .attachtype { display: block; width: 20px; height: 23px; @@ -2989,14 +3405,21 @@ tr { /* ========== */ /* = Footer = */ /* ========== */ - -.cc-license { margin-top: 100px; font-size: 0.7em; } -footer { display: block; margin: 50px 20%; clear: both; } - + +.cc-license { + margin-top: 100px; + font-size: 0.7em; +} + +footer { + display: block; + margin: 50px 20%; + clear: both; +} + #profile-jot-text { height: 20px; - color:#cccccc; - /*border: 1px solid #cccccc;*/ + color: #cccccc; } /* ======= */ @@ -3006,7 +3429,7 @@ footer { display: block; margin: 50px 20%; clear: both; } #photo-edit-perms-select, #photos-upload-permissions-wrapper, #profile-jot-acl-wrapper{ - display:block!important; + display: block!important; } #acl-wrapper { @@ -3016,8 +3439,9 @@ footer { display: block; margin: 50px 20%; clear: both; } #acl-search { float:right; background: #ffffff url("../../../images/search_18.png") no-repeat right center; - padding-right:20px; + padding-right: 20px; } + #acl-showall { float: left; display: block; @@ -3030,13 +3454,14 @@ footer { display: block; margin: 50px 20%; clear: both; } background-position: 7px 7px; background-repeat: no-repeat; padding: 5px; - -webkit-border-radius: 5px ; - -moz-border-radius: 5px; border-radius: 5px; + -webkit-border-radius: 5px ; + -moz-border-radius: 5px; color: #999999; } + #acl-showall.selected { - color: #fff; + color: #ffffff; background-color: #1873a2; } @@ -3061,19 +3486,19 @@ footer { display: block; margin: 50px 20%; clear: both; } background-color: #fff; margin: 5px; float: left; - -moz-box-shadow: 2px 2px 3px #c1c1c1; - -webkit-box-shadow: 2px 2px 3px #c1c1c1; box-shadow: 2px 2px 3px #c1c1c1; + -moz-box-shadow: 2px 2px 3px #c1c1c1; + -webkit-box-shadow: 2px 2px 3px #c1c1c1; } .acl-list-item img{ - width:30px; + width: 30px; height: 30px; float: left; margin: 5px; } .acl-list-item p { - color: #999; + color: #999999; height: 12px; font-size: 0.7em; margin: 0px; @@ -3090,9 +3515,9 @@ footer { display: block; margin: 50px 20%; clear: both; } background-position: 3px 3px; background-repeat: no-repeat; margin: 10px 0 0 5px; - -webkit-border-radius: 2px ; - -moz-border-radius: 2px; border-radius: 2px; + -webkit-border-radius: 2px ; + -moz-border-radius: 2px; padding: 3px; } @@ -3123,32 +3548,32 @@ footer { display: block; margin: 50px 20%; clear: both; } padding: 7px; margin-bottom: 10px; margin-left: 0px; - -moz-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow:inset 0px 1px 0px 0px #cfcfcf; - box-shadow:inset 0px 1px 0px 0px #cfcfcf; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); - background:-moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); - background-color:#bdbdbd; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; + box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -moz-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + -webkit-box-shadow: inset 0px 1px 0px 0px #cfcfcf; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); + background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); + background-color: #bdbdbd; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; color: #efefef; text-align: center; } #global-directory-link:hover { color: #efefef; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; } #global-directory-link:active { background-color: #1873a2; - position:relative; - top:1px; + position: relative; + top: 1px; } #global-directory-link a { @@ -3160,11 +3585,11 @@ footer { display: block; margin: 50px 20%; clear: both; } } a.active { - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; - color:#fec01d; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; + color: #fec01d; padding: 5px 10px 5px 10px; margin-right: 5px; } @@ -3196,35 +3621,48 @@ ul.menu-popup { #nav-notifications-menu { width: 320px; max-height: 400px; - overflow-y: scroll;overflow-style:scrollbar; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #797979), color-stop(1, #898988) ); - background:-moz-linear-gradient( center top, #797979 5%, #898988 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#797979', endColorstr='#898988'); - background-color:#a2a2a2; - -moz-border-radius:0px 0px 5px 5px; - -webkit-border-radius:0px 0px 5px 5px; - border-radius:0px 0px 5px 5px; + overflow-y: scroll; + overflow-style: scrollbar; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #797979), color-stop(1, #898988) ); + background: -moz-linear-gradient( center top, #797979 5%, #898988 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#797979', endColorstr='#898988'); + background-color: #a2a2a2; + border-radius: 0px 0px 5px 5px; + -moz-border-radius: 0px 0px 5px 5px; + -webkit-border-radius: 0px 0px 5px 5px; border: 1px solid #9A9A9A; border-top: none; - -moz-box-shadow: 5px 5px 10px #242424; - -webkit-box-shadow: 5px 5px 10px #242424; box-shadow: 5px 5px 10px #242424; + -moz-box-shadow: 5px 5px 10px #242424; + -webkit-box-shadow: 5px 5px 10px #242424; } -#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 .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; + word-wrap: normal; border-bottom: 1px solid #626262; } #nav-notifications-menu li:hover { - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; } #nav-notifications-menu a:hover { @@ -3253,25 +3691,26 @@ ul.menu-popup { /* autocomplete popup */ .acpopup { - max-height:150px; - overflow:auto; - z-index:100000; + max-height: 150px; + overflow: auto; + z-index: 100000; color: #2e3436; border-top: 0px; background: #eeeeee; border-right: 1px solid #dddddd; border-left: 1px solid #dddddd; border-bottom: 1px solid #dddddd; - -webkit-border-radius: 0px 5px 5px 5px; - -moz-border-radius: 0px 5px 5px 5px; border-radius: 0px 5px 5px 5px; - -moz-box-shadow: 3px 3px 4px #959494; - -webkit-box-shadow: 3px 3px 4px #959494; + -webkit-border-radius: 0px 5px 5px 5px; + -moz-border-radius: 0px 5px 5px 5px; box-shadow: 3px 3px 4px #959494; + -moz-box-shadow: 3px 3px 4px #959494; + -webkit-box-shadow: 3px 3px 4px #959494; } .acpopupitem { - color: #2e3436; padding: 4px; + color: #2e3436; + padding: 4px; clear:left; } .acpopupitem img { @@ -3281,25 +3720,25 @@ ul.menu-popup { .acpopupitem.selected { color: #efefef; - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); - background:-moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); - background-color:#1873a2; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); + background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); + background-color: #1873a2; order-bottom: none; } .qcomment { opacity: 0; - filter:alpha(opacity=0); + filter: alpha(opacity=0); } .qcomment:hover { opacity: 1.0; - filter:alpha(opacity=100); + filter: alpha(opacity=100); } .notify-seen { - background: #000; + background: #000000; } /* Pages profile widget @@ -3311,7 +3750,6 @@ ul.menu-popup { hr.line-dots { background: url("dot.png") repeat-x scroll left center transparent; border: medium none; - /*padding: 0.5em 0;*/ } /* SCROLL TO TOP @@ -3322,9 +3760,15 @@ hr.line-dots { bottom:5px; z-index:100; } -#scrollup a:hover{text-decoration:none;border:0;} +#scrollup a:hover{ + text-decoration: none; + border: 0; +} + +/* New posts and comments => background color +----------------------------------------------------------- */ .shiny { -background: #fbfde9; -border-radius: 5px; + background: #fbfde9; + border-radius: 5px; } \ No newline at end of file From 0cc661dd9c4c6a3d282ca07230b59411ecf97ff0 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Thu, 13 Sep 2012 16:50:55 +0200 Subject: [PATCH 073/140] modified: view/theme/smoothly/style.css --- view/theme/smoothly/style.css | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index 8fc103994..8c6dd2290 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -3755,10 +3755,10 @@ hr.line-dots { /* SCROLL TO TOP ----------------------------------------------------------- */ #scrollup { - position:fixed; - right:5px; - bottom:5px; - z-index:100; + position: fixed; + right: 5px; + bottom: 5px; + z-index: 100; } #scrollup a:hover{ @@ -3771,4 +3771,9 @@ hr.line-dots { .shiny { background: #fbfde9; border-radius: 5px; -} \ No newline at end of file +} + +/*div.wall-item-content-wrapper.shiny { + background-image: url("star.png"); + background-repeat: no-repeat; +}*/ \ No newline at end of file From 4b8f3a4194b8fbec19e8a085fcd16e9369fbfcd2 Mon Sep 17 00:00:00 2001 From: Thomas Willingham Date: Thu, 13 Sep 2012 20:51:34 +0100 Subject: [PATCH 074/140] Friendicaland --- js/country.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/country.js b/js/country.js index 1494dad2e..96165409a 100644 --- a/js/country.js +++ b/js/country.js @@ -275,7 +275,7 @@ aStates[249]="|'Adan|'Ataq|Abyan|Al Bayda'|Al Hudaydah|Al Jawf|Al Mahrah|Al Mahw aStates[250]="|Kosovo|Montenegro|Serbia|Vojvodina"; aStates[251]="|Central|Copperbelt|Eastern|Luapula|Lusaka|North-Western|Northern|Southern|Western"; aStates[252]="|Bulawayo|Harare|ManicalandMashonaland Central|Mashonaland East|Mashonaland West|Masvingo|Matabeleland North|Matabeleland South|Midlands"; -aStates[253]="|Self Hosted|Private Server|Architects Of Sleep|DFRN|Distributed Friend Network|ErrLock|Free-Beer.ch|Foojbook|Free-Haven|Friendica.eu|Friendika.me.4.it|Friendika - I Ask Questions|Frndc.com|Hikado|Hipatia|Hungerfreunde|Kaluguran Community|Kak Ste|Karl.Markx.pm|Loozah Social Club|MyFriendica.net|MyFriendNetwork|Oi!|OpenMindSpace|Optimistisch|Recolutionari.es|SilverLips|Sparkling Network|SPRACI|Styliztique|Sysfu Social Club|Trevena|theshi.re|Tumpambae|Uzmiac|Other"; +aStates[253]="|Self Hosted|Private Server|Architects Of Sleep|DFRN|Distributed Friend Network|ErrLock|Free-Beer.ch|Foojbook|Free-Haven|Friendica.eu|Friendika.me.4.it|Friendika - I Ask Questions|Frndc.com|Hikado|Hipatia|Hungerfreunde|Kaluguran Community|Kak Ste|Karl.Markx.pm|Loozah Social Club|MyFriendica.net|MyFriendNetwork|Oi!|OpenMindSpace|Optimistisch|Pplsnet|Recolutionari.es|SilverLips|Sparkling Network|SPRACI|Styliztique|Sysfu Social Club|Trevena|theshi.re|Tumpambae|Uzmiac|Other"; /* * gArCountryInfo * (0) Country name From aa37b0cb0f07656e65510225ebe216458108cc63 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 13 Sep 2012 16:58:06 -0700 Subject: [PATCH 075/140] rev update --- boot.php | 2 +- util/messages.po | 238 ++++++++++++++++++++++++++++++----------------- 2 files changed, 155 insertions(+), 85 deletions(-) diff --git a/boot.php b/boot.php index c0a7a0e29..01b99abd8 100644 --- a/boot.php +++ b/boot.php @@ -11,7 +11,7 @@ require_once('include/cache.php'); require_once('library/Mobile_Detect/Mobile_Detect.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1464' ); +define ( 'FRIENDICA_VERSION', '3.0.1465' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1155 ); diff --git a/util/messages.po b/util/messages.po index 694414f4a..e88044c5b 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1464\n" +"Project-Id-Version: 3.0.1465\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-09-12 10:00-0700\n" +"POT-Creation-Date: 2012-09-13 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -56,8 +56,9 @@ msgstr "" #: ../../mod/profiles.php:413 ../../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:510 -#: ../../addon/facebook/facebook.php:516 -#: ../../addon/dav/friendica/layout.fnk.php:354 ../../include/items.php:3844 +#: ../../addon/facebook/facebook.php:516 ../../addon/fbpost/fbpost.php:159 +#: ../../addon/fbpost/fbpost.php:165 +#: ../../addon/dav/friendica/layout.fnk.php:354 ../../include/items.php:3908 #: ../../index.php:317 msgid "Permission denied." msgstr "" @@ -140,15 +141,15 @@ msgstr "" #: ../../addon/fromgplus/fromgplus.php:40 #: ../../addon/facebook/facebook.php:619 #: ../../addon/snautofollow/snautofollow.php:64 ../../addon/bg/bg.php:90 -#: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93 -#: ../../addon/nsfw/nsfw.php:57 ../../addon/page/page.php:210 -#: ../../addon/planets/planets.php:158 +#: ../../addon/fbpost/fbpost.php:226 ../../addon/yourls/yourls.php:76 +#: ../../addon/ljpost/ljpost.php:93 ../../addon/nsfw/nsfw.php:57 +#: ../../addon/page/page.php:210 ../../addon/planets/planets.php:158 #: ../../addon/uhremotestorage/uhremotestorage.php:89 #: ../../addon/randplace/randplace.php:177 ../../addon/dwpost/dwpost.php:93 #: ../../addon/drpost/drpost.php:110 ../../addon/startpage/startpage.php:92 #: ../../addon/geonames/geonames.php:187 ../../addon/oembed.old/oembed.php:41 #: ../../addon/forumlist/forumlist.php:169 -#: ../../addon/impressum/impressum.php:82 +#: ../../addon/impressum/impressum.php:83 #: ../../addon/notimeline/notimeline.php:64 ../../addon/blockem/blockem.php:57 #: ../../addon/qcomment/qcomment.php:61 #: ../../addon/openstreetmap/openstreetmap.php:70 @@ -158,7 +159,7 @@ msgstr "" #: ../../addon/mathjax/mathjax.php:42 ../../addon/editplain/editplain.php:84 #: ../../addon/blackout/blackout.php:98 ../../addon/gravatar/gravatar.php:95 #: ../../addon/pageheader/pageheader.php:55 ../../addon/ijpost/ijpost.php:93 -#: ../../addon/jappixmini/jappixmini.php:302 +#: ../../addon/jappixmini/jappixmini.php:307 #: ../../addon/statusnet/statusnet.php:278 #: ../../addon/statusnet/statusnet.php:292 #: ../../addon/statusnet/statusnet.php:318 @@ -874,7 +875,7 @@ msgstr "" msgid "Confirm" msgstr "" -#: ../../mod/dfrn_request.php:715 ../../include/items.php:3223 +#: ../../mod/dfrn_request.php:715 ../../include/items.php:3287 msgid "[Name Withheld]" msgstr "" @@ -1951,9 +1952,9 @@ msgstr "" #: ../../mod/register.php:90 ../../mod/register.php:144 #: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:752 #: ../../addon/facebook/facebook.php:702 -#: ../../addon/facebook/facebook.php:1200 +#: ../../addon/facebook/facebook.php:1200 ../../addon/fbpost/fbpost.php:661 #: ../../addon/public_server/public_server.php:62 -#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:3232 +#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:3296 #: ../../boot.php:788 msgid "Administrator" msgstr "" @@ -2101,7 +2102,7 @@ msgid "Private forum has no privacy permissions and no default privacy group." msgstr "" #: ../../mod/settings.php:471 ../../addon/facebook/facebook.php:495 -#: ../../addon/impressum/impressum.php:77 +#: ../../addon/fbpost/fbpost.php:144 ../../addon/impressum/impressum.php:78 #: ../../addon/openstreetmap/openstreetmap.php:80 #: ../../addon/mathjax/mathjax.php:66 ../../addon/piwik/piwik.php:105 #: ../../addon/twitter/twitter.php:389 @@ -2648,6 +2649,7 @@ msgstr "" #: ../../mod/notes.php:63 ../../mod/filer.php:30 #: ../../addon/facebook/facebook.php:770 #: ../../addon/privacy_image_cache/privacy_image_cache.php:263 +#: ../../addon/fbpost/fbpost.php:267 #: ../../addon/dav/friendica/layout.fnk.php:441 #: ../../addon/dav/friendica/layout.fnk.php:488 ../../include/text.php:681 msgid "Save" @@ -2809,7 +2811,7 @@ msgid "Connecting" msgstr "" #: ../../mod/newmember.php:49 ../../mod/newmember.php:51 -#: ../../addon/facebook/facebook.php:728 +#: ../../addon/facebook/facebook.php:728 ../../addon/fbpost/fbpost.php:239 #: ../../include/contact_selectors.php:81 msgid "Facebook" msgstr "" @@ -3110,7 +3112,7 @@ msgstr "" #: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:159 #: ../../mod/admin.php:731 ../../mod/admin.php:930 ../../mod/display.php:29 -#: ../../mod/display.php:145 ../../include/items.php:3710 +#: ../../mod/display.php:145 ../../include/items.php:3774 msgid "Item not found." msgstr "" @@ -4747,7 +4749,7 @@ msgstr "" msgid "Updating contacts" msgstr "" -#: ../../addon/facebook/facebook.php:551 +#: ../../addon/facebook/facebook.php:551 ../../addon/fbpost/fbpost.php:192 msgid "Facebook API key is missing." msgstr "" @@ -4763,13 +4765,13 @@ msgstr "" msgid "Remove Facebook connector" msgstr "" -#: ../../addon/facebook/facebook.php:576 +#: ../../addon/facebook/facebook.php:576 ../../addon/fbpost/fbpost.php:217 msgid "" "Re-authenticate [This is necessary whenever your Facebook password is " "changed.]" msgstr "" -#: ../../addon/facebook/facebook.php:583 +#: ../../addon/facebook/facebook.php:583 ../../addon/fbpost/fbpost.php:224 msgid "Post to Facebook by default" msgstr "" @@ -4835,11 +4837,11 @@ msgstr "" msgid "Facebook Connector Settings" msgstr "" -#: ../../addon/facebook/facebook.php:744 +#: ../../addon/facebook/facebook.php:744 ../../addon/fbpost/fbpost.php:255 msgid "Facebook API Key" msgstr "" -#: ../../addon/facebook/facebook.php:754 +#: ../../addon/facebook/facebook.php:754 ../../addon/fbpost/fbpost.php:262 msgid "" "Error: it appears that you have specified the App-ID and -Secret in your ." "htconfig.php file. As long as they are specified there, they cannot be set " @@ -4862,11 +4864,11 @@ msgid "" "going on." msgstr "" -#: ../../addon/facebook/facebook.php:766 +#: ../../addon/facebook/facebook.php:766 ../../addon/fbpost/fbpost.php:264 msgid "App-ID / API-Key" msgstr "" -#: ../../addon/facebook/facebook.php:767 +#: ../../addon/facebook/facebook.php:767 ../../addon/fbpost/fbpost.php:265 msgid "Application secret" msgstr "" @@ -4901,38 +4903,38 @@ msgstr "" msgid "Activate Real-Time Updates" msgstr "" -#: ../../addon/facebook/facebook.php:799 +#: ../../addon/facebook/facebook.php:799 ../../addon/fbpost/fbpost.php:282 #: ../../addon/dav/friendica/layout.fnk.php:361 msgid "The new values have been saved." msgstr "" -#: ../../addon/facebook/facebook.php:823 +#: ../../addon/facebook/facebook.php:823 ../../addon/fbpost/fbpost.php:301 msgid "Post to Facebook" msgstr "" -#: ../../addon/facebook/facebook.php:921 +#: ../../addon/facebook/facebook.php:921 ../../addon/fbpost/fbpost.php:399 msgid "" "Post to Facebook cancelled because of multi-network access permission " "conflict." msgstr "" -#: ../../addon/facebook/facebook.php:1149 +#: ../../addon/facebook/facebook.php:1149 ../../addon/fbpost/fbpost.php:610 msgid "View on Friendica" msgstr "" -#: ../../addon/facebook/facebook.php:1182 +#: ../../addon/facebook/facebook.php:1182 ../../addon/fbpost/fbpost.php:643 msgid "Facebook post failed. Queued for retry." msgstr "" -#: ../../addon/facebook/facebook.php:1222 +#: ../../addon/facebook/facebook.php:1222 ../../addon/fbpost/fbpost.php:683 msgid "Your Facebook connection became invalid. Please Re-authenticate." msgstr "" -#: ../../addon/facebook/facebook.php:1223 +#: ../../addon/facebook/facebook.php:1223 ../../addon/fbpost/fbpost.php:684 msgid "Facebook connection became invalid" msgstr "" -#: ../../addon/facebook/facebook.php:1224 +#: ../../addon/facebook/facebook.php:1224 ../../addon/fbpost/fbpost.php:685 #, php-format msgid "" "Hi %1$s,\n" @@ -4986,6 +4988,26 @@ msgstr "" msgid "Delete the whole cache" msgstr "" +#: ../../addon/fbpost/fbpost.php:172 +msgid "Facebook Post disabled" +msgstr "" + +#: ../../addon/fbpost/fbpost.php:199 +msgid "Facebook Post" +msgstr "" + +#: ../../addon/fbpost/fbpost.php:205 +msgid "Install Facebook Post connector for this account." +msgstr "" + +#: ../../addon/fbpost/fbpost.php:212 +msgid "Remove Facebook Post connector" +msgstr "" + +#: ../../addon/fbpost/fbpost.php:240 +msgid "Facebook Post Settings" +msgstr "" + #: ../../addon/widgets/widget_like.php:58 #, php-format msgid "%d person likes this" @@ -5045,11 +5067,11 @@ msgid "did something obscenely biological to" msgstr "" #: ../../addon/morepokes/morepokes.php:22 -msgid "point out the new poke feature to" +msgid "point out the poke feature to" msgstr "" #: ../../addon/morepokes/morepokes.php:22 -msgid "pointed out the new poke feature to" +msgid "pointed out the poke feature to" msgstr "" #: ../../addon/morepokes/morepokes.php:23 @@ -5061,112 +5083,108 @@ msgid "declared undying love for" msgstr "" #: ../../addon/morepokes/morepokes.php:24 -msgid "set fire to" -msgstr "" - -#: ../../addon/morepokes/morepokes.php:25 msgid "patent" msgstr "" -#: ../../addon/morepokes/morepokes.php:25 +#: ../../addon/morepokes/morepokes.php:24 msgid "patented" msgstr "" -#: ../../addon/morepokes/morepokes.php:26 +#: ../../addon/morepokes/morepokes.php:25 msgid "stroke beard" msgstr "" -#: ../../addon/morepokes/morepokes.php:26 +#: ../../addon/morepokes/morepokes.php:25 msgid "stroked their beard at" msgstr "" -#: ../../addon/morepokes/morepokes.php:27 +#: ../../addon/morepokes/morepokes.php:26 msgid "" "bemoan the declining standards of modern secondary and tertiary education to" msgstr "" -#: ../../addon/morepokes/morepokes.php:27 +#: ../../addon/morepokes/morepokes.php:26 msgid "" "bemoans the declining standards of modern secondary and tertiary education to" msgstr "" -#: ../../addon/morepokes/morepokes.php:28 +#: ../../addon/morepokes/morepokes.php:27 msgid "hug" msgstr "" -#: ../../addon/morepokes/morepokes.php:28 +#: ../../addon/morepokes/morepokes.php:27 msgid "hugged" msgstr "" -#: ../../addon/morepokes/morepokes.php:29 +#: ../../addon/morepokes/morepokes.php:28 msgid "kiss" msgstr "" -#: ../../addon/morepokes/morepokes.php:29 +#: ../../addon/morepokes/morepokes.php:28 msgid "kissed" msgstr "" -#: ../../addon/morepokes/morepokes.php:30 +#: ../../addon/morepokes/morepokes.php:29 msgid "raise eyebrows at" msgstr "" -#: ../../addon/morepokes/morepokes.php:30 +#: ../../addon/morepokes/morepokes.php:29 msgid "raised their eyebrows at" msgstr "" -#: ../../addon/morepokes/morepokes.php:31 +#: ../../addon/morepokes/morepokes.php:30 msgid "insult" msgstr "" -#: ../../addon/morepokes/morepokes.php:31 +#: ../../addon/morepokes/morepokes.php:30 msgid "insulted" msgstr "" -#: ../../addon/morepokes/morepokes.php:32 +#: ../../addon/morepokes/morepokes.php:31 msgid "praise" msgstr "" -#: ../../addon/morepokes/morepokes.php:32 +#: ../../addon/morepokes/morepokes.php:31 msgid "praised" msgstr "" -#: ../../addon/morepokes/morepokes.php:33 +#: ../../addon/morepokes/morepokes.php:32 msgid "be dubious of" msgstr "" -#: ../../addon/morepokes/morepokes.php:33 +#: ../../addon/morepokes/morepokes.php:32 msgid "was dubious of" msgstr "" -#: ../../addon/morepokes/morepokes.php:34 +#: ../../addon/morepokes/morepokes.php:33 msgid "eat" msgstr "" -#: ../../addon/morepokes/morepokes.php:34 +#: ../../addon/morepokes/morepokes.php:33 msgid "ate" msgstr "" -#: ../../addon/morepokes/morepokes.php:35 +#: ../../addon/morepokes/morepokes.php:34 msgid "giggle and fawn at" msgstr "" -#: ../../addon/morepokes/morepokes.php:35 +#: ../../addon/morepokes/morepokes.php:34 msgid "giggled and fawned at" msgstr "" -#: ../../addon/morepokes/morepokes.php:36 +#: ../../addon/morepokes/morepokes.php:35 msgid "doubt" msgstr "" -#: ../../addon/morepokes/morepokes.php:36 +#: ../../addon/morepokes/morepokes.php:35 msgid "doubted" msgstr "" -#: ../../addon/morepokes/morepokes.php:37 +#: ../../addon/morepokes/morepokes.php:36 msgid "glare" msgstr "" -#: ../../addon/morepokes/morepokes.php:37 +#: ../../addon/morepokes/morepokes.php:36 msgid "glared at" msgstr "" @@ -6127,68 +6145,68 @@ msgstr "" msgid "Show forumlists/forums on profile forumlist" msgstr "" -#: ../../addon/impressum/impressum.php:36 +#: ../../addon/impressum/impressum.php:37 msgid "Impressum" msgstr "" -#: ../../addon/impressum/impressum.php:49 -#: ../../addon/impressum/impressum.php:51 -#: ../../addon/impressum/impressum.php:83 +#: ../../addon/impressum/impressum.php:50 +#: ../../addon/impressum/impressum.php:52 +#: ../../addon/impressum/impressum.php:84 msgid "Site Owner" msgstr "" -#: ../../addon/impressum/impressum.php:49 -#: ../../addon/impressum/impressum.php:87 +#: ../../addon/impressum/impressum.php:50 +#: ../../addon/impressum/impressum.php:88 msgid "Email Address" msgstr "" -#: ../../addon/impressum/impressum.php:54 -#: ../../addon/impressum/impressum.php:85 +#: ../../addon/impressum/impressum.php:55 +#: ../../addon/impressum/impressum.php:86 msgid "Postal Address" msgstr "" -#: ../../addon/impressum/impressum.php:60 +#: ../../addon/impressum/impressum.php:61 msgid "" "The impressum addon needs to be configured!
Please add at least the " "owner variable to your config file. For other variables please " "refer to the README file of the addon." msgstr "" -#: ../../addon/impressum/impressum.php:83 +#: ../../addon/impressum/impressum.php:84 msgid "The page operators name." msgstr "" -#: ../../addon/impressum/impressum.php:84 +#: ../../addon/impressum/impressum.php:85 msgid "Site Owners Profile" msgstr "" -#: ../../addon/impressum/impressum.php:84 +#: ../../addon/impressum/impressum.php:85 msgid "Profile address of the operator." msgstr "" -#: ../../addon/impressum/impressum.php:85 +#: ../../addon/impressum/impressum.php:86 msgid "How to contact the operator via snail mail. You can use BBCode here." msgstr "" -#: ../../addon/impressum/impressum.php:86 +#: ../../addon/impressum/impressum.php:87 msgid "Notes" msgstr "" -#: ../../addon/impressum/impressum.php:86 +#: ../../addon/impressum/impressum.php:87 msgid "" "Additional notes that are displayed beneath the contact information. You can " "use BBCode here." msgstr "" -#: ../../addon/impressum/impressum.php:87 +#: ../../addon/impressum/impressum.php:88 msgid "How to contact the operator via email. (will be displayed obfuscated)" msgstr "" -#: ../../addon/impressum/impressum.php:88 +#: ../../addon/impressum/impressum.php:89 msgid "Footer note" msgstr "" -#: ../../addon/impressum/impressum.php:88 +#: ../../addon/impressum/impressum.php:89 msgid "Text for the footer. You can use BBCode here." msgstr "" @@ -6498,6 +6516,58 @@ msgstr "" msgid "Post to InsaneJournal by default" msgstr "" +#: ../../addon/jappixmini/jappixmini.php:266 +msgid "Jappix Mini addon settings" +msgstr "" + +#: ../../addon/jappixmini/jappixmini.php:268 +msgid "Activate addon" +msgstr "" + +#: ../../addon/jappixmini/jappixmini.php:271 +msgid "Do not insert the Jappixmini Chat-Widget into the webinterface" +msgstr "" + +#: ../../addon/jappixmini/jappixmini.php:274 +msgid "Jabber username" +msgstr "" + +#: ../../addon/jappixmini/jappixmini.php:277 +msgid "Jabber server" +msgstr "" + +#: ../../addon/jappixmini/jappixmini.php:281 +msgid "Jabber BOSH host" +msgstr "" + +#: ../../addon/jappixmini/jappixmini.php:285 +msgid "Jabber password" +msgstr "" + +#: ../../addon/jappixmini/jappixmini.php:290 +msgid "Encrypt Jabber password with Friendica password (recommended)" +msgstr "" + +#: ../../addon/jappixmini/jappixmini.php:293 +msgid "Friendica password" +msgstr "" + +#: ../../addon/jappixmini/jappixmini.php:296 +msgid "Approve subscription requests from Friendica contacts automatically" +msgstr "" + +#: ../../addon/jappixmini/jappixmini.php:299 +msgid "Subscribe to Friendica contacts automatically" +msgstr "" + +#: ../../addon/jappixmini/jappixmini.php:302 +msgid "Purge internal list of jabber addresses of contacts" +msgstr "" + +#: ../../addon/jappixmini/jappixmini.php:308 +msgid "Add contact" +msgstr "" + #: ../../addon/viewsrc/viewsrc.php:37 msgid "View Source" msgstr "" @@ -8062,12 +8132,12 @@ msgstr "" msgid "%1$d %2$s ago" msgstr "" -#: ../../include/datetime.php:472 ../../include/items.php:1621 +#: ../../include/datetime.php:472 ../../include/items.php:1683 #, php-format msgid "%s's birthday" msgstr "" -#: ../../include/datetime.php:473 ../../include/items.php:1622 +#: ../../include/datetime.php:473 ../../include/items.php:1684 #, php-format msgid "Happy Birthday %s" msgstr "" @@ -8341,15 +8411,15 @@ msgstr "" msgid "following" msgstr "" -#: ../../include/items.php:3230 +#: ../../include/items.php:3294 msgid "A new person is sharing with you at " msgstr "" -#: ../../include/items.php:3230 +#: ../../include/items.php:3294 msgid "You have a new follower at " msgstr "" -#: ../../include/items.php:3911 +#: ../../include/items.php:3975 msgid "Archives" msgstr "" From d19a3b832455dc33eeda4f028cb191170d833c21 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 13 Sep 2012 16:59:25 -0700 Subject: [PATCH 076/140] provide separate hashtag and mentions for themes in addition to composite tags --- include/conversation.php | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 30ac3533d..91310277f 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -467,9 +467,19 @@ function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $pr $location = ((strlen($locate['html'])) ? $locate['html'] : render_location_google($locate)); $tags=array(); + $hashtags = array(); + $mentions = array(); foreach(explode(',',$item['tag']) as $tag){ $tag = trim($tag); - if ($tag!="") $tags[] = bbcode($tag); + if ($tag!="") { + $t = bbcode($tag); + $tags[] = $t; + if($t[0] == '#') + $hashtags[] = $t; + elseif($t[0] == '@') + $mentions[] = $t; + } + } $like = ((x($alike,$item['uri'])) ? format_like($alike[$item['uri']],$alike[$item['uri'] . '-l'],'like',$item['uri']) : ''); @@ -620,7 +630,9 @@ function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $pr 'template' => $template, 'type' => implode("",array_slice(explode("/",$item['verb']),-1)), - 'tags' => $tags, + 'tags' => template_escape($tags), + 'hashtags' => template_escape($hashtags), + 'mentions' => template_escape($mentions), 'body' => template_escape($body), 'text' => strip_tags(template_escape($body)), 'id' => $item['item_id'], @@ -814,6 +826,21 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { + $tags=array(); + $hashtags = array(); + $mentions = array(); + foreach(explode(',',$item['tag']) as $tag){ + $tag = trim($tag); + if ($tag!="") { + $t = bbcode($tag); + $tags[] = $t; + if($t[0] == '#') + $hashtags[] = $t; + elseif($t[0] == '@') + $mentions[] = $t; + } + } + $sp = false; $profile_link = best_link_url($item,$sp); if($profile_link === 'mailbox') @@ -869,6 +896,9 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 'thumb' => $profile_avatar, 'title' => template_escape($item['title']), 'body' => template_escape($body), + 'tags' => template_escape($tags), + 'hashtags' => template_escape($hashtags), + 'mentions' => template_escape($mentions), 'text' => strip_tags(template_escape($body)), 'localtime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'r'), 'ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])), From 32d4a359f1bc713b37f47d1d2a5e1f47d8ca6501 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 13 Sep 2012 19:11:07 -0700 Subject: [PATCH 077/140] reverse the default newuser privacy setting to public. Sites can over-ride. --- include/user.php | 28 ++++++++++++++++---------- mod/admin.php | 6 +++--- mod/newmember.php | 2 +- view/admin_site.tpl | 2 +- view/theme/frost-mobile/admin_site.tpl | 2 +- view/theme/frost/admin_site.tpl | 2 +- 6 files changed, 24 insertions(+), 18 deletions(-) diff --git a/include/user.php b/include/user.php index 2d06ef374..282bbdbba 100644 --- a/include/user.php +++ b/include/user.php @@ -277,18 +277,24 @@ function create_user($arr) { require_once('include/group.php'); group_add($newuid, t('Friends')); - if(! get_config('system', 'newuser_public')) { - $r = q("SELECT id FROM `group` WHERE uid = %d AND name = '%s'", - intval($newuid), - dbesc(t('Friends')) + $r = q("SELECT id FROM `group` WHERE uid = %d AND name = '%s'", + intval($newuid), + dbesc(t('Friends')) + ); + if($r && count($r)) { + $def_gid = $r[0]['id']; + + q("UPDATE user SET def_gid = %d WHERE uid = %d", + intval($r[0]['id']), + intval($newuid) + ); + } + + if(get_config('system', 'newuser_private') && $def_gid) { + q("UPDATE user SET allow_gid = '%s' WHERE uid = %d", + dbesc("<" . $def_gid . ">"), + intval($newuid) ); - if($r) { - q("UPDATE user SET def_gid = %d, allow_gid = '%s' WHERE uid = %d", - intval($r[0]['id']), - dbesc("<" . $r[0]['id'] . ">"), - intval($newuid) - ); - } } } diff --git a/mod/admin.php b/mod/admin.php index db4d4cff2..2d1d21bb4 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -254,7 +254,7 @@ function admin_page_site_post(&$a){ $force_publish = ((x($_POST,'publish_all')) ? True : False); $global_directory = ((x($_POST,'directory_submit_url')) ? notags(trim($_POST['directory_submit_url'])) : ''); $thread_allow = ((x($_POST,'thread_allow')) ? True : False); - $newuser_public = ((x($_POST,'newuser_public')) ? True : False); + $newuser_private = ((x($_POST,'newuser_private')) ? True : False); $no_multi_reg = ((x($_POST,'no_multi_reg')) ? True : False); $no_openid = !((x($_POST,'no_openid')) ? True : False); $no_regfullname = !((x($_POST,'no_regfullname')) ? True : False); @@ -355,7 +355,7 @@ function admin_page_site_post(&$a){ set_config('system','directory_submit_url', $global_directory); } set_config('system','thread_allow', $thread_allow); - set_config('system','newuser_public', $newuser_public); + set_config('system','newuser_private', $newuser_private; set_config('system','block_extended_register', $no_multi_reg); set_config('system','no_openid', $no_openid); @@ -467,7 +467,7 @@ function admin_page_site(&$a) { '$force_publish' => array('publish_all', t("Force publish"), get_config('system','publish_all'), t("Check to force all profiles on this site to be listed in the site directory.")), '$global_directory' => array('directory_submit_url', t("Global directory update URL"), get_config('system','directory_submit_url'), t("URL to update the global directory. If this is not set, the global directory is completely unavailable to the application.")), '$thread_allow' => array('thread_allow', t("Allow threaded items"), get_config('system','thread_allow'), t("Allow infinite level threading for items on this site.")), - '$newuser_public' => array('newuser_public', t("No default permissions for new users"), get_config('system','newuser_public'), t("New users will have no private permissions set for their posts by default, making their posts public until they change it.")), + '$newuser_private' => array('newuser_private', t("Private posts by default for new users"), get_config('system','newuser_private'), t("Set default post permissions for all new members to the default privacy group rather than public.")), '$no_multi_reg' => array('no_multi_reg', t("Block multiple registrations"), get_config('system','block_extended_register'), t("Disallow users to register additional accounts for use as pages.")), '$no_openid' => array('no_openid', t("OpenID support"), !get_config('system','no_openid'), t("OpenID support for registration and logins.")), diff --git a/mod/newmember.php b/mod/newmember.php index e17a0db03..8028e7e08 100644 --- a/mod/newmember.php +++ b/mod/newmember.php @@ -69,7 +69,7 @@ function newmember_content(&$a) { $o .= '
  • ' . '' . t('Group Your Contacts') . '
    ' . t('Once you have made some friends, organize them into private conversation groups from the sidebar of your Contacts page and then you can interact with each group privately on your Network page.') . '
  • ' . EOL; - if(! get_config('system', 'newuser_public')) { + if(get_config('system', 'newuser_private')) { $o .= '
  • ' . '' . t("Why Aren't My Posts Public?") . '
    ' . t("Friendica respects your privacy. By default, your posts will only show up to people you've added as friends. For more information, see the help section from the link above.") . '
  • ' . EOL; } diff --git a/view/admin_site.tpl b/view/admin_site.tpl index 6564565f7..ceba97d3f 100644 --- a/view/admin_site.tpl +++ b/view/admin_site.tpl @@ -76,7 +76,7 @@ {{ inc field_checkbox.tpl with $field=$dfrn_only }}{{ endinc }} {{ inc field_input.tpl with $field=$global_directory }}{{ endinc }} {{ inc field_checkbox.tpl with $field=$thread_allow }}{{ endinc }} - {{ inc field_checkbox.tpl with $field=$newuser_public }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$newuser_private }}{{ endinc }}
    diff --git a/view/theme/frost-mobile/admin_site.tpl b/view/theme/frost-mobile/admin_site.tpl index 91aeda035..087de4f7d 100644 --- a/view/theme/frost-mobile/admin_site.tpl +++ b/view/theme/frost-mobile/admin_site.tpl @@ -40,7 +40,7 @@ {{ inc field_checkbox.tpl with $field=$dfrn_only }}{{ endinc }} {{ inc field_input.tpl with $field=$global_directory }}{{ endinc }} {{ inc field_checkbox.tpl with $field=$thread_allow }}{{ endinc }} - {{ inc field_checkbox.tpl with $field=$newuser_public }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$newuser_private }}{{ endinc }}
    diff --git a/view/theme/frost/admin_site.tpl b/view/theme/frost/admin_site.tpl index 91aeda035..087de4f7d 100644 --- a/view/theme/frost/admin_site.tpl +++ b/view/theme/frost/admin_site.tpl @@ -40,7 +40,7 @@ {{ inc field_checkbox.tpl with $field=$dfrn_only }}{{ endinc }} {{ inc field_input.tpl with $field=$global_directory }}{{ endinc }} {{ inc field_checkbox.tpl with $field=$thread_allow }}{{ endinc }} - {{ inc field_checkbox.tpl with $field=$newuser_public }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$newuser_private }}{{ endinc }}
    From f9a9b7012397ec4c4a18f49352d919266816dbd7 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Fri, 14 Sep 2012 05:30:21 +0200 Subject: [PATCH 078/140] Detect the namespace uri from token name --- library/HTML5/TreeBuilder.php | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/library/HTML5/TreeBuilder.php b/library/HTML5/TreeBuilder.php index 578e73682..26cd410bf 100644 --- a/library/HTML5/TreeBuilder.php +++ b/library/HTML5/TreeBuilder.php @@ -3037,8 +3037,22 @@ class HTML5_TreeBuilder { } private function insertElement($token, $append = true) { - $el = $this->dom->createElementNS(self::NS_HTML, $token['name']); - + $sep_pos = strpos($token['name'],':'); + $ns_uri = self::NS_HTML; + if($sep_pos !== FALSE) { + // This tag has a namespace + $ns = substr($token['name'], 0, $sep_pos); + switch($ns) { + case 'g': + $ns_uri = 'http://base.google.com/ns/1.0'; + break; + default: + logger("HTML5/TreeBuilder.php: Unknown namespace '". $ns ."', tag = ". $token['name'], LOGGER_DEBUG); + break; + } + } + $el = $this->dom->createElementNS($ns_uri, $token['name']); + if (!empty($token['attr'])) { foreach($token['attr'] as $attr) { From 09413a0f0a04ad84c9869fc8e9f8fbd75317d35e Mon Sep 17 00:00:00 2001 From: Domovoy Date: Fri, 14 Sep 2012 05:50:35 +0200 Subject: [PATCH 079/140] Better integration with the existing code --- library/HTML5/TreeBuilder.php | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/library/HTML5/TreeBuilder.php b/library/HTML5/TreeBuilder.php index 26cd410bf..257e73c3e 100644 --- a/library/HTML5/TreeBuilder.php +++ b/library/HTML5/TreeBuilder.php @@ -127,6 +127,7 @@ class HTML5_TreeBuilder { const NS_XLINK = 'http://www.w3.org/1999/xlink'; const NS_XML = 'http://www.w3.org/XML/1998/namespace'; const NS_XMLNS = 'http://www.w3.org/2000/xmlns/'; + const NS_GOOGLE = 'http://base.google.com/ns/1.0'; public function __construct() { $this->mode = self::INITIAL; @@ -1430,6 +1431,14 @@ class HTML5_TreeBuilder { // parse error break; + /* Google */ + case 'g:plusone': + /* Reconstruct the active formatting elements, if any. */ + $this->reconstructActiveFormattingElements(); + + $this->insertForeignElement($token, self::NS_GOOGLE); + break; + /* A start tag token not covered by the previous entries */ default: /* Reconstruct the active formatting elements, if any. */ @@ -3037,21 +3046,7 @@ class HTML5_TreeBuilder { } private function insertElement($token, $append = true) { - $sep_pos = strpos($token['name'],':'); - $ns_uri = self::NS_HTML; - if($sep_pos !== FALSE) { - // This tag has a namespace - $ns = substr($token['name'], 0, $sep_pos); - switch($ns) { - case 'g': - $ns_uri = 'http://base.google.com/ns/1.0'; - break; - default: - logger("HTML5/TreeBuilder.php: Unknown namespace '". $ns ."', tag = ". $token['name'], LOGGER_DEBUG); - break; - } - } - $el = $this->dom->createElementNS($ns_uri, $token['name']); + $el = $this->dom->createElementNS(self::NS_HTML, $token['name']); if (!empty($token['attr'])) { foreach($token['attr'] as $attr) { From a31c779a15e0457054b8a2d02569dda5ab8fe9b4 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Fri, 14 Sep 2012 07:59:54 +0200 Subject: [PATCH 080/140] Transform prefixed elements to classic ones --- library/HTML5/TreeBuilder.php | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/library/HTML5/TreeBuilder.php b/library/HTML5/TreeBuilder.php index 257e73c3e..2a789f4df 100644 --- a/library/HTML5/TreeBuilder.php +++ b/library/HTML5/TreeBuilder.php @@ -127,7 +127,6 @@ class HTML5_TreeBuilder { const NS_XLINK = 'http://www.w3.org/1999/xlink'; const NS_XML = 'http://www.w3.org/XML/1998/namespace'; const NS_XMLNS = 'http://www.w3.org/2000/xmlns/'; - const NS_GOOGLE = 'http://base.google.com/ns/1.0'; public function __construct() { $this->mode = self::INITIAL; @@ -159,6 +158,8 @@ class HTML5_TreeBuilder { if ($this->ignore_lf_token) $this->ignore_lf_token--; $this->ignored = false; + + $token['name'] = str_replace(':', '-', $token['name']); // indenting is a little wonky, this can be changed later on switch ($mode) { @@ -1430,15 +1431,7 @@ class HTML5_TreeBuilder { case 'tbody': case 'td': case 'tfoot': case 'th': case 'thead': case 'tr': // parse error break; - - /* Google */ - case 'g:plusone': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - $this->insertForeignElement($token, self::NS_GOOGLE); - break; - + /* A start tag token not covered by the previous entries */ default: /* Reconstruct the active formatting elements, if any. */ From 20938d07cd7d5833e06b4efaeadc041030e5b6b2 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 13 Sep 2012 23:01:10 -0700 Subject: [PATCH 081/140] typo on previous checkin - set max number of images for an inserted link, default 2. --- mod/admin.php | 2 +- mod/parse_url.php | 26 ++++++++++++++++++-------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index 2d1d21bb4..318858275 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -355,7 +355,7 @@ function admin_page_site_post(&$a){ set_config('system','directory_submit_url', $global_directory); } set_config('system','thread_allow', $thread_allow); - set_config('system','newuser_private', $newuser_private; + set_config('system','newuser_private', $newuser_private); set_config('system','block_extended_register', $no_multi_reg); set_config('system','no_openid', $no_openid); diff --git a/mod/parse_url.php b/mod/parse_url.php index 083a39b55..9adee8f65 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -307,16 +307,26 @@ function parse_url_content(&$a) { $image = ""; - if(sizeof($siteinfo["images"]) > 0){ - /* - Execute below code only if image is present in siteinfo - */ - foreach ($siteinfo["images"] as $imagedata) - if($textmode) - $image .= '[img='.$imagedata["width"].'x'.$imagedata["height"].']'.$imagedata["src"].'[/img]'; + if(sizeof($siteinfo["images"]) > 0){ + /* Execute below code only if image is present in siteinfo */ + + $total_images = 0; + $max_images = get_config('system','max_bookmark_images'); + if($max_images === false) + $max_images = 2; else - $image .= 'photo'; + $max_images = intval($max_images); + + foreach ($siteinfo["images"] as $imagedata) { + if($textmode) + $image .= '[img='.$imagedata["width"].'x'.$imagedata["height"].']'.$imagedata["src"].'[/img]' . "\n"; + else + $image .= 'photo
    '; + $total_images ++; + if($max_images && $max_images >= $total_images) + break; } + } if(strlen($text)) { if($textmode) From bff9c3d46073961372abd9d95fa0ac20916d37c1 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Fri, 14 Sep 2012 08:50:10 +0200 Subject: [PATCH 082/140] modified: view/theme/smoothly/style.css modified: view/theme/smoothly/theme.php --- view/theme/smoothly/style.css | 5 +++-- view/theme/smoothly/theme.php | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index 8c6dd2290..cd88fb622 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -3,7 +3,7 @@ Smoothly Created by Anne Walk and Devlon Duthie on 2011-09-24 - Modified by alex@friendica.pixelbits.de on 2012-09-13 + Modified by alex@friendica.pixelbits.de on 2012-09-14 ** Colors ** @@ -371,7 +371,8 @@ nav #banner #logo-text a { nav #user-menu { display: block; - width: 190px; + width: auto; + min-width: 190px; float: right; margin-right: 5px; margin-top: 4px; diff --git a/view/theme/smoothly/theme.php b/view/theme/smoothly/theme.php index d66fd4ca4..edc549f99 100644 --- a/view/theme/smoothly/theme.php +++ b/view/theme/smoothly/theme.php @@ -2,7 +2,7 @@ /* * Name: Smoothly - * Description: Theme optimized for iPad[2] + * Description: Like coffee with milk. Theme works fine with iPad[2]. * Version: 0.7 * Author: Alex * Maintainer: Alex From d1984c4c643390664a4e32c8c9f518e1ef6ad45c Mon Sep 17 00:00:00 2001 From: pixelroot Date: Fri, 14 Sep 2012 09:33:21 +0200 Subject: [PATCH 083/140] modified: view/theme/smoothly/nav.tpl modified: view/theme/smoothly/style.css --- view/theme/smoothly/nav.tpl | 5 ----- view/theme/smoothly/style.css | 4 ++-- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/view/theme/smoothly/nav.tpl b/view/theme/smoothly/nav.tpl index b010442a9..50546a864 100644 --- a/view/theme/smoothly/nav.tpl +++ b/view/theme/smoothly/nav.tpl @@ -58,11 +58,6 @@ - - diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index cd88fb622..6d9e9b3fa 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -3757,8 +3757,8 @@ hr.line-dots { ----------------------------------------------------------- */ #scrollup { position: fixed; - right: 5px; - bottom: 5px; + right: 1px; + bottom: 30px; z-index: 100; } From 1c4bea295fd639f4f8c218020b38d28f7b0d4470 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Fri, 14 Sep 2012 09:33:47 +0200 Subject: [PATCH 084/140] new file: view/theme/smoothly/default.php --- view/theme/smoothly/default.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 view/theme/smoothly/default.php diff --git a/view/theme/smoothly/default.php b/view/theme/smoothly/default.php new file mode 100644 index 000000000..c63975044 --- /dev/null +++ b/view/theme/smoothly/default.php @@ -0,0 +1,20 @@ + + + + <?php if(x($page,'title')) echo $page['title'] ?> + + + + + + +
    + +
    + +
    + + + From d00257354309451f1df97bc5f2c23d1ad06bc2f7 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Fri, 14 Sep 2012 09:55:54 +0200 Subject: [PATCH 085/140] deleted: view/theme/smoothly/default.php modified: view/theme/smoothly/nav.tpl --- view/theme/smoothly/default.php | 20 -------------------- view/theme/smoothly/nav.tpl | 4 ++++ 2 files changed, 4 insertions(+), 20 deletions(-) delete mode 100644 view/theme/smoothly/default.php diff --git a/view/theme/smoothly/default.php b/view/theme/smoothly/default.php deleted file mode 100644 index c63975044..000000000 --- a/view/theme/smoothly/default.php +++ /dev/null @@ -1,20 +0,0 @@ - - - - <?php if(x($page,'title')) echo $page['title'] ?> - - - - - - -
    - -
    - -
    - - - diff --git a/view/theme/smoothly/nav.tpl b/view/theme/smoothly/nav.tpl index 50546a864..210b89a06 100644 --- a/view/theme/smoothly/nav.tpl +++ b/view/theme/smoothly/nav.tpl @@ -58,6 +58,10 @@ + + From bdc5a3ab2969d3d8a16042604ddadbbe6b2299ef Mon Sep 17 00:00:00 2001 From: pixelroot Date: Fri, 14 Sep 2012 10:16:35 +0200 Subject: [PATCH 086/140] deleted: view/theme/smoothly/group_edit.tpl --- view/theme/smoothly/group_edit.tpl | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 view/theme/smoothly/group_edit.tpl diff --git a/view/theme/smoothly/group_edit.tpl b/view/theme/smoothly/group_edit.tpl deleted file mode 100644 index a8b3f92a0..000000000 --- a/view/theme/smoothly/group_edit.tpl +++ /dev/null @@ -1,16 +0,0 @@ -

    $title

    - - -
    -
    -
    - - - - $drop -
    -
    -
    $desc
    -
    -
    -
    From e78b86f534d2f9b84a76920afbc8c8eb9148e99d Mon Sep 17 00:00:00 2001 From: pixelroot Date: Fri, 14 Sep 2012 11:57:13 +0200 Subject: [PATCH 087/140] modified: view/theme/smoothly/style.css --- view/theme/smoothly/style.css | 81 +++++++++++++++++++++++------------ 1 file changed, 54 insertions(+), 27 deletions(-) diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index 6d9e9b3fa..a0dc79df2 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -213,8 +213,6 @@ section { .button:hover { border: 1px solid #7C7D7B; box-shadow: 0 0 8px #BDBDBD; - /* -moz-box-shadow: 3px 3px 4px #959494; - -webkit-box-shadow: 3px 3px 4px #959494;*/ border-radius: 5px 5px 5px 5px; background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #1873a2), color-stop(1, #6da6c4) ); background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); @@ -905,30 +903,51 @@ ul .sidebar-group-li .icon { background: #FFFFC8; } -#profile-jot-perms, #profile-jot-submit, #jot-preview-link { +#profile-jot-perms, #profile-jot-submit { width: 60px; font-size: 12px; - box-shadow: inset 0px 1px 0px 0px #cfcfcf; - -moz-box-shadow: inset 0px 1px 0px 0px #cfcfcf; - -webkit-box-shadow: inset 0px 1px 0px 0px #cfcfcf; background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); background-color: #bdbdbd; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; display: inline-block; color: #efefef; text-decoration: none; text-align: center; + border: 1px solid #7C7D7B; + border-radius: 5px 5px 5px 5px; +} + +#jot-preview-link { + float: right; + width: 60px; + /*height: 10px;*/ + margin-right: 180px; + /*margin-top: 0px; + margin-left: 10px;*/ + font-size: 12px; + background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); + background: -moz-linear-gradient( center top, #bdbdbd 5%, #a2a2a2 100% ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bdbdbd', endColorstr='#a2a2a2'); + background-color: #bdbdbd; + display: inline-block; + color: #efefef; + text-decoration: none; + text-align: center; + padding: 5px 5px; + border: 1px solid #7C7D7B; + border-radius: 5px 5px 5px 5px; } #profile-jot-perms { - width: 30px; + width: 25px; + float: right; overflow: hidden; - border: 0px; - margin-left:5px; + margin-left: 10px; + margin-right: 80px; + margin-top: -28px; + border: 1px solid #7C7D7B; + border-radius: 5px 5px 5px 5px; } #jot-perms-perms .icon { @@ -936,11 +955,13 @@ ul .sidebar-group-li .icon { } #profile-jot-submit { - float: left; - margin-right: 5px; - border: 0px; - margin-top: 0px; - margin-left: -30px; + width: 80px; + float: right; + margin-right: 90px; + margin-top: -28px; + margin-left: 10px; + border: 1px solid #7C7D7B; + border-radius: 5px 5px 5px 5px; } #profile-jot-perms:hover, @@ -950,6 +971,9 @@ ul .sidebar-group-li .icon { background: -moz-linear-gradient( center top, #1873a2 5%, #6da6c4 100% ); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1873a2', endColorstr='#6da6c4'); background-color: #1873a2; + border: 1px solid #7C7D7B; + box-shadow: 0 0 8px #BDBDBD; + border-radius: 5px 5px 5px 5px; } #profile-jot-perms:active, @@ -960,9 +984,9 @@ ul .sidebar-group-li .icon { } #character-counter { - position: absolute: - right: 100px; - top:100px; + position: absolute; + right: 100px; + top: 100px; } #profile-rotator-wrapper { float: right; @@ -1396,7 +1420,8 @@ profile-jot-banner-wrapper { } #item-delete-selected { - overflow: auto; + overflow: auto; + margin-top: 20px; width: 100%; } @@ -1494,21 +1519,23 @@ profile-jot-banner-wrapper { .comment-edit-submit-wrapper { width: 80%; margin-left: 40px; - text-align: right; + text-align: left; } .comment-edit-submit { height: 22px; + padding: 5px 5px; background-color: #a2a2a2; color: #eeeeec; - border-radius: 5px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border: 0px; + border: 1px solid #CDCDCD; + border-radius: 5px 5px 5px 5px; } .comment-edit-submit:hover { background-color: #1873a2; + border: 1px solid #CDCDCD; + border-radius: 5px 5px 5px 5px; + box-shadow: 0 0 8px #BDBDBD; } .comment-edit-submit:active { @@ -1517,7 +1544,7 @@ profile-jot-banner-wrapper { #item-delete-selected-desc { color: #898989; - float: left; + float: right; } .wall-item-body code { From 252e112ad5f659725a76d6730498a83ecbd2f456 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Fri, 14 Sep 2012 12:46:32 +0200 Subject: [PATCH 088/140] modified: view/theme/smoothly/style.css --- view/theme/smoothly/style.css | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index a0dc79df2..fd45e205a 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -984,9 +984,10 @@ ul .sidebar-group-li .icon { } #character-counter { - position: absolute; - right: 100px; - top: 100px; + position: relative; + float: left; + right: 0px; + top: 0px; } #profile-rotator-wrapper { float: right; @@ -3804,4 +3805,4 @@ hr.line-dots { /*div.wall-item-content-wrapper.shiny { background-image: url("star.png"); background-repeat: no-repeat; -}*/ \ No newline at end of file +}*/ From 39b296a87dde17c074f94348400f0c304f7a9e16 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 14 Sep 2012 06:04:25 -0700 Subject: [PATCH 089/140] ostatus disabled typo --- mod/admin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/admin.php b/mod/admin.php index 318858275..5edb92755 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -474,7 +474,7 @@ function admin_page_site(&$a) { '$no_regfullname' => array('no_regfullname', t("Fullname check"), !get_config('system','no_regfullname'), t("Force users to register with a space between firstname and lastname in Full name, as an antispam measure")), '$no_utf' => array('no_utf', t("UTF-8 Regular expressions"), !get_config('system','no_utf'), t("Use PHP UTF8 regular expressions")), '$no_community_page' => array('no_community_page', t("Show Community Page"), !get_config('system','no_community_page'), t("Display a Community page showing all recent public postings on this site.")), - '$ostatus_disabled' => array('ostatus_disabled', t("Enable OStatus support"), !get_config('system','ostatus_disable'), t("Provide built-in OStatus \x28identi.ca, status.net, etc.\x29 compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed.")), + '$ostatus_disabled' => array('ostatus_disabled', t("Enable OStatus support"), !get_config('system','ostatus_disabled'), t("Provide built-in OStatus \x28identi.ca, status.net, etc.\x29 compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed.")), '$diaspora_enabled' => array('diaspora_enabled', t("Enable Diaspora support"), get_config('system','diaspora_enabled'), t("Provide built-in Diaspora network compatibility.")), '$dfrn_only' => array('dfrn_only', t('Only allow Friendica contacts'), get_config('system','dfrn_only'), t("All contacts must use Friendica protocols. All other built-in communication protocols disabled.")), '$verifyssl' => array('verifyssl', t("Verify SSL"), get_config('system','verifyssl'), t("If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites.")), From 882f437149f882d21f3743b56e374308f03abbe6 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Fri, 14 Sep 2012 15:35:40 +0200 Subject: [PATCH 090/140] quattro: mail link to profile page --- view/theme/quattro/dark/style.css | 19 +++++++++++++++++++ view/theme/quattro/green/style.css | 19 +++++++++++++++++++ view/theme/quattro/profile_vcard.tpl | 3 +++ view/theme/quattro/quattro.less | 12 ++++++++++++ 4 files changed, 53 insertions(+) diff --git a/view/theme/quattro/dark/style.css b/view/theme/quattro/dark/style.css index 0bb2cd10e..533d15176 100644 --- a/view/theme/quattro/dark/style.css +++ b/view/theme/quattro/dark/style.css @@ -735,6 +735,22 @@ aside #profile-extra-links li { margin: 0px; list-style: none; } +aside #wallmessage-link { + display: block; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + color: #ffffff; + background: #005c94 url('../../../images/connect-bg.png') no-repeat left center; + font-weight: bold; + text-transform: uppercase; + padding: 4px 2px 2px 35px; + margin-top: 3px; +} +aside #wallmessage-link:hover { + text-decoration: none; + background-color: #19aeff; +} aside #dfrn-request-link { display: block; -moz-border-radius: 5px 5px 5px 5px; @@ -1140,6 +1156,9 @@ section { opacity: 0.5; } .wwto { + position: absolute !important; + width: 25px; + height: 25px; background: #FFFFFF; border: 2px solid #364e59; height: 25px; diff --git a/view/theme/quattro/green/style.css b/view/theme/quattro/green/style.css index 4897471ea..429da809d 100644 --- a/view/theme/quattro/green/style.css +++ b/view/theme/quattro/green/style.css @@ -735,6 +735,22 @@ aside #profile-extra-links li { margin: 0px; list-style: none; } +aside #wallmessage-link { + display: block; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + color: #ffffff; + background: #009100 url('../../../images/connect-bg.png') no-repeat left center; + font-weight: bold; + text-transform: uppercase; + padding: 4px 2px 2px 35px; + margin-top: 3px; +} +aside #wallmessage-link:hover { + text-decoration: none; + background-color: #ccff42; +} aside #dfrn-request-link { display: block; -moz-border-radius: 5px 5px 5px 5px; @@ -1140,6 +1156,9 @@ section { opacity: 0.5; } .wwto { + position: absolute !important; + width: 25px; + height: 25px; background: #FFFFFF; border: 2px solid #364e59; height: 25px; diff --git a/view/theme/quattro/profile_vcard.tpl b/view/theme/quattro/profile_vcard.tpl index cbb7dcc74..e7264cfec 100644 --- a/view/theme/quattro/profile_vcard.tpl +++ b/view/theme/quattro/profile_vcard.tpl @@ -56,6 +56,9 @@ {{ if $connect }}
  • $connect
  • {{ endif }} + {{ if $wallmessage }} +
  • $wallmessage
  • + {{ endif }} diff --git a/view/theme/quattro/quattro.less b/view/theme/quattro/quattro.less index 84aa13ac0..51fdfcf7c 100644 --- a/view/theme/quattro/quattro.less +++ b/view/theme/quattro/quattro.less @@ -314,6 +314,18 @@ aside { li { padding: 0px; margin: 0px; list-style: none; } } + #wallmessage-link { + display: block; + .rounded(); + color: @AsideConnect; + background: @AsideConnectBg url('../../../images/connect-bg.png') no-repeat left center; + font-weight: bold; + text-transform:uppercase; + padding: 4px 2px 2px 35px; + margin-top: 3px; + + &:hover { text-decoration: none; background-color: @AsideConnectHoverBg; } + } #dfrn-request-link { display: block; .rounded(); From 6c44125fb5bd9d9ca22ac26f7eb801f896fe2950 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Fri, 14 Sep 2012 15:46:14 +0200 Subject: [PATCH 091/140] DE: update to the strings --- view/de/messages.po | 442 +++++++++++++++++++++++++++----------------- view/de/strings.php | 24 ++- 2 files changed, 294 insertions(+), 172 deletions(-) diff --git a/view/de/messages.po b/view/de/messages.po index c21bde395..a01bf6a83 100644 --- a/view/de/messages.po +++ b/view/de/messages.po @@ -21,8 +21,8 @@ msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: http://bugs.friendica.com/\n" -"POT-Creation-Date: 2012-09-09 10:00-0700\n" -"PO-Revision-Date: 2012-09-11 07:17+0000\n" +"POT-Creation-Date: 2012-09-13 10:00-0700\n" +"PO-Revision-Date: 2012-09-14 13:44+0000\n" "Last-Translator: bavatar \n" "Language-Team: German (http://www.transifex.com/projects/p/friendica/language/de/)\n" "MIME-Version: 1.0\n" @@ -61,8 +61,8 @@ msgstr "Konnte den Kontakt nicht aktualisieren." #: ../../mod/group.php:19 ../../mod/viewcontacts.php:22 #: ../../mod/register.php:38 ../../mod/regmod.php:116 ../../mod/item.php:126 #: ../../mod/item.php:142 ../../mod/mood.php:114 -#: ../../mod/profile_photo.php:19 ../../mod/profile_photo.php:142 -#: ../../mod/profile_photo.php:153 ../../mod/profile_photo.php:166 +#: ../../mod/profile_photo.php:19 ../../mod/profile_photo.php:169 +#: ../../mod/profile_photo.php:180 ../../mod/profile_photo.php:193 #: ../../mod/message.php:38 ../../mod/message.php:168 #: ../../mod/allfriends.php:9 ../../mod/nogroup.php:25 #: ../../mod/wall_upload.php:64 ../../mod/follow.php:9 @@ -70,9 +70,10 @@ msgstr "Konnte den Kontakt nicht aktualisieren." #: ../../mod/profiles.php:413 ../../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:510 -#: ../../addon/facebook/facebook.php:516 -#: ../../addon/dav/friendica/layout.fnk.php:354 ../../include/items.php:3834 -#: ../../index.php:315 +#: ../../addon/facebook/facebook.php:516 ../../addon/fbpost/fbpost.php:159 +#: ../../addon/fbpost/fbpost.php:165 +#: ../../addon/dav/friendica/layout.fnk.php:354 ../../include/items.php:3908 +#: ../../index.php:317 msgid "Permission denied." msgstr "Zugriff verweigert." @@ -154,15 +155,15 @@ msgstr "Neues Foto von dieser URL" #: ../../addon/fromgplus/fromgplus.php:40 #: ../../addon/facebook/facebook.php:619 #: ../../addon/snautofollow/snautofollow.php:64 ../../addon/bg/bg.php:90 -#: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93 -#: ../../addon/nsfw/nsfw.php:57 ../../addon/page/page.php:210 -#: ../../addon/planets/planets.php:158 +#: ../../addon/fbpost/fbpost.php:226 ../../addon/yourls/yourls.php:76 +#: ../../addon/ljpost/ljpost.php:93 ../../addon/nsfw/nsfw.php:57 +#: ../../addon/page/page.php:210 ../../addon/planets/planets.php:158 #: ../../addon/uhremotestorage/uhremotestorage.php:89 #: ../../addon/randplace/randplace.php:177 ../../addon/dwpost/dwpost.php:93 #: ../../addon/drpost/drpost.php:110 ../../addon/startpage/startpage.php:92 #: ../../addon/geonames/geonames.php:187 ../../addon/oembed.old/oembed.php:41 #: ../../addon/forumlist/forumlist.php:169 -#: ../../addon/impressum/impressum.php:82 +#: ../../addon/impressum/impressum.php:83 #: ../../addon/notimeline/notimeline.php:64 ../../addon/blockem/blockem.php:57 #: ../../addon/qcomment/qcomment.php:61 #: ../../addon/openstreetmap/openstreetmap.php:70 @@ -172,7 +173,7 @@ msgstr "Neues Foto von dieser URL" #: ../../addon/mathjax/mathjax.php:42 ../../addon/editplain/editplain.php:84 #: ../../addon/blackout/blackout.php:98 ../../addon/gravatar/gravatar.php:95 #: ../../addon/pageheader/pageheader.php:55 ../../addon/ijpost/ijpost.php:93 -#: ../../addon/jappixmini/jappixmini.php:302 +#: ../../addon/jappixmini/jappixmini.php:307 #: ../../addon/statusnet/statusnet.php:278 #: ../../addon/statusnet/statusnet.php:292 #: ../../addon/statusnet/statusnet.php:318 @@ -189,7 +190,7 @@ msgstr "Neues Foto von dieser URL" #: ../../view/theme/diabook/theme.php:757 #: ../../view/theme/diabook/config.php:190 #: ../../view/theme/quattro/config.php:52 ../../view/theme/dispy/config.php:70 -#: ../../include/conversation.php:591 +#: ../../include/conversation.php:591 ../../object/Item.php:532 msgid "Submit" msgstr "Senden" @@ -202,11 +203,11 @@ msgstr "Hilfe:" msgid "Help" msgstr "Hilfe" -#: ../../mod/help.php:38 ../../index.php:224 +#: ../../mod/help.php:38 ../../index.php:226 msgid "Not Found" msgstr "Nicht gefunden" -#: ../../mod/help.php:41 ../../index.php:227 +#: ../../mod/help.php:41 ../../index.php:229 msgid "Page not found." msgstr "Seite nicht gefunden." @@ -412,10 +413,10 @@ msgid "Contact information unavailable" msgstr "Kontaktinformationen nicht verfügbar" #: ../../mod/photos.php:149 ../../mod/photos.php:653 ../../mod/photos.php:1073 -#: ../../mod/photos.php:1088 ../../mod/profile_photo.php:60 -#: ../../mod/profile_photo.php:67 ../../mod/profile_photo.php:74 -#: ../../mod/profile_photo.php:177 ../../mod/profile_photo.php:261 -#: ../../mod/profile_photo.php:270 +#: ../../mod/photos.php:1088 ../../mod/profile_photo.php:74 +#: ../../mod/profile_photo.php:81 ../../mod/profile_photo.php:88 +#: ../../mod/profile_photo.php:204 ../../mod/profile_photo.php:296 +#: ../../mod/profile_photo.php:305 #: ../../addon/communityhome/communityhome.php:111 #: ../../view/theme/diabook/theme.php:599 ../../include/user.php:318 #: ../../include/user.php:325 ../../include/user.php:332 @@ -458,12 +459,12 @@ msgstr "Die Bildgröße übersteigt das Limit von " msgid "Image file is empty." msgstr "Bilddatei ist leer." -#: ../../mod/photos.php:729 ../../mod/profile_photo.php:126 +#: ../../mod/photos.php:729 ../../mod/profile_photo.php:153 #: ../../mod/wall_upload.php:110 msgid "Unable to process image." msgstr "Konnte das Bild nicht bearbeiten." -#: ../../mod/photos.php:756 ../../mod/profile_photo.php:266 +#: ../../mod/photos.php:756 ../../mod/profile_photo.php:301 #: ../../mod/wall_upload.php:136 msgid "Image upload failed." msgstr "Hochladen des Bildes gescheitert." @@ -549,7 +550,7 @@ msgid "Use as profile photo" msgstr "Als Profilbild verwenden" #: ../../mod/photos.php:1224 ../../mod/content.php:601 -#: ../../include/conversation.php:428 +#: ../../include/conversation.php:428 ../../object/Item.php:103 msgid "Private Message" msgstr "Private Nachricht" @@ -591,16 +592,16 @@ msgid "" msgstr "Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" #: ../../mod/photos.php:1356 ../../mod/content.php:665 -#: ../../include/conversation.php:565 +#: ../../include/conversation.php:565 ../../object/Item.php:185 msgid "I like this (toggle)" msgstr "Ich mag das (toggle)" #: ../../mod/photos.php:1357 ../../mod/content.php:666 -#: ../../include/conversation.php:566 +#: ../../include/conversation.php:566 ../../object/Item.php:186 msgid "I don't like this (toggle)" msgstr "Ich mag das nicht (toggle)" -#: ../../mod/photos.php:1358 ../../include/conversation.php:1195 +#: ../../mod/photos.php:1358 ../../include/conversation.php:1214 msgid "Share" msgstr "Teilen" @@ -608,25 +609,27 @@ msgstr "Teilen" #: ../../mod/content.php:482 ../../mod/content.php:843 #: ../../mod/wallmessage.php:152 ../../mod/message.php:293 #: ../../mod/message.php:481 ../../include/conversation.php:659 -#: ../../include/conversation.php:891 ../../include/conversation.php:1214 +#: ../../include/conversation.php:891 ../../include/conversation.php:1233 +#: ../../object/Item.php:237 msgid "Please wait" msgstr "Bitte warten" #: ../../mod/photos.php:1375 ../../mod/photos.php:1416 #: ../../mod/photos.php:1448 ../../mod/content.php:688 -#: ../../include/conversation.php:588 +#: ../../include/conversation.php:588 ../../object/Item.php:529 msgid "This is you" msgstr "Das bist du" #: ../../mod/photos.php:1377 ../../mod/photos.php:1418 #: ../../mod/photos.php:1450 ../../mod/content.php:690 #: ../../include/conversation.php:590 ../../boot.php:574 +#: ../../object/Item.php:531 msgid "Comment" msgstr "Kommentar" #: ../../mod/photos.php:1379 ../../mod/editpost.php:133 #: ../../mod/content.php:700 ../../include/conversation.php:600 -#: ../../include/conversation.php:1232 +#: ../../include/conversation.php:1251 ../../object/Item.php:541 msgid "Preview" msgstr "Vorschau" @@ -634,6 +637,7 @@ msgstr "Vorschau" #: ../../mod/content.php:721 ../../mod/settings.php:606 #: ../../mod/settings.php:695 ../../mod/group.php:168 ../../mod/admin.php:694 #: ../../include/conversation.php:440 ../../include/conversation.php:847 +#: ../../object/Item.php:116 msgid "Delete" msgstr "Löschen" @@ -699,28 +703,29 @@ msgstr "Beitrag nicht gefunden" msgid "Edit post" msgstr "Beitrag bearbeiten" -#: ../../mod/editpost.php:88 ../../include/conversation.php:1181 +#: ../../mod/editpost.php:88 ../../include/conversation.php:1200 msgid "Post to Email" msgstr "An E-Mail senden" #: ../../mod/editpost.php:103 ../../mod/content.php:708 #: ../../mod/settings.php:605 ../../include/conversation.php:433 +#: ../../object/Item.php:107 msgid "Edit" msgstr "Bearbeiten" #: ../../mod/editpost.php:104 ../../mod/wallmessage.php:150 #: ../../mod/message.php:291 ../../mod/message.php:478 -#: ../../include/conversation.php:1196 +#: ../../include/conversation.php:1215 msgid "Upload photo" msgstr "Foto hochladen" -#: ../../mod/editpost.php:105 ../../include/conversation.php:1198 +#: ../../mod/editpost.php:105 ../../include/conversation.php:1217 msgid "Attach file" msgstr "Datei anhängen" #: ../../mod/editpost.php:106 ../../mod/wallmessage.php:151 #: ../../mod/message.php:292 ../../mod/message.php:479 -#: ../../include/conversation.php:1200 +#: ../../include/conversation.php:1219 msgid "Insert web link" msgstr "einen Link einfügen" @@ -736,35 +741,35 @@ msgstr "Vorbis [.ogg] Video einfügen" msgid "Insert Vorbis [.ogg] audio" msgstr "Vorbis [.ogg] Audio einfügen" -#: ../../mod/editpost.php:110 ../../include/conversation.php:1206 +#: ../../mod/editpost.php:110 ../../include/conversation.php:1225 msgid "Set your location" msgstr "Deinen Standort festlegen" -#: ../../mod/editpost.php:111 ../../include/conversation.php:1208 +#: ../../mod/editpost.php:111 ../../include/conversation.php:1227 msgid "Clear browser location" msgstr "Browser-Standort leeren" -#: ../../mod/editpost.php:113 ../../include/conversation.php:1215 +#: ../../mod/editpost.php:113 ../../include/conversation.php:1234 msgid "Permission settings" msgstr "Berechtigungseinstellungen" -#: ../../mod/editpost.php:121 ../../include/conversation.php:1224 +#: ../../mod/editpost.php:121 ../../include/conversation.php:1243 msgid "CC: email addresses" msgstr "Cc:-E-Mail-Addressen" -#: ../../mod/editpost.php:122 ../../include/conversation.php:1225 +#: ../../mod/editpost.php:122 ../../include/conversation.php:1244 msgid "Public post" msgstr "Öffentlicher Beitrag" -#: ../../mod/editpost.php:125 ../../include/conversation.php:1211 +#: ../../mod/editpost.php:125 ../../include/conversation.php:1230 msgid "Set title" msgstr "Titel setzen" -#: ../../mod/editpost.php:127 ../../include/conversation.php:1213 +#: ../../mod/editpost.php:127 ../../include/conversation.php:1232 msgid "Categories (comma-separated list)" msgstr "Kategorien (kommasepariert)" -#: ../../mod/editpost.php:128 ../../include/conversation.php:1227 +#: ../../mod/editpost.php:128 ../../include/conversation.php:1246 msgid "Example: bob@example.com, mary@example.com" msgstr "Z.B.: bob@example.com, mary@example.com" @@ -885,7 +890,7 @@ msgstr "Bitte bestätige deine Kontaktanfrage bei %s." msgid "Confirm" msgstr "Bestätigen" -#: ../../mod/dfrn_request.php:715 ../../include/items.php:3213 +#: ../../mod/dfrn_request.php:715 ../../include/items.php:3287 msgid "[Name Withheld]" msgstr "[Name unterdrückt]" @@ -1308,18 +1313,21 @@ msgstr "Gruppe: " #: ../../mod/content.php:438 ../../mod/content.php:720 #: ../../include/conversation.php:439 ../../include/conversation.php:846 +#: ../../object/Item.php:115 msgid "Select" msgstr "Auswählen" #: ../../mod/content.php:455 ../../mod/content.php:813 #: ../../mod/content.php:814 ../../include/conversation.php:627 #: ../../include/conversation.php:628 ../../include/conversation.php:863 +#: ../../object/Item.php:206 ../../object/Item.php:207 #, php-format msgid "View %s's profile @ %s" msgstr "Das Profil von %s auf %s betrachten." #: ../../mod/content.php:465 ../../mod/content.php:825 #: ../../include/conversation.php:641 ../../include/conversation.php:874 +#: ../../object/Item.php:219 #, php-format msgid "%s from %s" msgstr "%s von %s" @@ -1329,6 +1337,7 @@ msgid "View in context" msgstr "Im Zusammenhang betrachten" #: ../../mod/content.php:586 ../../include/conversation.php:668 +#: ../../object/Item.php:256 #, php-format msgid "%d comment" msgid_plural "%d comments" @@ -1338,91 +1347,112 @@ msgstr[1] "%d Kommentare" #: ../../mod/content.php:587 ../../addon/page/page.php:76 #: ../../addon/page/page.php:110 ../../addon/showmore/showmore.php:119 #: ../../include/contact_widgets.php:195 ../../include/conversation.php:669 -#: ../../boot.php:575 +#: ../../boot.php:575 ../../object/Item.php:257 msgid "show more" msgstr "mehr anzeigen" #: ../../mod/content.php:665 ../../include/conversation.php:565 +#: ../../object/Item.php:185 msgid "like" msgstr "mag ich" #: ../../mod/content.php:666 ../../include/conversation.php:566 +#: ../../object/Item.php:186 msgid "dislike" msgstr "mag ich nicht" #: ../../mod/content.php:668 ../../include/conversation.php:568 +#: ../../object/Item.php:188 msgid "Share this" msgstr "Weitersagen" #: ../../mod/content.php:668 ../../include/conversation.php:568 +#: ../../object/Item.php:188 msgid "share" msgstr "Teilen" #: ../../mod/content.php:692 ../../include/conversation.php:592 +#: ../../object/Item.php:533 msgid "Bold" msgstr "Fett" #: ../../mod/content.php:693 ../../include/conversation.php:593 +#: ../../object/Item.php:534 msgid "Italic" msgstr "Kursiv" #: ../../mod/content.php:694 ../../include/conversation.php:594 +#: ../../object/Item.php:535 msgid "Underline" msgstr "Unterstrichen" #: ../../mod/content.php:695 ../../include/conversation.php:595 +#: ../../object/Item.php:536 msgid "Quote" msgstr "Zitat" #: ../../mod/content.php:696 ../../include/conversation.php:596 +#: ../../object/Item.php:537 msgid "Code" msgstr "Code" #: ../../mod/content.php:697 ../../include/conversation.php:597 +#: ../../object/Item.php:538 msgid "Image" msgstr "Bild" #: ../../mod/content.php:698 ../../include/conversation.php:598 +#: ../../object/Item.php:539 msgid "Link" msgstr "Verweis" #: ../../mod/content.php:699 ../../include/conversation.php:599 +#: ../../object/Item.php:540 msgid "Video" msgstr "Video" #: ../../mod/content.php:733 ../../include/conversation.php:529 +#: ../../object/Item.php:169 msgid "add star" msgstr "markieren" #: ../../mod/content.php:734 ../../include/conversation.php:530 +#: ../../object/Item.php:170 msgid "remove star" msgstr "Markierung entfernen" #: ../../mod/content.php:735 ../../include/conversation.php:531 +#: ../../object/Item.php:171 msgid "toggle star status" msgstr "Markierung umschalten" #: ../../mod/content.php:738 ../../include/conversation.php:534 +#: ../../object/Item.php:174 msgid "starred" msgstr "markiert" #: ../../mod/content.php:739 ../../include/conversation.php:535 +#: ../../object/Item.php:175 msgid "add tag" msgstr "Tag hinzufügen" #: ../../mod/content.php:743 ../../include/conversation.php:443 +#: ../../object/Item.php:119 msgid "save to folder" msgstr "In Ordner speichern" #: ../../mod/content.php:815 ../../include/conversation.php:629 +#: ../../object/Item.php:208 msgid "to" msgstr "zu" #: ../../mod/content.php:816 ../../include/conversation.php:630 +#: ../../object/Item.php:209 msgid "Wall-to-Wall" msgstr "Wall-to-Wall" #: ../../mod/content.php:817 ../../include/conversation.php:631 +#: ../../object/Item.php:210 msgid "via Wall-To-Wall:" msgstr "via Wall-To-Wall:" @@ -1938,9 +1968,9 @@ msgstr "Anfrage zum Zurücksetzen des Passworts auf %s erhalten" #: ../../mod/register.php:90 ../../mod/register.php:144 #: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:752 #: ../../addon/facebook/facebook.php:702 -#: ../../addon/facebook/facebook.php:1200 +#: ../../addon/facebook/facebook.php:1200 ../../addon/fbpost/fbpost.php:661 #: ../../addon/public_server/public_server.php:62 -#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:3222 +#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:3296 #: ../../boot.php:788 msgid "Administrator" msgstr "Administrator" @@ -2088,7 +2118,7 @@ msgid "Private forum has no privacy permissions and no default privacy group." msgstr "Für das private Forum sind keine Zugriffsrechte eingestellt, und es gibt keine voreingestellte Gruppe für neue Kontakte." #: ../../mod/settings.php:471 ../../addon/facebook/facebook.php:495 -#: ../../addon/impressum/impressum.php:77 +#: ../../addon/fbpost/fbpost.php:144 ../../addon/impressum/impressum.php:78 #: ../../addon/openstreetmap/openstreetmap.php:80 #: ../../addon/mathjax/mathjax.php:66 ../../addon/piwik/piwik.php:105 #: ../../addon/twitter/twitter.php:389 @@ -2355,7 +2385,7 @@ msgstr "Dürfen dir Unbekannte private Nachrichten schicken?" msgid "Profile is not published." msgstr "Profil ist nicht veröffentlicht." -#: ../../mod/settings.php:944 ../../mod/profile_photo.php:214 +#: ../../mod/settings.php:944 ../../mod/profile_photo.php:248 msgid "or" msgstr "oder" @@ -2636,6 +2666,7 @@ msgstr "Persönliche Notizen" #: ../../mod/notes.php:63 ../../mod/filer.php:30 #: ../../addon/facebook/facebook.php:770 #: ../../addon/privacy_image_cache/privacy_image_cache.php:263 +#: ../../addon/fbpost/fbpost.php:267 #: ../../addon/dav/friendica/layout.fnk.php:441 #: ../../addon/dav/friendica/layout.fnk.php:488 ../../include/text.php:681 msgid "Save" @@ -2672,7 +2703,7 @@ msgstr "Kein Empfänger." #: ../../mod/wallmessage.php:123 ../../mod/wallmessage.php:131 #: ../../mod/message.php:242 ../../mod/message.php:250 -#: ../../include/conversation.php:1132 ../../include/conversation.php:1149 +#: ../../include/conversation.php:1151 ../../include/conversation.php:1168 msgid "Please enter a link URL:" msgstr "Bitte gib die URL des Links ein:" @@ -2759,7 +2790,7 @@ msgstr "Überprüfe die restlichen Einstellungen, insbesondere die Einstellungen msgid "Profile" msgstr "Profil" -#: ../../mod/newmember.php:36 ../../mod/profile_photo.php:211 +#: ../../mod/newmember.php:36 ../../mod/profile_photo.php:244 msgid "Upload Profile Photo" msgstr "Profilbild hochladen" @@ -2797,7 +2828,7 @@ msgid "Connecting" msgstr "Verbindungen knüpfen" #: ../../mod/newmember.php:49 ../../mod/newmember.php:51 -#: ../../addon/facebook/facebook.php:728 +#: ../../addon/facebook/facebook.php:728 ../../addon/fbpost/fbpost.php:239 #: ../../include/contact_selectors.php:81 msgid "Facebook" msgstr "Facebook" @@ -2924,7 +2955,7 @@ msgstr "Gruppe nicht gefunden." msgid "Group name changed." msgstr "Gruppenname geändert." -#: ../../mod/group.php:72 ../../mod/profperm.php:19 ../../index.php:314 +#: ../../mod/group.php:72 ../../mod/profperm.php:19 ../../index.php:316 msgid "Permission denied" msgstr "Zugriff verweigert" @@ -3098,7 +3129,7 @@ msgstr "%1$s mag %2$ss %3$s nicht" #: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:159 #: ../../mod/admin.php:731 ../../mod/admin.php:930 ../../mod/display.php:29 -#: ../../mod/display.php:145 ../../include/items.php:3700 +#: ../../mod/display.php:145 ../../include/items.php:3774 msgid "Item not found." msgstr "Beitrag nicht gefunden." @@ -3182,61 +3213,65 @@ msgstr "Stimmung" msgid "Set your current mood and tell your friends" msgstr "Wähle deine aktuelle Stimmung und erzähle sie deinen Freunden" -#: ../../mod/profile_photo.php:30 +#: ../../mod/profile_photo.php:44 msgid "Image uploaded but image cropping failed." msgstr "Bilder hochgeladen, aber das Zuschneiden ist fehlgeschlagen." -#: ../../mod/profile_photo.php:63 ../../mod/profile_photo.php:70 -#: ../../mod/profile_photo.php:77 ../../mod/profile_photo.php:273 +#: ../../mod/profile_photo.php:77 ../../mod/profile_photo.php:84 +#: ../../mod/profile_photo.php:91 ../../mod/profile_photo.php:308 #, php-format msgid "Image size reduction [%s] failed." msgstr "Verkleinern der Bildgröße von [%s] ist gescheitert." -#: ../../mod/profile_photo.php:91 +#: ../../mod/profile_photo.php:118 msgid "" "Shift-reload the page or clear browser cache if the new photo does not " "display immediately." msgstr "Drücke Umschalt+Neu Laden oder leere den Browser-Cache, falls das neue Foto nicht gleich angezeigt wird." -#: ../../mod/profile_photo.php:101 +#: ../../mod/profile_photo.php:128 msgid "Unable to process image" msgstr "Bild konnte nicht verarbeitet werden" -#: ../../mod/profile_photo.php:117 ../../mod/wall_upload.php:88 +#: ../../mod/profile_photo.php:144 ../../mod/wall_upload.php:88 #, php-format msgid "Image exceeds size limit of %d" msgstr "Bildgröße überschreitet das Limit von %d" -#: ../../mod/profile_photo.php:210 +#: ../../mod/profile_photo.php:242 msgid "Upload File:" msgstr "Datei hochladen:" -#: ../../mod/profile_photo.php:212 +#: ../../mod/profile_photo.php:243 +msgid "Select a profile:" +msgstr "Profil auswählen" + +#: ../../mod/profile_photo.php:245 #: ../../addon/dav/friendica/layout.fnk.php:152 msgid "Upload" msgstr "Hochladen" -#: ../../mod/profile_photo.php:214 +#: ../../mod/profile_photo.php:248 msgid "skip this step" msgstr "diesen Schritt überspringen" -#: ../../mod/profile_photo.php:214 +#: ../../mod/profile_photo.php:248 msgid "select a photo from your photo albums" msgstr "wähle ein Foto von deinen Fotoalben" -#: ../../mod/profile_photo.php:227 +#: ../../mod/profile_photo.php:262 msgid "Crop Image" msgstr "Bild zurechtschneiden" -#: ../../mod/profile_photo.php:228 +#: ../../mod/profile_photo.php:263 msgid "Please adjust the image cropping for optimum viewing." msgstr "Passe bitte den Bildausschnitt an, damit das Bild optimal dargestellt werden kann." -#: ../../mod/profile_photo.php:230 +#: ../../mod/profile_photo.php:265 msgid "Done Editing" msgstr "Bearbeitung abgeschlossen" -#: ../../mod/profile_photo.php:264 +#: ../../mod/profile_photo.php:299 msgid "Image uploaded successfully." msgstr "Bild erfolgreich auf den Server geladen." @@ -4390,8 +4425,8 @@ msgstr "sichtbar für jeden" msgid "Edit visibility" msgstr "Sichtbarkeit bearbeiten" -#: ../../mod/filer.php:29 ../../include/conversation.php:1136 -#: ../../include/conversation.php:1153 +#: ../../mod/filer.php:29 ../../include/conversation.php:1155 +#: ../../include/conversation.php:1172 msgid "Save to Folder:" msgstr "In diesen Ordner verschieben:" @@ -4732,7 +4767,7 @@ msgstr "Facebook deaktiviert" msgid "Updating contacts" msgstr "Aktualisiere Kontakte" -#: ../../addon/facebook/facebook.php:551 +#: ../../addon/facebook/facebook.php:551 ../../addon/fbpost/fbpost.php:192 msgid "Facebook API key is missing." msgstr "Facebook-API-Schlüssel nicht gefunden" @@ -4748,13 +4783,13 @@ msgstr "Facebook-Connector für dieses Konto installieren." msgid "Remove Facebook connector" msgstr "Facebook-Connector entfernen" -#: ../../addon/facebook/facebook.php:576 +#: ../../addon/facebook/facebook.php:576 ../../addon/fbpost/fbpost.php:217 msgid "" "Re-authenticate [This is necessary whenever your Facebook password is " "changed.]" msgstr "Neu authentifizieren [Das ist immer dann nötig, wenn du dein Facebook-Passwort geändert hast.]" -#: ../../addon/facebook/facebook.php:583 +#: ../../addon/facebook/facebook.php:583 ../../addon/fbpost/fbpost.php:224 msgid "Post to Facebook by default" msgstr "Veröffentliche standardmäßig bei Facebook" @@ -4820,11 +4855,11 @@ msgstr "Probleme mit Facebook Echtzeit-Updates" msgid "Facebook Connector Settings" msgstr "Facebook-Verbindungseinstellungen" -#: ../../addon/facebook/facebook.php:744 +#: ../../addon/facebook/facebook.php:744 ../../addon/fbpost/fbpost.php:255 msgid "Facebook API Key" msgstr "Facebook API Schlüssel" -#: ../../addon/facebook/facebook.php:754 +#: ../../addon/facebook/facebook.php:754 ../../addon/fbpost/fbpost.php:262 msgid "" "Error: it appears that you have specified the App-ID and -Secret in your " ".htconfig.php file. As long as they are specified there, they cannot be set " @@ -4847,11 +4882,11 @@ msgid "" "going on." msgstr "Die Richtigkeit des API Schlüssels konnte nicht gefunden werden. Irgendwas stimmt nicht." -#: ../../addon/facebook/facebook.php:766 +#: ../../addon/facebook/facebook.php:766 ../../addon/fbpost/fbpost.php:264 msgid "App-ID / API-Key" msgstr "App-ID / API-Key" -#: ../../addon/facebook/facebook.php:767 +#: ../../addon/facebook/facebook.php:767 ../../addon/fbpost/fbpost.php:265 msgid "Application secret" msgstr "Anwendungs-Geheimnis" @@ -4886,38 +4921,38 @@ msgstr "Echtzeit-Updates nicht aktiviert." msgid "Activate Real-Time Updates" msgstr "Echtzeit-Updates aktivieren" -#: ../../addon/facebook/facebook.php:799 +#: ../../addon/facebook/facebook.php:799 ../../addon/fbpost/fbpost.php:282 #: ../../addon/dav/friendica/layout.fnk.php:361 msgid "The new values have been saved." msgstr "Die neuen Einstellungen wurden gespeichert." -#: ../../addon/facebook/facebook.php:823 +#: ../../addon/facebook/facebook.php:823 ../../addon/fbpost/fbpost.php:301 msgid "Post to Facebook" msgstr "Bei Facebook veröffentlichen" -#: ../../addon/facebook/facebook.php:921 +#: ../../addon/facebook/facebook.php:921 ../../addon/fbpost/fbpost.php:399 msgid "" "Post to Facebook cancelled because of multi-network access permission " "conflict." msgstr "Beitrag wurde nicht bei Facebook veröffentlicht, da Konflikte bei den Multi-Netzwerk-Zugriffsrechten vorliegen." -#: ../../addon/facebook/facebook.php:1149 +#: ../../addon/facebook/facebook.php:1149 ../../addon/fbpost/fbpost.php:610 msgid "View on Friendica" msgstr "In Friendica betrachten" -#: ../../addon/facebook/facebook.php:1182 +#: ../../addon/facebook/facebook.php:1182 ../../addon/fbpost/fbpost.php:643 msgid "Facebook post failed. Queued for retry." msgstr "Veröffentlichung bei Facebook gescheitert. Wir versuchen es später erneut." -#: ../../addon/facebook/facebook.php:1222 +#: ../../addon/facebook/facebook.php:1222 ../../addon/fbpost/fbpost.php:683 msgid "Your Facebook connection became invalid. Please Re-authenticate." msgstr "Deine Facebook Anmeldedaten sind ungültig geworden. Bitte re-authentifiziere dich." -#: ../../addon/facebook/facebook.php:1223 +#: ../../addon/facebook/facebook.php:1223 ../../addon/fbpost/fbpost.php:684 msgid "Facebook connection became invalid" msgstr "Facebook Anmeldedaten sind ungültig geworden" -#: ../../addon/facebook/facebook.php:1224 +#: ../../addon/facebook/facebook.php:1224 ../../addon/fbpost/fbpost.php:685 #, php-format msgid "" "Hi %1$s,\n" @@ -4969,6 +5004,26 @@ msgstr "Größe des Caches" msgid "Delete the whole cache" msgstr "Cache leeren" +#: ../../addon/fbpost/fbpost.php:172 +msgid "Facebook Post disabled" +msgstr "" + +#: ../../addon/fbpost/fbpost.php:199 +msgid "Facebook Post" +msgstr "" + +#: ../../addon/fbpost/fbpost.php:205 +msgid "Install Facebook Post connector for this account." +msgstr "" + +#: ../../addon/fbpost/fbpost.php:212 +msgid "Remove Facebook Post connector" +msgstr "" + +#: ../../addon/fbpost/fbpost.php:240 +msgid "Facebook Post Settings" +msgstr "" + #: ../../addon/widgets/widget_like.php:58 #, php-format msgid "%d person likes this" @@ -5028,12 +5083,12 @@ msgid "did something obscenely biological to" msgstr "machte etwas obszönes Körperliches mit" #: ../../addon/morepokes/morepokes.php:22 -msgid "point out the new poke feature to" -msgstr "die neue Anstups-Funktion zeigen" +msgid "point out the poke feature to" +msgstr "" #: ../../addon/morepokes/morepokes.php:22 -msgid "pointed out the new poke feature to" -msgstr "zeigte die neue Anstups-Funktion" +msgid "pointed out the poke feature to" +msgstr "" #: ../../addon/morepokes/morepokes.php:23 msgid "declare undying love for" @@ -5044,113 +5099,109 @@ msgid "declared undying love for" msgstr "verkündete unsterbliche Liebe für" #: ../../addon/morepokes/morepokes.php:24 -msgid "set fire to" -msgstr "entflammt" - -#: ../../addon/morepokes/morepokes.php:25 msgid "patent" msgstr "patentieren" -#: ../../addon/morepokes/morepokes.php:25 +#: ../../addon/morepokes/morepokes.php:24 msgid "patented" msgstr "patentierte" -#: ../../addon/morepokes/morepokes.php:26 +#: ../../addon/morepokes/morepokes.php:25 msgid "stroke beard" msgstr "sich den Bart kratzen" -#: ../../addon/morepokes/morepokes.php:26 +#: ../../addon/morepokes/morepokes.php:25 msgid "stroked their beard at" msgstr "kratzte sich den Bart in Richtung" -#: ../../addon/morepokes/morepokes.php:27 +#: ../../addon/morepokes/morepokes.php:26 msgid "" "bemoan the declining standards of modern secondary and tertiary education to" msgstr "sich über die sinkenden Standards der Schul- und Hochschulbildung beklagen" -#: ../../addon/morepokes/morepokes.php:27 +#: ../../addon/morepokes/morepokes.php:26 msgid "" "bemoans the declining standards of modern secondary and tertiary education " "to" msgstr "beklagte sich über die sinkenden Standards der Schul- und Hochschulbildung bei" -#: ../../addon/morepokes/morepokes.php:28 +#: ../../addon/morepokes/morepokes.php:27 msgid "hug" msgstr "umarmen" -#: ../../addon/morepokes/morepokes.php:28 +#: ../../addon/morepokes/morepokes.php:27 msgid "hugged" msgstr "umarmte" -#: ../../addon/morepokes/morepokes.php:29 +#: ../../addon/morepokes/morepokes.php:28 msgid "kiss" msgstr "küssen" -#: ../../addon/morepokes/morepokes.php:29 +#: ../../addon/morepokes/morepokes.php:28 msgid "kissed" msgstr "küsste" -#: ../../addon/morepokes/morepokes.php:30 +#: ../../addon/morepokes/morepokes.php:29 msgid "raise eyebrows at" msgstr "Augenbrauen hochziehen" -#: ../../addon/morepokes/morepokes.php:30 +#: ../../addon/morepokes/morepokes.php:29 msgid "raised their eyebrows at" msgstr "zog die Augenbrauen hoch in Richtung" -#: ../../addon/morepokes/morepokes.php:31 +#: ../../addon/morepokes/morepokes.php:30 msgid "insult" msgstr "beleidigen" -#: ../../addon/morepokes/morepokes.php:31 +#: ../../addon/morepokes/morepokes.php:30 msgid "insulted" msgstr "beleidigte" -#: ../../addon/morepokes/morepokes.php:32 +#: ../../addon/morepokes/morepokes.php:31 msgid "praise" msgstr "preisen" -#: ../../addon/morepokes/morepokes.php:32 +#: ../../addon/morepokes/morepokes.php:31 msgid "praised" msgstr "pries" -#: ../../addon/morepokes/morepokes.php:33 +#: ../../addon/morepokes/morepokes.php:32 msgid "be dubious of" msgstr "ungewiss sein" -#: ../../addon/morepokes/morepokes.php:33 +#: ../../addon/morepokes/morepokes.php:32 msgid "was dubious of" msgstr "war ungewiss über" -#: ../../addon/morepokes/morepokes.php:34 +#: ../../addon/morepokes/morepokes.php:33 msgid "eat" msgstr "essen" -#: ../../addon/morepokes/morepokes.php:34 +#: ../../addon/morepokes/morepokes.php:33 msgid "ate" msgstr "aß" -#: ../../addon/morepokes/morepokes.php:35 +#: ../../addon/morepokes/morepokes.php:34 msgid "giggle and fawn at" msgstr "kichern und einschleimen" -#: ../../addon/morepokes/morepokes.php:35 +#: ../../addon/morepokes/morepokes.php:34 msgid "giggled and fawned at" msgstr "kicherte und schleimte sich ein bei" -#: ../../addon/morepokes/morepokes.php:36 +#: ../../addon/morepokes/morepokes.php:35 msgid "doubt" msgstr "bezweifeln" -#: ../../addon/morepokes/morepokes.php:36 +#: ../../addon/morepokes/morepokes.php:35 msgid "doubted" msgstr "bezweifelte" -#: ../../addon/morepokes/morepokes.php:37 +#: ../../addon/morepokes/morepokes.php:36 msgid "glare" msgstr "zornig anstarren" -#: ../../addon/morepokes/morepokes.php:37 +#: ../../addon/morepokes/morepokes.php:36 msgid "glared at" msgstr "starrte zornig auf" @@ -6111,68 +6162,68 @@ msgstr "Zufällige Zusammenstellung der Foren-Liste" msgid "Show forumlists/forums on profile forumlist" msgstr "Liste der Foren deren Abonnement du bist in deinem Profil anzeigen:" -#: ../../addon/impressum/impressum.php:36 +#: ../../addon/impressum/impressum.php:37 msgid "Impressum" msgstr "Impressum" -#: ../../addon/impressum/impressum.php:49 -#: ../../addon/impressum/impressum.php:51 -#: ../../addon/impressum/impressum.php:83 +#: ../../addon/impressum/impressum.php:50 +#: ../../addon/impressum/impressum.php:52 +#: ../../addon/impressum/impressum.php:84 msgid "Site Owner" msgstr "Betreiber der Seite" -#: ../../addon/impressum/impressum.php:49 -#: ../../addon/impressum/impressum.php:87 +#: ../../addon/impressum/impressum.php:50 +#: ../../addon/impressum/impressum.php:88 msgid "Email Address" msgstr "Email Adresse" -#: ../../addon/impressum/impressum.php:54 -#: ../../addon/impressum/impressum.php:85 +#: ../../addon/impressum/impressum.php:55 +#: ../../addon/impressum/impressum.php:86 msgid "Postal Address" msgstr "Postalische Anschrift" -#: ../../addon/impressum/impressum.php:60 +#: ../../addon/impressum/impressum.php:61 msgid "" "The impressum addon needs to be configured!
    Please add at least the " "owner variable to your config file. For other variables please " "refer to the README file of the addon." msgstr "Das Impressums-Plugin muss noch konfiguriert werden.
    Bitte gebe mindestens den Betreiber in der Konfiguration an. Alle weiteren Parameter werden in der README-Datei des Addons erläutert." -#: ../../addon/impressum/impressum.php:83 +#: ../../addon/impressum/impressum.php:84 msgid "The page operators name." msgstr "Name des Serveradministrators" -#: ../../addon/impressum/impressum.php:84 +#: ../../addon/impressum/impressum.php:85 msgid "Site Owners Profile" msgstr "Profil des Seitenbetreibers" -#: ../../addon/impressum/impressum.php:84 +#: ../../addon/impressum/impressum.php:85 msgid "Profile address of the operator." msgstr "Profil-Adresse des Serveradministrators" -#: ../../addon/impressum/impressum.php:85 +#: ../../addon/impressum/impressum.php:86 msgid "How to contact the operator via snail mail. You can use BBCode here." msgstr "Kontaktmöglichkeiten zum Administrator via Schneckenpost. Du kannst BBCode verwenden." -#: ../../addon/impressum/impressum.php:86 +#: ../../addon/impressum/impressum.php:87 msgid "Notes" msgstr "Hinweise" -#: ../../addon/impressum/impressum.php:86 +#: ../../addon/impressum/impressum.php:87 msgid "" "Additional notes that are displayed beneath the contact information. You can" " use BBCode here." msgstr "Zusätzliche Informationen die neben den Kontaktmöglichkeiten angezeigt werden. Du kannst BBCode verwenden." -#: ../../addon/impressum/impressum.php:87 +#: ../../addon/impressum/impressum.php:88 msgid "How to contact the operator via email. (will be displayed obfuscated)" msgstr "Wie man den Betreiber per Email erreicht. (Adresse wird verschleiert dargestellt)" -#: ../../addon/impressum/impressum.php:88 +#: ../../addon/impressum/impressum.php:89 msgid "Footer note" msgstr "Fußnote" -#: ../../addon/impressum/impressum.php:88 +#: ../../addon/impressum/impressum.php:89 msgid "Text for the footer. You can use BBCode here." msgstr "Text für die Fußzeile. Du kannst BBCode verwenden." @@ -6477,6 +6528,59 @@ msgstr "InsaneJournal Passwort" msgid "Post to InsaneJournal by default" msgstr "Standardmäßig auf InsaneJournal posten." +#: ../../addon/jappixmini/jappixmini.php:266 +msgid "Jappix Mini addon settings" +msgstr "Jappix Mini Addon Einstellungen" + +#: ../../addon/jappixmini/jappixmini.php:268 +msgid "Activate addon" +msgstr "Addon aktivieren" + +#: ../../addon/jappixmini/jappixmini.php:271 +msgid "" +"Do not insert the Jappixmini Chat-Widget into the webinterface" +msgstr "Füge das Jappix Mini Chat Widget nicht zum Webinterface hinzu" + +#: ../../addon/jappixmini/jappixmini.php:274 +msgid "Jabber username" +msgstr "Jabber Nutzername" + +#: ../../addon/jappixmini/jappixmini.php:277 +msgid "Jabber server" +msgstr "Jabber Server" + +#: ../../addon/jappixmini/jappixmini.php:281 +msgid "Jabber BOSH host" +msgstr "Jabber BOSH Host" + +#: ../../addon/jappixmini/jappixmini.php:285 +msgid "Jabber password" +msgstr "Japper Passwort" + +#: ../../addon/jappixmini/jappixmini.php:290 +msgid "Encrypt Jabber password with Friendica password (recommended)" +msgstr "Verschlüssele das Jabber Passwort mit dem Friendica Passwort (empfohlen)" + +#: ../../addon/jappixmini/jappixmini.php:293 +msgid "Friendica password" +msgstr "Friendica Passwort" + +#: ../../addon/jappixmini/jappixmini.php:296 +msgid "Approve subscription requests from Friendica contacts automatically" +msgstr "Kontaktanfragen von Friendica Kontakten automatisch akzeptieren" + +#: ../../addon/jappixmini/jappixmini.php:299 +msgid "Subscribe to Friendica contacts automatically" +msgstr "Automatisch Friendica Kontakten bei Jabber folgen" + +#: ../../addon/jappixmini/jappixmini.php:302 +msgid "Purge internal list of jabber addresses of contacts" +msgstr "Lösche die interne Liste der Jabber Adressen der Kontakte" + +#: ../../addon/jappixmini/jappixmini.php:308 +msgid "Add contact" +msgstr "Kontakt hinzufügen" + #: ../../addon/viewsrc/viewsrc.php:37 msgid "View Source" msgstr "Quelle ansehen" @@ -8041,12 +8145,12 @@ msgstr "Sekunden" msgid "%1$d %2$s ago" msgstr "%1$d %2$s her" -#: ../../include/datetime.php:472 ../../include/items.php:1621 +#: ../../include/datetime.php:472 ../../include/items.php:1683 #, php-format msgid "%s's birthday" msgstr "%ss Geburtstag" -#: ../../include/datetime.php:473 ../../include/items.php:1622 +#: ../../include/datetime.php:473 ../../include/items.php:1684 #, php-format msgid "Happy Birthday %s" msgstr "Herzlichen Glückwunsch %s" @@ -8321,15 +8425,15 @@ msgstr "Konnte die Kontaktinformationen nicht empfangen." msgid "following" msgstr "folgen" -#: ../../include/items.php:3220 +#: ../../include/items.php:3294 msgid "A new person is sharing with you at " msgstr "Eine neue Person teilt mit dir auf " -#: ../../include/items.php:3220 +#: ../../include/items.php:3294 msgid "You have a new follower at " msgstr "Du hast einen neuen Kontakt auf " -#: ../../include/items.php:3901 +#: ../../include/items.php:3975 msgid "Archives" msgstr "Archiv" @@ -8423,34 +8527,34 @@ msgstr "Das Sicherheitsmerkmal war nicht korrekt. Das passiert meistens wenn das msgid "stopped following" msgstr "wird nicht mehr gefolgt" -#: ../../include/Contact.php:220 ../../include/conversation.php:1033 +#: ../../include/Contact.php:220 ../../include/conversation.php:1052 msgid "Poke" msgstr "Anstupsen" -#: ../../include/Contact.php:221 ../../include/conversation.php:1027 +#: ../../include/Contact.php:221 ../../include/conversation.php:1046 msgid "View Status" msgstr "Pinnwand anschauen" -#: ../../include/Contact.php:222 ../../include/conversation.php:1028 +#: ../../include/Contact.php:222 ../../include/conversation.php:1047 msgid "View Profile" msgstr "Profil anschauen" -#: ../../include/Contact.php:223 ../../include/conversation.php:1029 +#: ../../include/Contact.php:223 ../../include/conversation.php:1048 msgid "View Photos" msgstr "Bilder anschauen" #: ../../include/Contact.php:224 ../../include/Contact.php:237 -#: ../../include/conversation.php:1030 +#: ../../include/conversation.php:1049 msgid "Network Posts" msgstr "Netzwerkbeiträge" #: ../../include/Contact.php:225 ../../include/Contact.php:237 -#: ../../include/conversation.php:1031 +#: ../../include/conversation.php:1050 msgid "Edit Contact" msgstr "Kontakt bearbeiten" #: ../../include/Contact.php:226 ../../include/Contact.php:237 -#: ../../include/conversation.php:1032 +#: ../../include/conversation.php:1051 msgid "Send PM" msgstr "Private Nachricht senden" @@ -8468,106 +8572,106 @@ 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:933 +#: ../../include/conversation.php:952 msgid "Delete Selected Items" msgstr "Lösche die markierten Beiträge" -#: ../../include/conversation.php:1091 +#: ../../include/conversation.php:1110 #, php-format msgid "%s likes this." msgstr "%s mag das." -#: ../../include/conversation.php:1091 +#: ../../include/conversation.php:1110 #, php-format msgid "%s doesn't like this." msgstr "%s mag das nicht." -#: ../../include/conversation.php:1095 +#: ../../include/conversation.php:1114 #, php-format msgid "%2$d people like this." msgstr "%2$d Leute mögen das." -#: ../../include/conversation.php:1097 +#: ../../include/conversation.php:1116 #, php-format msgid "%2$d people don't like this." msgstr "%2$d Leute mögen das nicht." -#: ../../include/conversation.php:1103 +#: ../../include/conversation.php:1122 msgid "and" msgstr "und" -#: ../../include/conversation.php:1106 +#: ../../include/conversation.php:1125 #, php-format msgid ", and %d other people" msgstr " und %d andere" -#: ../../include/conversation.php:1107 +#: ../../include/conversation.php:1126 #, php-format msgid "%s like this." msgstr "%s mögen das." -#: ../../include/conversation.php:1107 +#: ../../include/conversation.php:1126 #, php-format msgid "%s don't like this." msgstr "%s mögen das nicht." -#: ../../include/conversation.php:1131 ../../include/conversation.php:1148 +#: ../../include/conversation.php:1150 ../../include/conversation.php:1167 msgid "Visible to everybody" msgstr "Für jedermann sichtbar" -#: ../../include/conversation.php:1133 ../../include/conversation.php:1150 +#: ../../include/conversation.php:1152 ../../include/conversation.php:1169 msgid "Please enter a video link/URL:" msgstr "Bitte Link/URL zum Video einfügen:" -#: ../../include/conversation.php:1134 ../../include/conversation.php:1151 +#: ../../include/conversation.php:1153 ../../include/conversation.php:1170 msgid "Please enter an audio link/URL:" msgstr "Bitte Link/URL zum Audio einfügen:" -#: ../../include/conversation.php:1135 ../../include/conversation.php:1152 +#: ../../include/conversation.php:1154 ../../include/conversation.php:1171 msgid "Tag term:" msgstr "Tag:" -#: ../../include/conversation.php:1137 ../../include/conversation.php:1154 +#: ../../include/conversation.php:1156 ../../include/conversation.php:1173 msgid "Where are you right now?" msgstr "Wo hältst du dich jetzt gerade auf?" -#: ../../include/conversation.php:1197 +#: ../../include/conversation.php:1216 msgid "upload photo" msgstr "Bild hochladen" -#: ../../include/conversation.php:1199 +#: ../../include/conversation.php:1218 msgid "attach file" msgstr "Datei anhängen" -#: ../../include/conversation.php:1201 +#: ../../include/conversation.php:1220 msgid "web link" msgstr "Weblink" -#: ../../include/conversation.php:1202 +#: ../../include/conversation.php:1221 msgid "Insert video link" msgstr "Video-Adresse einfügen" -#: ../../include/conversation.php:1203 +#: ../../include/conversation.php:1222 msgid "video link" msgstr "Video-Link" -#: ../../include/conversation.php:1204 +#: ../../include/conversation.php:1223 msgid "Insert audio link" msgstr "Audio-Adresse einfügen" -#: ../../include/conversation.php:1205 +#: ../../include/conversation.php:1224 msgid "audio link" msgstr "Audio-Link" -#: ../../include/conversation.php:1207 +#: ../../include/conversation.php:1226 msgid "set location" msgstr "Ort setzen" -#: ../../include/conversation.php:1209 +#: ../../include/conversation.php:1228 msgid "clear location" msgstr "Ort löschen" -#: ../../include/conversation.php:1216 +#: ../../include/conversation.php:1235 msgid "permissions" msgstr "Zugriffsrechte" diff --git a/view/de/strings.php b/view/de/strings.php index 55129ae0d..f59f898c9 100644 --- a/view/de/strings.php +++ b/view/de/strings.php @@ -706,6 +706,7 @@ $a->strings["Shift-reload the page or clear browser cache if the new photo does $a->strings["Unable to process image"] = "Bild konnte nicht verarbeitet werden"; $a->strings["Image exceeds size limit of %d"] = "Bildgröße überschreitet das Limit von %d"; $a->strings["Upload File:"] = "Datei hochladen:"; +$a->strings["Select a profile:"] = "Profil auswählen"; $a->strings["Upload"] = "Hochladen"; $a->strings["skip this step"] = "diesen Schritt überspringen"; $a->strings["select a photo from your photo albums"] = "wähle ein Foto von deinen Fotoalben"; @@ -1115,6 +1116,11 @@ $a->strings["Cache Statistics"] = "Cache Statistik"; $a->strings["Number of items"] = "Anzahl der Einträge"; $a->strings["Size of the cache"] = "Größe des Caches"; $a->strings["Delete the whole cache"] = "Cache leeren"; +$a->strings["Facebook Post disabled"] = ""; +$a->strings["Facebook Post"] = ""; +$a->strings["Install Facebook Post connector for this account."] = ""; +$a->strings["Remove Facebook Post connector"] = ""; +$a->strings["Facebook Post Settings"] = ""; $a->strings["%d person likes this"] = array( 0 => "%d Person mag das", 1 => "%d Leute mögen das", @@ -1134,11 +1140,10 @@ $a->strings["shag"] = "poppen"; $a->strings["shagged"] = "poppte"; $a->strings["do something obscenely biological to"] = "mit ihm/ihr etwas obszönes Körperliches machen"; $a->strings["did something obscenely biological to"] = "machte etwas obszönes Körperliches mit"; -$a->strings["point out the new poke feature to"] = "die neue Anstups-Funktion zeigen"; -$a->strings["pointed out the new poke feature to"] = "zeigte die neue Anstups-Funktion"; +$a->strings["point out the poke feature to"] = ""; +$a->strings["pointed out the poke feature to"] = ""; $a->strings["declare undying love for"] = "unterbliche Liebe verkünden"; $a->strings["declared undying love for"] = "verkündete unsterbliche Liebe für"; -$a->strings["set fire to"] = "entflammt"; $a->strings["patent"] = "patentieren"; $a->strings["patented"] = "patentierte"; $a->strings["stroke beard"] = "sich den Bart kratzen"; @@ -1465,6 +1470,19 @@ $a->strings["Enable InsaneJournal Post Plugin"] = "InsaneJournal Plugin aktivier $a->strings["InsaneJournal username"] = "InsaneJournal Benutzername"; $a->strings["InsaneJournal password"] = "InsaneJournal Passwort"; $a->strings["Post to InsaneJournal by default"] = "Standardmäßig auf InsaneJournal posten."; +$a->strings["Jappix Mini addon settings"] = "Jappix Mini Addon Einstellungen"; +$a->strings["Activate addon"] = "Addon aktivieren"; +$a->strings["Do not insert the Jappixmini Chat-Widget into the webinterface"] = "Füge das Jappix Mini Chat Widget nicht zum Webinterface hinzu"; +$a->strings["Jabber username"] = "Jabber Nutzername"; +$a->strings["Jabber server"] = "Jabber Server"; +$a->strings["Jabber BOSH host"] = "Jabber BOSH Host"; +$a->strings["Jabber password"] = "Japper Passwort"; +$a->strings["Encrypt Jabber password with Friendica password (recommended)"] = "Verschlüssele das Jabber Passwort mit dem Friendica Passwort (empfohlen)"; +$a->strings["Friendica password"] = "Friendica Passwort"; +$a->strings["Approve subscription requests from Friendica contacts automatically"] = "Kontaktanfragen von Friendica Kontakten automatisch akzeptieren"; +$a->strings["Subscribe to Friendica contacts automatically"] = "Automatisch Friendica Kontakten bei Jabber folgen"; +$a->strings["Purge internal list of jabber addresses of contacts"] = "Lösche die interne Liste der Jabber Adressen der Kontakte"; +$a->strings["Add contact"] = "Kontakt hinzufügen"; $a->strings["View Source"] = "Quelle ansehen"; $a->strings["Post to StatusNet"] = "Bei StatusNet veröffentlichen"; $a->strings["Please contact your site administrator.
    The provided API URL is not valid."] = "Bitte kontaktiere den Administrator des Servers.
    Die angegebene API-URL ist nicht gültig."; From cb1c9de0690d171005ef50e60aef474114ab0fa0 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Fri, 14 Sep 2012 17:01:26 +0200 Subject: [PATCH 092/140] quattro: lilac color schema --- view/theme/quattro/config.php | 1 + view/theme/quattro/lilac/Makefile | 4 + view/theme/quattro/lilac/colors.less | 117 ++ view/theme/quattro/lilac/style.css | 2149 ++++++++++++++++++++++++++ view/theme/quattro/lilac/style.less | 14 + 5 files changed, 2285 insertions(+) create mode 100644 view/theme/quattro/lilac/Makefile create mode 100644 view/theme/quattro/lilac/colors.less create mode 100644 view/theme/quattro/lilac/style.css create mode 100644 view/theme/quattro/lilac/style.less diff --git a/view/theme/quattro/config.php b/view/theme/quattro/config.php index c261a78ec..e3d5b7810 100644 --- a/view/theme/quattro/config.php +++ b/view/theme/quattro/config.php @@ -44,6 +44,7 @@ function theme_admin_post(&$a){ function quattro_form(&$a, $align, $color){ $colors = array( "dark"=>"Quattro", + "lilac"=>"Lilac", "green"=>"Green" ); diff --git a/view/theme/quattro/lilac/Makefile b/view/theme/quattro/lilac/Makefile new file mode 100644 index 000000000..989da60c7 --- /dev/null +++ b/view/theme/quattro/lilac/Makefile @@ -0,0 +1,4 @@ +## + +style.css : style.less colors.less ../icons.less ../quattro.less + lessc style.less > style.css diff --git a/view/theme/quattro/lilac/colors.less b/view/theme/quattro/lilac/colors.less new file mode 100644 index 000000000..2df0e41f1 --- /dev/null +++ b/view/theme/quattro/lilac/colors.less @@ -0,0 +1,117 @@ +// Quattro Theme LESS file + +// "Echo" palette from Inkscape +@Yellow1 : #fce94f; +@Blue1:rgb(25,174,255); +@Blue2:rgb(0,132,200); +@Blue3:rgb(0,92,148); +@Red1:rgb(255,65,65); +@Red2:rgb(220,0,0); +@Red3:rgb(181,0,0); +@Orange1:rgb(255,255,62); +@Orange2:rgb(255,153,0); +@Orange3:rgb(255,102,0); +@Brown1:rgb(255,192,34); +@Brown2:rgb(184,129,0); +@Brown3:rgb(128,77,0); +@Green1:rgb(204,255,66); +@Green2:rgb(154,222,0); +@Green3:rgb(0,145,0); +@Green4:rgb(221,255,221); +@Purple1:rgb(241,202,255); +@Purple2:rgb(215,108,255); +@Purple3:rgb(186,0,255); +@Metalic1:rgb(189,205,212); +@Metalic2:rgb(158,171,176); +@Metalic3:rgb(54,78,89); +@Metalic4:rgb(14,35,46); +@Grey1:rgb(255,255,255); +@Grey2:rgb(204,204,204); +@Grey3:rgb(153,153,153); +@Grey4:rgb(102,102,102); +@Grey5:rgb(45,45,45); +@lilac: #86608e; +@lilacComp: #cbd38d; +@lilacDark: #521f5c; +@lilacBright:#c0a3c7; +@lilacVBright:#F6ECF9; + + +// Theme colors +@BodyBackground: @lilacVBright; +@BodyColor: @Grey5; + +@Link: @lilacDark; +@LinkHover: @lilac; +@LinkVisited: @lilac; + + +@ButtonColor: @Grey1; +@ButtonBackgroundColor: @Grey5; + +@Banner: @Grey1; + +@NavbarBackground:@lilacDark; +@NavbarSelectedBg:@lilacComp; +@NavbarSelectedBorder: @Metalic2; +@NavbarNotifBg: @lilac; + +@Menu: @Grey5; +@MenuBg: @Grey1; +@MenuBorder: @Metalic3; +@MenuItem: @Grey5; +@MenuItemHoverBg: @lilacBright; +@MenuItemSeparator: @Metalic2; +@MenuEmpty: @Metalic2; +@MenuItemDetail: @Metalic2; + +@AsideBorder: @Metalic1; +@AsideConnect: @Grey1; +@AsideConnectBg: @lilacDark; +@AsideConnectHoverBg: @lilac; +@VCardLabelColor: @Grey3; + +@InfoColor: @Grey1; +@InfoBackgroundColor: @Metalic3; + +@NoticeColor: @Grey1; +@NoticeBackgroundColor: #511919; + +@FieldHelpColor: @Grey3; + +@ThreadBackgroundColor: #eff0f1; +@ThreadBottomBorderColor: @Grey2; +@ShinyBorderColor: @lilacBright; + +@BlockquoteBackgroundColor: #FFFFFF; +@BlockquoteBorderColor: #e6e6e6; + +@CommentBoxEmptyColor: @Grey3; +@CommentBoxEmptyBorderColor: @Grey3; +@CommentBoxFullColor: @Grey5; +@CommentBoxFullBorderColor: @Grey5; + +@TagColor: @Grey1; + +@JotToolsBackgroundColor: @lilacDark; +@JotToolsBorderColor: @Metalic2; +@JotToolsOverBackgroundColor: @lilac; +@JotToolsOverBorderColor: @Metalic1; +@JotToolsText: @Grey2; +@JotSubmitBackgroundColor: @Grey2; +@JotSubmitText: @Grey4; +@JotSubmitOverBackgroundColor: @lilacDark; +@JotSubmitOverText: @Grey4; +@JotPermissionUnlockBackgroundColor: @Grey2; +@JotPermissionLockBackgroundColor: @Grey4; +@JotLoadingBackgroundColor: @Grey1; +@JotPreviewBackgroundColor: @lilacBright; + +@MessageNewBackgroundColor: @Blue1; +@MessageNewBorderColor: @Blue3; +@MessageNewColor: @Grey1; + +@MailListBackgroundColor: #f6f7f8; + +@MailDisplaySubjectColor: @Grey5; +@MailDisplaySubjectBackgroundColor: #f6f7f8; diff --git a/view/theme/quattro/lilac/style.css b/view/theme/quattro/lilac/style.css new file mode 100644 index 000000000..c6229e885 --- /dev/null +++ b/view/theme/quattro/lilac/style.css @@ -0,0 +1,2149 @@ +/** + * Fabio Comuni + **/ +/* icons */ +.icon { + background-color: transparent ; + background-repeat: no-repeat; + background-position: left center; + display: block; + overflow: hidden; + text-indent: -9999px; + padding: 1px; + min-width: 22px; + height: 22px; +} +.icon.text { + text-indent: 0px; +} +.icon.notify { + background-image: url("../../../images/icons/22/notify_off.png"); +} +.icon.gear { + background-image: url("../../../images/icons/22/gear.png"); +} +.icon.like { + background-image: url("icons/like.png"); +} +.icon.dislike { + background-image: url("icons/dislike.png"); +} +.icon.add { + background-image: url("../../../images/icons/22/add.png"); +} +.icon.delete { + background-image: url("../../../images/icons/22/delete.png"); +} +.icon.edit { + background-image: url("../../../images/icons/22/edit.png"); +} +.icon.star { + background-image: url("../../../images/icons/22/star.png"); +} +.icon.menu { + background-image: url("../../../images/icons/22/menu.png"); +} +.icon.link { + background-image: url("../../../images/icons/22/link.png"); +} +.icon.lock { + background-image: url("../../../images/icons/22/lock.png"); +} +.icon.unlock { + background-image: url("../../../images/icons/22/unlock.png"); +} +.icon.plugin { + background-image: url("../../../images/icons/22/plugin.png"); +} +.icon.type-unkn { + background-image: url("../../../images/icons/22/zip.png"); +} +.icon.type-audio { + background-image: url("../../../images/icons/22/audio.png"); +} +.icon.type-video { + background-image: url("../../../images/icons/22/video.png"); +} +.icon.type-image { + background-image: url("../../../images/icons/22/image.png"); +} +.icon.type-text { + background-image: url("../../../images/icons/22/text.png"); +} +.icon.language { + background-image: url("icons/language.png"); +} +.icon.text { + padding: 10px 0px 0px 25px; +} +.icon.s10 { + min-width: 10px; + height: 10px; +} +.icon.s10.notify { + background-image: url("../../../images/icons/10/notify_off.png"); +} +.icon.s10.gear { + background-image: url("../../../images/icons/10/gear.png"); +} +.icon.s10.like { + background-image: url("icons/like.png"); +} +.icon.s10.dislike { + background-image: url("icons/dislike.png"); +} +.icon.s10.add { + background-image: url("../../../images/icons/10/add.png"); +} +.icon.s10.delete { + background-image: url("../../../images/icons/10/delete.png"); +} +.icon.s10.edit { + background-image: url("../../../images/icons/10/edit.png"); +} +.icon.s10.star { + background-image: url("../../../images/icons/10/star.png"); +} +.icon.s10.menu { + background-image: url("../../../images/icons/10/menu.png"); +} +.icon.s10.link { + background-image: url("../../../images/icons/10/link.png"); +} +.icon.s10.lock { + background-image: url("../../../images/icons/10/lock.png"); +} +.icon.s10.unlock { + background-image: url("../../../images/icons/10/unlock.png"); +} +.icon.s10.plugin { + background-image: url("../../../images/icons/10/plugin.png"); +} +.icon.s10.type-unkn { + background-image: url("../../../images/icons/10/zip.png"); +} +.icon.s10.type-audio { + background-image: url("../../../images/icons/10/audio.png"); +} +.icon.s10.type-video { + background-image: url("../../../images/icons/10/video.png"); +} +.icon.s10.type-image { + background-image: url("../../../images/icons/10/image.png"); +} +.icon.s10.type-text { + background-image: url("../../../images/icons/10/text.png"); +} +.icon.s10.language { + background-image: url("icons/language.png"); +} +.icon.s10.text { + padding: 2px 0px 0px 15px; +} +.icon.s16 { + min-width: 16px; + height: 16px; +} +.icon.s16.notify { + background-image: url("../../../images/icons/16/notify_off.png"); +} +.icon.s16.gear { + background-image: url("../../../images/icons/16/gear.png"); +} +.icon.s16.like { + background-image: url("icons/like.png"); +} +.icon.s16.dislike { + background-image: url("icons/dislike.png"); +} +.icon.s16.add { + background-image: url("../../../images/icons/16/add.png"); +} +.icon.s16.delete { + background-image: url("../../../images/icons/16/delete.png"); +} +.icon.s16.edit { + background-image: url("../../../images/icons/16/edit.png"); +} +.icon.s16.star { + background-image: url("../../../images/icons/16/star.png"); +} +.icon.s16.menu { + background-image: url("../../../images/icons/16/menu.png"); +} +.icon.s16.link { + background-image: url("../../../images/icons/16/link.png"); +} +.icon.s16.lock { + background-image: url("../../../images/icons/16/lock.png"); +} +.icon.s16.unlock { + background-image: url("../../../images/icons/16/unlock.png"); +} +.icon.s16.plugin { + background-image: url("../../../images/icons/16/plugin.png"); +} +.icon.s16.type-unkn { + background-image: url("../../../images/icons/16/zip.png"); +} +.icon.s16.type-audio { + background-image: url("../../../images/icons/16/audio.png"); +} +.icon.s16.type-video { + background-image: url("../../../images/icons/16/video.png"); +} +.icon.s16.type-image { + background-image: url("../../../images/icons/16/image.png"); +} +.icon.s16.type-text { + background-image: url("../../../images/icons/16/text.png"); +} +.icon.s16.language { + background-image: url("icons/language.png"); +} +.icon.s16.text { + padding: 4px 0px 0px 20px; +} +.icon.s22 { + min-width: 22px; + height: 22px; +} +.icon.s22.notify { + background-image: url("../../../images/icons/22/notify_off.png"); +} +.icon.s22.gear { + background-image: url("../../../images/icons/22/gear.png"); +} +.icon.s22.like { + background-image: url("icons/like.png"); +} +.icon.s22.dislike { + background-image: url("icons/dislike.png"); +} +.icon.s22.add { + background-image: url("../../../images/icons/22/add.png"); +} +.icon.s22.delete { + background-image: url("../../../images/icons/22/delete.png"); +} +.icon.s22.edit { + background-image: url("../../../images/icons/22/edit.png"); +} +.icon.s22.star { + background-image: url("../../../images/icons/22/star.png"); +} +.icon.s22.menu { + background-image: url("../../../images/icons/22/menu.png"); +} +.icon.s22.link { + background-image: url("../../../images/icons/22/link.png"); +} +.icon.s22.lock { + background-image: url("../../../images/icons/22/lock.png"); +} +.icon.s22.unlock { + background-image: url("../../../images/icons/22/unlock.png"); +} +.icon.s22.plugin { + background-image: url("../../../images/icons/22/plugin.png"); +} +.icon.s22.type-unkn { + background-image: url("../../../images/icons/22/zip.png"); +} +.icon.s22.type-audio { + background-image: url("../../../images/icons/22/audio.png"); +} +.icon.s22.type-video { + background-image: url("../../../images/icons/22/video.png"); +} +.icon.s22.type-image { + background-image: url("../../../images/icons/22/image.png"); +} +.icon.s22.type-text { + background-image: url("../../../images/icons/22/text.png"); +} +.icon.s22.language { + background-image: url("icons/language.png"); +} +.icon.s22.text { + padding: 10px 0px 0px 25px; +} +.icon.s48 { + width: 48px; + height: 48px; +} +.icon.s48.notify { + background-image: url("../../../images/icons/48/notify_off.png"); +} +.icon.s48.gear { + background-image: url("../../../images/icons/48/gear.png"); +} +.icon.s48.like { + background-image: url("icons/like.png"); +} +.icon.s48.dislike { + background-image: url("icons/dislike.png"); +} +.icon.s48.add { + background-image: url("../../../images/icons/48/add.png"); +} +.icon.s48.delete { + background-image: url("../../../images/icons/48/delete.png"); +} +.icon.s48.edit { + background-image: url("../../../images/icons/48/edit.png"); +} +.icon.s48.star { + background-image: url("../../../images/icons/48/star.png"); +} +.icon.s48.menu { + background-image: url("../../../images/icons/48/menu.png"); +} +.icon.s48.link { + background-image: url("../../../images/icons/48/link.png"); +} +.icon.s48.lock { + background-image: url("../../../images/icons/48/lock.png"); +} +.icon.s48.unlock { + background-image: url("../../../images/icons/48/unlock.png"); +} +.icon.s48.plugin { + background-image: url("../../../images/icons/48/plugin.png"); +} +.icon.s48.type-unkn { + background-image: url("../../../images/icons/48/zip.png"); +} +.icon.s48.type-audio { + background-image: url("../../../images/icons/48/audio.png"); +} +.icon.s48.type-video { + background-image: url("../../../images/icons/48/video.png"); +} +.icon.s48.type-image { + background-image: url("../../../images/icons/48/image.png"); +} +.icon.s48.type-text { + background-image: url("../../../images/icons/48/text.png"); +} +.icon.s48.language { + background-image: url("icons/language.png"); +} +.icon.on { + background-image: url("icons/addon_on.png"); + min-width: 16px; + height: 16px; + background-position: 0px 0px; +} +.icon.off { + background-image: url("icons/addon_off.png"); + width: 16px; + height: 16px; + background-position: 0px 0px; +} +/* global */ +body { + font-family: Liberation Sans, helvetica, arial, clean, sans-serif; + font-size: 11px; + background-color: #f6ecf9; + color: #2d2d2d; + margin: 50px 0px 0px 0px; + display: table; +} +h4 { + font-size: 1.1em; +} +a, +a:link { + color: #521f5c; + text-decoration: none; +} +a:visited { + color: #86608e; + text-decoration: none; +} +a:hover { + color: #86608e; + text-decoration: underline; +} +.left { + float: left; +} +.right { + float: right; +} +.hidden { + display: none; +} +.clear { + clear: both; +} +.fakelink { + color: #521f5c; + text-decoration: none; + cursor: pointer; +} +.fakelink:hover { + color: #86608e; + text-decoration: underline; +} +blockquote { + background: #ffffff; + padding: 1em; + margin-left: 1em; + border-left: 1em solid #e6e6e6; +} +code { + font-family: Courier, monospace; + white-space: pre; + display: block; + overflow: auto; + border: 1px solid #444; + background: #EEE; + color: #444; + padding: 10px; + margin-top: 20px; +} +textarea { + font-size: 20px; +} +#panel { + position: absolute; + width: 10em; + background: #ffffff; + color: #2d2d2d; + margin: 0px; + padding: 1em; + list-style: none; + border: 3px solid #364e59; + 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); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +/* tool */ +.tool { + height: auto; + overflow: auto; +} +.tool .label { + float: left; +} +.tool .action { + float: right; +} +.tool > img { + float: left; +} +/* popup notifications */ +#jGrowl.top-right { + top: 30px; + right: 15px; +} +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; +} +/* header */ +header { + position: fixed; + left: 43%; + right: 43%; + top: 0px; + margin: 0px; + padding: 0px; + /*width: 100%; height: 12px; */ + + z-index: 110; + color: #ffffff; +} +header #site-location { + display: none; +} +header #banner { + overflow: hidden; + text-align: center; + width: 100%; +} +header #banner a, +header #banner a:active, +header #banner a:visited, +header #banner a:link, +header #banner a:hover { + color: #ffffff; + text-decoration: none; + outline: none; + vertical-align: bottom; +} +header #banner #logo-img { + height: 22px; + margin-top: 5px; +} +header #banner #logo-text { + font-size: 22px; +} +/* nav */ +nav { + width: 100%; + height: 32px; + position: fixed; + left: 0px; + top: 0px; + padding: 0px; + background-color: #521f5c; + color: #ffffff; + z-index: 100; + -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); +} +nav a, +nav a:active, +nav a:visited, +nav a:link, +nav a:hover { + color: #ffffff; + text-decoration: none; + outline: none; +} +nav ul { + margin: 0px; + padding: 0px 20px; +} +nav ul li { + list-style: none; + margin: 0px; + padding: 0px; + float: left; +} +nav ul li .menu-popup { + left: 0px; + right: auto; +} +nav .nav-menu-icon { + position: relative; + height: 22px; + padding: 5px; + margin: 0px 10px; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +nav .nav-menu-icon.selected { + background-color: #cbd38d; +} +nav .nav-menu-icon img { + width: 22px; + height: 22px; +} +nav .nav-menu-icon .nav-notify { + top: 3px; +} +nav .nav-menu { + position: relative; + height: 16px; + padding: 5px; + margin: 3px 15px 0px; + font-size: 14px; + border-bottom: 3px solid #521f5c; +} +nav .nav-menu.selected { + border-bottom: 3px solid #9eabb0; +} +nav .nav-notify { + display: none; + position: absolute; + background-color: #86608e; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + font-size: 10px; + padding: 1px 3px; + top: 0px; + right: -10px; + min-width: 15px; + text-align: right; +} +nav .nav-notify.show { + display: block; +} +nav #nav-help-link, +nav #nav-search-link, +nav #nav-directory-link, +nav #nav-apps-link, +nav #nav-site-linkmenu { + float: right; +} +nav #nav-help-link .menu-popup, +nav #nav-search-link .menu-popup, +nav #nav-directory-link .menu-popup, +nav #nav-apps-link .menu-popup, +nav #nav-site-linkmenu .menu-popup { + right: 0px; + left: auto; +} +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"); +} +nav #nav-apps-link.selected { + background-color: #cbd38d; +} +ul.menu-popup { + position: absolute; + display: none; + width: 10em; + background: #ffffff; + color: #2d2d2d; + margin: 0px; + padding: 0px; + list-style: none; + border: 3px solid #364e59; + 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); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +ul.menu-popup a { + display: block; + color: #2d2d2d; + padding: 5px 10px; + text-decoration: none; +} +ul.menu-popup a:hover { + background-color: #c0a3c7; +} +ul.menu-popup .menu-sep { + border-top: 1px solid #9eabb0; +} +ul.menu-popup li { + float: none; + overflow: auto; + height: auto; + display: block; +} +ul.menu-popup li img { + float: left; + width: 16px; + height: 16px; + padding-right: 5px; +} +ul.menu-popup .empty { + padding: 5px; + text-align: center; + color: #9eabb0; +} +ul.menu-popup .toolbar { + background-color: #9eabb0; + height: auto; + overflow: auto; +} +ul.menu-popup .toolbar a { + float: right; +} +ul.menu-popup .toolbar a:hover { + background-color: #ffffff; +} +/* autocomplete popup */ +.acpopup { + max-height: 150px; + background-color: #ffffff; + color: #2d2d2d; + border: 1px solid #MenuBorder; + overflow: auto; + 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); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +.acpopupitem { + color: #2d2d2d; + padding: 4px; + clear: left; +} +.acpopupitem img { + float: left; + margin-right: 4px; +} +.acpopupitem.selected { + background-color: #c0a3c7; +} +#nav-notifications-menu { + width: 400px; + max-height: 550px; + overflow: auto; +} +#nav-notifications-menu img { + float: left; + margin-right: 5px; +} +#nav-notifications-menu .contactname { + font-weight: bold; +} +#nav-notifications-menu .notif-when { + font-size: 10px; + color: #9eabb0; + display: block; +} +/* aside 230px*/ +aside { + display: table-cell; + vertical-align: top; + width: 200px; + padding: 0px 10px 0px 20px; + border-right: 1px solid #bdcdd4; +} +aside .profile-edit-side-div { + display: none; +} +aside .vcard .fn { + font-size: 16px; + font-weight: bold; + margin-bottom: 5px; +} +aside .vcard .title { + margin-bottom: 5px; +} +aside .vcard dl { + height: auto; + overflow: auto; +} +aside .vcard dt { + float: left; + margin-left: 0px; + width: 35%; + text-align: right; + color: #999999; +} +aside .vcard dd { + float: left; + margin-left: 4px; + width: 60%; +} +aside #profile-extra-links ul { + padding: 0px; + margin: 0px; +} +aside #profile-extra-links li { + padding: 0px; + margin: 0px; + list-style: none; +} +aside #wallmessage-link { + display: block; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + color: #ffffff; + background: #521f5c url('../../../images/connect-bg.png') no-repeat left center; + font-weight: bold; + text-transform: uppercase; + padding: 4px 2px 2px 35px; + margin-top: 3px; +} +aside #wallmessage-link:hover { + text-decoration: none; + background-color: #86608e; +} +aside #dfrn-request-link { + display: block; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + color: #ffffff; + background: #521f5c url('../../../images/connect-bg.png') no-repeat left center; + font-weight: bold; + text-transform: uppercase; + padding: 4px 2px 2px 35px; +} +aside #dfrn-request-link:hover { + text-decoration: none; + background-color: #86608e; +} +aside #profiles-menu { + width: 20em; +} +#contact-block { + overflow: auto; + height: auto; + /*.contact-block-div { width:60px; height: 60px; }*/ + +} +#contact-block .contact-block-h4 { + float: left; + margin: 5px 0px; +} +#contact-block .allcontact-link { + float: right; + margin: 5px 0px; +} +#contact-block .contact-block-content { + clear: both; + overflow: hidden; + height: auto; +} +#contact-block .contact-block-link { + float: left; + margin: 0px 2px 2px 0px; +} +#contact-block .contact-block-link img { + width: 48px; + height: 48px; +} +/* group member */ +#contact-edit-drop-link, +.mail-list-delete-wrapper, +.group-delete-wrapper { + float: right; + margin-right: 50px; +} +#contact-edit-drop-link .drophide, +.mail-list-delete-wrapper .drophide, +.group-delete-wrapper .drophide { + background-image: url('../../../images/icons/22/delete.png'); + display: block; + width: 22px; + height: 22px; + opacity: 0.3; + position: relative; + top: -50px; +} +#contact-edit-drop-link .drop, +.mail-list-delete-wrapper .drop, +.group-delete-wrapper .drop { + background-image: url('../../../images/icons/22/delete.png'); + display: block; + width: 22px; + height: 22px; + position: relative; + top: -50px; +} +/* +#group-members { + margin-top: 20px; + padding: 10px; + height: 250px; + overflow: auto; + border: 1px solid #ddd; +} +#group-members-end { + clear: both; +} +#group-all-contacts { + padding: 10px; + height: 450px; + overflow: auto; + border: 1px solid #ddd; +} +#group-all-contacts-end { + clear: both; + margin-bottom: 10px; +} +.contact-block-div { + float: left; + width: 60px; + height: 60px; +}*/ +/* widget */ +.widget { + margin-bottom: 2em; + /*.action .s10 { width: 10px; overflow: hidden; padding: 0px;} + .action .s16 { width: 16px; overflow: hidden; padding: 0px;}*/ + +} +.widget h3 { + padding: 0px; + margin: 2px; +} +.widget .action { + opacity: 0.1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget input.action { + opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget:hover .title .action { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget .tool:hover .action { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget .tool:hover .action.ticked { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget ul { + padding: 0px; +} +.widget ul li { + padding-left: 16px; + min-height: 16px; + list-style: none; +} +.widget .tool.selected { + background: url('../../../images/selected.png') no-repeat left center; +} +/* widget: search */ +#add-search-popup { + width: 200px; + top: 18px; +} +/* section 800px */ +section { + display: table-cell; + vertical-align: top; + width: 770px; + padding: 0px 20px 0px 10px; +} +.sparkle { + cursor: url('icons/lock.cur'), pointer; +} +/* wall item */ +.tread-wrapper { + background-color: #eff0f1; + position: relative; + padding: 10px; + margin-bottom: 20px; + width: 750px; + border-bottom: 1px solid #cccccc; +} +.wall-item-decor { + position: absolute; + left: 97%; + top: -10px; + width: 16px; +} +.unstarred { + display: none; +} +.wall-item-container { + display: table; + width: 750px; +} +.wall-item-container .wall-item-item, +.wall-item-container .wall-item-bottom { + display: table-row; +} +.wall-item-container .wall-item-bottom { + opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.wall-item-container:hover .wall-item-bottom { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.wall-item-container .wall-item-info { + display: table-cell; + vertical-align: top; + text-align: left; + width: 60px; +} +.wall-item-container .wall-item-location { + word-wrap: break-word; + width: 50px; +} +.wall-item-container .wall-item-content { + display: table-cell; + font-size: 12px; + max-width: 720px; + word-wrap: break-word; +} +.wall-item-container .wall-item-content img { + max-width: 710px; +} +.wall-item-container .wall-item-links, +.wall-item-container .wall-item-actions { + display: table-cell; + vertical-align: middle; +} +.wall-item-container .wall-item-links .icon, +.wall-item-container .wall-item-actions .icon { + opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.wall-item-container .wall-item-links .icon:hover, +.wall-item-container .wall-item-actions .icon:hover { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.wall-item-container .wall-item-ago { + padding-right: 40px; +} +.wall-item-container .wall-item-name { + font-weight: bold; +} +.wall-item-container .wall-item-actions-author { + float: left; + width: 20em; + margin-top: 0.5em; +} +.wall-item-container .wall-item-actions-social { + float: left; + margin-top: 0.5em; +} +.wall-item-container .wall-item-actions-social a { + margin-right: 3em; +} +.wall-item-container .wall-item-actions-tools { + float: right; + width: 15%; +} +.wall-item-container .wall-item-actions-tools a { + float: right; +} +.wall-item-container .wall-item-actions-tools input { + float: right; +} +.wall-item-container.comment .contact-photo-wrapper { + margin-left: 16px; +} +.wall-item-container.comment .contact-photo { + width: 32px; + height: 32px; +} +.wall-item-container.comment .contact-photo-menu-button { + top: 15px !important; + left: 0px !important; +} +.wall-item-container.comment .wall-item-links { + padding-left: 12px; +} +/* 'tag' item type */ +.wall-item-container.item-tag .wall-item-content { + opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.wall-item-container.item-tag .contact-photo-wrapper { + margin-left: 32px; +} +.wall-item-container.item-tag .contact-photo { + width: 16px; + height: 16px; +} +.wall-item-container.item-tag .contact-photo-menu-button { + top: 15px !important; + left: 15px !important; +} +.wall-item-comment-wrapper { + margin: 1em 2em 1em 60px; +} +.wall-item-comment-wrapper .comment-edit-photo { + display: none; +} +.wall-item-comment-wrapper textarea { + height: 1em; + width: 100%; + font-size: 10px; + color: #999999; + border: 1px solid #999999; + padding: 0.3em; +} +.wall-item-comment-wrapper .comment-edit-text-full { + font-size: 20px; + height: 4em; + color: #2d2d2d; + border: 1px solid #2d2d2d; +} +.threaded .wall-item-comment-wrapper { + margin-left: 0px; +} +.comment-edit-preview { + width: 710px; + border: 1px solid #2d2d2d; + margin-top: 10px; + background-color: #c0a3c7; +} +.comment-edit-preview .contact-photo { + width: 32px; + height: 32px; + margin-left: 16px; + /*background: url(../../../images/icons/22/user.png) no-repeat center center;*/ + +} +.comment-edit-preview .contact-photo-menu-button { + top: 15px !important; + left: 15px !important; +} +.comment-edit-preview .wall-item-links { + padding-left: 12px; +} +.comment-edit-preview .wall-item-container { + width: 90%; +} +.comment-edit-preview .tread-wrapper { + width: 90%; + padding: 0; + margin: 10px 0; + background-color: #c0a3c7; + border-bottom: 0px; +} +.comment-edit-preview .wall-item-conv { + display: none; +} +.shiny { + border-right: 10px solid #c0a3c7; +} +#jot-preview-content .tread-wrapper { + background-color: #c0a3c7; +} +.hide-comments-outer { + margin-bottom: 0.8em; +} +.wall-item-tags { + padding-top: 5px; +} +.tag { + background: url("../../../images/tag_b.png") no-repeat center left; + color: #ffffff; + padding-left: 3px; +} +.tag a { + padding-right: 8px; + background: url("../../../images/tag.png") no-repeat center right; + color: #ffffff; +} +.filesavetags { + padding: 3px 0px 3px 0px; + opacity: 0.5; +} +.wwto { + position: absolute !important; + width: 25px; + height: 25px; + background: #FFFFFF; + border: 2px solid #364e59; + height: 25px; + width: 25px; + overflow: hidden; + padding: 1px; + position: absolute !important; + top: 40px; + left: 30px; + -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); +} +.wwto .contact-photo { + width: 25px; + height: 25px; +} +/* threaded comments */ +.children { + margin-top: 1em; +} +.children .hide-comments-outer { + margin-left: 60px; +} +.children .wwto { + display: none; +} +.children .comment-edit-preview { + width: 660px; +} +.children .comment-edit-preview .wall-item-container { + width: 610px; +} +.children .children { + margin-left: 40px; +} +.children .children .wall-item-container { + width: 710px; +} +.children .children .comment-edit-preview { + width: 620px; +} +.children .children .comment-edit-preview .wall-item-container { + width: 620px; +} +.children .children .children .wall-item-container { + width: 670px; +} +.children .children .children .comment-edit-preview { + width: 580px; +} +.children .children .children .comment-edit-preview .wall-item-container { + width: 580px; +} +.children .children .children .children .wall-item-container { + width: 630px; +} +.children .children .children .children .comment-edit-preview { + width: 540px; +} +.children .children .children .children .comment-edit-preview .wall-item-container { + width: 540px; +} +.children .children .children .children .children .wall-item-container { + width: 590px; +} +.children .children .children .children .children .comment-edit-preview { + width: 500px; +} +.children .children .children .children .children .comment-edit-preview .wall-item-container { + width: 500px; +} +.children .children .children .children .children .children { + margin-left: 0px; +} +.children .children .children .children .children .children .hide-comments-outer { + margin-left: 0px; +} +/*.threaded .hide-comments-outer { margin-left: 20px; }*/ +span[id^="showmore-teaser"] { + background: url("showmore-bg.jpg") no-repeat center bottom; +} +span[id^="showmore-wrap"] { + border-top: 1px solid #999999; + color: #999999; + display: block; + text-align: center; + background-color: #eff0f1; +} +#pause { + position: fixed; + bottom: 5px; + right: 5px; +} +.contact-photo-wrapper { + position: relative; +} +.contact-photo { + width: 48px; + height: 48px; + overflow: hidden; + display: block; +} +.contact-photo img { + width: 48px; + height: 48px; +} +.contact-photo-menu-button { + display: none; + position: absolute; + left: -2px; + top: 31px; +} +.contact-wrapper { + float: left; + width: 300px; + height: 90px; + padding-right: 10px; + margin: 0 10px 10px 0px; +} +.contact-wrapper .contact-photo-wrapper { + float: left; + margin-right: 10px; +} +.contact-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo-menu-button { + left: 0px; + top: 63px; +} +.directory-item { + float: left; + width: 200px; + height: 200px; +} +.directory-item .contact-photo { + width: 175px; + height: 175px; +} +.directory-item .contact-photo img { + width: 175px; + height: 175px; +} +.contact-name { + font-weight: bold; + padding-top: 15px; +} +.contact-details { + color: #999999; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +/* editor */ +.jothidden { + display: none; +} +#jot { + width: 100%; + margin: 0px 2em 20px 0px; +} +#jot .profile-jot-text { + height: 1em; + width: 99%; + font-size: 10px; + color: #999999; + border: 1px solid #999999; + padding: 0.3em; +} +#jot .profile-jot-text:focus { + font-size: 20px; +} +#jot #jot-tools { + margin: 0px; + padding: 0px; + height: 40px; + overflow: none; + width: 770px; + background-color: #521f5c; + border-bottom: 2px solid #9eabb0; +} +#jot #jot-tools li { + list-style: none; + float: left; + width: 80px; + height: 40px; + border-bottom: 2px solid #9eabb0; +} +#jot #jot-tools li a { + display: block; + color: #cccccc; + width: 100%; + height: 40px; + text-align: center; + line-height: 40px; + overflow: hidden; +} +#jot #jot-tools li:hover { + background-color: #86608e; + border-bottom: 2px solid #bdcdd4; +} +#jot #jot-tools li.perms { + float: right; + width: 40px; +} +#jot #jot-tools li.perms a.unlock { + width: 30px; + border-left: 10px solid #cccccc; + background-color: #cccccc; +} +#jot #jot-tools li.perms a.lock { + width: 30px; + border-left: 10px solid #666666; + background-color: #666666; +} +#jot #jot-tools li.submit { + float: right; + background-color: #cccccc; + border-bottom: 2px solid #cccccc; + border-right: 1px solid #666666; + border-left: 1px solid #666666; +} +#jot #jot-tools li.submit input { + border: 0px; + margin: 0px; + padding: 0px; + background-color: #cccccc; + color: #666666; + width: 80px; + height: 40px; + line-height: 40px; +} +#jot #jot-tools li.submit input:hover { + background-color: #521f5c; + color: #666666; +} +#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: 0px; + margin: 0px; + height: 20px; + width: 500px; + font-weight: bold; + border: 1px solid #f6ecf9; +} +#jot #jot-title:-webkit-input-placeholder { + font-weight: normal; +} +#jot #jot-title:-moz-placeholder { + font-weight: normal; +} +#jot #jot-title:hover { + border: 1px solid #999999; +} +#jot #jot-title:focus { + border: 1px solid #999999; +} +#jot #character-counter { + width: 40px; + float: right; + text-align: right; + height: 20px; + line-height: 20px; + padding-right: 20px; +} +#jot #jot-category { + border: 0px; + margin: 0px; + height: 20px; + width: 200px; + border: 1px solid #f6ecf9; +} +#jot #jot-category:hover { + border: 1px solid #999999; +} +#jot #jot-category:focus { + border: 1px solid #999999; +} +/** buttons **/ +/*input[type="submit"] { + border: 0px; + background-color: @ButtonBackgroundColor; + color: @ButtonColor; + padding: 0px 10px; + .rounded(5px); + height: 18px; +}*/ +/** acl **/ +#photo-edit-perms-select, +#photos-upload-permissions-wrapper, +#profile-jot-acl-wrapper { + display: block!important; +} +#acl-wrapper { + width: 690px; + float: left; +} +#acl-search { + float: right; + background: #ffffff url("../../../images/search_18.png") no-repeat right center; + padding-right: 20px; +} +#acl-showall { + float: left; + display: block; + width: auto; + height: 18px; + background-color: #cccccc; + background-image: url("../../../images/show_all_off.png"); + background-position: 7px 7px; + background-repeat: no-repeat; + padding: 7px 5px 0px 30px; + color: #999999; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +#acl-showall.selected { + color: #000000; + background-color: #ff9900; + background-image: url("../../../images/show_all_on.png"); +} +#acl-list { + height: 210px; + border: 1px solid #cccccc; + clear: both; + margin-top: 30px; + overflow: auto; +} +.acl-list-item { + display: block; + width: 150px; + height: 30px; + border: 1px solid #cccccc; + margin: 5px; + float: left; +} +.acl-list-item img { + width: 22px; + height: 22px; + float: left; + margin: 4px; +} +.acl-list-item p { + height: 12px; + font-size: 10px; + margin: 0px; + padding: 2px 0px 1px; + overflow: hidden; +} +.acl-list-item a { + font-size: 8px; + display: block; + width: 40px; + height: 10px; + float: left; + color: #999999; + background-color: #cccccc; + background-position: 3px 3px; + background-repeat: no-repeat; + margin-right: 5px; + -webkit-border-radius: 2px ; + -moz-border-radius: 2px; + border-radius: 2px; + padding-left: 15px; +} +#acl-wrapper a:hover { + text-decoration: none; + color: #000000; +} +.acl-button-show { + background-image: url("../../../images/show_off.png"); +} +.acl-button-hide { + background-image: url("../../../images/hide_off.png"); +} +.acl-button-show.selected { + color: #000000; + background-color: #9ade00; + background-image: url("../../../images/show_on.png"); +} +.acl-button-hide.selected { + color: #000000; + 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 **/ +/** tab buttons **/ +ul.tabs { + list-style-type: none; + padding-bottom: 10px; +} +ul.tabs li { + float: left; + margin-left: 20px; +} +ul.tabs li .active { + border-bottom: 1px solid #86608e; +} +/** group editor **/ +#group-edit-desc { + margin-top: 1em; + color: #999999; +} +#group-update-wrapper { + height: auto; + overflow: auto; +} +#group-update-wrapper #group { + width: 300px; + float: left; + margin-right: 20px; +} +#group-update-wrapper #contacts { + width: 300px; + float: left; +} +#group-update-wrapper #group-separator { + display: none; +} +#group-update-wrapper .contact_list { + height: 300px; + border: 1px solid #364e59; + overflow: auto; +} +#group-update-wrapper .contact_list .contact-block-div { + width: 50px; + height: 50px; + float: left; +} +/** + * Form fields + */ +.field { + margin-bottom: 10px; + padding-bottom: 10px; + overflow: auto; + width: 100%; +} +.field label { + float: left; + width: 200px; +} +.field input, +.field textarea { + width: 400px; +} +.field input[type="checkbox"], +.field input[type="radio"] { + width: auto; +} +.field textarea { + height: 100px; +} +.field .field_help { + display: block; + margin-left: 200px; + color: #999999; +} +.field .onoff { + float: left; + width: 80px; +} +.field .onoff a { + display: block; + border: 1px solid #666666; + background-image: url("../../../images/onoff.jpg"); + background-repeat: no-repeat; + padding: 4px 2px 2px 2px; + height: 16px; + text-decoration: none; +} +.field .onoff .off { + border-color: #666666; + padding-left: 40px; + background-position: left center; + background-color: #cccccc; + color: #666666; + text-align: right; +} +.field .onoff .on { + border-color: #204A87; + padding-right: 40px; + background-position: right center; + background-color: #D7E3F1; + color: #204A87; + text-align: left; +} +.field .hidden { + display: none!important; +} +.field.radio .field_help { + margin-left: 0px; +} +#profile-edit-links li { + list-style: none; + margin-top: 10px; +} +#profile-edit-default-desc { + color: #FF0000; + border: 1px solid #FF8888; + background-color: #FFEEEE; + padding: 7px; +} +#profile-edit-profile-name-label, +#profile-edit-name-label, +#profile-edit-pdesc-label, +#profile-edit-gender-label, +#profile-edit-dob-label, +#profile-edit-address-label, +#profile-edit-locality-label, +#profile-edit-region-label, +#profile-edit-postal-code-label, +#profile-edit-country-name-label, +#profile-edit-marital-label, +#profile-edit-with-label, +#profile-edit-sexual-label, +#profile-edit-politic-label, +#profile-edit-religion-label, +#profile-edit-pubkeywords-label, +#profile-edit-prvkeywords-label, +#profile-edit-gender-select, +#profile-edit-homepage-label { + float: left; + width: 175px; + padding-top: 7px; +} +#profile-edit-profile-name, +#profile-edit-name, +#gender-select, +#profile-edit-pdesc, +#profile-edit-gender, +#profile-edit-dob, +#profile-edit-address, +#profile-edit-locality, +#profile-edit-region, +#profile-edit-postal-code, +#profile-edit-country-name, +#profile-edit-marital, +#profile-edit-with, +#profile-edit-sexual, +#profile-edit-politic, +#profile-edit-religion, +#profile-edit-pubkeywords, +#profile-edit-prvkeywords, +#profile-edit-homepage { + margin-top: 5px; +} +/* 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; +} +/* contacts */ +.contact-entry-wrapper { + width: 50px; + float: left; +} +/* photo albums */ +#photo-edit-link-wrap { + margin-bottom: 10px; +} +#album-edit-link { + border-right: 1px solid #364e59; + float: left; + padding-right: 5px; + margin-right: 5px; +} +#photo-edit-link, +#album-edit-link a { + background: url("../../../images/icons/16/edit.png") no-repeat left center; + padding-left: 18px; +} +#photo-toprofile-link { + background: url("../../../images/icons/16/user.png") no-repeat left center; + padding-left: 18px; +} +.photos-upload-link a, +#photo-top-upload-link { + background: url("../../../images/icons/16/add.png") no-repeat left center; + padding-left: 18px; +} +.photo-top-image-wrapper, +.photo-album-image-wrapper { + float: left; + margin: 0px 10px 10px 0px; + width: 150px; + height: 150px; + position: relative; + overflow: hidden; +} +.photo-top-image-wrapper img, +.photo-album-image-wrapper img { + width: 150px; +} +.photo-top-image-wrapper .photo-top-album-name, +.photo-album-image-wrapper .photo-top-album-name, +.photo-top-image-wrapper .caption, +.photo-album-image-wrapper .caption { + position: absolute; + color: #2d2d2d; + background-color: #ffffff; + width: 100%; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -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; + bottom: -150px; +} +.photo-top-image-wrapper:hover .photo-top-album-name, +.photo-album-image-wrapper:hover .photo-top-album-name, +.photo-top-image-wrapper:hover .caption, +.photo-album-image-wrapper:hover .caption { + bottom: 0px; + -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); + -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; +} +#photo-photo { + display: block; + width: 660px; + padding: 50px; + margin-bottom: 0px; + text-align: center; + background-color: #999999; +} +#photo-photo img { + max-width: 560px; +} +#photo-album-title { + background: url("../../../images/icons/22/image.png") no-repeat top left; + padding-left: 23px; + min-height: 22px; +} +#photo-album-title a { + display: block; + padding-top: 5px; +} +#photo-caption { + display: block; + width: 660px; + min-height: 55px; + background-color: #cccccc; + padding: 0 50px 0 50px; +} +#photo-next-link > a > div { + background: url("icons/next.png") no-repeat center center; + float: right; + width: 50px; + height: 50px; +} +#photo-prev-link > a > div { + background: url("icons/prev.png") no-repeat center center; + float: left; + width: 50px; + height: 50px; +} +#photo-like-div { + display: block; + width: 660px; + height: 30px; + background-color: #cccccc; + padding: 0 50px 0 50px; +} +#photo-like-div .icon { + float: left; +} +#photo-like-div .like-rotator { + float: right; +} +/* profile match wrapper */ +.profile-match-wrapper { + float: left; + width: 90px; + height: 90px; + margin-bottom: 20px; +} +.profile-match-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.profile-match-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.profile-match-wrapper .contact-photo-menu-button { + left: 0px; + top: 63px; +} +/* messages */ +#message-new { + background: #19aeff; + border: 1px solid #005c94; + width: 150px; +} +#message-new a { + color: #ffffff; + text-align: center; + display: block; + font-weight: bold; + padding: 1em 0px; +} +.mail-list-wrapper { + background-color: #f6f7f8; + margin-bottom: 5px; + width: 100%; + height: auto; + overflow: hidden; +} +.mail-list-wrapper span { + display: block; + float: left; + width: 20%; + overflow: hidden; +} +.mail-list-wrapper .mail-subject { + width: 30%; + padding: 4px 0px 0px 4px; +} +.mail-list-wrapper .mail-subject a { + display: block; +} +.mail-list-wrapper .mail-subject.unseen a { + font-weight: bold; +} +.mail-list-wrapper .mail-date { + padding: 4px 4px 0px 4px; +} +.mail-list-wrapper .mail-from { + padding: 4px 4px 0px 4px; +} +.mail-list-wrapper .mail-count { + padding: 4px 4px 0px 4px; + text-align: right; +} +.mail-list-wrapper .mail-delete { + float: right; +} +#mail-display-subject { + background-color: #f6f7f8; + color: #2d2d2d; + margin-bottom: 10px; + width: 100%; + height: auto; + overflow: hidden; +} +#mail-display-subject span { + float: left; + overflow: hidden; + padding: 4px 0px 0px 10px; +} +#mail-display-subject .mail-delete { + float: right; + opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +#mail-display-subject:hover .mail-delete { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +/* theme screenshot */ +.screenshot, +#theme-preview { + position: absolute; + width: 202px; + left: 70%; + top: 50px; +} +.screenshot img, +#theme-preview img { + width: 200px; + height: 150px; +} +/* page footer */ +footer { + height: 100px; + display: table-row; +} +.pager { + margin-top: 25px; + clear: both; +} +/** + * ADMIN + */ +#pending-update { + float: right; + color: #ffffff; + font-weight: bold; + background-color: #FF0000; + padding: 0em 0.3em; +} +#adminpage dl { + clear: left; + margin-bottom: 2px; + padding-bottom: 2px; + border-bottom: 1px solid black; +} +#adminpage dt { + width: 200px; + float: left; + font-weight: bold; +} +#adminpage dd { + margin-left: 200px; +} +#adminpage h3 { + border-bottom: 1px solid #cccccc; +} +#adminpage .field label { + font-weight: bold; +} +#adminpage .submit { + clear: left; + text-align: right; +} +#adminpage #pluginslist { + margin: 0px; + padding: 0px; +} +#adminpage .plugin { + list-style: none; + display: block; + border: 1px solid #888888; + padding: 1em; + margin-bottom: 5px; + clear: left; +} +#adminpage .plugin desc { + margin-left: 2.5em; +} +#adminpage .toggleplugin { + float: left; + margin-right: 1em; +} +#adminpage table { + width: 100%; + border-bottom: 1px solid #000000; + margin: 5px 0px; +} +#adminpage table th { + text-align: left; +} +#adminpage table td .icon { + float: left; +} +#adminpage table tr:hover { + background-color: #bbc7d7; +} +#adminpage table#users img { + width: 16px; + height: 16px; +} +#adminpage .selectall { + text-align: right; +} +/* edit buttons for comments */ +.icon.dim { + opacity: 0.3; + filter: alpha(opacity=30); +} +.comment-edit-bb { + list-style: none; + display: none; + margin: 0px; + padding: 0px; + width: 75%; +} +.comment-edit-bb > li { + display: inline-block; + margin: 10px 10px 0 0; + visibility: none; +} +.editicon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url(icons/bbedit.png); + text-decoration: none; +} +.editicon :hover { + background-color: #ccc; +} +.boldbb { + background-position: 0px 0px; +} +.boldbb:hover { + background-position: 0px -16px; +} +.italicbb { + background-position: -16px 0px; +} +.italicbb:hover { + background-position: -16px -16px; +} +.underlinebb { + background-position: -32px 0px; +} +.underlinebb:hover { + background-position: -32px -16px; +} +.quotebb { + background-position: -48px 0px; +} +.quotebb:hover { + background-position: -48px -16px; +} +.codebb { + background-position: -64px 0px; +} +.codebb:hover { + background-position: -64px -16px; +} +.imagebb { + background-position: -80px 0px; +} +.imagebb:hover { + background-position: -80px -16px; +} +.urlbb { + background-position: -96px 0px; +} +.urlbb:hover { + background-position: -96px -16px; +} +.videobb { + background-position: -112px 0px; +} +.videobb:hover { + background-position: -112px -16px; +} diff --git a/view/theme/quattro/lilac/style.less b/view/theme/quattro/lilac/style.less new file mode 100644 index 000000000..7d81e788a --- /dev/null +++ b/view/theme/quattro/lilac/style.less @@ -0,0 +1,14 @@ +/** + * Fabio Comuni + **/ +// Less file http://lesscss.org/ +// compile with lessc +// $ lessc style.less > style.css + +@import "colors"; +@import "../icons"; +@import "../quattro"; + + + + From a30097308403d8a9008b8ce8514ad2bf9957ae33 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Fri, 14 Sep 2012 17:55:17 +0200 Subject: [PATCH 093/140] modified: view/theme/smoothly/style.css --- view/theme/smoothly/style.css | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index fd45e205a..73636d1a9 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -93,6 +93,10 @@ li.widget-list { .fakelink { color: #1873a2; cursor: pointer; + padding-left: 20px; + margin-left: 40px; + margin-bottom: 10px; + background: url("down.png") no-repeat scroll left center transparent; } .fakelink :hover { @@ -334,8 +338,6 @@ nav { background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bdbdbd), color-stop(1, #a2a2a2) ); border: 1px solid #7C7D7B; box-shadow: 0 0 8px #BDBDBD; - /* -moz-box-shadow: 3px 3px 4px #959494; - -webkit-box-shadow: 3px 3px 4px #959494;*/ border-radius: 5px 5px 5px 5px; } @@ -876,6 +878,7 @@ ul .sidebar-group-li .icon { } #profile-jot-submit-wrapper { + margin-top: 30px; } #jot-title { From 6537a94b1a907230bba5512bfef1c3e179530503 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Fri, 14 Sep 2012 17:55:27 +0200 Subject: [PATCH 094/140] new file: view/theme/smoothly/down.png --- view/theme/smoothly/down.png | Bin 0 -> 537 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 view/theme/smoothly/down.png diff --git a/view/theme/smoothly/down.png b/view/theme/smoothly/down.png new file mode 100644 index 0000000000000000000000000000000000000000..ab6f9fd49e9c7f10dfa75f0ef0ff255ff2871e6d GIT binary patch literal 537 zcmV+!0_OdRP)Px#x=>71MgRZ*|NsBb(9qP?)zQ+@&d<-&)YRA5*wE3@)z;S1)6>q*&eqr0)z#Jg z{r%Y4+1c9K?d|Q{+}zXE)#Bsh)z{bE-rnHh;r#sk@bK{9;NbW7_vh&7`T6<&{{GzE z-T3(U;^N}z>FLeR&e7A;>+9?8?(Wdi(&Oah)YjJ1)6?zl?)CNc&(YE8>gwU);pph- z+uYpbuz>?d|aK@z&PX+1c6M-QDu@^WWg$>gwwIR#$TX0004WQchC< zK<3zH00001VoOIv0Eh)0NB{r;32;bRa{vGf6951U69E94oEQKA00(qQO+^RX2@Vf1 zDbi1h6aWAK%Sl8*R2b7ukk?WJK@0>}anmK7jdK8Oa?bq!Z?Sg<+x^%zC5>cE1JsxU z(;w?r+TOw-S zx9_uF_wg)T$TAt>4Zz8V?EpM=@e~ZK*v0D&ulu{cPU;ZvD`XY!J`E`FjOvc}zi>tyM bb9m1$aqSE~)%pFD00000NkvXXu0mjfUF$A= literal 0 HcmV?d00001 From 3c846547f7457318e03077ed7661f9a9228cb3a9 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Fri, 14 Sep 2012 19:08:21 +0200 Subject: [PATCH 095/140] modified: view/theme/smoothly/style.css --- view/theme/smoothly/style.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index 73636d1a9..f5a4140b9 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -94,7 +94,7 @@ li.widget-list { color: #1873a2; cursor: pointer; padding-left: 20px; - margin-left: 40px; + margin-left: 20px; margin-bottom: 10px; background: url("down.png") no-repeat scroll left center transparent; } @@ -1426,7 +1426,8 @@ profile-jot-banner-wrapper { #item-delete-selected { overflow: auto; margin-top: 20px; - width: 100%; + float: right; + width: 230px; } /* ============ */ From 816680ca85caf57174445cb578a1a57de97e6438 Mon Sep 17 00:00:00 2001 From: pixelroot Date: Fri, 14 Sep 2012 19:08:39 +0200 Subject: [PATCH 096/140] new file: view/theme/smoothly/bottom.tpl new file: view/theme/smoothly/js/jquery.autogrow.textarea.js new file: view/theme/smoothly/js/modernizr.custom.2.5.3.js new file: view/theme/smoothly/js/modernizr.custom.2.5.3.min.js --- view/theme/smoothly/bottom.tpl | 59 ++ .../smoothly/js/jquery.autogrow.textarea.js | 46 + .../smoothly/js/modernizr.custom.2.5.3.js | 989 ++++++++++++++++++ .../smoothly/js/modernizr.custom.2.5.3.min.js | 4 + 4 files changed, 1098 insertions(+) create mode 100644 view/theme/smoothly/bottom.tpl create mode 100644 view/theme/smoothly/js/jquery.autogrow.textarea.js create mode 100644 view/theme/smoothly/js/modernizr.custom.2.5.3.js create mode 100644 view/theme/smoothly/js/modernizr.custom.2.5.3.min.js diff --git a/view/theme/smoothly/bottom.tpl b/view/theme/smoothly/bottom.tpl new file mode 100644 index 000000000..800dc6370 --- /dev/null +++ b/view/theme/smoothly/bottom.tpl @@ -0,0 +1,59 @@ + + diff --git a/view/theme/smoothly/js/jquery.autogrow.textarea.js b/view/theme/smoothly/js/jquery.autogrow.textarea.js new file mode 100644 index 000000000..806e34f51 --- /dev/null +++ b/view/theme/smoothly/js/jquery.autogrow.textarea.js @@ -0,0 +1,46 @@ +(function($) { + + /* + * Auto-growing textareas; technique ripped from Facebook + */ + $.fn.autogrow = function(options) { + + this.filter('textarea').each(function() { + + var $this = $(this), + minHeight = $this.height(), + lineHeight = $this.css('lineHeight'); + + var shadow = $('
    ').css({ + position: 'absolute', + top: -10000, + left: -10000, + width: $(this).width(), + fontSize: $this.css('fontSize'), + fontFamily: $this.css('fontFamily'), + lineHeight: $this.css('lineHeight'), + resize: 'none' + }).appendTo(document.body); + + var update = function() { + + var val = this.value.replace(//g, '>') + .replace(/&/g, '&') + .replace(/\n/g, '
    '); + + shadow.html(val); + $(this).css('height', Math.max(shadow.height() + 20, minHeight)); + } + + $(this).change(update).keyup(update).keydown(update); + + update.apply(this); + + }); + + return this; + + } + +})(jQuery); \ No newline at end of file diff --git a/view/theme/smoothly/js/modernizr.custom.2.5.3.js b/view/theme/smoothly/js/modernizr.custom.2.5.3.js new file mode 100644 index 000000000..2502348b1 --- /dev/null +++ b/view/theme/smoothly/js/modernizr.custom.2.5.3.js @@ -0,0 +1,989 @@ +/* Modernizr 2.5.3 (Custom Build) | MIT & BSD + * Build: http://www.modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexbox_legacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-printshiv-mq-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load + */ +; + + + +window.Modernizr = (function( window, document, undefined ) { + + var version = '2.5.3', + + Modernizr = {}, + + + docElement = document.documentElement, + + mod = 'modernizr', + modElem = document.createElement(mod), + mStyle = modElem.style, + + inputElem = document.createElement('input') , + + smile = ':)', + + toString = {}.toString, + + prefixes = ' -webkit- -moz- -o- -ms- '.split(' '), + + + + omPrefixes = 'Webkit Moz O ms', + + cssomPrefixes = omPrefixes.split(' '), + + domPrefixes = omPrefixes.toLowerCase().split(' '), + + ns = {'svg': 'http://www.w3.org/2000/svg'}, + + tests = {}, + inputs = {}, + attrs = {}, + + classes = [], + + slice = classes.slice, + + featureName, + + + injectElementWithStyles = function( rule, callback, nodes, testnames ) { + + var style, ret, node, + div = document.createElement('div'), + body = document.body, + fakeBody = body ? body : document.createElement('body'); + + if ( parseInt(nodes, 10) ) { + while ( nodes-- ) { + node = document.createElement('div'); + node.id = testnames ? testnames[nodes] : mod + (nodes + 1); + div.appendChild(node); + } + } + + style = ['­',''].join(''); + div.id = mod; + (body ? div : fakeBody).innerHTML += style; + fakeBody.appendChild(div); + if(!body){ + fakeBody.style.background = ""; + docElement.appendChild(fakeBody); + } + + ret = callback(div, rule); + !body ? fakeBody.parentNode.removeChild(fakeBody) : div.parentNode.removeChild(div); + + return !!ret; + + }, + + testMediaQuery = function( mq ) { + + var matchMedia = window.matchMedia || window.msMatchMedia; + if ( matchMedia ) { + return matchMedia(mq).matches; + } + + var bool; + + injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) { + bool = (window.getComputedStyle ? + getComputedStyle(node, null) : + node.currentStyle)['position'] == 'absolute'; + }); + + return bool; + + }, + + + isEventSupported = (function() { + + var TAGNAMES = { + 'select': 'input', 'change': 'input', + 'submit': 'form', 'reset': 'form', + 'error': 'img', 'load': 'img', 'abort': 'img' + }; + + function isEventSupported( eventName, element ) { + + element = element || document.createElement(TAGNAMES[eventName] || 'div'); + eventName = 'on' + eventName; + + var isSupported = eventName in element; + + if ( !isSupported ) { + if ( !element.setAttribute ) { + element = document.createElement('div'); + } + if ( element.setAttribute && element.removeAttribute ) { + element.setAttribute(eventName, ''); + isSupported = is(element[eventName], 'function'); + + if ( !is(element[eventName], 'undefined') ) { + element[eventName] = undefined; + } + element.removeAttribute(eventName); + } + } + + element = null; + return isSupported; + } + return isEventSupported; + })(), + + + _hasOwnProperty = ({}).hasOwnProperty, hasOwnProperty; + + if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) { + hasOwnProperty = function (object, property) { + return _hasOwnProperty.call(object, property); + }; + } + else { + hasOwnProperty = function (object, property) { + return ((property in object) && is(object.constructor.prototype[property], 'undefined')); + }; + } + + + if (!Function.prototype.bind) { + Function.prototype.bind = function bind(that) { + + var target = this; + + if (typeof target != "function") { + throw new TypeError(); + } + + var args = slice.call(arguments, 1), + bound = function () { + + if (this instanceof bound) { + + var F = function(){}; + F.prototype = target.prototype; + var self = new F; + + var result = target.apply( + self, + args.concat(slice.call(arguments)) + ); + if (Object(result) === result) { + return result; + } + return self; + + } else { + + return target.apply( + that, + args.concat(slice.call(arguments)) + ); + + } + + }; + + return bound; + }; + } + + function setCss( str ) { + mStyle.cssText = str; + } + + function setCssAll( str1, str2 ) { + return setCss(prefixes.join(str1 + ';') + ( str2 || '' )); + } + + function is( obj, type ) { + return typeof obj === type; + } + + function contains( str, substr ) { + return !!~('' + str).indexOf(substr); + } + + function testProps( props, prefixed ) { + for ( var i in props ) { + if ( mStyle[ props[i] ] !== undefined ) { + return prefixed == 'pfx' ? props[i] : true; + } + } + return false; + } + + function testDOMProps( props, obj, elem ) { + for ( var i in props ) { + var item = obj[props[i]]; + if ( item !== undefined) { + + if (elem === false) return props[i]; + + if (is(item, 'function')){ + return item.bind(elem || obj); + } + + return item; + } + } + return false; + } + + function testPropsAll( prop, prefixed, elem ) { + + var ucProp = prop.charAt(0).toUpperCase() + prop.substr(1), + props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' '); + + if(is(prefixed, "string") || is(prefixed, "undefined")) { + return testProps(props, prefixed); + + } else { + props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' '); + return testDOMProps(props, prefixed, elem); + } + } + + var testBundle = (function( styles, tests ) { + var style = styles.join(''), + len = tests.length; + + injectElementWithStyles(style, function( node, rule ) { + var style = document.styleSheets[document.styleSheets.length - 1], + cssText = style ? (style.cssRules && style.cssRules[0] ? style.cssRules[0].cssText : style.cssText || '') : '', + children = node.childNodes, hash = {}; + + while ( len-- ) { + hash[children[len].id] = children[len]; + } + + Modernizr['touch'] = ('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch || (hash['touch'] && hash['touch'].offsetTop) === 9; + Modernizr['csstransforms3d'] = (hash['csstransforms3d'] && hash['csstransforms3d'].offsetLeft) === 9 && hash['csstransforms3d'].offsetHeight === 3; Modernizr['generatedcontent'] = (hash['generatedcontent'] && hash['generatedcontent'].offsetHeight) >= 1; Modernizr['fontface'] = /src/i.test(cssText) && + cssText.indexOf(rule.split(' ')[0]) === 0; }, len, tests); + + })([ + '@font-face {font-family:"font";src:url("https://")}' ,['@media (',prefixes.join('touch-enabled),('),mod,')', + '{#touch{top:9px;position:absolute}}'].join('') ,['@media (',prefixes.join('transform-3d),('),mod,')', + '{#csstransforms3d{left:9px;position:absolute;height:3px;}}'].join('') + + ,['#generatedcontent:after{content:"',smile,'";visibility:hidden}'].join('') + ], + [ + 'fontface' ,'touch' ,'csstransforms3d' + ,'generatedcontent' + + ]); tests['flexbox'] = function() { + return testPropsAll('flexOrder'); + }; + + + tests['flexbox-legacy'] = function() { + return testPropsAll('boxDirection'); + }; + + + tests['canvas'] = function() { + var elem = document.createElement('canvas'); + return !!(elem.getContext && elem.getContext('2d')); + }; + + tests['canvastext'] = function() { + return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function')); + }; tests['touch'] = function() { + return Modernizr['touch']; + }; + + tests['geolocation'] = function() { + return !!navigator.geolocation; + }; + + tests['postmessage'] = function() { + return !!window.postMessage; + }; + + + tests['websqldatabase'] = function() { + return !!window.openDatabase; + }; + + tests['indexedDB'] = function() { + return !!testPropsAll("indexedDB",window); + }; + + tests['hashchange'] = function() { + return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7); + }; + + tests['history'] = function() { + return !!(window.history && history.pushState); + }; + + tests['draganddrop'] = function() { + var div = document.createElement('div'); + return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div); + }; + + tests['websockets'] = function() { + for ( var i = -1, len = cssomPrefixes.length; ++i < len; ){ + if ( window[cssomPrefixes[i] + 'WebSocket'] ){ + return true; + } + } + return 'WebSocket' in window; + }; + + + tests['rgba'] = function() { + setCss('background-color:rgba(150,255,150,.5)'); + + return contains(mStyle.backgroundColor, 'rgba'); + }; + + tests['hsla'] = function() { + setCss('background-color:hsla(120,40%,100%,.5)'); + + return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla'); + }; + + tests['multiplebgs'] = function() { + setCss('background:url(https://),url(https://),red url(https://)'); + + return /(url\s*\(.*?){3}/.test(mStyle.background); + }; + tests['backgroundsize'] = function() { + return testPropsAll('backgroundSize'); + }; + + tests['borderimage'] = function() { + return testPropsAll('borderImage'); + }; + + + + tests['borderradius'] = function() { + return testPropsAll('borderRadius'); + }; + + tests['boxshadow'] = function() { + return testPropsAll('boxShadow'); + }; + + tests['textshadow'] = function() { + return document.createElement('div').style.textShadow === ''; + }; + + + tests['opacity'] = function() { + setCssAll('opacity:.55'); + + return /^0.55$/.test(mStyle.opacity); + }; + + + tests['cssanimations'] = function() { + return testPropsAll('animationName'); + }; + + + tests['csscolumns'] = function() { + return testPropsAll('columnCount'); + }; + + + tests['cssgradients'] = function() { + var str1 = 'background-image:', + str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));', + str3 = 'linear-gradient(left top,#9f9, white);'; + + setCss( + (str1 + '-webkit- '.split(' ').join(str2 + str1) + + prefixes.join(str3 + str1)).slice(0, -str1.length) + ); + + return contains(mStyle.backgroundImage, 'gradient'); + }; + + + tests['cssreflections'] = function() { + return testPropsAll('boxReflect'); + }; + + + tests['csstransforms'] = function() { + return !!testPropsAll('transform'); + }; + + + tests['csstransforms3d'] = function() { + + var ret = !!testPropsAll('perspective'); + + if ( ret && 'webkitPerspective' in docElement.style ) { + + ret = Modernizr['csstransforms3d']; + } + return ret; + }; + + + tests['csstransitions'] = function() { + return testPropsAll('transition'); + }; + + + + tests['fontface'] = function() { + return Modernizr['fontface']; + }; + + tests['generatedcontent'] = function() { + return Modernizr['generatedcontent']; + }; + tests['video'] = function() { + var elem = document.createElement('video'), + bool = false; + + try { + if ( bool = !!elem.canPlayType ) { + bool = new Boolean(bool); + bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,''); + + bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,''); + + bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,''); + } + + } catch(e) { } + + return bool; + }; + + tests['audio'] = function() { + var elem = document.createElement('audio'), + bool = false; + + try { + if ( bool = !!elem.canPlayType ) { + bool = new Boolean(bool); + bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,''); + bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,''); + + bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,''); + bool.m4a = ( elem.canPlayType('audio/x-m4a;') || + elem.canPlayType('audio/aac;')) .replace(/^no$/,''); + } + } catch(e) { } + + return bool; + }; + + + tests['localstorage'] = function() { + try { + localStorage.setItem(mod, mod); + localStorage.removeItem(mod); + return true; + } catch(e) { + return false; + } + }; + + tests['sessionstorage'] = function() { + try { + sessionStorage.setItem(mod, mod); + sessionStorage.removeItem(mod); + return true; + } catch(e) { + return false; + } + }; + + + tests['webworkers'] = function() { + return !!window.Worker; + }; + + + tests['applicationcache'] = function() { + return !!window.applicationCache; + }; + + + tests['svg'] = function() { + return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect; + }; + + tests['inlinesvg'] = function() { + var div = document.createElement('div'); + div.innerHTML = ''; + return (div.firstChild && div.firstChild.namespaceURI) == ns.svg; + }; + + tests['smil'] = function() { + return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate'))); + }; + + + tests['svgclippaths'] = function() { + return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath'))); + }; + + function webforms() { + Modernizr['input'] = (function( props ) { + for ( var i = 0, len = props.length; i < len; i++ ) { + attrs[ props[i] ] = !!(props[i] in inputElem); + } + if (attrs.list){ + attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement); + } + return attrs; + })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' ')); + Modernizr['inputtypes'] = (function(props) { + + for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) { + + inputElem.setAttribute('type', inputElemType = props[i]); + bool = inputElem.type !== 'text'; + + if ( bool ) { + + inputElem.value = smile; + inputElem.style.cssText = 'position:absolute;visibility:hidden;'; + + if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) { + + docElement.appendChild(inputElem); + defaultView = document.defaultView; + + bool = defaultView.getComputedStyle && + defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' && + (inputElem.offsetHeight !== 0); + + docElement.removeChild(inputElem); + + } else if ( /^(search|tel)$/.test(inputElemType) ){ + } else if ( /^(url|email)$/.test(inputElemType) ) { + bool = inputElem.checkValidity && inputElem.checkValidity() === false; + + } else if ( /^color$/.test(inputElemType) ) { + docElement.appendChild(inputElem); + docElement.offsetWidth; + bool = inputElem.value != smile; + docElement.removeChild(inputElem); + + } else { + bool = inputElem.value != smile; + } + } + + inputs[ props[i] ] = !!bool; + } + return inputs; + })('search tel url email datetime date month week time datetime-local number range color'.split(' ')); + } + for ( var feature in tests ) { + if ( hasOwnProperty(tests, feature) ) { + featureName = feature.toLowerCase(); + Modernizr[featureName] = tests[feature](); + + classes.push((Modernizr[featureName] ? '' : 'no-') + featureName); + } + } + + Modernizr.input || webforms(); setCss(''); + modElem = inputElem = null; + + + Modernizr._version = version; + + Modernizr._prefixes = prefixes; + Modernizr._domPrefixes = domPrefixes; + Modernizr._cssomPrefixes = cssomPrefixes; + + Modernizr.mq = testMediaQuery; + + Modernizr.hasEvent = isEventSupported; + + Modernizr.testProp = function(prop){ + return testProps([prop]); + }; + + Modernizr.testAllProps = testPropsAll; + + + Modernizr.testStyles = injectElementWithStyles; + return Modernizr; + +})(this, this.document); +/*! HTML5 Shiv v3.4 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed */ +;(function(window, document) { + + /** Preset options */ + var options = window.html5 || {}; + + /** Used to skip problem elements */ + var reSkip = /^<|^(?:button|form|map|select|textarea)$/i; + + /** Detect whether the browser supports default html5 styles */ + var supportsHtml5Styles; + + /** Detect whether the browser supports unknown elements */ + var supportsUnknownElements; + + (function() { + var a = document.createElement('a'); + + a.innerHTML = ''; + + //if the hidden property is implemented we can assume, that the browser supports HTML5 Styles + supportsHtml5Styles = ('hidden' in a); + supportsUnknownElements = a.childNodes.length == 1 || (function() { + // assign a false positive if unable to shiv + try { + (document.createElement)('a'); + } catch(e) { + return true; + } + var frag = document.createDocumentFragment(); + return ( + typeof frag.cloneNode == 'undefined' || + typeof frag.createDocumentFragment == 'undefined' || + typeof frag.createElement == 'undefined' + ); + }()); + + }()); + + /*--------------------------------------------------------------------------*/ + + /** + * Creates a style sheet with the given CSS text and adds it to the document. + * @private + * @param {Document} ownerDocument The document. + * @param {String} cssText The CSS text. + * @returns {StyleSheet} The style element. + */ + function addStyleSheet(ownerDocument, cssText) { + var p = ownerDocument.createElement('p'), + parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; + + p.innerHTML = 'x'; + return parent.insertBefore(p.lastChild, parent.firstChild); + } + + /** + * Returns the value of `html5.elements` as an array. + * @private + * @returns {Array} An array of shived element node names. + */ + function getElements() { + var elements = html5.elements; + return typeof elements == 'string' ? elements.split(' ') : elements; + } + + /** + * Shivs the `createElement` and `createDocumentFragment` methods of the document. + * @private + * @param {Document|DocumentFragment} ownerDocument The document. + */ + function shivMethods(ownerDocument) { + var cache = {}, + docCreateElement = ownerDocument.createElement, + docCreateFragment = ownerDocument.createDocumentFragment, + frag = docCreateFragment(); + + ownerDocument.createElement = function(nodeName) { + // Avoid adding some elements to fragments in IE < 9 because + // * Attributes like `name` or `type` cannot be set/changed once an element + // is inserted into a document/fragment + // * Link elements with `src` attributes that are inaccessible, as with + // a 403 response, will cause the tab/window to crash + // * Script elements appended to fragments will execute when their `src` + // or `text` property is set + var node = (cache[nodeName] || (cache[nodeName] = docCreateElement(nodeName))).cloneNode(); + return html5.shivMethods && node.canHaveChildren && !reSkip.test(nodeName) ? frag.appendChild(node) : node; + }; + + ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' + + 'var n=f.cloneNode(),c=n.createElement;' + + 'h.shivMethods&&(' + + // unroll the `createElement` calls + getElements().join().replace(/\w+/g, function(nodeName) { + cache[nodeName] = docCreateElement(nodeName); + frag.createElement(nodeName); + return 'c("' + nodeName + '")'; + }) + + ');return n}' + )(html5, frag); + } + + /*--------------------------------------------------------------------------*/ + + /** + * Shivs the given document. + * @memberOf html5 + * @param {Document} ownerDocument The document to shiv. + * @returns {Document} The shived document. + */ + function shivDocument(ownerDocument) { + var shived; + if (ownerDocument.documentShived) { + return ownerDocument; + } + if (html5.shivCSS && !supportsHtml5Styles) { + shived = !!addStyleSheet(ownerDocument, + // corrects block display not defined in IE6/7/8/9 + 'article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}' + + // corrects audio display not defined in IE6/7/8/9 + 'audio{display:none}' + + // corrects canvas and video display not defined in IE6/7/8/9 + 'canvas,video{display:inline-block;*display:inline;*zoom:1}' + + // corrects 'hidden' attribute and audio[controls] display not present in IE7/8/9 + '[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}' + + // adds styling not present in IE6/7/8/9 + 'mark{background:#FF0;color:#000}' + ); + } + if (!supportsUnknownElements) { + shived = !shivMethods(ownerDocument); + } + if (shived) { + ownerDocument.documentShived = shived; + } + return ownerDocument; + } + + /*--------------------------------------------------------------------------*/ + + /** + * The `html5` object is exposed so that more elements can be shived and + * existing shiving can be detected on iframes. + * @type Object + * @example + * + * // options can be changed before the script is included + * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false }; + */ + var html5 = { + + /** + * An array or space separated string of node names of the elements to shiv. + * @memberOf html5 + * @type Array|String + */ + 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video', + + /** + * A flag to indicate that the HTML5 style sheet should be inserted. + * @memberOf html5 + * @type Boolean + */ + 'shivCSS': !(options.shivCSS === false), + + /** + * A flag to indicate that the document's `createElement` and `createDocumentFragment` + * methods should be overwritten. + * @memberOf html5 + * @type Boolean + */ + 'shivMethods': !(options.shivMethods === false), + + /** + * A string to describe the type of `html5` object ("default" or "default print"). + * @memberOf html5 + * @type String + */ + 'type': 'default', + + // shivs the document according to the specified `html5` object options + 'shivDocument': shivDocument + }; + + /*--------------------------------------------------------------------------*/ + + // expose html5 + window.html5 = html5; + + // shiv the document + shivDocument(document); + + /*------------------------------- Print Shiv -------------------------------*/ + + /** Used to filter media types */ + var reMedia = /^$|\b(?:all|print)\b/; + + /** Used to namespace printable elements */ + var shivNamespace = 'html5shiv'; + + /** Detect whether the browser supports shivable style sheets */ + var supportsShivableSheets = !supportsUnknownElements && (function() { + // assign a false negative if unable to shiv + var docEl = document.documentElement; + return !( + typeof document.namespaces == 'undefined' || + typeof document.parentWindow == 'undefined' || + typeof docEl.applyElement == 'undefined' || + typeof docEl.removeNode == 'undefined' || + typeof window.attachEvent == 'undefined' + ); + }()); + + /*--------------------------------------------------------------------------*/ + + /** + * Wraps all HTML5 elements in the given document with printable elements. + * (eg. the "header" element is wrapped with the "html5shiv:header" element) + * @private + * @param {Document} ownerDocument The document. + * @returns {Array} An array wrappers added. + */ + function addWrappers(ownerDocument) { + var node, + nodes = ownerDocument.getElementsByTagName('*'), + index = nodes.length, + reElements = RegExp('^(?:' + getElements().join('|') + ')$', 'i'), + result = []; + + while (index--) { + node = nodes[index]; + if (reElements.test(node.nodeName)) { + result.push(node.applyElement(createWrapper(node))); + } + } + return result; + } + + /** + * Creates a printable wrapper for the given element. + * @private + * @param {Element} element The element. + * @returns {Element} The wrapper. + */ + function createWrapper(element) { + var node, + nodes = element.attributes, + index = nodes.length, + wrapper = element.ownerDocument.createElement(shivNamespace + ':' + element.nodeName); + + // copy element attributes to the wrapper + while (index--) { + node = nodes[index]; + node.specified && wrapper.setAttribute(node.nodeName, node.nodeValue); + } + // copy element styles to the wrapper + wrapper.style.cssText = element.style.cssText; + return wrapper; + } + + /** + * Shivs the given CSS text. + * (eg. header{} becomes html5shiv\:header{}) + * @private + * @param {String} cssText The CSS text to shiv. + * @returns {String} The shived CSS text. + */ + function shivCssText(cssText) { + var pair, + parts = cssText.split('{'), + index = parts.length, + reElements = RegExp('(^|[\\s,>+~])(' + getElements().join('|') + ')(?=[[\\s,>+~#.:]|$)', 'gi'), + replacement = '$1' + shivNamespace + '\\:$2'; + + while (index--) { + pair = parts[index] = parts[index].split('}'); + pair[pair.length - 1] = pair[pair.length - 1].replace(reElements, replacement); + parts[index] = pair.join('}'); + } + return parts.join('{'); + } + + /** + * Removes the given wrappers, leaving the original elements. + * @private + * @params {Array} wrappers An array of printable wrappers. + */ + function removeWrappers(wrappers) { + var index = wrappers.length; + while (index--) { + wrappers[index].removeNode(); + } + } + + /*--------------------------------------------------------------------------*/ + + /** + * Shivs the given document for print. + * @memberOf html5 + * @param {Document} ownerDocument The document to shiv. + * @returns {Document} The shived document. + */ + function shivPrint(ownerDocument) { + var shivedSheet, + wrappers, + namespaces = ownerDocument.namespaces, + ownerWindow = ownerDocument.parentWindow; + + if (!supportsShivableSheets || ownerDocument.printShived) { + return ownerDocument; + } + if (typeof namespaces[shivNamespace] == 'undefined') { + namespaces.add(shivNamespace); + } + + ownerWindow.attachEvent('onbeforeprint', function() { + var imports, + length, + sheet, + collection = ownerDocument.styleSheets, + cssText = [], + index = collection.length, + sheets = Array(index); + + // convert styleSheets collection to an array + while (index--) { + sheets[index] = collection[index]; + } + // concat all style sheet CSS text + while ((sheet = sheets.pop())) { + // IE does not enforce a same origin policy for external style sheets + if (!sheet.disabled && reMedia.test(sheet.media)) { + for (imports = sheet.imports, index = 0, length = imports.length; index < length; index++) { + sheets.push(imports[index]); + } + try { + cssText.push(sheet.cssText); + } catch(er){} + } + } + // wrap all HTML5 elements with printable elements and add the shived style sheet + cssText = shivCssText(cssText.reverse().join('')); + wrappers = addWrappers(ownerDocument); + shivedSheet = addStyleSheet(ownerDocument, cssText); + }); + + ownerWindow.attachEvent('onafterprint', function() { + // remove wrappers, leaving the original elements, and remove the shived style sheet + removeWrappers(wrappers); + shivedSheet.removeNode(true); + }); + + ownerDocument.printShived = true; + return ownerDocument; + } + + /*--------------------------------------------------------------------------*/ + + // expose API + html5.type += ' print'; + html5.shivPrint = shivPrint; + + // shiv for print + shivPrint(document); + +}(this, document));/*yepnope1.5.3|WTFPL*/ +(function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f",a,""].join(""),k.id=g,(l?k:m).innerHTML+=h,m.appendChild(k),l||(m.style.background="",f.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},y=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return x("@media "+b+" { #"+g+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},z=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=E(e[d],"function"),E(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),A={}.hasOwnProperty,B;!E(A,"undefined")&&!E(A.call,"undefined")?B=function(a,b){return A.call(a,b)}:B=function(a,b){return b in a&&E(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=v.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(v.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(v.call(arguments)))};return e});var J=function(c,d){var f=c.join(""),g=d.length;x(f,function(c,d){var f=b.styleSheets[b.styleSheets.length-1],h=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"",i=c.childNodes,j={};while(g--)j[i[g].id]=i[g];e.touch="ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch||(j.touch&&j.touch.offsetTop)===9,e.csstransforms3d=(j.csstransforms3d&&j.csstransforms3d.offsetLeft)===9&&j.csstransforms3d.offsetHeight===3,e.generatedcontent=(j.generatedcontent&&j.generatedcontent.offsetHeight)>=1,e.fontface=/src/i.test(h)&&h.indexOf(d.split(" ")[0])===0},g,d)}(['@font-face {font-family:"font";src:url("https://")}',["@media (",m.join("touch-enabled),("),g,")","{#touch{top:9px;position:absolute}}"].join(""),["@media (",m.join("transform-3d),("),g,")","{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join(""),['#generatedcontent:after{content:"',k,'";visibility:hidden}'].join("")],["fontface","touch","csstransforms3d","generatedcontent"]);r.flexbox=function(){return I("flexOrder")},r["flexbox-legacy"]=function(){return I("boxDirection")},r.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},r.canvastext=function(){return!!e.canvas&&!!E(b.createElement("canvas").getContext("2d").fillText,"function")},r.touch=function(){return e.touch},r.geolocation=function(){return!!navigator.geolocation},r.postmessage=function(){return!!a.postMessage},r.websqldatabase=function(){return!!a.openDatabase},r.indexedDB=function(){return!!I("indexedDB",a)},r.hashchange=function(){return z("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},r.history=function(){return!!a.history&&!!history.pushState},r.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},r.websockets=function(){for(var b=-1,c=o.length;++b",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}function o(a){var b,c=a.getElementsByTagName("*"),d=c.length,e=RegExp("^(?:"+h().join("|")+")$","i"),f=[];while(d--)b=c[d],e.test(b.nodeName)&&f.push(b.applyElement(p(b)));return f}function p(a){var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(m+":"+a.nodeName);while(d--)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function q(a){var b,c=a.split("{"),d=c.length,e=RegExp("(^|[\\s,>+~])("+h().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),f="$1"+m+"\\:$2";while(d--)b=c[d]=c[d].split("}"),b[b.length-1]=b[b.length-1].replace(e,f),c[d]=b.join("}");return c.join("{")}function r(a){var b=a.length;while(b--)a[b].removeNode()}function s(a){var b,c,d=a.namespaces,e=a.parentWindow;return!n||a.printShived?a:(typeof d[m]=="undefined"&&d.add(m),e.attachEvent("onbeforeprint",function(){var d,e,f,h=a.styleSheets,i=[],j=h.length,k=Array(j);while(j--)k[j]=h[j];while(f=k.pop())if(!f.disabled&&l.test(f.media)){for(d=f.imports,j=0,e=d.length;j",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b);var l=/^$|\b(?:all|print)\b/,m="html5shiv",n=!f&&function(){var c=b.documentElement;return typeof b.namespaces!="undefined"&&typeof b.parentWindow!="undefined"&&typeof c.applyElement!="undefined"&&typeof c.removeNode!="undefined"&&typeof a.attachEvent!="undefined"}();k.type+=" print",k.shivPrint=s,s(b)}(this,document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f Date: Fri, 14 Sep 2012 18:22:56 -0600 Subject: [PATCH 097/140] fix permissions for uploaded images with size specified --- mod/item.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mod/item.php b/mod/item.php index 52ea9d58c..8fe1c05c1 100644 --- a/mod/item.php +++ b/mod/item.php @@ -373,8 +373,8 @@ function item_post(&$a) { $match = null; - if((! $preview) && preg_match_all("/\[img\](.*?)\[\/img\]/",$body,$match)) { - $images = $match[1]; + if((! $preview) && preg_match_all("/\[img([\=0-9x]*)\](.*?)\[\/img\]/",$body,$match)) { + $images = $match[2]; if(count($images)) { foreach($images as $image) { if(! stristr($image,$a->get_baseurl() . '/photo/')) From 8a4dcc28c1e3a0bdb5b8b4fa971ff48cf3e0fb75 Mon Sep 17 00:00:00 2001 From: Zach Prezkuta Date: Fri, 14 Sep 2012 18:33:07 -0600 Subject: [PATCH 098/140] make size search less greedy --- mod/item.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/item.php b/mod/item.php index 8fe1c05c1..7d36d7f70 100644 --- a/mod/item.php +++ b/mod/item.php @@ -373,7 +373,7 @@ function item_post(&$a) { $match = null; - if((! $preview) && preg_match_all("/\[img([\=0-9x]*)\](.*?)\[\/img\]/",$body,$match)) { + if((! $preview) && preg_match_all("/\[img([\=0-9x]*?)\](.*?)\[\/img\]/",$body,$match)) { $images = $match[2]; if(count($images)) { foreach($images as $image) { From 21d685b21cccb5055b867271fdc9faaedf9e6685 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sat, 15 Sep 2012 10:38:08 +0200 Subject: [PATCH 099/140] DE: update to the strings --- view/de/messages.po | 15 ++++++++------- view/de/strings.php | 12 ++++++------ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/view/de/messages.po b/view/de/messages.po index a01bf6a83..5e3963cff 100644 --- a/view/de/messages.po +++ b/view/de/messages.po @@ -13,6 +13,7 @@ # , 2012. # , 2012. # Martin Schmitt , 2012. +# , 2012. # Oliver , 2012. # , 2011-2012. # , 2011-2012. @@ -22,7 +23,7 @@ msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: http://bugs.friendica.com/\n" "POT-Creation-Date: 2012-09-13 10:00-0700\n" -"PO-Revision-Date: 2012-09-14 13:44+0000\n" +"PO-Revision-Date: 2012-09-15 08:34+0000\n" "Last-Translator: bavatar \n" "Language-Team: German (http://www.transifex.com/projects/p/friendica/language/de/)\n" "MIME-Version: 1.0\n" @@ -5010,19 +5011,19 @@ msgstr "" #: ../../addon/fbpost/fbpost.php:199 msgid "Facebook Post" -msgstr "" +msgstr "Beitrag auf Facebook" #: ../../addon/fbpost/fbpost.php:205 msgid "Install Facebook Post connector for this account." -msgstr "" +msgstr "Facebook-Connector für dieses Konto installieren." #: ../../addon/fbpost/fbpost.php:212 msgid "Remove Facebook Post connector" -msgstr "" +msgstr "Facebook-Connector entfernen" #: ../../addon/fbpost/fbpost.php:240 msgid "Facebook Post Settings" -msgstr "" +msgstr "Facebook-Beitragseinstellungen" #: ../../addon/widgets/widget_like.php:58 #, php-format @@ -5084,11 +5085,11 @@ msgstr "machte etwas obszönes Körperliches mit" #: ../../addon/morepokes/morepokes.php:22 msgid "point out the poke feature to" -msgstr "" +msgstr "zeigte die neue Anstups-Funktion" #: ../../addon/morepokes/morepokes.php:22 msgid "pointed out the poke feature to" -msgstr "" +msgstr "zeigte die neue Anstups-Funktion" #: ../../addon/morepokes/morepokes.php:23 msgid "declare undying love for" diff --git a/view/de/strings.php b/view/de/strings.php index f59f898c9..38e25f565 100644 --- a/view/de/strings.php +++ b/view/de/strings.php @@ -1117,10 +1117,10 @@ $a->strings["Number of items"] = "Anzahl der Einträge"; $a->strings["Size of the cache"] = "Größe des Caches"; $a->strings["Delete the whole cache"] = "Cache leeren"; $a->strings["Facebook Post disabled"] = ""; -$a->strings["Facebook Post"] = ""; -$a->strings["Install Facebook Post connector for this account."] = ""; -$a->strings["Remove Facebook Post connector"] = ""; -$a->strings["Facebook Post Settings"] = ""; +$a->strings["Facebook Post"] = "Beitrag auf Facebook"; +$a->strings["Install Facebook Post connector for this account."] = "Facebook-Connector für dieses Konto installieren."; +$a->strings["Remove Facebook Post connector"] = "Facebook-Connector entfernen"; +$a->strings["Facebook Post Settings"] = "Facebook-Beitragseinstellungen"; $a->strings["%d person likes this"] = array( 0 => "%d Person mag das", 1 => "%d Leute mögen das", @@ -1140,8 +1140,8 @@ $a->strings["shag"] = "poppen"; $a->strings["shagged"] = "poppte"; $a->strings["do something obscenely biological to"] = "mit ihm/ihr etwas obszönes Körperliches machen"; $a->strings["did something obscenely biological to"] = "machte etwas obszönes Körperliches mit"; -$a->strings["point out the poke feature to"] = ""; -$a->strings["pointed out the poke feature to"] = ""; +$a->strings["point out the poke feature to"] = "zeigte die neue Anstups-Funktion"; +$a->strings["pointed out the poke feature to"] = "zeigte die neue Anstups-Funktion"; $a->strings["declare undying love for"] = "unterbliche Liebe verkünden"; $a->strings["declared undying love for"] = "verkündete unsterbliche Liebe für"; $a->strings["patent"] = "patentieren"; From 669d2b890ead6d5bc268c038a469e8ce65dee715 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 15 Sep 2012 15:23:15 -0700 Subject: [PATCH 100/140] rev update - add cancel markup to editor --- boot.php | 2 +- include/conversation.php | 1 + mod/editpost.php | 1 + util/messages.po | 204 +++++++++++++++++++-------------------- 4 files changed, 105 insertions(+), 103 deletions(-) diff --git a/boot.php b/boot.php index 66aeb28ec..713e8e2aa 100644 --- a/boot.php +++ b/boot.php @@ -11,7 +11,7 @@ require_once('include/cache.php'); require_once('library/Mobile_Detect/Mobile_Detect.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1465' ); +define ( 'FRIENDICA_VERSION', '3.0.1467' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1155 ); diff --git a/include/conversation.php b/include/conversation.php index 91310277f..cb225127d 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -1280,6 +1280,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) { '$profile_uid' => $x['profile_uid'], '$preview' => t('Preview'), '$sourceapp' => t($a->sourcename), + '$cancel' => t('Cancel') )); diff --git a/mod/editpost.php b/mod/editpost.php index b44afe245..03d5263a1 100644 --- a/mod/editpost.php +++ b/mod/editpost.php @@ -133,6 +133,7 @@ function editpost_content(&$a) { '$preview' => t('Preview'), '$jotplugins' => $jotplugins, '$sourceapp' => t($a->sourcename), + '$cancel' => t('Cancel') )); return $o; diff --git a/util/messages.po b/util/messages.po index e88044c5b..23f3c724d 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1465\n" +"Project-Id-Version: 3.0.1467\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-09-13 10:00-0700\n" +"POT-Creation-Date: 2012-09-15 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -176,7 +176,7 @@ msgstr "" #: ../../view/theme/diabook/theme.php:757 #: ../../view/theme/diabook/config.php:190 #: ../../view/theme/quattro/config.php:52 ../../view/theme/dispy/config.php:70 -#: ../../include/conversation.php:591 ../../object/Item.php:532 +#: ../../include/conversation.php:601 ../../object/Item.php:532 msgid "Submit" msgstr "" @@ -236,7 +236,7 @@ msgid "link to source" msgstr "" #: ../../mod/events.php:331 ../../view/theme/diabook/theme.php:131 -#: ../../include/nav.php:52 ../../boot.php:1683 +#: ../../include/nav.php:52 ../../boot.php:1689 msgid "Events" msgstr "" @@ -374,7 +374,7 @@ msgstr "" msgid "No" msgstr "" -#: ../../mod/photos.php:46 ../../boot.php:1676 +#: ../../mod/photos.php:46 ../../boot.php:1682 msgid "Photo Albums" msgstr "" @@ -404,8 +404,8 @@ msgstr "" #: ../../mod/profile_photo.php:204 ../../mod/profile_photo.php:296 #: ../../mod/profile_photo.php:305 #: ../../addon/communityhome/communityhome.php:111 -#: ../../view/theme/diabook/theme.php:599 ../../include/user.php:318 -#: ../../include/user.php:325 ../../include/user.php:332 +#: ../../view/theme/diabook/theme.php:599 ../../include/user.php:324 +#: ../../include/user.php:331 ../../include/user.php:338 msgid "Profile Photos" msgstr "" @@ -577,51 +577,51 @@ msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgstr "" #: ../../mod/photos.php:1356 ../../mod/content.php:665 -#: ../../include/conversation.php:565 ../../object/Item.php:185 +#: ../../include/conversation.php:575 ../../object/Item.php:185 msgid "I like this (toggle)" msgstr "" #: ../../mod/photos.php:1357 ../../mod/content.php:666 -#: ../../include/conversation.php:566 ../../object/Item.php:186 +#: ../../include/conversation.php:576 ../../object/Item.php:186 msgid "I don't like this (toggle)" msgstr "" -#: ../../mod/photos.php:1358 ../../include/conversation.php:1214 +#: ../../mod/photos.php:1358 ../../include/conversation.php:1244 msgid "Share" msgstr "" #: ../../mod/photos.php:1359 ../../mod/editpost.php:112 #: ../../mod/content.php:482 ../../mod/content.php:843 #: ../../mod/wallmessage.php:152 ../../mod/message.php:293 -#: ../../mod/message.php:481 ../../include/conversation.php:659 -#: ../../include/conversation.php:891 ../../include/conversation.php:1233 +#: ../../mod/message.php:481 ../../include/conversation.php:671 +#: ../../include/conversation.php:921 ../../include/conversation.php:1263 #: ../../object/Item.php:237 msgid "Please wait" msgstr "" #: ../../mod/photos.php:1375 ../../mod/photos.php:1416 #: ../../mod/photos.php:1448 ../../mod/content.php:688 -#: ../../include/conversation.php:588 ../../object/Item.php:529 +#: ../../include/conversation.php:598 ../../object/Item.php:529 msgid "This is you" msgstr "" #: ../../mod/photos.php:1377 ../../mod/photos.php:1418 #: ../../mod/photos.php:1450 ../../mod/content.php:690 -#: ../../include/conversation.php:590 ../../boot.php:574 +#: ../../include/conversation.php:600 ../../boot.php:574 #: ../../object/Item.php:531 msgid "Comment" msgstr "" #: ../../mod/photos.php:1379 ../../mod/editpost.php:133 -#: ../../mod/content.php:700 ../../include/conversation.php:600 -#: ../../include/conversation.php:1251 ../../object/Item.php:541 +#: ../../mod/content.php:700 ../../include/conversation.php:610 +#: ../../include/conversation.php:1281 ../../object/Item.php:541 msgid "Preview" msgstr "" #: ../../mod/photos.php:1479 ../../mod/content.php:439 #: ../../mod/content.php:721 ../../mod/settings.php:606 #: ../../mod/settings.php:695 ../../mod/group.php:168 ../../mod/admin.php:694 -#: ../../include/conversation.php:440 ../../include/conversation.php:847 +#: ../../include/conversation.php:440 ../../include/conversation.php:874 #: ../../object/Item.php:116 msgid "Delete" msgstr "" @@ -688,7 +688,7 @@ msgstr "" msgid "Edit post" msgstr "" -#: ../../mod/editpost.php:88 ../../include/conversation.php:1200 +#: ../../mod/editpost.php:88 ../../include/conversation.php:1230 msgid "Post to Email" msgstr "" @@ -700,17 +700,17 @@ msgstr "" #: ../../mod/editpost.php:104 ../../mod/wallmessage.php:150 #: ../../mod/message.php:291 ../../mod/message.php:478 -#: ../../include/conversation.php:1215 +#: ../../include/conversation.php:1245 msgid "Upload photo" msgstr "" -#: ../../mod/editpost.php:105 ../../include/conversation.php:1217 +#: ../../mod/editpost.php:105 ../../include/conversation.php:1247 msgid "Attach file" msgstr "" #: ../../mod/editpost.php:106 ../../mod/wallmessage.php:151 #: ../../mod/message.php:292 ../../mod/message.php:479 -#: ../../include/conversation.php:1219 +#: ../../include/conversation.php:1249 msgid "Insert web link" msgstr "" @@ -726,35 +726,35 @@ msgstr "" msgid "Insert Vorbis [.ogg] audio" msgstr "" -#: ../../mod/editpost.php:110 ../../include/conversation.php:1225 +#: ../../mod/editpost.php:110 ../../include/conversation.php:1255 msgid "Set your location" msgstr "" -#: ../../mod/editpost.php:111 ../../include/conversation.php:1227 +#: ../../mod/editpost.php:111 ../../include/conversation.php:1257 msgid "Clear browser location" msgstr "" -#: ../../mod/editpost.php:113 ../../include/conversation.php:1234 +#: ../../mod/editpost.php:113 ../../include/conversation.php:1264 msgid "Permission settings" msgstr "" -#: ../../mod/editpost.php:121 ../../include/conversation.php:1243 +#: ../../mod/editpost.php:121 ../../include/conversation.php:1273 msgid "CC: email addresses" msgstr "" -#: ../../mod/editpost.php:122 ../../include/conversation.php:1244 +#: ../../mod/editpost.php:122 ../../include/conversation.php:1274 msgid "Public post" msgstr "" -#: ../../mod/editpost.php:125 ../../include/conversation.php:1230 +#: ../../mod/editpost.php:125 ../../include/conversation.php:1260 msgid "Set title" msgstr "" -#: ../../mod/editpost.php:127 ../../include/conversation.php:1232 +#: ../../mod/editpost.php:127 ../../include/conversation.php:1262 msgid "Categories (comma-separated list)" msgstr "" -#: ../../mod/editpost.php:128 ../../include/conversation.php:1246 +#: ../../mod/editpost.php:128 ../../include/conversation.php:1276 msgid "Example: bob@example.com, mary@example.com" msgstr "" @@ -1296,31 +1296,31 @@ msgid "Group: " msgstr "" #: ../../mod/content.php:438 ../../mod/content.php:720 -#: ../../include/conversation.php:439 ../../include/conversation.php:846 +#: ../../include/conversation.php:439 ../../include/conversation.php:873 #: ../../object/Item.php:115 msgid "Select" msgstr "" #: ../../mod/content.php:455 ../../mod/content.php:813 -#: ../../mod/content.php:814 ../../include/conversation.php:627 -#: ../../include/conversation.php:628 ../../include/conversation.php:863 +#: ../../mod/content.php:814 ../../include/conversation.php:639 +#: ../../include/conversation.php:640 ../../include/conversation.php:890 #: ../../object/Item.php:206 ../../object/Item.php:207 #, php-format msgid "View %s's profile @ %s" msgstr "" #: ../../mod/content.php:465 ../../mod/content.php:825 -#: ../../include/conversation.php:641 ../../include/conversation.php:874 +#: ../../include/conversation.php:653 ../../include/conversation.php:904 #: ../../object/Item.php:219 #, php-format msgid "%s from %s" msgstr "" -#: ../../mod/content.php:480 ../../include/conversation.php:889 +#: ../../mod/content.php:480 ../../include/conversation.php:919 msgid "View in context" msgstr "" -#: ../../mod/content.php:586 ../../include/conversation.php:668 +#: ../../mod/content.php:586 ../../include/conversation.php:680 #: ../../object/Item.php:256 #, php-format msgid "%d comment" @@ -1330,92 +1330,92 @@ msgstr[1] "" #: ../../mod/content.php:587 ../../addon/page/page.php:76 #: ../../addon/page/page.php:110 ../../addon/showmore/showmore.php:119 -#: ../../include/contact_widgets.php:195 ../../include/conversation.php:669 +#: ../../include/contact_widgets.php:195 ../../include/conversation.php:681 #: ../../boot.php:575 ../../object/Item.php:257 msgid "show more" msgstr "" -#: ../../mod/content.php:665 ../../include/conversation.php:565 +#: ../../mod/content.php:665 ../../include/conversation.php:575 #: ../../object/Item.php:185 msgid "like" msgstr "" -#: ../../mod/content.php:666 ../../include/conversation.php:566 +#: ../../mod/content.php:666 ../../include/conversation.php:576 #: ../../object/Item.php:186 msgid "dislike" msgstr "" -#: ../../mod/content.php:668 ../../include/conversation.php:568 +#: ../../mod/content.php:668 ../../include/conversation.php:578 #: ../../object/Item.php:188 msgid "Share this" msgstr "" -#: ../../mod/content.php:668 ../../include/conversation.php:568 +#: ../../mod/content.php:668 ../../include/conversation.php:578 #: ../../object/Item.php:188 msgid "share" msgstr "" -#: ../../mod/content.php:692 ../../include/conversation.php:592 +#: ../../mod/content.php:692 ../../include/conversation.php:602 #: ../../object/Item.php:533 msgid "Bold" msgstr "" -#: ../../mod/content.php:693 ../../include/conversation.php:593 +#: ../../mod/content.php:693 ../../include/conversation.php:603 #: ../../object/Item.php:534 msgid "Italic" msgstr "" -#: ../../mod/content.php:694 ../../include/conversation.php:594 +#: ../../mod/content.php:694 ../../include/conversation.php:604 #: ../../object/Item.php:535 msgid "Underline" msgstr "" -#: ../../mod/content.php:695 ../../include/conversation.php:595 +#: ../../mod/content.php:695 ../../include/conversation.php:605 #: ../../object/Item.php:536 msgid "Quote" msgstr "" -#: ../../mod/content.php:696 ../../include/conversation.php:596 +#: ../../mod/content.php:696 ../../include/conversation.php:606 #: ../../object/Item.php:537 msgid "Code" msgstr "" -#: ../../mod/content.php:697 ../../include/conversation.php:597 +#: ../../mod/content.php:697 ../../include/conversation.php:607 #: ../../object/Item.php:538 msgid "Image" msgstr "" -#: ../../mod/content.php:698 ../../include/conversation.php:598 +#: ../../mod/content.php:698 ../../include/conversation.php:608 #: ../../object/Item.php:539 msgid "Link" msgstr "" -#: ../../mod/content.php:699 ../../include/conversation.php:599 +#: ../../mod/content.php:699 ../../include/conversation.php:609 #: ../../object/Item.php:540 msgid "Video" msgstr "" -#: ../../mod/content.php:733 ../../include/conversation.php:529 +#: ../../mod/content.php:733 ../../include/conversation.php:539 #: ../../object/Item.php:169 msgid "add star" msgstr "" -#: ../../mod/content.php:734 ../../include/conversation.php:530 +#: ../../mod/content.php:734 ../../include/conversation.php:540 #: ../../object/Item.php:170 msgid "remove star" msgstr "" -#: ../../mod/content.php:735 ../../include/conversation.php:531 +#: ../../mod/content.php:735 ../../include/conversation.php:541 #: ../../object/Item.php:171 msgid "toggle star status" msgstr "" -#: ../../mod/content.php:738 ../../include/conversation.php:534 +#: ../../mod/content.php:738 ../../include/conversation.php:544 #: ../../object/Item.php:174 msgid "starred" msgstr "" -#: ../../mod/content.php:739 ../../include/conversation.php:535 +#: ../../mod/content.php:739 ../../include/conversation.php:545 #: ../../object/Item.php:175 msgid "add tag" msgstr "" @@ -1425,17 +1425,17 @@ msgstr "" msgid "save to folder" msgstr "" -#: ../../mod/content.php:815 ../../include/conversation.php:629 +#: ../../mod/content.php:815 ../../include/conversation.php:641 #: ../../object/Item.php:208 msgid "to" msgstr "" -#: ../../mod/content.php:816 ../../include/conversation.php:630 +#: ../../mod/content.php:816 ../../include/conversation.php:642 #: ../../object/Item.php:209 msgid "Wall-to-Wall" msgstr "" -#: ../../mod/content.php:817 ../../include/conversation.php:631 +#: ../../mod/content.php:817 ../../include/conversation.php:643 #: ../../object/Item.php:210 msgid "via Wall-To-Wall:" msgstr "" @@ -2642,7 +2642,7 @@ msgstr "" msgid "Invalid contact." msgstr "" -#: ../../mod/notes.php:44 ../../boot.php:1690 +#: ../../mod/notes.php:44 ../../boot.php:1696 msgid "Personal Notes" msgstr "" @@ -2686,7 +2686,7 @@ msgstr "" #: ../../mod/wallmessage.php:123 ../../mod/wallmessage.php:131 #: ../../mod/message.php:242 ../../mod/message.php:250 -#: ../../include/conversation.php:1151 ../../include/conversation.php:1168 +#: ../../include/conversation.php:1181 ../../include/conversation.php:1198 msgid "Please enter a link URL:" msgstr "" @@ -2769,7 +2769,7 @@ msgstr "" #: ../../mod/newmember.php:32 ../../mod/profperm.php:103 #: ../../view/theme/diabook/theme.php:128 ../../include/profile_advanced.php:7 #: ../../include/profile_advanced.php:84 ../../include/nav.php:50 -#: ../../boot.php:1666 +#: ../../boot.php:1672 msgid "Profile" msgstr "" @@ -3121,7 +3121,7 @@ msgid "Access denied." msgstr "" #: ../../mod/fbrowser.php:25 ../../view/theme/diabook/theme.php:130 -#: ../../include/nav.php:51 ../../boot.php:1673 +#: ../../include/nav.php:51 ../../boot.php:1679 msgid "Photos" msgstr "" @@ -3635,13 +3635,13 @@ msgid "Allow infinite level threading for items on this site." msgstr "" #: ../../mod/admin.php:470 -msgid "No default permissions for new users" +msgid "Private posts by default for new users" msgstr "" #: ../../mod/admin.php:470 msgid "" -"New users will have no private permissions set for their posts by default, " -"making their posts public until they change it." +"Set default post permissions for all new members to the default privacy " +"group rather than public." msgstr "" #: ../../mod/admin.php:472 @@ -4407,8 +4407,8 @@ msgstr "" msgid "Edit visibility" msgstr "" -#: ../../mod/filer.php:29 ../../include/conversation.php:1155 -#: ../../include/conversation.php:1172 +#: ../../mod/filer.php:29 ../../include/conversation.php:1185 +#: ../../include/conversation.php:1202 msgid "Save to Folder:" msgstr "" @@ -7480,7 +7480,7 @@ msgid "Sex Addict" msgstr "" #: ../../include/profile_selectors.php:42 ../../include/user.php:278 -#: ../../include/user.php:283 +#: ../../include/user.php:282 msgid "Friends" msgstr "" @@ -7902,7 +7902,7 @@ msgstr "" msgid "End this session" msgstr "" -#: ../../include/nav.php:49 ../../boot.php:1659 +#: ../../include/nav.php:49 ../../boot.php:1665 msgid "Status" msgstr "" @@ -8513,34 +8513,34 @@ msgstr "" msgid "stopped following" msgstr "" -#: ../../include/Contact.php:220 ../../include/conversation.php:1052 +#: ../../include/Contact.php:220 ../../include/conversation.php:1082 msgid "Poke" msgstr "" -#: ../../include/Contact.php:221 ../../include/conversation.php:1046 +#: ../../include/Contact.php:221 ../../include/conversation.php:1076 msgid "View Status" msgstr "" -#: ../../include/Contact.php:222 ../../include/conversation.php:1047 +#: ../../include/Contact.php:222 ../../include/conversation.php:1077 msgid "View Profile" msgstr "" -#: ../../include/Contact.php:223 ../../include/conversation.php:1048 +#: ../../include/Contact.php:223 ../../include/conversation.php:1078 msgid "View Photos" msgstr "" #: ../../include/Contact.php:224 ../../include/Contact.php:237 -#: ../../include/conversation.php:1049 +#: ../../include/conversation.php:1079 msgid "Network Posts" msgstr "" #: ../../include/Contact.php:225 ../../include/Contact.php:237 -#: ../../include/conversation.php:1050 +#: ../../include/conversation.php:1080 msgid "Edit Contact" msgstr "" #: ../../include/Contact.php:226 ../../include/Contact.php:237 -#: ../../include/conversation.php:1051 +#: ../../include/conversation.php:1081 msgid "Send PM" msgstr "" @@ -8558,106 +8558,106 @@ msgstr "" msgid "%1$s marked %2$s's %3$s as favorite" msgstr "" -#: ../../include/conversation.php:952 +#: ../../include/conversation.php:982 msgid "Delete Selected Items" msgstr "" -#: ../../include/conversation.php:1110 +#: ../../include/conversation.php:1140 #, php-format msgid "%s likes this." msgstr "" -#: ../../include/conversation.php:1110 +#: ../../include/conversation.php:1140 #, php-format msgid "%s doesn't like this." msgstr "" -#: ../../include/conversation.php:1114 +#: ../../include/conversation.php:1144 #, php-format msgid "%2$d people like this." msgstr "" -#: ../../include/conversation.php:1116 +#: ../../include/conversation.php:1146 #, php-format msgid "%2$d people don't like this." msgstr "" -#: ../../include/conversation.php:1122 +#: ../../include/conversation.php:1152 msgid "and" msgstr "" -#: ../../include/conversation.php:1125 +#: ../../include/conversation.php:1155 #, php-format msgid ", and %d other people" msgstr "" -#: ../../include/conversation.php:1126 +#: ../../include/conversation.php:1156 #, php-format msgid "%s like this." msgstr "" -#: ../../include/conversation.php:1126 +#: ../../include/conversation.php:1156 #, php-format msgid "%s don't like this." msgstr "" -#: ../../include/conversation.php:1150 ../../include/conversation.php:1167 +#: ../../include/conversation.php:1180 ../../include/conversation.php:1197 msgid "Visible to everybody" msgstr "" -#: ../../include/conversation.php:1152 ../../include/conversation.php:1169 +#: ../../include/conversation.php:1182 ../../include/conversation.php:1199 msgid "Please enter a video link/URL:" msgstr "" -#: ../../include/conversation.php:1153 ../../include/conversation.php:1170 +#: ../../include/conversation.php:1183 ../../include/conversation.php:1200 msgid "Please enter an audio link/URL:" msgstr "" -#: ../../include/conversation.php:1154 ../../include/conversation.php:1171 +#: ../../include/conversation.php:1184 ../../include/conversation.php:1201 msgid "Tag term:" msgstr "" -#: ../../include/conversation.php:1156 ../../include/conversation.php:1173 +#: ../../include/conversation.php:1186 ../../include/conversation.php:1203 msgid "Where are you right now?" msgstr "" -#: ../../include/conversation.php:1216 +#: ../../include/conversation.php:1246 msgid "upload photo" msgstr "" -#: ../../include/conversation.php:1218 +#: ../../include/conversation.php:1248 msgid "attach file" msgstr "" -#: ../../include/conversation.php:1220 +#: ../../include/conversation.php:1250 msgid "web link" msgstr "" -#: ../../include/conversation.php:1221 +#: ../../include/conversation.php:1251 msgid "Insert video link" msgstr "" -#: ../../include/conversation.php:1222 +#: ../../include/conversation.php:1252 msgid "video link" msgstr "" -#: ../../include/conversation.php:1223 +#: ../../include/conversation.php:1253 msgid "Insert audio link" msgstr "" -#: ../../include/conversation.php:1224 +#: ../../include/conversation.php:1254 msgid "audio link" msgstr "" -#: ../../include/conversation.php:1226 +#: ../../include/conversation.php:1256 msgid "set location" msgstr "" -#: ../../include/conversation.php:1228 +#: ../../include/conversation.php:1258 msgid "clear location" msgstr "" -#: ../../include/conversation.php:1235 +#: ../../include/conversation.php:1265 msgid "permissions" msgstr "" @@ -8755,18 +8755,18 @@ msgstr "" msgid "Events this week:" msgstr "" -#: ../../boot.php:1662 +#: ../../boot.php:1668 msgid "Status Messages and Posts" msgstr "" -#: ../../boot.php:1669 +#: ../../boot.php:1675 msgid "Profile Details" msgstr "" -#: ../../boot.php:1686 +#: ../../boot.php:1692 msgid "Events and Calendar" msgstr "" -#: ../../boot.php:1693 +#: ../../boot.php:1699 msgid "Only You Can See This" msgstr "" From 2abbd1dc19680fcfc00c841b6a73a97a297055b9 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 15 Sep 2012 20:21:17 -0700 Subject: [PATCH 101/140] permissions selector showing up for guests, testbubble and smoothly --- include/Photo.php | 2 +- view/theme/smoothly/jot.tpl | 2 +- view/theme/testbubble/jot.tpl | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/Photo.php b/include/Photo.php index 8e4eb84bd..00c424c64 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -663,7 +663,7 @@ function import_profile_photo($photo,$uid,$cid) { intval($uid), intval($cid) ); - if(count($r)) { + if(count($r) && strlen($r[0]['resource-id'])) { $hash = $r[0]['resource-id']; } else { diff --git a/view/theme/smoothly/jot.tpl b/view/theme/smoothly/jot.tpl index 5f711cf24..2f52643f0 100644 --- a/view/theme/smoothly/jot.tpl +++ b/view/theme/smoothly/jot.tpl @@ -47,7 +47,7 @@ +
    - {{ if $item.lock }}
    $item.lock
    - {{ else }}
    {{ endif }} + {{ if $item.lock }} +
    + $item.lock +
    + {{ else }} +
    + {{ endif }}
    +
    $item.title
    $item.body -
    - {{ for $item.tags as $tag }} - $tag - {{ endfor }} -
    +
    + {{ for $item.tags as $tag }} + $tag + {{ endfor }} +
    -
    + + + +
    + {{ if $item.edpost }} + + {{ endif }} +
    - {{ if $item.drop.dropping }}{{ endif }} + {{ if $item.drop.dropping }} + + {{ endif }}
    - {{ if $item.drop.dropping }}{{ endif }} + + {{ if $item.drop.dropping }} + {{ endif }} +
    +
    $item.dislike
    -
    - $item.comment -
    +
    $item.comment
    - diff --git a/view/theme/smoothly/wallwall_thread.tpl b/view/theme/smoothly/wallwall_thread.tpl index a660aacfd..06822d013 100644 --- a/view/theme/smoothly/wallwall_thread.tpl +++ b/view/theme/smoothly/wallwall_thread.tpl @@ -1,9 +1,11 @@ {{if $item.comment_firstcollapsed}}
    - $item.num_comments $item.hide_text + $item.num_comments + $item.hide_text