aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--index.php67
-rw-r--r--tpl/default/js/shaarli.js6
2 files changed, 44 insertions, 29 deletions
diff --git a/index.php b/index.php
index e0a7b416..07470a08 100644
--- a/index.php
+++ b/index.php
@@ -583,20 +583,29 @@ function showDailyRSS($conf) {
583 */ 583 */
584function showDaily($pageBuilder, $LINKSDB, $conf, $pluginManager) 584function 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 }