diff options
-rw-r--r-- | index.php | 67 | ||||
-rw-r--r-- | tpl/default/js/shaarli.js | 6 |
2 files changed, 44 insertions, 29 deletions
@@ -583,20 +583,29 @@ function showDailyRSS($conf) { | |||
583 | */ | 583 | */ |
584 | function showDaily($pageBuilder, $LINKSDB, $conf, $pluginManager) | 584 | function showDaily($pageBuilder, $LINKSDB, $conf, $pluginManager) |
585 | { | 585 | { |
586 | $day=date('Ymd',strtotime('-1 day')); // Yesterday, in format YYYYMMDD. | 586 | $day = date('Ymd', strtotime('-1 day')); // Yesterday, in format YYYYMMDD. |
587 | if (isset($_GET['day'])) $day=$_GET['day']; | 587 | if (isset($_GET['day'])) { |
588 | $day = $_GET['day']; | ||
589 | } | ||
588 | 590 | ||
589 | $days = $LINKSDB->days(); | 591 | $days = $LINKSDB->days(); |
590 | $i = array_search($day,$days); | 592 | $i = array_search($day, $days); |
591 | if ($i===false) { $i=count($days)-1; $day=$days[$i]; } | 593 | if ($i === false && count($days)) { |
592 | $previousday=''; | 594 | // no links for day, but at least one day with links |
593 | $nextday=''; | 595 | $i = count($days) - 1; |
594 | if ($i!==false) | 596 | $day = $days[$i]; |
595 | { | ||
596 | if ($i>=1) $previousday=$days[$i-1]; | ||
597 | if ($i<count($days)-1) $nextday=$days[$i+1]; | ||
598 | } | 597 | } |
598 | $previousday = ''; | ||
599 | $nextday = ''; | ||
599 | 600 | ||
601 | if ($i !== false) { | ||
602 | if ($i >= 1) { | ||
603 | $previousday=$days[$i - 1]; | ||
604 | } | ||
605 | if ($i < count($days) - 1) { | ||
606 | $nextday = $days[$i + 1]; | ||
607 | } | ||
608 | } | ||
600 | try { | 609 | try { |
601 | $linksToDisplay = $LINKSDB->filterDay($day); | 610 | $linksToDisplay = $LINKSDB->filterDay($day); |
602 | } catch (Exception $exc) { | 611 | } catch (Exception $exc) { |
@@ -605,9 +614,7 @@ function showDaily($pageBuilder, $LINKSDB, $conf, $pluginManager) | |||
605 | } | 614 | } |
606 | 615 | ||
607 | // We pre-format some fields for proper output. | 616 | // We pre-format some fields for proper output. |
608 | foreach($linksToDisplay as $key=>$link) | 617 | foreach($linksToDisplay as $key => $link) { |
609 | { | ||
610 | |||
611 | $taglist = explode(' ',$link['tags']); | 618 | $taglist = explode(' ',$link['tags']); |
612 | uasort($taglist, 'strcasecmp'); | 619 | uasort($taglist, 'strcasecmp'); |
613 | $linksToDisplay[$key]['taglist']=$taglist; | 620 | $linksToDisplay[$key]['taglist']=$taglist; |
@@ -621,21 +628,22 @@ function showDaily($pageBuilder, $LINKSDB, $conf, $pluginManager) | |||
621 | so I manually spread entries with a simple method: I roughly evaluate the | 628 | so I manually spread entries with a simple method: I roughly evaluate the |
622 | height of a div according to title and description length. | 629 | height of a div according to title and description length. |
623 | */ | 630 | */ |
624 | $columns=array(array(),array(),array()); // Entries to display, for each column. | 631 | $columns = array(array(), array(), array()); // Entries to display, for each column. |
625 | $fill=array(0,0,0); // Rough estimate of columns fill. | 632 | $fill = array(0, 0, 0); // Rough estimate of columns fill. |
626 | foreach($linksToDisplay as $key=>$link) | 633 | foreach($linksToDisplay as $key => $link) { |
627 | { | ||
628 | // Roughly estimate length of entry (by counting characters) | 634 | // Roughly estimate length of entry (by counting characters) |
629 | // Title: 30 chars = 1 line. 1 line is 30 pixels height. | 635 | // Title: 30 chars = 1 line. 1 line is 30 pixels height. |
630 | // Description: 836 characters gives roughly 342 pixel height. | 636 | // Description: 836 characters gives roughly 342 pixel height. |
631 | // This is not perfect, but it's usually OK. | 637 | // This is not perfect, but it's usually OK. |
632 | $length=strlen($link['title'])+(342*strlen($link['description']))/836; | 638 | $length = strlen($link['title']) + (342 * strlen($link['description'])) / 836; |
633 | if ($link['thumbnail']) $length +=100; // 1 thumbnails roughly takes 100 pixels height. | 639 | if ($link['thumbnail']) { |
640 | $length += 100; // 1 thumbnails roughly takes 100 pixels height. | ||
641 | } | ||
634 | // Then put in column which is the less filled: | 642 | // Then put in column which is the less filled: |
635 | $smallest=min($fill); // find smallest value in array. | 643 | $smallest = min($fill); // find smallest value in array. |
636 | $index=array_search($smallest,$fill); // find index of this smallest value. | 644 | $index = array_search($smallest, $fill); // find index of this smallest value. |
637 | array_push($columns[$index],$link); // Put entry in this column. | 645 | array_push($columns[$index], $link); // Put entry in this column. |
638 | $fill[$index]+=$length; | 646 | $fill[$index] += $length; |
639 | } | 647 | } |
640 | 648 | ||
641 | $dayDate = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $day.'_000000'); | 649 | $dayDate = DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, $day.'_000000'); |
@@ -1322,10 +1330,17 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history) | |||
1322 | die('Wrong token.'); | 1330 | die('Wrong token.'); |
1323 | } | 1331 | } |
1324 | 1332 | ||
1325 | if (strpos($_GET['lf_linkdate'], ' ') !== false) { | 1333 | $ids = trim($_GET['lf_linkdate']); |
1326 | $ids = array_values(array_filter(preg_split('/\s+/', escape($_GET['lf_linkdate'])))); | 1334 | if (strpos($ids, ' ') !== false) { |
1335 | // multiple, space-separated ids provided | ||
1336 | $ids = array_values(array_filter(preg_split('/\s+/', escape($ids)))); | ||
1327 | } else { | 1337 | } else { |
1328 | $ids = [$_GET['lf_linkdate']]; | 1338 | // only a single id provided |
1339 | $ids = [$ids]; | ||
1340 | } | ||
1341 | // assert at least one id is given | ||
1342 | if(!count($ids)){ | ||
1343 | die('no id provided'); | ||
1329 | } | 1344 | } |
1330 | foreach ($ids as $id) { | 1345 | foreach ($ids as $id) { |
1331 | $id = (int) escape($id); | 1346 | $id = (int) escape($id); |
diff --git a/tpl/default/js/shaarli.js b/tpl/default/js/shaarli.js index 4f49affa..f38ba62f 100644 --- a/tpl/default/js/shaarli.js +++ b/tpl/default/js/shaarli.js | |||
@@ -401,14 +401,14 @@ window.onload = function () { | |||
401 | 401 | ||
402 | var message = 'Are you sure you want to delete '+ links.length +' links?\n'; | 402 | var message = 'Are you sure you want to delete '+ links.length +' links?\n'; |
403 | message += 'This action is IRREVERSIBLE!\n\nTitles:\n'; | 403 | message += 'This action is IRREVERSIBLE!\n\nTitles:\n'; |
404 | var ids = ''; | 404 | var ids = []; |
405 | links.forEach(function(item) { | 405 | links.forEach(function(item) { |
406 | message += ' - '+ item['title'] +'\n'; | 406 | message += ' - '+ item['title'] +'\n'; |
407 | ids += item['id'] +'+'; | 407 | ids.push(item['id']); |
408 | }); | 408 | }); |
409 | 409 | ||
410 | if (window.confirm(message)) { | 410 | if (window.confirm(message)) { |
411 | window.location = '?delete_link&lf_linkdate='+ ids +'&token='+ token.value; | 411 | window.location = '?delete_link&lf_linkdate='+ ids.join('+') +'&token='+ token.value; |
412 | } | 412 | } |
413 | }); | 413 | }); |
414 | } | 414 | } |