#8374: Addessing review comments
This commit is contained in:
parent
858904090e
commit
ab24c621b2
2 changed files with 59 additions and 66 deletions
|
@ -1,81 +1,74 @@
|
|||
$(document).ready(function(){
|
||||
handleNewWallItemBodies();
|
||||
handleNewWallItemBodies();
|
||||
|
||||
var mutationObserver = new MutationObserver(function(mutations) {
|
||||
handleNewWallItemBodies();
|
||||
});
|
||||
mutationObserver.observe($("#content")[0], { attributes: false, characterData: false, childList: true, subtree: true, attributeOldValue: false, characterDataOldValue: false });
|
||||
document.addEventListener("postprocess_liveupdate", function() {
|
||||
handleNewWallItemBodies();
|
||||
});
|
||||
});
|
||||
|
||||
function handleNewWallItemBodies() {
|
||||
$('.wall-item-body:not(.showmore-done)').each(function(i, el) {
|
||||
$(el).addClass('showmore-done');
|
||||
if ($(el).has('button.content-filter-button').length > 0) {
|
||||
$(el).removeClass('limitable');
|
||||
return;
|
||||
}
|
||||
$('.wall-item-body:not(.showmore-done)').each(function() {
|
||||
var $el = $(this);
|
||||
$el.addClass('showmore-done');
|
||||
if ($el.has('button.content-filter-button').length > 0) {
|
||||
$el.removeClass('limitable');
|
||||
return;
|
||||
}
|
||||
|
||||
var itemId = $(el).attr('id');
|
||||
addHeightToggleHandler(itemId);
|
||||
var limited = processHeightLimit(itemId);
|
||||
addHeightToggleHandler($el);
|
||||
var limited = processHeightLimit($el);
|
||||
|
||||
if (!limited) {
|
||||
var mutationObserver = new MutationObserver(function(mutations) {
|
||||
var limited = processHeightLimit(itemId);
|
||||
if (limited) {
|
||||
mutationObserver.disconnect()
|
||||
}
|
||||
});
|
||||
mutationObserver.observe(el, { attributes: true, characterData: true, childList: true, subtree: true, attributeOldValue: true, characterDataOldValue: true });
|
||||
if (!limited) {
|
||||
var mutationObserver = new MutationObserver(function(mutations) {
|
||||
var limited = processHeightLimit($el);
|
||||
if (limited) {
|
||||
mutationObserver.disconnect()
|
||||
}
|
||||
});
|
||||
mutationObserver.observe($el[0], { attributes: true, characterData: true, childList: true, subtree: true, attributeOldValue: true, characterDataOldValue: true });
|
||||
|
||||
$(el).imagesLoaded().then(function(){
|
||||
processHeightLimit(itemId);
|
||||
});
|
||||
}
|
||||
});
|
||||
$el.imagesLoaded().then(function(){
|
||||
processHeightLimit($el);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function addHeightToggleHandler(id) {
|
||||
var itemIdSel = "#" + id;
|
||||
var itemId = parseInt(id.replace("wall-item-body-", ""));
|
||||
$(itemIdSel).data("item-id", itemId);
|
||||
var wrapperId = "wall-item-body-wrapper-" + itemId;
|
||||
var wrapperIdSel = "#" + wrapperId;
|
||||
var toggleId = "wall-item-body-toggle-" + itemId;
|
||||
var toggleIdSel = "#" + toggleId;
|
||||
function addHeightToggleHandler($item) {
|
||||
var itemId = parseInt($item.attr("id").replace("wall-item-body-", ""));
|
||||
$item.data("item-id", itemId);
|
||||
var wrapperId = "wall-item-body-wrapper-" + itemId;
|
||||
var toggleId = "wall-item-body-toggle-" + itemId;
|
||||
|
||||
$(itemIdSel).wrap('<div id="' + wrapperId + '" class="wall-item-body-wrapper"></div>');
|
||||
$(wrapperIdSel).append('<div class="wall-item-body-toggle" data-item-id="' + itemId + '" id="' + toggleId + '" ><a href="javascript:void(0)" class="wall-item-body-toggle-text">Show more ...</a></div>');
|
||||
$(itemIdSel).addClass("limitable");
|
||||
$(itemIdSel).addClass("limit-height");
|
||||
$item.wrap('<div id="' + wrapperId + '" class="wall-item-body-wrapper"></div>');
|
||||
$("#" + wrapperId).append('<div class="wall-item-body-toggle" data-item-id="' + itemId + '" id="' + toggleId + '" ><a href="javascript:void(0)" class="wall-item-body-toggle-text">Show more ...</a></div>');
|
||||
$item.addClass("limitable limit-height");
|
||||
|
||||
$(toggleIdSel).show();
|
||||
$(toggleIdSel).click(function(el) {
|
||||
$(itemIdSel).toggleClass("limit-height");
|
||||
$(this).hide();
|
||||
$(itemIdSel).removeClass("limitable");
|
||||
});
|
||||
var $toggle = $("#" + toggleId);
|
||||
$toggle.show();
|
||||
$toggle.click(function(el) {
|
||||
$item.toggleClass("limit-height");
|
||||
$(this).hide();
|
||||
$item.removeClass("limitable");
|
||||
});
|
||||
}
|
||||
|
||||
function processHeightLimit(id) {
|
||||
var idSel = "#" + id;
|
||||
|
||||
if (!$(idSel).hasClass("limitable")) {
|
||||
return false;
|
||||
function processHeightLimit($item) {
|
||||
if (!$item.hasClass("limitable")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
var itemId = $(idSel).data("item-id");
|
||||
var toggleSelector = "#wall-item-body-toggle-" + itemId;
|
||||
if ($(idSel).height() < 250) {
|
||||
$(idSel).removeClass("limit-height");
|
||||
$(toggleSelector).hide();
|
||||
return false;
|
||||
} else {
|
||||
$(idSel).addClass("limit-height");
|
||||
$(toggleSelector).show();
|
||||
return true;
|
||||
}
|
||||
var itemId = $item.data("item-id");
|
||||
var $toggle = $("#wall-item-body-toggle-" + itemId);
|
||||
if ($item.height() < 250) {
|
||||
$item.removeClass("limit-height");
|
||||
$toggle.hide();
|
||||
return false;
|
||||
} else {
|
||||
$item.addClass("limit-height");
|
||||
$toggle.show();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -13,22 +13,22 @@ use Friendica\DI;
|
|||
|
||||
function showmore_dyn_install() {
|
||||
Hook::register('head' , __FILE__, 'showmore_dyn_head');
|
||||
Hook::register('footer', __FILE__, 'showmore_dyn_footer');
|
||||
Hook::register('footer', __FILE__, 'showmore_dyn_footer');
|
||||
}
|
||||
|
||||
function showmore_dyn_uninstall()
|
||||
{
|
||||
Hook::unregister('head' , __FILE__, 'showmore_dyn_head');
|
||||
Hook::unregister('footer', __FILE__, 'showmore_dyn_footer');
|
||||
Hook::unregister('footer', __FILE__, 'showmore_dyn_footer');
|
||||
}
|
||||
|
||||
function showmore_dyn_head(App $a, &$b)
|
||||
{
|
||||
DI::page()->registerStylesheet(__DIR__ . '/showmore_dyn.css');
|
||||
DI::page()->registerStylesheet(__DIR__ . '/showmore_dyn.css');
|
||||
}
|
||||
|
||||
function showmore_dyn_footer(App $a, &$b)
|
||||
{
|
||||
DI::page()->registerFooterScript(__DIR__ . '/showmore_dyn.js');
|
||||
DI::page()->registerFooterScript(__DIR__ . '/showmore_dyn.js');
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue