mirror of
https://github.com/friendica/friendica
synced 2024-12-23 03:20:15 +00:00
Infinite scroll: At the end of the network page new content is loaded automatically
This commit is contained in:
parent
59b64ece25
commit
693b6d0fd4
3 changed files with 93 additions and 10 deletions
79
index.php
79
index.php
|
@ -108,6 +108,7 @@ if((x($_GET,'zrl')) && (!$install && !$maintenance)) {
|
||||||
*
|
*
|
||||||
* What we really need to do is output the raw headers ourselves so we can keep them separate.
|
* What we really need to do is output the raw headers ourselves so we can keep them separate.
|
||||||
*
|
*
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// header('Link: <' . $a->get_baseurl() . '/amcd>; rel="acct-mgmt";');
|
// header('Link: <' . $a->get_baseurl() . '/amcd>; rel="acct-mgmt";');
|
||||||
|
@ -118,7 +119,6 @@ if((x($_SESSION,'authenticated')) || (x($_POST,'auth-params')) || ($a->module ==
|
||||||
if(! x($_SESSION,'authenticated'))
|
if(! x($_SESSION,'authenticated'))
|
||||||
header('X-Account-Management-Status: none');
|
header('X-Account-Management-Status: none');
|
||||||
|
|
||||||
|
|
||||||
/* set up page['htmlhead'] and page['end'] for the modules to use */
|
/* set up page['htmlhead'] and page['end'] for the modules to use */
|
||||||
$a->page['htmlhead'] = '';
|
$a->page['htmlhead'] = '';
|
||||||
$a->page['end'] = '';
|
$a->page['end'] = '';
|
||||||
|
@ -428,6 +428,83 @@ else
|
||||||
$a->page['htmlhead'] = str_replace('{{$stylesheet}}',$stylesheet,$a->page['htmlhead']);
|
$a->page['htmlhead'] = str_replace('{{$stylesheet}}',$stylesheet,$a->page['htmlhead']);
|
||||||
//$a->page['htmlhead'] = replace_macros($a->page['htmlhead'], array('$stylesheet' => $stylesheet));
|
//$a->page['htmlhead'] = replace_macros($a->page['htmlhead'], array('$stylesheet' => $stylesheet));
|
||||||
|
|
||||||
|
if ($_GET["mode"] == "raw") {
|
||||||
|
$doc = new DOMDocument();
|
||||||
|
|
||||||
|
$target = new DOMDocument();
|
||||||
|
$target->loadXML("<root></root>");
|
||||||
|
|
||||||
|
$content = mb_convert_encoding($a->page["content"], 'HTML-ENTITIES', "UTF-8");
|
||||||
|
|
||||||
|
@$doc->loadHTML($content);
|
||||||
|
|
||||||
|
$xpath = new DomXPath($doc);
|
||||||
|
|
||||||
|
$list = $xpath->query("//*[contains(@id,'tread-wrapper-')]"); /* */
|
||||||
|
|
||||||
|
foreach ($list as $item) {
|
||||||
|
|
||||||
|
$item = $target->importNode($item, true);
|
||||||
|
|
||||||
|
// And then append it to the target
|
||||||
|
$target->documentElement->appendChild($item);
|
||||||
|
}
|
||||||
|
|
||||||
|
header("Content-type: text/html; charset=utf-8");
|
||||||
|
|
||||||
|
echo substr($target->saveHTML(), 6, -8);
|
||||||
|
|
||||||
|
session_write_close();
|
||||||
|
exit;
|
||||||
|
|
||||||
|
} elseif (get_pconfig(local_user(),'system','infinite_scroll') AND ($_GET["q"] == "network")) {
|
||||||
|
if (is_string($_GET["page"]))
|
||||||
|
$pageno = $_GET["page"];
|
||||||
|
else
|
||||||
|
$pageno = 1;
|
||||||
|
|
||||||
|
$reload_uri = "";
|
||||||
|
|
||||||
|
foreach ($_GET AS $param => $value)
|
||||||
|
if (($param != "page") AND ($param != "q"))
|
||||||
|
$reload_uri .= "&".$param."=".$value;
|
||||||
|
|
||||||
|
$a->page['htmlhead'] .= <<< EOT
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
num = $pageno;
|
||||||
|
});
|
||||||
|
|
||||||
|
function loadcontent() {
|
||||||
|
//$("div.loader").show();
|
||||||
|
|
||||||
|
num+=1;
|
||||||
|
|
||||||
|
console.log('Loading page ' + num);
|
||||||
|
|
||||||
|
$.get('/network?mode=raw$reload_uri&page=' + num, function(data) {
|
||||||
|
$(data).insertBefore('#conversation-end');
|
||||||
|
});
|
||||||
|
|
||||||
|
//$("div.loader").fadeOut('normal');
|
||||||
|
}
|
||||||
|
|
||||||
|
var num = $pageno;
|
||||||
|
|
||||||
|
$(window).scroll(function(e){
|
||||||
|
|
||||||
|
//if ($(window).scrollTop() == $(document).height() - $(window).height()){
|
||||||
|
if ($(window).scrollTop() > $("section").height() - $(window).height()){
|
||||||
|
loadcontent();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
EOT;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
$page = $a->page;
|
$page = $a->page;
|
||||||
$profile = $a->profile;
|
$profile = $a->profile;
|
||||||
|
|
||||||
|
|
|
@ -260,6 +260,7 @@ function settings_post(&$a) {
|
||||||
$theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme'])) : $a->user['theme']);
|
$theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme'])) : $a->user['theme']);
|
||||||
$mobile_theme = ((x($_POST,'mobile_theme')) ? notags(trim($_POST['mobile_theme'])) : '');
|
$mobile_theme = ((x($_POST,'mobile_theme')) ? notags(trim($_POST['mobile_theme'])) : '');
|
||||||
$nosmile = ((x($_POST,'nosmile')) ? intval($_POST['nosmile']) : 0);
|
$nosmile = ((x($_POST,'nosmile')) ? intval($_POST['nosmile']) : 0);
|
||||||
|
$infinite_scroll = ((x($_POST,'infinite_scroll')) ? intval($_POST['infinite_scroll']) : 0);
|
||||||
$browser_update = ((x($_POST,'browser_update')) ? intval($_POST['browser_update']) : 0);
|
$browser_update = ((x($_POST,'browser_update')) ? intval($_POST['browser_update']) : 0);
|
||||||
$browser_update = $browser_update * 1000;
|
$browser_update = $browser_update * 1000;
|
||||||
if($browser_update < 10000)
|
if($browser_update < 10000)
|
||||||
|
@ -281,6 +282,7 @@ function settings_post(&$a) {
|
||||||
set_pconfig(local_user(),'system','itemspage_network', $itemspage_network);
|
set_pconfig(local_user(),'system','itemspage_network', $itemspage_network);
|
||||||
set_pconfig(local_user(),'system','itemspage_mobile_network', $itemspage_mobile_network);
|
set_pconfig(local_user(),'system','itemspage_mobile_network', $itemspage_mobile_network);
|
||||||
set_pconfig(local_user(),'system','no_smilies',$nosmile);
|
set_pconfig(local_user(),'system','no_smilies',$nosmile);
|
||||||
|
set_pconfig(local_user(),'system','infinite_scroll',$infinite_scroll);
|
||||||
|
|
||||||
|
|
||||||
if ($theme == $a->user['theme']){
|
if ($theme == $a->user['theme']){
|
||||||
|
@ -828,6 +830,8 @@ function settings_content(&$a) {
|
||||||
$nosmile = get_pconfig(local_user(),'system','no_smilies');
|
$nosmile = get_pconfig(local_user(),'system','no_smilies');
|
||||||
$nosmile = (($nosmile===false)? '0': $nosmile); // default if not set: 0
|
$nosmile = (($nosmile===false)? '0': $nosmile); // default if not set: 0
|
||||||
|
|
||||||
|
$infinite_scroll = get_pconfig(local_user(),'system','infinite_scroll');
|
||||||
|
$infinite_scroll = (($infinite_scroll===false)? '0': $infinite_scroll); // default if not set: 0
|
||||||
|
|
||||||
$theme_config = "";
|
$theme_config = "";
|
||||||
if( ($themeconfigfile = get_theme_config_file($theme_selected)) != null){
|
if( ($themeconfigfile = get_theme_config_file($theme_selected)) != null){
|
||||||
|
@ -849,6 +853,7 @@ function settings_content(&$a) {
|
||||||
'$itemspage_network' => array('itemspage_network', t("Number of items to display per page:"), $itemspage_network, t('Maximum of 100 items')),
|
'$itemspage_network' => array('itemspage_network', t("Number of items to display per page:"), $itemspage_network, t('Maximum of 100 items')),
|
||||||
'$itemspage_mobile_network' => array('itemspage_mobile_network', t("Number of items to display per page when viewed from mobile device:"), $itemspage_mobile_network, t('Maximum of 100 items')),
|
'$itemspage_mobile_network' => array('itemspage_mobile_network', t("Number of items to display per page when viewed from mobile device:"), $itemspage_mobile_network, t('Maximum of 100 items')),
|
||||||
'$nosmile' => array('nosmile', t("Don't show emoticons"), $nosmile, ''),
|
'$nosmile' => array('nosmile', t("Don't show emoticons"), $nosmile, ''),
|
||||||
|
'$infinite_scroll' => array('infinite_scroll', t("Infinite scroll"), $infinite_scroll, ''),
|
||||||
|
|
||||||
'$theme_config' => $theme_config,
|
'$theme_config' => $theme_config,
|
||||||
));
|
));
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
{{include file="field_input.tpl" field=$itemspage_mobile_network}}
|
{{include file="field_input.tpl" field=$itemspage_mobile_network}}
|
||||||
{{include file="field_input.tpl" field=$ajaxint}}
|
{{include file="field_input.tpl" field=$ajaxint}}
|
||||||
{{include file="field_checkbox.tpl" field=$nosmile}}
|
{{include file="field_checkbox.tpl" field=$nosmile}}
|
||||||
|
{{include file="field_checkbox.tpl" field=$infinite_scroll}}
|
||||||
|
|
||||||
|
|
||||||
<div class="settings-submit-wrapper" >
|
<div class="settings-submit-wrapper" >
|
||||||
|
|
Loading…
Reference in a new issue