Browse Source

Merge branch 'master' of https://github.com/friendica/friendica into threaded_items

Conflicts:
	include/conversation.php
pull/435/head
Domovoy 9 years ago
parent
commit
d817117f6e
30 changed files with 773 additions and 428 deletions
  1. +2
    -1
      boot.php
  2. +8
    -0
      include/bb2diaspora.php
  3. +28
    -11
      include/conversation.php
  4. +56
    -14
      include/diaspora.php
  5. +3
    -2
      include/items.php
  6. +25
    -0
      include/notifier.php
  7. +21
    -1
      include/template_processor.php
  8. +10
    -5
      mod/network.php
  9. +244
    -236
      util/messages.po
  10. +4
    -0
      view/head.tpl
  11. +9
    -2
      view/theme/frost-mobile/TODO
  12. +5
    -2
      view/theme/frost-mobile/head.tpl
  13. +9
    -9
      view/theme/frost-mobile/js/main.js
  14. +1
    -1
      view/theme/frost-mobile/js/main.min.js
  15. +3
    -3
      view/theme/frost-mobile/js/theme.js
  16. +18
    -0
      view/theme/frost-mobile/mail_conv.tpl
  17. +83
    -38
      view/theme/frost-mobile/style.css
  18. +1
    -1
      view/theme/frost-mobile/theme.php
  19. +7
    -6
      view/theme/quattro/comment_item.tpl
  20. +49
    -17
      view/theme/quattro/dark/style.css
  21. +49
    -17
      view/theme/quattro/green/style.css
  22. BIN
      view/theme/quattro/icons/bbedit.png
  23. +38
    -15
      view/theme/quattro/quattro.less
  24. +13
    -3
      view/theme/quattro/theme.php
  25. +2
    -0
      view/theme/quattro/threaded_conversation.tpl
  26. +5
    -3
      view/theme/quattro/wall_item_tag.tpl
  27. +32
    -15
      view/theme/quattro/wall_thread.tpl
  28. +31
    -14
      view/theme/quattro/wallwall_thread.tpl
  29. +9
    -6
      view/wall_thread.tpl
  30. +8
    -6
      view/wallwall_thread.tpl

+ 2
- 1
boot.php View File

