Threading updates

- Add rudimentary thread handling to Frost
- Fix possible CSS bug in several themes from threading update
- Add ability for themes to prevent threading
This commit is contained in:
Zach Prezkuta 2012-08-11 14:36:58 -06:00
parent d4b6188356
commit 5e09fc31f5
46 changed files with 601 additions and 97 deletions

View file

@ -26,4 +26,6 @@ Photo album display?
- Reduce DOM elements (~2400 for 10 items, ~8400 for 40 items)
- Add wall-thread.tpl and wallwall-thread.tpl
- Sometimes, when "Permission denied", wrong login page is shown

View file

@ -35,6 +35,7 @@
{{ inc field_checkbox.tpl with $field=$ostatus_disabled }}{{ endinc }}
{{ inc field_checkbox.tpl with $field=$diaspora_enabled }}{{ endinc }}
{{ inc field_checkbox.tpl with $field=$dfrn_only }}{{ endinc }}
{{ inc field_checkbox.tpl with $field=$thread_allow }}{{ endinc }}
{{ inc field_input.tpl with $field=$global_directory }}{{ endinc }}
<div class="submit"><input type="submit" name="page_site" value="$submit" /></div>

View file

@ -10,8 +10,10 @@
});
</script>-->
<div class="comment-wwedit-wrapper" id="comment-edit-wrapper-$id" style="display: block;" >
<form class="comment-edit-form" id="comment-edit-form-$id" action="item" method="post" onsubmit="post_comment($id); return false;" >
<div class="comment-wwedit-wrapper $indent" id="comment-edit-wrapper-$id" style="display: block;" >
<form class="comment-edit-form $indent" id="comment-edit-form-$id" action="item" method="post" onsubmit="post_comment($id); return false;" >
<!-- <span id="hide-commentbox-$id" class="hide-commentbox fakelink" onclick="showHideCommentBox($id);">$comment</span>
<form class="comment-edit-form" style="display: none;" id="comment-edit-form-$id" action="item" method="post" onsubmit="post_comment($id); return false;">-->
<input type="hidden" name="type" value="$type" />
<input type="hidden" name="source" value="$sourceapp" />
<input type="hidden" name="profile_uid" value="$profile_uid" />

View file

