Move feeds out of subpath. (#72)
Flatten feed location. Now, if people decide to host this at my-domain/feed, the feeds won't be at my-domain/feed/feed Reviewed-on: https://gitea.subcultureofone.org/greg/tkr/pulls/72 Co-authored-by: Greg Sarjeant <greg@subcultureofone.org> Co-committed-by: Greg Sarjeant <greg@subcultureofone.org>
This commit is contained in:
		
							parent
							
								
									dbd27b266d
								
							
						
					
					
						commit
						d03c0a5331
					
				| @ -29,7 +29,7 @@ A lightweight, HTML-only status feed for self-hosted personal websites. Written | ||||
| 
 | ||||
| * HTML and CSS implementation. No Javascript. | ||||
| * Accessible by default | ||||
| * RSS `/feed/rss` and Atom `/feed/atom` feeds | ||||
| * RSS `/rss` and Atom `/atom` feeds | ||||
| * CSS uploads for custom theming | ||||
| * Custom emoji to personalize moods (unicode only) | ||||
| 
 | ||||
|  | ||||
| @ -104,7 +104,7 @@ class LogController extends Controller { | ||||
|     } | ||||
| 
 | ||||
|     private function parseLogLine(string $line): ?array { | ||||
|         // Parse format: [2025-01-31 08:30:15] DEBUG: 192.168.1.100 [GET feed/rss] - message
 | ||||
|         // Parse format: [2025-01-31 08:30:15] DEBUG: 192.168.1.100 [GET admin/settings] - message
 | ||||
|         $pattern = '/^\[([^\]]+)\] (\w+): ([^\s]+)(?:\s+\[([^\]]+)\])? - (.+)$/'; | ||||
| 
 | ||||
|         if (preg_match($pattern, $line, $matches)) { | ||||
|  | ||||
| @ -18,7 +18,7 @@ class AtomGenerator extends FeedGenerator { | ||||
|         Log::debug("Building Atom feed for " . $this->settings->siteTitle); | ||||
|         $feedTitle = Util::escape_xml($this->settings->siteTitle . " Atom Feed"); | ||||
|         $siteUrl = Util::escape_xml(Util::buildUrl($this->settings->baseUrl, $this->settings->basePath)); | ||||
|         $feedUrl = Util::escape_xml(Util::buildUrl($this->settings->baseUrl, $this->settings->basePath, 'feed/atom')); | ||||
|         $feedUrl = Util::escape_xml(Util::buildUrl($this->settings->baseUrl, $this->settings->basePath, 'atom')); | ||||
|         $updated = date(DATE_ATOM, strtotime($this->ticks[0]['timestamp'] ?? 'now')); | ||||
| 
 | ||||
|         ob_start(); | ||||
|  | ||||
| @ -23,7 +23,7 @@ class RssGenerator extends FeedGenerator { | ||||
| <channel> | ||||
|     <title><?php echo Util::escape_xml($this->settings->siteTitle . ' RSS Feed') ?></title>
 | ||||
|     <link><?php echo Util::escape_xml(Util::buildUrl($this->settings->baseUrl, $this->settings->basePath))?></link>
 | ||||
|     <atom:link href="<?php echo Util::escape_xml(Util::buildUrl($this->settings->baseUrl, $this->settings->basePath, 'feed/rss'))?>" | ||||
|     <atom:link href="<?php echo Util::escape_xml(Util::buildUrl($this->settings->baseUrl, $this->settings->basePath, 'rss'))?>" | ||||
|                rel="self" | ||||
|                type="application/rss+xml" /> | ||||
|     <description><?php echo Util::escape_xml($this->settings->siteDescription) ?></description>
 | ||||
|  | ||||
| @ -15,8 +15,8 @@ class Router { | ||||
|         ['admin/emoji', 'EmojiController'], | ||||
|         ['admin/emoji', 'EmojiController@handlePost', ['POST']], | ||||
|         ['admin/logs', 'LogController'], | ||||
|         ['feed/rss', 'FeedController@rss'], | ||||
|         ['feed/atom', 'FeedController@atom'], | ||||
|         ['rss', 'FeedController@rss'], | ||||
|         ['atom', 'FeedController@atom'], | ||||
|         ['login', 'AuthController@showLogin'], | ||||
|         ['login', 'AuthController@handleLogin', ['POST']], | ||||
|         ['logout', 'AuthController@handleLogout', ['GET', 'POST']], | ||||
|  | ||||
| @ -19,11 +19,11 @@ | ||||
|         <link rel="alternate" | ||||
|               type="application/rss+xml" | ||||
|               title="<?php echo Util::escape_html($settings->siteTitle) ?> RSS Feed" | ||||
|               href="<?php echo Util::escape_html($settings->baseUrl . $settings->basePath)?>feed/rss/"> | ||||
|               href="<?php echo Util::escape_html($settings->baseUrl . $settings->basePath)?>rss/"> | ||||
|         <link rel="alternate" | ||||
|               type="application/atom+xml" | ||||
|               title="<?php echo Util::escape_html($settings->siteTitle) ?> Atom Feed" | ||||
|               href="<?php echo Util::escape_html($settings->baseUrl . $settings->basePath)?>feed/atom/"> | ||||
|               href="<?php echo Util::escape_html($settings->baseUrl . $settings->basePath)?>atom/"> | ||||
|     </head> | ||||
|     <body> | ||||
| <?php include TEMPLATES_DIR . '/partials/navbar.php'?>
 | ||||
|  | ||||
| @ -7,9 +7,9 @@ | ||||
|                 <summary aria-haspopup="true">feeds</summary> | ||||
|                 <div class="dropdown-items"> | ||||
|                     <a <?php if($settings->strictAccessibility): ?>tabindex="0"<?php endif; ?>
 | ||||
|                        href="<?= Util::escape_html(Util::buildRelativeUrl($settings->basePath, 'feed/rss')) ?>">rss</a> | ||||
|                        href="<?= Util::escape_html(Util::buildRelativeUrl($settings->basePath, 'rss')) ?>">rss</a> | ||||
|                     <a <?php if($settings->strictAccessibility): ?>tabindex="0"<?php endif; ?>
 | ||||
|                        href="<?= Util::escape_html(Util::buildRelativeUrl($settings->basePath, 'feed/atom')) ?>">atom</a> | ||||
|                        href="<?= Util::escape_html(Util::buildRelativeUrl($settings->basePath, 'atom')) ?>">atom</a> | ||||
|                 </div> | ||||
|             </details> | ||||
| <?php if (!Session::isLoggedIn()): ?>
 | ||||
|  | ||||
| @ -35,7 +35,7 @@ class AtomGeneratorTest extends TestCase | ||||
|         $this->assertStringContainsString('<title>Test Site Atom Feed</title>', $xml); | ||||
|         $this->assertStringContainsString('<link rel="alternate" href="https://example.com/tkr/"/>', $xml); | ||||
|         $this->assertStringContainsString('<link rel="self"', $xml); | ||||
|         $this->assertStringContainsString('href="https://example.com/tkr/feed/atom"', $xml); | ||||
|         $this->assertStringContainsString('href="https://example.com/tkr/atom"', $xml); | ||||
|         $this->assertStringContainsString('<id>https://example.com/tkr/</id>', $xml); | ||||
|         $this->assertStringContainsString('<author>', $xml); | ||||
|         $this->assertStringContainsString('<name>Test Site</name>', $xml); | ||||
| @ -69,7 +69,7 @@ class AtomGeneratorTest extends TestCase | ||||
|         $this->assertStringContainsString('<title>Test Site Atom Feed</title>', $xml); | ||||
|         $this->assertStringContainsString('<link rel="alternate" href="https://example.com/tkr/"/>', $xml); | ||||
|         $this->assertStringContainsString('<link rel="self"', $xml); | ||||
|         $this->assertStringContainsString('href="https://example.com/tkr/feed/atom"', $xml); | ||||
|         $this->assertStringContainsString('href="https://example.com/tkr/atom"', $xml); | ||||
|         $this->assertStringContainsString('<id>https://example.com/tkr/</id>', $xml); | ||||
|         $this->assertStringContainsString('<author>', $xml); | ||||
|         $this->assertStringContainsString('<name>Test Site</name>', $xml); | ||||
|  | ||||
| @ -34,7 +34,7 @@ class RssGeneratorTest extends TestCase | ||||
|         $this->assertStringContainsString('<rss version="2.0"', $xml); | ||||
|         $this->assertStringContainsString('<title>Test Site RSS Feed</title>', $xml); | ||||
|         $this->assertStringContainsString('<link>https://example.com/tkr/</link>', $xml); | ||||
|         $this->assertStringContainsString('<atom:link href="https://example.com/tkr/feed/rss"', $xml); | ||||
|         $this->assertStringContainsString('<atom:link href="https://example.com/tkr/rss"', $xml); | ||||
|         $this->assertStringContainsString('<channel>', $xml); | ||||
|         $this->assertStringContainsString('<item>', $xml); | ||||
|         $this->assertStringContainsString('</item>', $xml); | ||||
| @ -66,7 +66,7 @@ class RssGeneratorTest extends TestCase | ||||
|         $this->assertStringContainsString('<rss version="2.0"', $xml); | ||||
|         $this->assertStringContainsString('<title>Test Site RSS Feed</title>', $xml); | ||||
|         $this->assertStringContainsString('<link>https://example.com/tkr/</link>', $xml); | ||||
|         $this->assertStringContainsString('<atom:link href="https://example.com/tkr/feed/rss"', $xml); | ||||
|         $this->assertStringContainsString('<atom:link href="https://example.com/tkr/rss"', $xml); | ||||
|         $this->assertStringContainsString('<channel>', $xml); | ||||
|         $this->assertStringContainsString('</channel>', $xml); | ||||
|         $this->assertStringEndsWith('</rss>' . "\n", $xml); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user