Changeset 649 in t29-www for lib


Ignore:
Timestamp:
Aug 28, 2014, 3:40:34 PM (10 years ago)
Author:
sven
Message:

RSS-Feed-Probebetrieb ausgeweitet: Internationalisiert, fuer englische Version gibts jetzt auch einen RSS-Feed.

Insbesondere ist in auf englischen Newsseite jetzt testweise ein alternatives Format zum Deutschen geschaltet, auf welches das Deutsche dann auch umgeschaltet werden soll. Es bedarf weniger Pflege und generiert gleichzeitig die Newsseite, das Newsmenü und den abonnierbaren News-Feed. Wenn sich das Format bewährt, kann die deutsche Newsseite darauf auch umgestellt werden.

Ferner wurden die RSS-Feeds auf den News-Seiten textuell erwähnt. Testweise werden auch im englischen Menü wieder Vorschaubilder (Thumbnails) bei den Neuigkeiten eingeblendet, die allerdings derzeit nur auf max 64x64px verkleinerte Einblendungen der entsprechenden News-Bilder sind. Hierfür fehlt noch eine sinnvollere Methode.

Location:
lib
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • lib/host.php

    r561 r649  
    4949        /// This value is computed by setup().
    5050        public $script_filename;
     51
     52        /// $slash_filename: Cross-platform $script_filename, always starting with a "/".
     53        public $slash_filename;
    5154
    5255        /// $ressources: CSS and JavaScript file paths ("Assets"), as used by the RessourceLoader,
     
    229232                   
    230233                $this->script_filename = substr(realpath($_SERVER['SCRIPT_FILENAME']), strlen($this->document_root)); # e.g.: "/de/page.php"
     234
     235                # Bug when DOCUMENT_ROOT ends with trailing slash: make sure $file begins with /:
     236                $this->slash_filename = $this->script_filename;
     237                if($this->slash_filename{0} != '/') $this->slash_filename = '/'.$this->slash_filename;
    231238               
    232239                // Windows realpath() converts Unix Paths ($_SERVER) to Windows Paths (like \en\index.php).
  • lib/menu.php

    r569 r649  
    7373                require_once $this->conf['lib'].'/spyc.php';
    7474                $data = Spyc::YAMLLoad($this->load_news_data());
    75                 $fields = array('titel', 'text', 'link', /*'bild'*/);
     75                $fields = array('datum', 'titel',/* 'untertitel', 'bild'*/);
    7676
    7777                $news_ul_content = '';
     
    8080                                        function($a,$b){ return $a && $b;}, true)) {
    8181                                $li = "<li><a href='#'>Fehler in Formatierung!<em>Dieser Menüeintrag ist falsch formatiert</em></a></li>";
    82                                 $this->log->WARN("<h5>Neuigkeiten-Menü: Fehler in Formatierung</h5><p>Ein Eintrag im Neuigkeiten-Menü ist falsch formatiert.");
     82                                $this->log->WARN("<h5>Neuigkeiten-Menü: Fehler in Formatierung</h5><p>Ein Eintrag im Neuigkeiten-Menü ist falsch formatiert. Ich erwarte zu jedem Menüeintrag die Felder ".implode(", ", $fields).". Eine der Angaben fehlt oder ist fehlerhaft formatiert: <pre>".var_export($e, true)."</pre>");
    8383                        } else {
    84                                 $url = ($e['link']{0} == '#' ? $this->conf['lang_path'].'/'.self::news_file : '').$e['link'];
     84                                // Ehemals konnte die URL per "link: #August_2013" angegeben werden oder "link: /de/irgendwohin".
     85                                // $url = ($e['link']{0} == '#' ? $this->conf['lang_path'].'/'.self::news_file : '').$e['link'];
     86                                // Jetzt wird die URL automatisch aus dem Datum gebaut (slugify-artig)
     87                                $url = $this->conf['lang_path'].'/'.self::news_file.'#'.str_replace(' ', '_', $e['datum']);
    8588                                if($host)
    8689                                        $url = $host->rewrite_link($url);
    87                                 $li = "<li><a href='$url'>$e[titel]<span class='hidden'>: </span><em>$e[text]</em></a></li>";
     90
     91                                // optionales Feld: Untertitel
     92                                if(!isset($e['untertitel'])) $e['untertitel'] = '';
     93
     94                                // weiteres optionales Feld: Bildeinbindung
     95                                $img = !isset($e['bild']) ? '' : "<img src='$e[bild]' style='max-width:64px; max-height:64px;'>";
     96                                $li = "<li><a href='$url'>$img$e[titel]<span class='hidden'>: </span><em>$e[untertitel]</em></a></li>";
    8897                        }
    8998                        $news_ul_content .= "\t".$li."\n";
  • lib/messages.php

    r585 r649  
    172172                'js-interlang-notify-heading' => array("This page is also avaliable in English", "Diese Website gibt es auch auf Deutsch"),
    173173                'js-interlang-notify-text' => array("Do you want to switch to the English version <i>%s</i>?", "Möchtest du die deutschsprachige Seite <i>%s</i> lesen?"),
     174
     175                // RSS-feed, in /lib/news.php verwendet
     176                'rss-title' => array('technikum29 Computer Museum - Was gibt es Neues?','technikum29 Computer Museum - What\'s new?'),
     177                'rss-description' => array('Neuste Geräte und Erweiterungen im technikum29-Computermuseum', 'The latest devices and news from the technikum29 computer museum'),
     178                'rss-copyright' => array('Heribert Müller und das technikum29-Team', 'Heribert Müller and the technikum29 team'),
     179               
    174180        );
    175181}
  • lib/news.php

    r644 r649  
    2323$required_fields = array('titel', 'text', 'link', /*'bild'*/);
    2424
     25# Hack, um die Sprache zu bekommen, von technikum29.php kopiert.
     26require "$lib/host.php";
     27$host = t29Host::detect();
     28$file = $host->slash_filename; # e.g.: "/de/page.php"
     29if(!isset($lang)) $lang = substr($file, 1, 2);
     30if(!in_array($lang, array('de','en'))) $lang = "de"; # check if language exists
     31
     32require $lib.'/messages.php';
     33$msg = new t29Messages($lang);
     34$p = $msg->get_shorthand_printer();
     35
    2536# und hostname davor.
    2637# $this->conf['lang_path'].'/'.self::news_file
    27 $news_url = "http://www.technikum29.de/de/news";
     38$news_url = "http://www.technikum29.de/$lang/news";
    2839# if($host)     $url = $host->rewrite_link($url);
    2940
     
    3546<rss
    3647   xmlns:atom="http://www.w3.org/2005/Atom"
    37    xml:lang="de-DE"
     48   xml:lang="<?php print $lang; ?>"
    3849   version="2.0">
    3950    <channel>
    40         <title>technikum29 Computer Museum - Was gibt es Neues?</title>
     51        <title><?php $p('rss-title'); ?></title>
    4152        <link>http://www.technikum29.de</link>
    42         <description>Neuste Geräte und Erweiterungen im technikum29-Computermuseum</description>
    43         <language>de-DE</language>
    44         <copyright>&#x2117; &amp; &#xA9; 2033-<?=date('Y'); ?> Heribert Müller und das technikum29-Team</copyright>
     53        <description><?php $p('rss-description'); ?></description>
     54        <language><?php print $lang; ?></language>
     55        <copyright>&#x2117; &amp; &#xA9; 2003-<?=date('Y'); ?> <?php $p('rss-copyright'); ?></copyright>
    4556        <pubDate><?=date('r', $pubdate); ?></pubDate>
    4657        <image>
    47                 <url>http://www.technikum29.de/shared/img-v6/banner.de.png</url>
     58                <url>http://www.technikum29.de/shared/img-v6/banner.<?php print $lang; ?>.png</url>
    4859                <title>technikum29 Computermuseum</title>
    4960                <link>http://www.technikum29.de/</link>
     
    5263        <!--<ttl><?=60*12; ?></ttl>--><!-- half a day -->
    5364       
    54         <atom:link href="http://www.technikum29.de/de/news.php?format=rss" rel="self" type="application/rss+xml" />     
     65        <atom:link href="http://www.technikum29.de/<?php print $lang; ?>/news.php?format=rss" rel="self" type="application/rss+xml" /> 
    5566       
    5667        <?php
    5768        foreach($data as $e) {
     69                // Kompatibilitaet im August 2014, Uebergangsphase
     70                if(!isset($e['text']) && isset($e['untertitel'])) $e['text'] = $e['untertitel'];
     71                if(!isset($e['link']) && isset($e['datum'])) $e['link'] = $news_url.'#'.str_replace(' ', '_', $e['datum']);
     72
    5873                if(!array_reduce(array_map(function($x) use ($required_fields,$e){ return isset($e[$x]); }, $required_fields),
    5974                                function($a,$b){ return $a && $b;}, true)) {
     
    6176                        <item>
    6277                                <title>Fehlformatierung</title>
    63                                 <description>Leider ist dieser Eintrag nicht richtig formatiert. Schauen Sie sich die News-Seite direkt an.</description>
     78                                <description><![CDATA[<html><body>
     79                                        <b>Leider ist dieser Eintrag nicht richtig formatiert</b>. Schauen Sie sich die News-Seite direkt an.
     80                                        <p><i>Details:</i></p>
     81                                        Eines der Fehler Felder <?php print implode(", ", $required_fields); ?> fehlt.
     82                                        Details: <pre><?php print var_dump($e); ?></pre>
     83                                </body></html>]]>
     84                                </description>
    6485                                <link>http://www.technikum29.de/de/news</link>
    6586                        </item>
     
    6990                        <item>
    7091                                <title><?=$e['titel']; ?></title>
    71                                 <description><?=$e['text']; ?></description>
     92                                <description><?php
     93                                        // if text contains tags like <em>, mark it as HTML
     94                                        if(strpos($e['text'], '<') !== false) { print '<![CDATA[<html><body>'; }
     95                                        print $e['text'];
     96                                        if(strpos($e['text'], '<') !== false) { print '</body></html>]]>'; } ?>
     97                                </description>
    7298                                <author>Heribert Müller</author>
    7399                                <?php
    74                                         $link =  ($e['link']{0} == '#' ? $news_url : '').$e['link'];
     100                                        if($e['link']{0} == '#') $link = $news_url . $e['link'];
     101                                        else if($e['link']{0} == '/') $link = 'http://www.technikum29.de' . $e['link'];
     102                                        else $link = $e['link'];
    75103                                ?>
    76104                                <link><?=$link; ?></link>
     
    89117// rss ausgegeben, jetzt: exit um nicht noch Seite auszugeben.
    90118exit();
    91 
    92119} else {
     120        // bin eingebunden von news-Seite
    93121        require("$lib/technikum29.php");
     122        // wichtig:
    94123        return true;
    95124}
     125
  • lib/technikum29.php

    r585 r649  
    2727require "$lib/host.php";
    2828$host = $external ? t29Host::create('t29ExternalHost') : t29Host::detect();
    29 
    30 $file = $host->script_filename; # e.g.: "/de/page.php"
    31 # Bug when DOCUMENT_ROOT ends with trailing slash: make sure $file begins with /:
    32 if($file{0} != '/') $file = "/$file";
     29$file = $host->slash_filename; # e.g.: "/de/page.php"
    3330
    3431// exactly define debugging behaviour
  • lib/template.php

    r618 r649  
    255255  <link rel="copyright" href="<?php print $href($_('footer-legal-file')); ?>" title="<?php $p('footer-legal-link'); ?>">
    256256  <link rel="search" type="application/opensearchdescription+xml" href="<?php print $href($_('topnav-search-page')); print '?action=opensearch-desc&amp;lang='.$this->conf['lang']; ?>" title="<?php $p('opensearch-desc'); ?>">
    257   <link rel="alternate" type="application/rss+xml" href="/de/news.php?format=rss" title="Neuigkeiten vom technikum29-Museum" />
     257  <link rel="alternate" type="application/rss+xml" href="/<?php print $this->conf['lang']; ?>/news.php?format=rss" title="<?php $p('rss-title'); ?>" />
    258258  <?php
    259259        // print interlanguage links for all languages except the active one
Note: See TracChangeset for help on using the changeset viewer.
© 2008 - 2013 technikum29 • Sven Köppel • Some rights reserved
Powered by Trac
Expect where otherwise noted, content on this site is licensed under a Creative Commons 3.0 License