@ -297,7 +297,7 @@
// add a new thread
$j('.tread-wrapper',data).each(function() {
$j('.toplevel_item',data).each(function() {
var ident = $j(this).attr('id');
if($j('#' + ident).length == 0 && profile_page == 1) {

File diff suppressed because one or more lines are too long

View file

@ -544,6 +544,15 @@ function showHideComments(id) {
}
}
/*function showHideCommentBox(id) {
if( $j('#comment-edit-form-' + id).is(':visible')) {
$j('#comment-edit-form-' + id).hide();
}
else {
$j('#comment-edit-form-' + id).show();
}
}*/
/*function deleteCheckedItems() {
var checkedstr = '';

View file

@ -1422,6 +1422,13 @@ input#dfrn-url {
margin-right: 10px;
}
.comment-wwedit-wrapper.comment {
margin-left: 40px;
margin-right: 40px;
border-radius: 10px;
}
.comment-edit-photo {
margin-top: 15px;
margin-left: 10px;
@ -1461,6 +1468,15 @@ input#dfrn-url {
margin-left: 20px;
}
.comment .comment-edit-text-empty {
width: 120px;
}
.comment .comment-edit-text-full {
margin-left: 10px;
width: 210px;
}
.comment-edit-text-end {
clear: both;
}

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.5
* Version: Version 0.2.6
* Author: Zach P <windforest@f.shmuz.in>
* Maintainer: Zach P <windforest@f.shmuz.in>
*/
@ -26,5 +26,6 @@ function frost_mobile_init(&$a) {
$a->sourcename = 'Friendica mobile web';
$a->videowidth = 250;
$a->videoheight = 200;
$a->theme_thread_allow = false;
}

View file

@ -1,6 +1,6 @@
<a name="$item.id" ></a>
<!--<div class="wall-item-outside-wrapper$item.indent$item.previewing" id="wall-item-outside-wrapper-$item.id" >-->
<div class="wall-item-content-wrapper$item.indent" id="wall-item-content-wrapper-$item.id" >
<!--<div class="wall-item-outside-wrapper $item.indent$item.previewing" id="wall-item-outside-wrapper-$item.id" >-->
<div class="wall-item-content-wrapper $item.indent" id="wall-item-content-wrapper-$item.id" >
<div class="wall-item-info" id="wall-item-info-$item.id">
<!-- <div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$item.id"
onmouseover="if (typeof t$item.id != 'undefined') clearTimeout(t$item.id); openMenu('wall-item-photo-menu-button-$item.id')"
@ -25,7 +25,7 @@
</div>
<!--<div class="wall-item-author">-->
<a href="$item.profile_url" target="redir" title="$item.linktitle" class="wall-item-name-link"><span class="wall-item-name$item.sparkle" id="wall-item-name-$item.id" >$item.name</span></a>
<div class="wall-item-ago" id="wall-item-ago-$item.id">$item.ago</div>
<div class="wall-item-ago" id="wall-item-ago-$item.id" >$item.ago</div>
<!--</div>-->
<br />
@ -78,5 +78,5 @@
$item.comment
<!--</div>-->
<!--<div class="wall-item-outside-wrapper-end$item.indent" ></div>-->
<!--<div class="wall-item-outside-wrapper-end $item.indent" ></div>-->
<!--</div>-->

View file

@ -0,0 +1,106 @@
{{if $item.comment_firstcollapsed}}
<div class="hide-comments-outer">
<span id="hide-comments-total-$item.id" class="hide-comments-total">$item.num_comments</span> <span id="hide-comments-$item.id" class="hide-comments fakelink" onclick="showHideComments($item.id);">$item.hide_text</span>
</div>
<div id="collapsed-comments-$item.id" class="collapsed-comments" style="display: none;">
{{endif}}
{{if $item.comment_lastcollapsed}}</div>{{endif}}
<div id="tread-wrapper-$item.id" class="tread-wrapper $item.toplevel">
<a name="$item.id" ></a>
<!--<div class="wall-item-outside-wrapper $item.indent$item.previewing" id="wall-item-outside-wrapper-$item.id" >-->
<div class="wall-item-content-wrapper $item.indent" id="wall-item-content-wrapper-$item.id" >
<div class="wall-item-info" id="wall-item-info-$item.id">
<!-- <div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$item.id"
onmouseover="if (typeof t$item.id != 'undefined') clearTimeout(t$item.id); openMenu('wall-item-photo-menu-button-$item.id')"
onmouseout="t$item.id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$item.id\'); closeMenu(\'wall-item-photo-menu-$item.id\');',200)">-->
<div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$item.id">
<a href="$item.profile_url" target="redir" title="$item.linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$item.id">
<img src="$item.thumb" class="wall-item-photo$item.sparkle" id="wall-item-photo-$item.id" style="height: 80px; width: 80px;" alt="$item.name" />
</a>
<!--<span onclick="openClose('wall-item-photo-menu-$item.id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$item.id">menu</span>
<div class="wall-item-photo-menu" id="wall-item-photo-menu-$item.id">
<ul class="wall-item-photo-menu" id="wall-item-photo-menu-$item.id">
$item.item_photo_menu
</ul>
</div>-->
</div>
<!--<div class="wall-item-photo-end"></div>-->
<div class="wall-item-wrapper" id="wall-item-wrapper-$item.id" >
{{ if $item.lock }}<!--<div class="wall-item-lock">--><img src="images/lock_icon.gif" class="wall-item-lock lockview" alt="$item.lock" onclick="lockview(event,$item.id);" /><!--</div>-->
{{ else }}<div class="wall-item-lock"></div>{{ endif }}
<div class="wall-item-location" id="wall-item-location-$item.id">$item.location</div>
</div>
</div>
<!--<div class="wall-item-author">-->
<a href="$item.profile_url" target="redir" title="$item.linktitle" class="wall-item-name-link"><span class="wall-item-name$item.sparkle" id="wall-item-name-$item.id" >$item.name</span></a>
<div class="wall-item-ago" id="wall-item-ago-$item.id" >$item.ago</div>
<!--</div>-->
<br />
<div class="wall-item-content" id="wall-item-content-$item.id" >
<div class="wall-item-title" id="wall-item-title-$item.id">$item.title</div>
<!--<div class="wall-item-title-end"></div>-->
<div class="wall-item-body" id="wall-item-body-$item.id" >$item.body
<!-- <div class="body-tag">-->
{{ for $item.tags as $tag }}
<span class='body-tag tag'>$tag</span>
{{ endfor }}
<!-- </div>-->
</div>
</div>
<div class="wall-item-tools" id="wall-item-tools-$item.id">
{{ if $item.vote }}
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$item.id">
<a href="#" class="icon like" title="$item.vote.like.0" onclick="dolike($item.id,'like'); return false"></a>
<a href="#" class="icon dislike" title="$item.vote.dislike.0" onclick="dolike($item.id,'dislike'); return false"></a>
{{ if $item.vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title="$item.vote.share.0" onclick="jotShare($item.id); return false"></a>{{ endif }}
<img id="like-rotator-$item.id" class="like-rotator" src="images/rotator.gif" alt="$item.wait" title="$item.wait" style="display: none;" />
</div>
{{ endif }}
{{ if $item.plink }}
<!--<div class="wall-item-links-wrapper"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="wall-item-links-wrapper icon remote-link$item.sparkle"></a></div>-->
{{ endif }}
{{ if $item.edpost }}
<a class="editpost icon pencil" href="$item.edpost.0" title="$item.edpost.1"></a>
{{ endif }}
{{ if $item.star }}
<a href="#" id="starred-$item.id" onclick="dostar($item.id); return false;" class="star-item icon $item.isstarred" title="$item.star.toggle"></a>
<a href="#" id="tagger-$item.id" onclick="itemTag($item.id); return false;" class="tag-item icon tagged" title="$item.star.tagger"></a>
{{ endif }}
{{ if $item.filer }}
<a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.filer"></a>
{{ endif }}
<!-- <div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$item.id" >-->
{{ if $item.drop.dropping }}<a href="item/drop/$item.id" onclick="return confirmDelete();" class="wall-item-delete-wrapper icon drophide" title="$item.drop.delete" id="wall-item-delete-wrapper-$item.id" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{ endif }}
<!-- </div>-->
{{ if $item.drop.dropping }}<input type="checkbox" onclick="checkboxhighlight(this);" title="$item.drop.select" class="item-select" name="itemselected[]" value="$item.id" />{{ endif }}
<!--<div class="wall-item-delete-end"></div>-->
</div>
</div>
<!--<div class="wall-item-wrapper-end"></div>-->
<div class="wall-item-like $item.indent" id="wall-item-like-$item.id">$item.like</div>
<div class="wall-item-dislike $item.indent" id="wall-item-dislike-$item.id">$item.dislike</div>
{{ if $item.threaded }}
{{ if $item.comment }}
<!--<div class="wall-item-comment-wrapper $item.indent" >-->
$item.comment
<!--</div>-->
{{ endif }}
{{ endif }}
<!--<div class="wall-item-outside-wrapper-end $item.indent" ></div>-->
<!--</div>-->
{{ for $item.children as $item }}
{{ inc $item.template }}{{ endinc }}
{{ endfor }}
{{ if $item.flatten }}
<!--<div class="wall-item-comment-wrapper" >-->
$item.comment
<!--</div>-->
{{ endif }}
</div>

View file

@ -1,6 +1,6 @@
<a name="$item.id" ></a>
<!--<div class="wall-item-outside-wrapper$item.indent$item.previewing wallwall" id="wall-item-outside-wrapper-$item.id" >-->
<div class="wall-item-content-wrapper$item.indent" id="wall-item-content-wrapper-$item.id" >
<!--<div class="wall-item-outside-wrapper $item.indent$item.previewing wallwall" id="wall-item-outside-wrapper-$item.id" >-->
<div class="wall-item-content-wrapper $item.indent" id="wall-item-content-wrapper-$item.id" >
<div class="wall-item-info wallwall" id="wall-item-info-$item.id">
<div class="wall-item-photo-wrapper wwto" id="wall-item-ownerphoto-wrapper-$item.id" >
<a href="$item.owner_url" target="redir" title="$item.olinktitle" class="wall-item-photo-link" id="wall-item-ownerphoto-link-$item.id">
@ -68,7 +68,7 @@
{{ endif }}
<!--<div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$item.id" >-->
{{ if $item.drop.dropping }}<a href="item/drop/$item.id" onclick="return confirmDelete();" class="wall-item-delete-wrapper icon drophide" title="$item.drop.delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{ endif }}
{{ if $item.drop.dropping }}<a href="item/drop/$item.id" onclick="return confirmDelete();" class="wall-item-delete-wrapper icon drophide" title="$item.drop.delete" id="wall-item-delete-wrapper-$item.id" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{ endif }}
<!--</div>-->
{{ if $item.drop.dropping }}<input type="checkbox" onclick="checkboxhighlight(this);" title="$item.drop.select" class="item-select" name="itemselected[]" value="$item.id" />{{ endif }}
<!--<div class="wall-item-delete-end"></div>-->
@ -82,6 +82,6 @@
$item.comment
<!--</div>-->
<!--<div class="wall-item-outside-wrapper-end$item.indent" ></div>-->
<!--<div class="wall-item-outside-wrapper-end $item.indent" ></div>-->
<!--</div>-->

View file

@ -0,0 +1,109 @@
{{if $item.comment_firstcollapsed}}
<div class="hide-comments-outer">
<span id="hide-comments-total-$item.id" class="hide-comments-total">$item.num_comments</span> <span id="hide-comments-$item.id" class="hide-comments fakelink" onclick="showHideComments($item.id);">$item.hide_text</span>
</div>
<div id="collapsed-comments-$item.id" class="collapsed-comments" style="display: none;">
{{endif}}
{{if $item.comment_lastcollapsed}}</div>{{endif}}
<div id="tread-wrapper-$item.id" class="tread-wrapper $item.toplevel">
<a name="$item.id" ></a>
<!--<div class="wall-item-outside-wrapper $item.indent$item.previewing wallwall" id="wall-item-outside-wrapper-$item.id" >-->
<div class="wall-item-content-wrapper $item.indent" id="wall-item-content-wrapper-$item.id" >
<div class="wall-item-info wallwall" id="wall-item-info-$item.id">
<div class="wall-item-photo-wrapper wwto" id="wall-item-ownerphoto-wrapper-$item.id" >
<a href="$item.owner_url" target="redir" title="$item.olinktitle" class="wall-item-photo-link" id="wall-item-ownerphoto-link-$item.id">
<img src="$item.owner_photo" class="wall-item-photo$item.osparkle" id="wall-item-ownerphoto-$item.id" style="height: 80px; width: 80px;" alt="$item.owner_name" /></a>
</div>
<div class="wall-item-arrowphoto-wrapper" ><img src="images/larrow.gif" alt="$item.wall" /></div>
<!--<div class="wall-item-photo-wrapper wwfrom" id="wall-item-photo-wrapper-$item.id"
onmouseover="if (typeof t$item.id != 'undefined') clearTimeout(t$item.id); openMenu('wall-item-photo-menu-button-$item.id')"
onmouseout="t$item.id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$item.id\'); closeMenu(\'wall-item-photo-menu-$item.id\');',200)">-->
<div class="wall-item-photo-wrapper wwfrom" id="wall-item-photo-wrapper-$item.id">
<a href="$item.profile_url" target="redir" title="$item.linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$item.id">
<img src="$item.thumb" class="wall-item-photo$item.sparkle" id="wall-item-photo-$item.id" style="height: 80px; width: 80px;" alt="$item.name" /></a>
<!--<span onclick="openClose('wall-item-photo-menu-$item.id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$item.id">menu</span>
<div class="wall-item-photo-menu" id="wall-item-photo-menu-$item.id">
<ul class="wall-item-photo-menu" id="wall-item-photo-menu-$item.id">
$item.item_photo_menu
</ul>
</div>-->
</div>
<!--<div class="wall-item-photo-end"></div>-->
<div class="wall-item-wrapper" id="wall-item-wrapper-$item.id" >
{{ if $item.lock }}<!--<div class="wall-item-lock">--><img src="images/lock_icon.gif" class="wall-item-lock lockview" alt="$item.lock" onclick="lockview(event,$item.id);" /><!--</div>-->
{{ else }}<div class="wall-item-lock"></div>{{ endif }}
<div class="wall-item-location" id="wall-item-location-$item.id">$item.location</div>
</div>
</div>
<!--<div class="wall-item-author">-->
<a href="$item.profile_url" target="redir" title="$item.linktitle" class="wall-item-name-link"><span class="wall-item-name$item.sparkle" id="wall-item-name-$item.id" >$item.name</span></a> $item.to <a href="$item.owner_url" target="redir" title="$item.olinktitle" class="wall-item-name-link"><span class="wall-item-name$item.osparkle" id="wall-item-ownername-$item.id">$item.owner_name</span></a> $item.vwall<br />
<div class="wall-item-ago" id="wall-item-ago-$item.id">$item.ago</div>
<!--</div>-->
<div class="wall-item-content" id="wall-item-content-$item.id" >
<div class="wall-item-title" id="wall-item-title-$item.id">$item.title</div>
<!--<div class="wall-item-title-end"></div>-->
<div class="wall-item-body" id="wall-item-body-$item.id" >$item.body
<!--<div class="body-tag">-->
{{ for $item.tags as $tag }}
<span class='body-tag tag'>$tag</span>
{{ endfor }}
<!--</div>-->
</div>
</div>
<div class="wall-item-tools" id="wall-item-tools-$item.id">
{{ if $item.vote }}
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$item.id">
<a href="#" class="icon like" title="$item.vote.like.0" onclick="dolike($item.id,'like'); return false"></a>
<a href="#" class="icon dislike" title="$item.vote.dislike.0" onclick="dolike($item.id,'dislike'); return false"></a>
{{ if $item.vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title="$item.vote.share.0" onclick="jotShare($item.id); return false"></a>{{ endif }}
<img id="like-rotator-$item.id" class="like-rotator" src="images/rotator.gif" alt="$item.wait" title="$item.wait" style="display: none;" />
</div>
{{ endif }}
{{ if $item.plink }}
<!--<div class="wall-item-links-wrapper">--><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="wall-item-links-wrapper icon remote-link$item.sparkle"></a><!--</div>-->
{{ endif }}
{{ if $item.edpost }}
<a class="editpost icon pencil" href="$item.edpost.0" title="$item.edpost.1"></a>
{{ endif }}
{{ if $item.star }}
<a href="#" id="starred-$item.id" onclick="dostar($item.id); return false;" class="star-item icon $item.isstarred" title="$item.star.toggle"></a>
<a href="#" id="tagger-$item.id" onclick="itemTag($item.id); return false;" class="tag-item icon tagged" title="$item.star.tagger"></a>
{{ endif }}
{{ if $item.filer }}
<a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.filer"></a>
{{ endif }}
<!--<div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$item.id" >-->
{{ if $item.drop.dropping }}<a href="item/drop/$item.id" onclick="return confirmDelete();" class="wall-item-delete-wrapper icon drophide" title="$item.drop.delete" id="wall-item-delete-wrapper-$item.id" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{ endif }}
<!--</div>-->
{{ if $item.drop.dropping }}<input type="checkbox" onclick="checkboxhighlight(this);" title="$item.drop.select" class="item-select" name="itemselected[]" value="$item.id" />{{ endif }}
<!--<div class="wall-item-delete-end"></div>-->
</div>
</div>
<!--<div class="wall-item-wrapper-end"></div>-->
<div class="wall-item-like $item.indent" id="wall-item-like-$item.id">$item.like</div>
<div class="wall-item-dislike $item.indent" id="wall-item-dislike-$item.id">$item.dislike</div>
{{ if $item.threaded }}
{{ if $item.comment }}
<!--<div class="wall-item-comment-wrapper $item.indent" >-->
$item.comment
<!--</div>-->
{{ endif }}
{{ endif }}
<!--<div class="wall-item-outside-wrapper-end $item.indent" ></div>-->
<!--</div>-->
{{ for $item.children as $item }}
{{ inc $item.template }}{{ endinc }}
{{ endfor }}
{{ if $item.flatten }}
<!--<div class="wall-item-comment-wrapper" >-->
$item.comment
<!--</div>-->
{{ endif }}
</div>