diff --git a/boot.php b/boot.php
index 00acdf078..30d49539c 100644
--- a/boot.php
+++ b/boot.php
@@ -399,6 +399,8 @@ if(! class_exists('App')) {
public $sourcename = '';
public $videowidth = 425;
public $videoheight = 350;
+ public $force_max_items = 0;
+ public $theme_thread_allow = true;
private $scheme;
private $hostname;
diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php
index 9ede42f6c..b0e12027a 100644
--- a/include/bb2diaspora.php
+++ b/include/bb2diaspora.php
@@ -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);
diff --git a/include/conversation.php b/include/conversation.php
index f1f6c83fe..c41d00def 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -303,6 +303,9 @@ function localize_item(&$item){
function count_descendants($item) {
$total = count($item['children']);
+ if($item['verb'] === ACTIVITY_LIKE || $item['verb'] === ACTIVITY_DISLIKE)
+ return 0;
+
if($total > 0) {
foreach($item['children'] as $child) {
$total += count_descendants($child);
@@ -316,7 +319,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';
@@ -333,11 +336,14 @@ function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $pr
$nb_items--;
continue;
}
+
+ if($item['verb'] === ACTIVITY_LIKE || $item['verb'] === ACTIVITY_DISLIKE) {
+ $nb_items --;
+ continue;
+ }
$items_seen++;
- $alike = array();
- $dlike = array();
$comment = '';
$template = $wall_template;
$commentww = '';
@@ -408,9 +414,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']) : '');
@@ -530,6 +533,7 @@ function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $pr
'$edurl' => t('Link'),
'$edvideo' => t('Video'),
'$preview' => t('Preview'),
+ '$indent' => $indent,
'$sourceapp' => t($a->sourcename),
'$ww' => (($mode === 'network') ? $commentww : '')
));
@@ -586,6 +590,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);
@@ -599,7 +604,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' : '');
@@ -607,7 +612,7 @@ function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $pr
/*
* I don't like this very much...
*/
- if(get_config('system','thread_allow')) {
+ if(get_config('system','thread_allow') && $a->theme_thread_allow) {
$item_result['flatten'] = false;
$item_result['threaded'] = true;
}
@@ -831,6 +836,7 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional') {
'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);
@@ -870,6 +876,11 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional') {
foreach($items as $item) {
like_puller($a,$item,$alike,'like');
like_puller($a,$item,$dlike,'dislike');
+
+ if($item['id'] == $item['parent']) {
+ $threads[] = $item;
+ }
+
}
$comments_collapsed = false;
diff --git a/include/items.php b/include/items.php
index 7b454a542..4c84b32f8 100755
--- a/include/items.php
+++ b/include/items.php
@@ -2430,7 +2430,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
@@ -2739,7 +2739,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'])) {
diff --git a/include/notifier.php b/include/notifier.php
index d67f2dd3a..e6523f147 100644
--- a/include/notifier.php
+++ b/include/notifier.php
@@ -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;
diff --git a/include/template_processor.php b/include/template_processor.php
index 9c6e27916..0f52d12a4 100644
--- a/include/template_processor.php
+++ b/include/template_processor.php
@@ -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
var_dump($var, $var, ...);
+ */
+ private function _replcb_debug($args){
+ $vars = array_map('trim', explode(" ",$args[2]));
+ $vars[] = $args[1];
+
+ $ret = "";
+ foreach ($vars as $var){
+ $ret .= htmlspecialchars(var_export( $this->_get_var($var), true ));
+ $ret .= "\n";
+ }
+ $ret .= "
";
+ return $ret;
+ }
private function _replcb_node($m) {
$node = $this->nodes[$m[1]];
diff --git a/version.inc b/version.inc
index e30502b2a..09e05beee 100644
--- a/version.inc
+++ b/version.inc
@@ -1 +1 @@
-2012-08-09.41
+2012-08-11.43
diff --git a/view/theme/comix-plain/search_item.tpl b/view/theme/comix-plain/search_item.tpl
index dba289031..828e1065b 100644
--- a/view/theme/comix-plain/search_item.tpl
+++ b/view/theme/comix-plain/search_item.tpl
@@ -1,5 +1,5 @@
-
-
+
+
diff --git a/view/theme/comix-plain/wall_item.tpl b/view/theme/comix-plain/wall_item.tpl
index dfcd8ca96..0ef70cf8b 100644
--- a/view/theme/comix-plain/wall_item.tpl
+++ b/view/theme/comix-plain/wall_item.tpl
@@ -1,11 +1,11 @@
-
-
+
+
diff --git a/view/theme/comix-plain/wallwall_item.tpl b/view/theme/comix-plain/wallwall_item.tpl
index abd5967b2..4c5b12087 100644
--- a/view/theme/comix-plain/wallwall_item.tpl
+++ b/view/theme/comix-plain/wallwall_item.tpl
@@ -1,5 +1,5 @@
-
-
+
+
diff --git a/view/theme/comix/search_item.tpl b/view/theme/comix/search_item.tpl
index dba289031..828e1065b 100644
--- a/view/theme/comix/search_item.tpl
+++ b/view/theme/comix/search_item.tpl
@@ -1,5 +1,5 @@
-
-
+
+
diff --git a/view/theme/comix/wall_item.tpl b/view/theme/comix/wall_item.tpl
index dfcd8ca96..0ef70cf8b 100644
--- a/view/theme/comix/wall_item.tpl
+++ b/view/theme/comix/wall_item.tpl
@@ -1,11 +1,11 @@
-
-
+
+
diff --git a/view/theme/comix/wallwall_item.tpl b/view/theme/comix/wallwall_item.tpl
index abd5967b2..4c5b12087 100644
--- a/view/theme/comix/wallwall_item.tpl
+++ b/view/theme/comix/wallwall_item.tpl
@@ -1,5 +1,5 @@
-
-
+
+
diff --git a/view/theme/dispy/search_item.tpl b/view/theme/dispy/search_item.tpl
index bfad1b7b7..35572caa0 100644
--- a/view/theme/dispy/search_item.tpl
+++ b/view/theme/dispy/search_item.tpl
@@ -1,5 +1,5 @@
-
-
+
+
diff --git a/view/theme/dispy/wall_item.tpl b/view/theme/dispy/wall_item.tpl
index 8d6f258e6..d5cc7f16c 100644
--- a/view/theme/dispy/wall_item.tpl
+++ b/view/theme/dispy/wall_item.tpl
@@ -1,6 +1,6 @@
-
-
+
+
diff --git a/view/theme/dispy/wallwall_item.tpl b/view/theme/dispy/wallwall_item.tpl
index f5187b710..63c8a2e96 100644
--- a/view/theme/dispy/wallwall_item.tpl
+++ b/view/theme/dispy/wallwall_item.tpl
@@ -1,6 +1,6 @@
-
-
+
+
diff --git a/view/theme/quattro/dark/style.css b/view/theme/quattro/dark/style.css
index d397a9305..17ee6576d 100644
--- a/view/theme/quattro/dark/style.css
+++ b/view/theme/quattro/dark/style.css
@@ -1072,6 +1072,7 @@ section {
width: 710px;
border: 1px solid #2d2d2d;
margin-top: 10px;
+ background-color: #fce94f;
}
.comment-edit-preview .contact-photo {
width: 32px;
@@ -1965,25 +1966,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 {
diff --git a/view/theme/quattro/green/style.css b/view/theme/quattro/green/style.css
index fdab77eb7..10cff53fd 100644
--- a/view/theme/quattro/green/style.css
+++ b/view/theme/quattro/green/style.css
@@ -1072,6 +1072,7 @@ section {
width: 710px;
border: 1px solid #2d2d2d;
margin-top: 10px;
+ background-color: #ddffdd;
}
.comment-edit-preview .contact-photo {
width: 32px;
@@ -1965,25 +1966,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 {
diff --git a/view/theme/quattro/quattro.less b/view/theme/quattro/quattro.less
index a3ab8107b..ad1262d48 100644
--- a/view/theme/quattro/quattro.less
+++ b/view/theme/quattro/quattro.less
@@ -532,6 +532,7 @@ section {
color: @CommentBoxFullColor;
border: 1px solid @CommentBoxFullBorderColor;
}
+
}
.threaded .wall-item-comment-wrapper { margin-left: 0px; }
@@ -540,6 +541,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;*/
@@ -1328,25 +1330,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;}
}
diff --git a/view/theme/quattro/theme.php b/view/theme/quattro/theme.php
index 5cb373eef..1c986e4c8 100644
--- a/view/theme/quattro/theme.php
+++ b/view/theme/quattro/theme.php
@@ -42,11 +42,21 @@ function insertFormatting(comment,BBcode,id) {
return true;
}
-function cmtBbOpen(id) {
- $(".comment-edit-bb-" + id).show();
+function showThread(id) {
+ $("#collapsed-comments-" + id).show()
+ $("#collapsed-comments-" + id + " .collapsed-comments").show()
}
-function cmtBbClose(comment, id) {
- $(".comment-edit-bb-" + id).hide();
+function hideThread(id) {
+ $("#collapsed-comments-" + id).hide()
+ $("#collapsed-comments-" + id + " .collapsed-comments").hide()
+}
+
+
+function cmtBbOpen(id) {
+ $("#comment-edit-bb-" + id).show();
+}
+function cmtBbClose(id) {
+ $("#comment-edit-bb-" + id).hide();
}
$(document).ready(function() {
diff --git a/view/theme/quattro/tpl/comment_item.tpl b/view/theme/quattro/tpl/comment_item.tpl
index ea24d95cc..7d1d7550b 100644
--- a/view/theme/quattro/tpl/comment_item.tpl
+++ b/view/theme/quattro/tpl/comment_item.tpl
@@ -10,8 +10,8 @@
-
-
diff --git a/view/theme/quattro/tpl/threaded_conversation.tpl b/view/theme/quattro/tpl/threaded_conversation.tpl
index 491c47302..13c38acb2 100644
--- a/view/theme/quattro/tpl/threaded_conversation.tpl
+++ b/view/theme/quattro/tpl/threaded_conversation.tpl
@@ -1,6 +1,8 @@
{{ for $threads as $item }}
+
+
{{ if $item.type == tag }}
{{ inc wall_item_tag.tpl }}{{ endinc }}
{{ else }}
diff --git a/view/theme/quattro/tpl/wall_item_tag.tpl b/view/theme/quattro/tpl/wall_item_tag.tpl
index 205fcfebc..e1ef93213 100644
--- a/view/theme/quattro/tpl/wall_item_tag.tpl
+++ b/view/theme/quattro/tpl/wall_item_tag.tpl
@@ -1,3 +1,5 @@
+{{ if $item.thread_level!=1 }}
{{ endif }}
+
+{{ if $item.thread_level!=1 }}
{{ endif }}
+
{{ if $item.flatten }}
-
+
{{ endif }}
diff --git a/view/theme/quattro/tpl/wall_thread.tpl b/view/theme/quattro/tpl/wall_thread.tpl
index 4d454f00d..01738b666 100644
--- a/view/theme/quattro/tpl/wall_thread.tpl
+++ b/view/theme/quattro/tpl/wall_thread.tpl
@@ -2,12 +2,24 @@
{{ else }}
{{if $item.comment_firstcollapsed}}
{{ endif }}
+
+
{{if $mode == display}}
{{ else }}
{{if $item.comment_lastcollapsed}}
{{endif}}
{{ endif }}
+{{if $item.threaded}}{{if $item.comment}}{{if $item.thread_level==1}}
+
+{{ endif }}{{ endif }}{{ endif }}
+
+
{{ if $item.flatten }}
-
+
{{ endif }}
diff --git a/view/theme/quattro/tpl/wallwall_thread.tpl b/view/theme/quattro/tpl/wallwall_thread.tpl
index cc2f8e362..93a8838eb 100644
--- a/view/theme/quattro/tpl/wallwall_thread.tpl
+++ b/view/theme/quattro/tpl/wallwall_thread.tpl
@@ -2,12 +2,25 @@
{{ else }}
{{if $item.comment_firstcollapsed}}
{{ endif }}
+
+
{{if $mode == display}}
{{ else }}
{{if $item.comment_lastcollapsed}}
{{endif}}
{{ endif }}
+{{if $item.threaded}}{{if $item.comment}}{{if $item.thread_level==1}}
+
+{{ endif }}{{ endif }}{{ endif }}
+
+
{{ if $item.flatten }}
-
+
{{ endif }}
diff --git a/view/tpl/head.tpl b/view/tpl/head.tpl
index 08fe8303a..ba2850c0e 100644
--- a/view/tpl/head.tpl
+++ b/view/tpl/head.tpl
@@ -29,7 +29,9 @@ $head_js
$("#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 == '') {
@@ -38,7 +40,9 @@ $head_js
$("#comment-edit-text-" + id).addClass("comment-edit-text-empty");
$("#mod-cmnt-wrap-" + id).hide();
closeMenu("comment-edit-submit-wrapper-" + id);
+ return true;
}
+ return false;
}
function showHideCommentBox(id) {
diff --git a/view/tpl/search_item.tpl b/view/tpl/search_item.tpl
index dc4a43c6a..b0c7f3c28 100644
--- a/view/tpl/search_item.tpl
+++ b/view/tpl/search_item.tpl
@@ -1,6 +1,6 @@
-
-
+
+
diff --git a/view/tpl/wall_item.tpl b/view/tpl/wall_item.tpl
index 458677433..9b4d584c0 100644
--- a/view/tpl/wall_item.tpl
+++ b/view/tpl/wall_item.tpl
@@ -1,6 +1,6 @@
-
-
+
+
diff --git a/view/tpl/wall_thread.tpl b/view/tpl/wall_thread.tpl
index 600f755b1..6f7ced7fe 100644
--- a/view/tpl/wall_thread.tpl
+++ b/view/tpl/wall_thread.tpl
@@ -73,18 +73,20 @@
{{ if $item.drop.dropping }}
{{ endif }}
- {{ if $item.threaded }}
- {{ if $item.comment }}
-
- {{ endif }}
- {{ endif }}
$item.like
$item.dislike
+
+ {{ if $item.threaded }}
+ {{ if $item.comment }}
+
+ {{ endif }}
+ {{ endif }}
+
{{ for $item.children as $item }}
@@ -98,3 +100,4 @@
{{ endif }}
{{if $item.comment_lastcollapsed}}
{{endif}}
+
diff --git a/view/tpl/wallwall_item.tpl b/view/tpl/wallwall_item.tpl
index 983c03287..e614d936e 100644
--- a/view/tpl/wallwall_item.tpl
+++ b/view/tpl/wallwall_item.tpl
@@ -1,6 +1,6 @@
-
-
+
+
diff --git a/view/tpl/wallwall_thread.tpl b/view/tpl/wallwall_thread.tpl
index 89f121f21..15c016c16 100644
--- a/view/tpl/wallwall_thread.tpl
+++ b/view/tpl/wallwall_thread.tpl
@@ -6,8 +6,8 @@
{{endif}}
-
-
+
+
{{ if $item.drop.dropping }}
{{ endif }}
- {{ if $item.threaded }}
- {{ if $item.comment }}
-
- {{ endif }}
- {{ endif }}
$item.like
$item.dislike
-
+
+ {{ if $item.threaded }}
+ {{ if $item.comment }}
+
+ {{ endif }}
+ {{ endif }}
+
+
{{ for $item.children as $item }}
{{ inc $item.template }}{{ endinc }}