@ -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.1430' );
define ( 'FRIENDICA_VERSION', '3.0.1431' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
define ( 'DB_UPDATE_VERSION', 1154 );
@ -364,6 +364,7 @@ if(! class_exists('App')) {
public $sourcename = '';
public $videowidth = 425;
public $videoheight = 350;
public $force_max_items = 0;
private $scheme;
private $hostname;


+ 8
- 0
include/bb2diaspora.php View File

@ -196,6 +196,14 @@ function bb2diaspora($Text,$preserve_nl = false, $fordiaspora = true) {
// The bbcode parser now handles youtube-links (and the other stuff) correctly.
// Additionally the html code is now fixed so that lists are now working.
/**
* Transform #tags, strip off the [url] and replace spaces with underscore
*/
$Text = preg_replace_callback('/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', create_function('$match',
'return \'#\'. str_replace(\' \', \'_\', $match[2]);'
), $Text);
// Converting images with size parameters to simple images. Markdown doesn't know it.
$Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $Text);


+ 28
- 11
include/conversation.php View File

@ -307,6 +307,9 @@ function count_descendants($item) {
if($total > 0) {
foreach($item['children'] as $child) {
if($child['verb'] === ACTIVITY_LIKE || $child['verb'] === ACTIVITY_DISLIKE) {
$total --;
}
$total += count_descendants($child);
}
}
@ -318,7 +321,7 @@ function count_descendants($item) {
* Recursively prepare a thread for HTML
*/
function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $profile_owner, $thread_level=1) {
function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $profile_owner, $alike, $dlike, $thread_level=1) {
$result = array();
$wall_template = 'wall_thread.tpl';
@ -329,17 +332,30 @@ function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $pr
$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--;
$total_children --;
}
if($item['verb'] === ACTIVITY_LIKE || $item['verb'] === ACTIVITY_DISLIKE) {
$nb_items --;
$total_children --;
}
}
foreach($items as $item) {
// prevent private email reply to public conversation from leaking.
if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) {
continue;
}
if($item['verb'] === ACTIVITY_LIKE || $item['verb'] === ACTIVITY_DISLIKE) {
continue;
}
$items_seen++;
$alike = array();
$dlike = array();
$comment = '';
$template = $wall_template;
$commentww = '';
@ -410,9 +426,6 @@ function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $pr
$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']) : '');
@ -588,6 +601,7 @@ function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $pr
'comment' => $comment,
'previewing' => $previewing,
'wait' => t('Please wait'),
'thread_level' => $thread_level,
);
$arr = array('item' => $item, 'output' => $tmp_item);
@ -601,7 +615,7 @@ function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $pr
$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, $page_writeable, $mode, $profile_owner, $alike, $dlike, ($thread_level + 1));
}
$item_result['private'] = $item['private'];
$item_result['toplevel'] = ($toplevelpost ? 'toplevel_item' : '');
@ -818,6 +832,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
'conv' => (($preview) ? '' : array('href'=> $a->get_baseurl($ssl_state) . '/display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))),
'previewing' => $previewing,
'wait' => t('Please wait'),
'thread_level' => 1,
);
$arr = array('item' => $item, 'output' => $tmp_item);
@ -845,15 +860,17 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
$threads = array();
foreach($items as $item) {
like_puller($a,$item,$alike,'like');
like_puller($a,$item,$dlike,'dislike');
if($item['id'] == $item['parent']) {
// $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 = $conv->get_template_data($cmnt_tpl);
$threads = $conv->get_template_data($cmnt_tpl, $alike, $dlike);
if(!$threads) {
logger('[ERROR] conversation : Failed to get template data.', LOGGER_DEBUG);
$threads = array();


+ 56
- 14
include/diaspora.php View File

@ -102,6 +102,37 @@ function diaspora_dispatch($importer,$msg) {
return $ret;
}
function diaspora_handle_from_contact($contact_id) {
$handle = False;
logger("diaspora_handle_from_contact: contact id is " . $contact_id, LOGGER_DEBUG);
$r = q("SELECT network, addr, self, url, nick FROM contact WHERE id = %d",
intval($contact_id)
);
if($r) {
$contact = $r[0];
logger("diaspora_handle_from_contact: contact 'self' = " . $contact['self'] . " 'url' = " . $contact['url'], LOGGER_DEBUG);
if($contact['network'] === NETWORK_DIASPORA) {
$handle = $contact['addr'];
// logger("diaspora_handle_from_contact: contact id is a Diaspora person, handle = " . $handle, LOGGER_DEBUG);
}
elseif(($contact['network'] === NETWORK_DFRN) || ($contact['self'] == 1)) {
$baseurl_start = strpos($contact['url'],'://') + 3;
$baseurl_length = strpos($contact['url'],'/profile') - $baseurl_start; // allows installations in a subdirectory--not sure how Diaspora will handle
$baseurl = substr($contact['url'], $baseurl_start, $baseurl_length);
$handle = $contact['nick'] . '@' . $baseurl;
// logger("diaspora_handle_from_contact: contact id is a DFRN person, handle = " . $handle, LOGGER_DEBUG);
}
}
return $handle;
}
function diaspora_get_contact_by_handle($uid,$handle) {
$r = q("SELECT * FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `addr` = '%s' LIMIT 1",
dbesc(NETWORK_DIASPORA),
@ -1282,7 +1313,7 @@ function diaspora_comment($importer,$xml,$msg) {
// the existence of parent_author_signature means the parent_author or owner
// is already relaying.
proc_run('php','include/notifier.php','comment',$message_id);
proc_run('php','include/notifier.php','comment-import',$message_id);
}
$myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 AND `deleted` = 0 ",
@ -1867,7 +1898,7 @@ EOT;
// is already relaying. The parent_item['origin'] indicates the message was created on our system
if(($parent_item['origin']) && (! $parent_author_signature))
proc_run('php','include/notifier.php','comment',$message_id);
proc_run('php','include/notifier.php','comment-import',$message_id);
return;
}
@ -1993,7 +2024,7 @@ function diaspora_signed_retraction($importer,$xml,$msg) {
// is already relaying.
logger('diaspora_signed_retraction: relaying relayable_retraction');
proc_run('php','include/notifier.php','relayable_retraction',$r[0]['id']);
proc_run('php','include/notifier.php','drop',$r[0]['id']);
}
}
}
@ -2153,12 +2184,6 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
}
}
*/
/**
* Transform #tags, strip off the [url] and replace spaces with underscore
*/
$body = preg_replace_callback('/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', create_function('$match',
'return \'#\'. str_replace(\' \', \'_\', $match[2]);'
), $body);
//if(strlen($title))
// $body = "[b]".html_entity_decode($title)."[/b]\n\n".$body;
@ -2344,8 +2369,8 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
// The only item with `parent` and `id` as the parent id is the parent item.
$p = q("select guid, type, uri, `parent-uri` from item where parent = %d and id = %d limit 1",
intval($item['parent']),
intval($item['parent'])
intval($item['parent']),
intval($item['parent'])
);
//}
if(count($p))
@ -2368,7 +2393,6 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
$like = true;
$target_type = ( $parent['uri'] === $parent['parent-uri'] ? 'Post' : 'Comment');
// $target_type = (strpos($parent['type'], 'comment') ? 'Comment' : 'Post');
// $positive = (($item['deleted']) ? 'false' : 'true');
$positive = 'true';
@ -2382,7 +2406,7 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
// fetch the original signature if the relayable was created by a Diaspora
// or DFRN user. Relayables for other networks are not supported.
$r = q("select * from sign where " . $sql_sign_id . " = %d limit 1",
/* $r = q("select * from sign where " . $sql_sign_id . " = %d limit 1",
intval($item['id'])
);
if(count($r)) {
@ -2398,7 +2422,25 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
// function is called
logger('diaspora_send_relay: original author signature not found, cannot send relayable');
return;
}
}*/
/* Since the author signature is only checked by the parent, not by the relay recipients,
* I think it may not be necessary for us to do so much work to preserve all the original
* signatures. The important thing that Diaspora DOES need is the original creator's handle.
* Let's just generate that and forget about all the original author signature stuff.
*
* Note: this might be more of an problem if we want to support likes on comments for older
* versions of Diaspora (diaspora-pistos), but since there are a number of problems with
* doing that, let's ignore it for now.
*
* Currently, only DFRN contacts are supported. StatusNet shouldn't be hard, but it hasn't
* been done yet
*/
$handle = diaspora_handle_from_contact($item['contact-id']);
if(! $handle)
return;
if($relay_retract)
$sender_signed_text = $item['guid'] . ';' . $target_type;


+ 3
- 2
include/items.php View File

@ -2459,6 +2459,7 @@ function local_delivery($importer,$data) {
$is_a_remote_delete = 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`
@ -2472,7 +2473,7 @@ function local_delivery($importer,$data) {
intval($importer['importer_uid'])
);
if($r && count($r))
$is_a_remote_delete = true;
$is_a_remote_delete = 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
@ -2799,7 +2800,7 @@ function local_delivery($importer,$data) {
}
if($posted_id && $parent) {
proc_run('php',"include/notifier.php","comment-import","$posted_id");
if((! $is_like) && (! $importer['self'])) {


+ 25
- 0
include/notifier.php View File

@ -18,6 +18,31 @@ require_once('include/html2plain.php');
* us by hosting providers.
*/
/*
* The notifier is typically called with:
*
* proc_run('php', "include/notifier.php", COMMAND, ITEM_ID);
*
* where COMMAND is one of the following:
*
* activity (in diaspora.php, dfrn_confirm.php, profiles.php)
* comment-import (in diaspora.php, items.php)
* comment-new (in item.php)
* drop (in diaspora.php, items.php, photos.php)
* edit_post (in item.php)
* event (in events.php)
* expire (in items.php)
* like (in like.php, poke.php)
* mail (in message.php)
* suggest (in fsuggest.php)
* tag (in photos.php, poke.php, tagger.php)
* tgroup (in items.php)
* wall-new (in photos.php, item.php)
*
* and ITEM_ID is the id of the item in the database that needs to be sent to others.
*/
function notifier_run($argv, $argc){
global $a, $db;


+ 21
- 1
include/template_processor.php View File

@ -63,7 +63,7 @@
if ($b[0]=="$") $b = $this->_get_var($b);
$val = ($a == $b);
} else if (strpos($args[2],"!=")>0){
list($a,$b) = explode("!=",$args[2]);
list($a,$b) = array_map("trim", explode("!=",$args[2]));
$a = $this->_get_var($a);
if ($b[0]=="$") $b = $this->_get_var($b);
$val = ($a != $b);
@ -133,6 +133,26 @@
return $ret;
}
/**
* DEBUG node
*
* {{ debug $var [$var [$var [...]]] }}{{ enddebug }}
*
* replace node with <pre>var_dump($var, $var, ...);</pre>
*/
private function _replcb_debug($args){
$vars = array_map('trim', explode(" ",$args[2]));
$vars[] = $args[1];
$ret = "<pre>";
foreach ($vars as $var){
$ret .= htmlspecialchars(var_export( $this->_get_var($var), true ));
$ret .= "\n";
}
$ret .= "</pre>";
return $ret;
}
private function _replcb_node($m) {
$node = $this->nodes[$m[1]];


+ 10
- 5
mod/network.php View File

@ -563,7 +563,7 @@ function network_content(&$a, $update = 0) {
}
else {
if(! get_pconfig(local_user(),'system','alt_pager')) {
if(! get_pconfig(local_user(),'system','alt_pager')) {
$r = q("SELECT COUNT(*) AS `total`
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
@ -576,10 +576,15 @@ function network_content(&$a, $update = 0) {
if(count($r)) {
$a->set_pager_total($r[0]['total']);
}
}
$itemspage_network = get_pconfig(local_user(),'system','itemspage_network');
$a->set_pager_itemspage(((intval($itemspage_network)) ? $itemspage_network : 40));
$pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage']));
}
$itemspage_network = get_pconfig(local_user(),'system','itemspage_network');
$itemspage_network = ((intval($itemspage_network)) ? $itemspage_network : 40);
if(($a->force_max_items > 0) && ($a->force_max_items < $itemspage_network))
$itemspage_network = $a->force_max_items;
$a->set_pager_itemspage($itemspage_network);
$pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage']));
}
$simple_update = (($update) ? " and `item`.`unseen` = 1 " : '');


+ 244
- 236
util/messages.po
File diff suppressed because it is too large
View File


+ 4
- 0
view/head.tpl View File

@ -39,7 +39,9 @@
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
$("#mod-cmnt-wrap-" + id).show();
openMenu("comment-edit-submit-wrapper-" + id);
return true;
}
return false;
}
function commentClose(obj,id) {
if(obj.value == '') {
@ -48,7 +50,9 @@
$("#comment-edit-text-" + id).addClass("comment-edit-text-empty");
$("#mod-cmnt-wrap-" + id).hide();
closeMenu("comment-edit-submit-wrapper-" + id);
return true;
}
return false;
}


+ 9
- 2
view/theme/frost-mobile/TODO View File

@ -12,11 +12,18 @@ Photo album display?
- Admin: access to more pages than summary?
- Embedded video playback is way too big
- Find a way to show embedded videos at the normal size for tablets that can handle it
- Need to find a way to deal with freakin annoying elements that don't respect screen width limits.
Specifically, need to find a way to keep them from forcing a horizontal scroll bar to show up and
making the rest of the body text overflow the item's borders that is screen-width sensitive (it's
annoying to have a 300px truncated code block on a 1024px wide screen). At least the following cause problems:
- code blocks
- blockquote blocks
- #reallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallyreallylongtags
- Needs to be faster!
- Reduce DOM elements (~2400 for 10 items, ~8400 for 40 items)
- Automatically set limit of 10 items for Network and Profile?

+ 5
- 2
view/theme/frost-mobile/head.tpl View File

@ -1,7 +1,10 @@
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta content='width=device-width, minimum-scale=1 maximum-scale=1' name='viewport'>
<!--<meta content='width=device-width, minimum-scale=1 maximum-scale=1' name='viewport'>
<meta content='True' name='HandheldFriendly'>
<meta content='320' name='MobileOptimized'>
<meta content='320' name='MobileOptimized'>-->
<meta name="viewport" content="width=device-width; initial-scale = 1.0; maximum-scale=1.0; user-scalable=no" />
<!--<meta name="viewport" content="width=100%; initial-scale=1; maximum-scale=1; minimum-scale=1; user-scalable=no;" />-->
<base href="$baseurl/" />
<meta name="generator" content="$generator" />
<!--<link rel="stylesheet" href="$baseurl/library/fancybox/jquery.fancybox-1.3.4.css" type="text/css" media="screen" />


+ 9
- 9
view/theme/frost-mobile/js/main.js View File

@ -401,19 +401,19 @@
function getPosition(e) {
var cursor = {x:0, y:0};
if ( e.pageX || e.pageY ) {
cursor.x = e.pageX;
cursor.y = e.pageY;
if ( e.touches[0].pageX || e.touches[0].pageY ) {
cursor.x = e.touches[0].pageX;
cursor.y = e.touches[0].pageY;
}
else {
if( e.clientX || e.clientY ) {
cursor.x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
cursor.y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
if( e.touches[0].clientX || e.touches[0].clientY ) {
cursor.x = e.touches[0].clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
cursor.y = e.touches[0].clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
}
else {
if( e.x || e.y ) {
cursor.x = e.x;
cursor.y = e.y;
if( e.touches[0].x || e.touches[0].y ) {
cursor.touches[0].x = e.touches[0].x;
cursor.touches[0].y = e.touches[0].y;
}
}
}


+ 1
- 1
view/theme/frost-mobile/js/main.min.js
File diff suppressed because it is too large
View File


+ 3
- 3
view/theme/frost-mobile/js/theme.js View File

@ -1,8 +1,8 @@
$j(document).ready(function() {
/* enable tinymce on focus and click */
$j("#profile-jot-text").focus(enableOnUser);
$j("#profile-jot-text").click(enableOnUser);
/* enable tinymce on focus and click */
$j("#profile-jot-text").focus(enableOnUser);
$j("#profile-jot-text").click(enableOnUser);
if(typeof window.AjaxUpload != "undefined") {
switch(window.ajaxType) {


+ 18
- 0
view/theme/frost-mobile/mail_conv.tpl View File

@ -0,0 +1,18 @@
<div class="mail-conv-outside-wrapper">
<div class="mail-conv-sender" >
<a href="$mail.from_url" class="mail-conv-sender-url" ><img class="mframe mail-conv-sender-photo$mail.sparkle" src="$mail.from_photo" heigth="80" width="80" alt="$mail.from_name" /></a>
</div>
<div class="mail-conv-detail" >
<div class="mail-conv-sender-name" >$mail.from_name</div>
<div class="mail-conv-date">$mail.date</div>
<div class="mail-conv-subject">$mail.subject</div>
</div>
<div class="mail-conv-body">$mail.body</div>
</div>
<div class="mail-conv-outside-wrapper-end"></div>
<div class="mail-conv-delete-wrapper" id="mail-conv-delete-wrapper-$mail.id" ><a href="message/drop/$mail.id" class="icon drophide delete-icon mail-list-delete-icon" onclick="return confirmDelete();" title="$mail.delete" id="mail-conv-delete-icon-$mail.id" class="mail-conv-delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a></div>
<div class="mail-conv-delete-end"></div>
<hr class="mail-conv-break" />

+ 83
- 38
view/theme/frost-mobile/style.css View File

@ -9,9 +9,10 @@
/* generals */
html {
width: 320px;
/* width: 320px;*/
margin-left: auto;
margin-right: auto;
overflow-x:hidden;
}
body {
@ -23,6 +24,7 @@ body {
background-repeat: repeat-x;
color: #505050;
margin: 0px;
overflow-x:hidden;
}
div.container {
@ -32,6 +34,7 @@ div.container {
margin-bottom: 0px;
margin-left: auto;
margin-right: auto;
overflow-x:hidden;
}
a, a:visited, a:link { color: #3465a4; text-decoration: none; }
@ -39,7 +42,7 @@ a:hover {text-decoration: underline; }
input {
border: 1px solid #666666;
-moz-border-radius: 3px;
/* -moz-border-radius: 3px;*/
-webkit-border-radius: 3px;
border-radius: 3px;
padding: 3px;
@ -78,6 +81,10 @@ blockquote {
background-color: #f4f8f9;
border-left: 4px solid #dae4ee;
padding: 0.4em;
margin-left: 20px;
margin-right: 0px;
width: 260px;
overflow: hidden;
}
.icollapse-wrapper, .ccollapse-wrapper {
@ -176,7 +183,7 @@ nav #banner #logo-text a:hover { text-decoration: none; }
border-bottom: 0px;
background-color: #aec0d3;
color: #565854;
-moz-border-radius: 3px 3px 0px 0px;
/* -moz-border-radius: 3px 3px 0px 0px;*/
-webkit-border-radius: 3px 3px 0px 0px;
border-radius: 3px 3px 0px 0px;
}
@ -197,7 +204,7 @@ nav #banner #logo-text a:hover { text-decoration: none; }
right: 2px;
padding: 1px 2px;
border-radius: 4px;
-moz-border-radius: 4px;
/* -moz-border-radius: 4px;*/
-webkit-border-radius: 4px;
background-color: gold !important;
}
@ -245,7 +252,7 @@ nav .nav-link {
/* right: -33px;*/
padding: 1em 0px;
-moz-box-shadow: 3px 3px 5px #555;
/* -moz-box-shadow: 3px 3px 5px #555;*/
-webkit-box-shadow: 3px 3px 5px #555;
box-shadow: 3px 3px 5px #555;
@ -300,7 +307,7 @@ aside {
display: block;
color: #FFFFFF;
-webkit-border-radius: 5px ;
-moz-border-radius: 5px;
/* -moz-border-radius: 5px;*/
border-radius: 5px;
padding: 5px;
font-weight: bold;
@ -310,7 +317,7 @@ aside {
display: block;
color: #FFFFFF;
-webkit-border-radius: 5px ;
-moz-border-radius: 5px;
/* -moz-border-radius: 5px;*/
border-radius: 5px;
padding: 5px;
font-weight: bold;
@ -320,10 +327,11 @@ aside {
/* section */
div.section-wrapper {
/* width: 100%;*/
width: 320px;
/* width: 320px;
margin-left: auto;
margin-right: auto;
margin-right: auto;*/
margin-left: 0px;
/*padding-right:2em;*/
@ -349,6 +357,7 @@ section {
min-height: 112px;
border-top: 1px solid #babdb6;
overflow-x:hidden;
}
.tabs {
@ -363,7 +372,7 @@ section {
padding: 0.4em 2em;
border: 1px solid #aaa;
border-radius: 8px;
-moz-border-radius: 8px;
/* -moz-border-radius: 8px;*/
-webkit-border-radius: 8px;
}
.tab {
@ -437,8 +446,8 @@ footer {
#jot-title::-webkit-input-placeholder{font-weight: normal;}
#jot-category::-webkit-input-placeholder{font-weight: normal;}
#jot-title:-moz-placeholder{font-weight: normal;}
#jot-category:-moz-placeholder{font-weight: normal;}
/*#jot-title:-moz-placeholder{font-weight: normal;}
#jot-category:-moz-placeholder{font-weight: normal;}*/
#jot-title:hover,
@ -468,7 +477,7 @@ footer {
.group-selected, .nets-selected, .fileas-selected, .categories-selected {
padding: 3px;
-moz-border-radius: 3px;
/* -moz-border-radius: 3px;*/
-webkit-border-radius: 3px;
border-radius: 3px;
border: 1px solid #CCCCCC;
@ -478,7 +487,7 @@ footer {
.settings-widget .selected {
padding: 3px;
-moz-border-radius: 3px;
/* -moz-border-radius: 3px;*/
-webkit-border-radius: 3px;
border-radius: 3px;
border: 1px solid #CCCCCC;
@ -1133,7 +1142,7 @@ input#dfrn-url {
border: 2px solid #AAAAAA;
border-radius: 10px;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
/* -moz-border-radius: 10px;*/
/* background: #EEEEEE;*/
}
@ -1328,12 +1337,15 @@ input#dfrn-url {
}
.wall-item-content img {
max-width: 300px;
max-width: 290px;
border-radius: 7px;
-moz-border-radius: 7px;
/* -moz-border-radius: 7px;*/
-webkit-border-radius: 7px;
}
.comment .wall-item-content img {
max-width: 280px;
}
.wall-item-title {
@ -1350,19 +1362,28 @@ input#dfrn-url {
.wall-item-body {
text-align: justify;
float: left;
width: 300px;
/* width: 300px;*/
overflow: hidden;
margin-top: 10px;
padding-right: 1em;
line-height: 23px;
}
.wall-item-body code {
overflow: auto;
width: 260px;
overflow: hidden;
}
.comment .wall-item-body {
margin-left: 5px;
width: 280px;
padding-right: 0.5em;
/* width: 280px;*/
}
.comment .wall-item-body blockquote {
margin-left: 0px;
margin-right: 0px;
width: 260px;
}
.wall-item-tools {
@ -1413,7 +1434,7 @@ input#dfrn-url {
}
.comment-edit-text-empty, .comment-edit-text-full {
/* float: left;*/
-moz-border-radius: 3px;
/* -moz-border-radius: 3px;*/
-webkit-border-radius: 3px;
border-radius: 3px;
border: 1px solid #cccccc;
@ -1669,7 +1690,7 @@ input#dfrn-url {
padding: 0.2em 1em;
border: 1px solid #aaa;
border-radius: 10px;
-moz-border-radius: 10px;
/* -moz-border-radius: 10px;*/
-webkit-border-radius: 10px;
}
@ -1729,7 +1750,7 @@ input#dfrn-url {
padding: 0.2em 1em;
border: 1px solid #aaa;
border-radius: 10px;
-moz-border-radius: 10px;
/* -moz-border-radius: 10px;*/
-webkit-border-radius: 10px;
}
@ -1738,7 +1759,7 @@ input#dfrn-url {
float: left;
border: 1px solid black;
border-radius: 7px;
-moz-border-radius: 7px;
/* -moz-border-radius: 7px;*/
-webkit-border-radius: 7px;
background: #FFCCCC;
font-size: 1.25em;
@ -1966,7 +1987,7 @@ input#dfrn-url {
left: -30px; top: 80px;
display: none;
z-index: 10000;
-moz-box-shadow: 3px 3px 5px #555;
/* -moz-box-shadow: 3px 3px 5px #555;*/
-webkit-box-shadow: 3px 3px 5px #555;
box-shadow: 3px 3px 5px #555;
}
@ -2004,7 +2025,7 @@ input#dfrn-url {
color:#cccccc;
border: 1px solid #cccccc;
padding: 3px 0px 0px 5px;
-moz-border-radius: 3px;
/* -moz-border-radius: 3px;*/
-webkit-border-radius: 3px;
border-radius: 3px;
}
@ -2049,7 +2070,7 @@ input#dfrn-url {
background-repeat: no-repeat;
padding: 7px 5px 0px 30px;
-webkit-border-radius: 5px ;
-moz-border-radius: 5px;
/* -moz-border-radius: 5px;*/
border-radius: 5px;
color: #999999;
}
@ -2074,7 +2095,7 @@ input#dfrn-url {
width: 120px;
height: 30px;
border: 1px solid #cccccc;
-moz-border-radius: 4px;
/* -moz-border-radius: 4px;*/
-webkit-border-radius: 4px;
border-radius: 4px;
margin-top: 5px;
@ -2104,7 +2125,7 @@ input#dfrn-url {
background-repeat: no-repeat;
margin-right: 5px;
-webkit-border-radius: 2px ;
-moz-border-radius: 2px;
/* -moz-border-radius: 2px;*/
border-radius: 2px;
padding-left: 15px;
}
@ -2248,7 +2269,7 @@ a.mail-list-link {
.mail-conv-detail {
margin-left: 20px;
margin-bottom: 10px;
width: 270px;
/*width: 270px;*/
}
.mail-conv-subject {
@ -2256,6 +2277,11 @@ a.mail-list-link {
margin: 10px 0;
}
.mail-conv-body {
padding-top: 20px;
clear: both;
}
.mail-conv-outside-wrapper-end {
clear: both;
}
@ -2266,6 +2292,7 @@ a.mail-list-link {
.mail-conv-delete-wrapper {
float: right;
padding-bottom: 0.5em;
margin-right: 5px;
margin-top: 15px;
}
@ -2371,7 +2398,7 @@ aside input[type='text'] {
border: 1px solid #DDDDDD;
padding: 8px;
margin-top: 5px;
-moz-border-radius:5px;
/* -moz-border-radius:5px;*/
-webkit-border-radius:5px;
border-radius:5px;
@ -2429,7 +2456,7 @@ aside input[type='text'] {
.photo-top-image-wrapper img {
max-width: 290px;
border-radius: 10px;
-moz-border-radius: 10px;
/* -moz-border-radius: 10px;*/
-webkit-border-radius: 10px;
}
.photo-top-album-name {
@ -2588,7 +2615,7 @@ aside input[type='text'] {
margin-top: 15px;
border: 1px solid #aaa;
border-radius: 10px;
-moz-border-radius: 10px;
/* -moz-border-radius: 10px;*/
-webkit-border-radius: 10px;
}
@ -3823,11 +3850,11 @@ ul.notifications-menu-popup {
height: auto;
overflow-y: scroll;overflow-style:scrollbar;
background-color:#FFFFFF;
-moz-border-radius: 5px;
/* -moz-border-radius: 5px;*/
-webkit-border-radius: 5px;
border-radius:5px;
border: 1px solid #AAA;
-moz-box-shadow: 3px 3px 5px #555;
/* -moz-box-shadow: 3px 3px 5px #555;*/
-webkit-box-shadow: 3px 3px 5px #555;
box-shadow: 3px 3px 5px #555;
}
@ -3886,8 +3913,9 @@ ul.notifications-menu-popup {
width: 130px;
}
@media only screen and (min-device-width: 768px)
and (max-device-width: 1024px)
/*@media only screen and (min-device-width: 768px)
and (max-device-width: 1024px)*/
/*@media only screen and (min-device-width: 768px)
{
html {
width:700px
@ -3902,4 +3930,21 @@ width:700px;
.comment .wall-item-body {
width:650px;
}
}
}*/
@media only screen and (min-device-width: 768px)
{
.wall-item-body code {
width: 700px;
}
.comment .wall-item-body blockquote {
margin-left: 20px;
width: 680px;
}
blockquote {
width: 700px;
}
}

+ 1
- 1
view/theme/frost-mobile/theme.php View File

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


+ 7
- 6
view/theme/quattro/comment_item.tpl View File

@ -10,8 +10,8 @@
<div class="comment-edit-photo" id="comment-edit-photo-$id" >
<a class="comment-edit-photo-link" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
</div>
<div class="comment-edit-photo-end"></div>
<ul class="comment-edit-bb-$id">
<ul id="comment-edit-bb-$id"
class="comment-edit-bb">
<li><a class="editicon boldbb shadow"
style="cursor: pointer;" title="$edbold"
onclick="insertFormatting('$comment','b', $id);"></a></li>
@ -37,8 +37,11 @@
style="cursor: pointer;" title="$edvideo"
onclick="insertFormatting('$comment','video', $id);"></a></li>
</ul>
<div class="comment-edit-bb-end"></div>
<textarea id="comment-edit-text-$id" class="comment-edit-text-empty" name="body" onFocus="commentOpen(this,$id);cmtBbOpen($id);" onBlur="commentClose(this,$id);" >$comment</textarea>
<textarea id="comment-edit-text-$id"
class="comment-edit-text-empty"
name="body"
onFocus="commentOpen(this,$id) && cmtBbOpen($id);"
onBlur="commentClose(this,$id) && cmtBbClose($id);" >$comment</textarea>
{{ if $qcomment }}
<select id="qcomment-select-$id" name="qcomment-$id" class="qcomment" onchange="qCommentInsert(this,$id);" >
<option value=""></option>
@ -48,14 +51,12 @@
</select>
{{ endif }}
<div class="comment-edit-text-end"></div>
<div class="comment-edit-submit-wrapper" id="comment-edit-submit-wrapper-$id" style="display: none;" >
<input type="submit" onclick="post_comment($id); return false;" id="comment-edit-submit-$id" class="comment-edit-submit" name="submit" value="$submit" />
<span onclick="preview_comment($id);" id="comment-edit-preview-link-$id" class="fakelink">$preview</span>
<div id="comment-edit-preview-$id" class="comment-edit-preview" style="display:none;"></div>
</div>
<div class="comment-edit-end"></div>
</form>
</div>

+ 49
- 17
view/theme/quattro/dark/style.css View File

@ -1075,6 +1075,7 @@ section {
width: 710px;
border: 1px solid #2d2d2d;
margin-top: 10px;
background-color: #fce94f;
}
.comment-edit-preview .contact-photo {
width: 32px;
@ -1091,12 +1092,17 @@ section {
padding-left: 12px;
}
.comment-edit-preview .wall-item-container {
width: 700px;
width: 90%;
}
.comment-edit-preview .tread-wrapper {
width: 700px;
width: 90%;
padding: 0;
margin: 10px 0;
background-color: #fce94f;
border-bottom: 0px;
}
.comment-edit-preview .wall-item-conv {
display: none;
}
.shiny {
border-right: 10px solid #fce94f;
@ -1143,36 +1149,64 @@ section {
height: 25px;
}
/* threaded comments */
.children {
margin-top: 1em;
}
.children .hide-comments-outer {
margin-left: 60px;
}
.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 .children {
margin-left: 40px;
.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 .children {
margin-left: 40px;
.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 .children {
margin-left: 40px;
.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;
}
.threaded .hide-comments-outer {
margin-left: 20px;
.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;
}
@ -2009,25 +2043,23 @@ footer {
opacity: 0.3;
filter: alpha(opacity=30);
}
[class^="comment-edit-bb"] {
.comment-edit-bb {
list-style: none;
display: none;
margin: 0px 0 0px 60px;
margin: 0px;
padding: 0px;
width: 75%;
}
[class^="comment-edit-bb"] > li {
.comment-edit-bb > li {
display: inline-block;
margin: 10px 10px 0 0;
visibility: none;
}
[class^="comment-edit-bb-end"] {
clear: both;
}
.editicon {
display: inline-block;
width: 16px;
height: 16px;
background-image: url(bbedit.png);
background-image: url(icons/bbedit.png);
text-decoration: none;
}
.editicon :hover {


+ 49
- 17
view/theme/quattro/green/style.css View File

@ -1075,6 +1075,7 @@ section {
width: 710px;
border: 1px solid #2d2d2d;
margin-top: 10px;
background-color: #ddffdd;
}
.comment-edit-preview .contact-photo {
width: 32px;
@ -1091,12 +1092,17 @@ section {
padding-left: 12px;
}
.comment-edit-preview .wall-item-container {
width: 700px;
width: 90%;
}
.comment-edit-preview .tread-wrapper {
width: 700px;
width: 90%;
padding: 0;
margin: 10px 0;
background-color: #ddffdd;
border-bottom: 0px;
}
.comment-edit-preview .wall-item-conv {
display: none;
}
.shiny {
border-right: 10px solid #ddffdd;
@ -1143,36 +1149,64 @@ section {
height: 25px;
}
/* threaded comments */
.children {
margin-top: 1em;
}
.children .hide-comments-outer {
margin-left: 60px;
}
.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 .children {
margin-left: 40px;
.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 .children {
margin-left: 40px;
.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 .children {
margin-left: 40px;
.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;
}
.threaded .hide-comments-outer {
margin-left: 20px;
.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;
}
@ -2009,25 +2043,23 @@ footer {
opacity: 0.3;
filter: alpha(opacity=30);
}
[class^="comment-edit-bb"] {
.comment-edit-bb {
list-style: none;
display: none;
margin: 0px 0 0px 60px;
margin: 0px;
padding: 0px;
width: 75%;
}
[class^="comment-edit-bb"] > li {
.comment-edit-bb > li {
display: inline-block;
margin: 10px 10px 0 0;
visibility: none;
}
[class^="comment-edit-bb-end"] {
clear: both;
}
.editicon {
display: inline-block;
width: 16px;
height: 16px;
background-image: url(bbedit.png);
background-image: url(icons/bbedit.png);
text-decoration: none;
}
.editicon :hover {


BIN
view/theme/quattro/icons/bbedit.png View File

Before After
Width: 180  |  Height: 32  |  Size: 2.1 KiB

+ 38
- 15
view/theme/quattro/quattro.less View File

@ -536,6 +536,7 @@ section {
color: @CommentBoxFullColor;
border: 1px solid @CommentBoxFullBorderColor;
}
}
.threaded .wall-item-comment-wrapper { margin-left: 0px; }
@ -544,6 +545,7 @@ section {
width: 710px;
border: 1px solid @Grey5;
margin-top: 10px;
background-color: @JotPreviewBackgroundColor;
.contact-photo { width: 32px; height: 32px; margin-left: 16px;
/*background: url(../../../images/icons/22/user.png) no-repeat center center;*/
@ -554,8 +556,13 @@ section {
}
.wall-item-links { padding-left: 12px; }
.wall-item-container { width: 700px; }
.tread-wrapper { width: 700px; padding: 0; margin: 10px 0;}
.wall-item-container { width: 90%; }
.tread-wrapper {
width: 90%; padding: 0; margin: 10px 0;
background-color: @JotPreviewBackgroundColor;
border-bottom: 0px;
}
.wall-item-conv { display: none; }
}
.shiny { border-right:10px solid @ShinyBorderColor; }
@ -598,32 +605,49 @@ section {
/* threaded comments */
.children {
margin-top: 1em;
.hide-comments-outer { margin-left:60px; }
.comment-edit-preview { width: 660px;
.wall-item-container { width: 610px; }
}
& .children {
margin-left: 40px;
.wall-item-container { width: 710px; }
.comment-edit-preview { width: 620px;
.wall-item-container { width: 620px; }
}
& .children {
margin-left: 40px;
.wall-item-container { width: 670px; }
.comment-edit-preview { width: 580px;
.wall-item-container { width: 580px; }
}
& .children {
margin-left: 40px;
.wall-item-container { width: 630px; }
.comment-edit-preview { width: 540px;
.wall-item-container { width: 540px; }
}
& .children {
margin-left: 40px;
.wall-item-container { width: 590px; }
.comment-edit-preview { width: 500px;
.wall-item-container { width: 500px; }
}
.children {
margin-left: 0px;
}
.hide-comments-outer { margin-left: 0px; }
}
}
}
}
}
}
.threaded .hide-comments-outer { margin-left: 20px; }
/*.threaded .hide-comments-outer { margin-left: 20px; }*/
span[id^="showmore-teaser"]{
background: url("showmore-bg.jpg") no-repeat center bottom;
@ -1372,25 +1396,24 @@ footer { height: 100px; display: table-row; }
/* edit buttons for comments */
.icon.dim { opacity: 0.3;filter:alpha(opacity=30); }
[class^="comment-edit-bb"] {
.comment-edit-bb {
list-style: none;
display: none;
margin: 0px 0 0px 60px;
margin: 0px;
padding: 0px;
width: 75%;
}
[class^="comment-edit-bb"] > li {
.comment-edit-bb > li {
display: inline-block;
margin: 10px 10px 0 0;
visibility: none;
}
[class^="comment-edit-bb-end"] {
clear: both;
}
.editicon {
display: inline-block;
width: 16px;
height: 16px;
background-image: url(bbedit.png);
background-image: url(icons/bbedit.png);
text-decoration: none;
:hover {background-color: #ccc;}
}


+ 13
- 3
view/theme/quattro/theme.php View File

@ -42,11 +42,21 @@ function insertFormatting(comment,BBcode,id) {
return true;
}
function showThread(id) {
$("#collapsed-comments-" + id).show()
$("#collapsed-comments-" + id + " .collapsed-comments").show()
}
function hideThread(id) {
$("#collapsed-comments-" + id).hide()
$("#collapsed-comments-" + id + " .collapsed-comments").hide()
}
function cmtBbOpen(id) {
$(".comment-edit-bb-" + id).show();
$("#comment-edit-bb-" + id).show();
}
function cmtBbClose(comment, id) {
$(".comment-edit-bb-" + id).hide();
function cmtBbClose(id) {
$("#comment-edit-bb-" + id).hide();
}
$(document).ready(function() {


+ 2
- 0
view/theme/quattro/threaded_conversation.tpl View File

@ -1,6 +1,8 @@
{{ for $threads as $item }}
<div id="tread-wrapper-$item.id" class="tread-wrapper {{ if $item.threaded }}threaded{{ endif }}">
{{ if $item.type == tag }}
{{ inc wall_item_tag.tpl }}