nieuws: inline code to format article overviews
[minimedit.git] / nieuws.php
index 6bf66160fa594a6c56d24da89b3eaf93a176adc0..251443842cd67d20105c0af95898bfdb631faeca 100644 (file)
@@ -1,4 +1,75 @@
 <?php
 include_once 'nieuws.inc.php';
-$articles = (ltrim($Args, '/') ?: 'nieuws') . '/????';
+
+if (!function_exists('shownews')) {
+function shownews($input, $limit = 1000)
+{
+       if (!is_array($input)) $input = glob("$input/*.html");
+       foreach (array_reverse($input) as $filename) {
+               $article = new ArchiveArticle($filename);
+               print '<article class="left">';
+               if ($article->thumb) {
+                       $imgattr = ' class="left"';
+                       if (preg_match('{ (\s alt="[^"]+") }x', $article->img, $img)) {
+                               $imgattr .= $img[0];  # preserve alt value
+                       }
+                       printf('<img src="/%s"%s />', $article->thumb, $imgattr);
+               }
+               print '<div>';
+               printf(
+                       '<h3><a href="/%s">%s <small class="date">%s</small></a></h3>',
+                       $article->link, $article->title, $article->date
+               );
+               print $article->body;
+               print '</div>';
+               print "</article>\n\n";
+
+               if (--$limit <= 0) break;
+       }
+}
+
+function printtoc($input, $class = FALSE)
+{
+       if (!is_array($input)) $input = glob("$input/*.html");
+       print '<ul';
+       if ($class) printf(' class="%s"', $class);
+       print '>';
+       foreach (array_reverse($input) as $page) {
+               $article = new ArchiveArticle($page);
+               $html = $article->safetitle;
+               $dateparts = $article->dateparts;
+               if ($class) {
+                       $dateparts[0] = NULL;  # omit year
+               }
+               $html .= sprintf(' <small class="date">%s</small>', showdate($dateparts));
+               if ($class == 'gallery' and $article->img) {
+                       $html = "<div>$html</div>";
+                       $html = sprintf('<img src="%s" />', $article->thumb(200)) . $html;
+               }
+               $html = sprintf('<a href="/%s">%s</a>', $article->link, $html);
+               print "<li><article>$html</article></li>\n";
+       }
+       print "</ul>\n";
+}
+}
+
+$articles = (ltrim($Args, '/') ?: 'nieuws');
+if (strpos($articles, '/') === FALSE) {
+       if (@$Place['view'] === 'toc') {
+               foreach (array_reverse(glob("$articles/2???")) as $page) {
+                       $year = basename($page, '.html');
+                       printf('<h3><a href="/%s">%s</a></h3>'."\n", $page, $year);
+                       printtoc($page, 'gallery');
+               }
+               return;
+       }
+       $articles .= '/????';
+}
+
+if (@$Place['view'] === 'toc') {
+       printtoc($articles);
+       return;
+}
+ob_start();
 shownews($articles, @$Place['n'] ?: 5);
+print getoutput();