diff --git a/system/extensions/update-available.ini b/system/extensions/update-available.ini
index 50f1eff..bf8a05e 100644
--- a/system/extensions/update-available.ini
+++ b/system/extensions/update-available.ini
@@ -45,14 +45,14 @@ system/themes/berlin-opensans-light.woff: berlin-opensans-light.woff, create, up
system/themes/berlin-opensans-regular.woff: berlin-opensans-regular.woff, create, update, careful
Extension: Blog
-Version: 0.9.2
+Version: 0.9.4
Description: Blog for your website.
Developer: Anna Svensson
Tag: feature
DownloadUrl: https://github.com/annaesvensson/yellow-blog/archive/refs/heads/main.zip
DocumentationUrl: https://github.com/annaesvensson/yellow-blog
DocumentationLanguage: en, de, sv
-Published: 2024-04-30 18:03:27
+Published: 2024-05-09 16:44:32
Status: available
system/workers/blog.php: blog.php, create, update
system/layouts/blog.html: blog.html, create, update, careful
@@ -149,14 +149,14 @@ system/themes/copenhagen.css: copenhagen.css, create, update, careful
system/themes/copenhagen.png: copenhagen.png, create
Extension: Core
-Version: 0.9.9
+Version: 0.9.10
Description: Core functionality of your website.
Developer: Anna Svensson
Tag: feature
DownloadUrl: https://github.com/annaesvensson/yellow-core/archive/refs/heads/main.zip
DocumentationUrl: https://github.com/annaesvensson/yellow-core
DocumentationLanguage: en, de, sv
-Published: 2024-05-02 16:35:25
+Published: 2024-05-09 16:15:59
Status: available
system/workers/core.php: core.php, create, update
system/extensions/core.php: corepatch.txt, update
@@ -213,14 +213,14 @@ Status: available
system/workers/dutch.php: dutch.php, create, update
Extension: Edit
-Version: 0.9.8
+Version: 0.9.9
Description: Edit your website in a web browser.
Developer: Anna Svensson
Tag: feature
DownloadUrl: https://github.com/annaesvensson/yellow-edit/archive/refs/heads/main.zip
DocumentationUrl: https://github.com/annaesvensson/yellow-edit
DocumentationLanguage: en, de, sv
-Published: 2024-05-07 07:20:40
+Published: 2024-05-09 16:45:47
Status: available
system/workers/edit.php: edit.php, create, update
system/workers/edit.css: edit.css, create, update
@@ -262,14 +262,14 @@ Status: available
system/workers/english.php: english.php, create, update
Extension: Feed
-Version: 0.9.2
+Version: 0.9.3
Description: Feed with recent changes.
Developer: Anna Svensson
Tag: feature
DownloadUrl: https://github.com/annaesvensson/yellow-feed/archive/refs/heads/main.zip
DocumentationUrl: https://github.com/annaesvensson/yellow-feed
DocumentationLanguage: en, de, sv
-Published: 2024-04-25 13:08:57
+Published: 2024-05-09 16:28:24
Status: available
system/workers/feed.php: feed.php, create, update
system/layouts/feed.html: feed.html, create, update, careful
@@ -305,14 +305,14 @@ system/workers/gallery-default-skin.svg: gallery-default-skin.svg, create, updat
system/workers/gallery-preloader.gif: gallery-preloader.gif, create, update
Extension: Generate
-Version: 0.9.5
+Version: 0.9.6
Description: Generate a static website.
Developer: Anna Svensson
Tag: feature
DownloadUrl: https://github.com/annaesvensson/yellow-generate/archive/refs/heads/main.zip
DocumentationUrl: https://github.com/annaesvensson/yellow-generate
DocumentationLanguage: en, de, sv
-Published: 2024-04-25 15:39:34
+Published: 2024-05-09 16:39:21
Status: available
system/workers/generate.php: generate.php, create, update
@@ -665,14 +665,14 @@ Status: available
system/workers/serve.php: serve.php, create, update
Extension: Sitemap
-Version: 0.9.2
+Version: 0.9.3
Description: Sitemap with all pages.
Developer: Anna Svensson
Tag: feature
DownloadUrl: https://github.com/annaesvensson/yellow-sitemap/archive/refs/heads/main.zip
DocumentationUrl: https://github.com/annaesvensson/yellow-sitemap
DocumentationLanguage: en, de, sv
-Published: 2024-04-25 13:09:09
+Published: 2024-05-09 16:28:15
Status: available
system/workers/sitemap.php: sitemap.php, create, update
system/layouts/sitemap.html: sitemap.html, create, update, careful
@@ -792,14 +792,14 @@ system/workers/update.php: update.php, create, update
system/workers/updatepatch.bin: updatepatch.php, create, additional
Extension: Wiki
-Version: 0.9.3
+Version: 0.9.4
Description: Wiki for your website.
Developer: Anna Svensson
Tag: feature
DownloadUrl: https://github.com/annaesvensson/yellow-wiki/archive/refs/heads/main.zip
DocumentationUrl: https://github.com/annaesvensson/yellow-wiki
DocumentationLanguage: en, de, sv
-Published: 2024-04-30 16:45:31
+Published: 2024-05-09 15:43:40
Status: available
system/workers/wiki.php: wiki.php, create, update
system/layouts/wiki.html: wiki.html, create, update, careful
diff --git a/system/extensions/yellow-extension.ini b/system/extensions/yellow-extension.ini
index 4c97330..357832f 100755
--- a/system/extensions/yellow-extension.ini
+++ b/system/extensions/yellow-extension.ini
@@ -1,14 +1,14 @@
# Datenstrom Yellow extension settings
Extension: Core
-Version: 0.9.9
+Version: 0.9.10
Description: Core functionality of your website.
Developer: Anna Svensson
Tag: feature
DownloadUrl: https://github.com/annaesvensson/yellow-core/archive/refs/heads/main.zip
DocumentationUrl: https://github.com/annaesvensson/yellow-core
DocumentationLanguage: en, de, sv
-Published: 2024-05-02 16:35:25
+Published: 2024-05-09 16:15:59
Status: available
system/workers/core.php: core.php, create, update
system/extensions/core.php: corepatch.txt, update
@@ -20,14 +20,14 @@ system/layouts/navigation.html: navigation.html, create, update, careful
system/layouts/pagination.html: pagination.html, create, update, careful
Extension: Edit
-Version: 0.9.8
+Version: 0.9.9
Description: Edit your website in a web browser.
Developer: Anna Svensson
Tag: feature
DownloadUrl: https://github.com/annaesvensson/yellow-edit/archive/refs/heads/main.zip
DocumentationUrl: https://github.com/annaesvensson/yellow-edit
DocumentationLanguage: en, de, sv
-Published: 2024-05-07 07:20:40
+Published: 2024-05-09 16:45:47
Status: available
system/workers/edit.php: edit.php, create, update
system/workers/edit.css: edit.css, create, update
@@ -36,14 +36,14 @@ system/workers/edit-stack.svg: edit-stack.svg, create, update
content/shared/page-new-default.md: page-new-default.md, create, optional
Extension: Generate
-Version: 0.9.5
+Version: 0.9.6
Description: Generate a static website.
Developer: Anna Svensson
Tag: feature
DownloadUrl: https://github.com/annaesvensson/yellow-generate/archive/refs/heads/main.zip
DocumentationUrl: https://github.com/annaesvensson/yellow-generate
DocumentationLanguage: en, de, sv
-Published: 2024-04-25 15:39:34
+Published: 2024-05-09 16:39:21
Status: available
system/workers/generate.php: generate.php, create, update
diff --git a/system/workers/core.php b/system/workers/core.php
index 9a7867c..990af80 100755
--- a/system/workers/core.php
+++ b/system/workers/core.php
@@ -2,7 +2,7 @@
// Core extension, https://github.com/annaesvensson/yellow-core
class YellowCore {
- const VERSION = "0.9.9";
+ const VERSION = "0.9.10";
const RELEASE = "0.9";
public $content; // content files
public $media; // media files
@@ -1535,6 +1535,11 @@ class YellowLookup {
return $output;
}
+ // Normalise CSS class
+ public function normaliseClass($text) {
+ return str_replace(array(" ", "_"), array("-", "-"), strtoloweru($text));
+ }
+
// Normalise relative path tokens
public function normalisePath($text) {
$textFiltered = "";
@@ -1593,10 +1598,15 @@ class YellowLookup {
}
// Normalise location arguments
- public function normaliseArguments($text, $appendSlash = true, $filterStrict = true) {
- if ($appendSlash) $text .= "/";
+ public function normaliseArguments($text, $filterStrict = true) {
if ($filterStrict) $text = str_replace(" ", "-", strtoloweru($text));
- $text = str_replace(":", $this->yellow->toolbox->getLocationArgumentsSeparator(), $text);
+ $separator = $this->yellow->toolbox->getLocationArgumentsSeparator();
+ $text = str_replace(":", $separator, $text);
+ if (preg_match("/^(.*\/)?page$separator.*$/", $text)) {
+ $text = rtrim($text, "/");
+ } else {
+ $text = rtrim($text, "/")."/";
+ }
return str_replace(array("%2F","%3A","%3D"), array("/",":","="), rawurlencode($text));
}
@@ -1940,8 +1950,7 @@ class YellowToolbox {
$locationArguments .= "$key:$value";
}
if (!is_string_empty($locationArguments)) {
- $locationArguments = $this->yellow->lookup->normaliseArguments($locationArguments, false, false);
- if (!$this->isLocationArgumentsPagination($locationArguments)) $locationArguments .= "/";
+ $locationArguments = $this->yellow->lookup->normaliseArguments($locationArguments);
}
return $locationArguments;
}
@@ -1958,8 +1967,7 @@ class YellowToolbox {
}
}
if (!is_string_empty($locationArguments)) {
- $locationArguments = $this->yellow->lookup->normaliseArguments($locationArguments, false, false);
- if (!$this->isLocationArgumentsPagination($locationArguments)) $locationArguments .= "/";
+ $locationArguments = $this->yellow->lookup->normaliseArguments($locationArguments);
}
return $locationArguments;
}
@@ -2982,7 +2990,7 @@ class YellowToolbox {
// Check if there are pagination arguments in current HTTP request
public function isLocationArgumentsPagination($location) {
$separator = $this->getLocationArgumentsSeparator();
- return preg_match("/^(.*\/)?page$separator.*$/", $location);
+ return preg_match("/^(.*\/)?page$separator\d+$/", $location);
}
// Check if unmodified since last HTTP request
diff --git a/system/workers/edit.php b/system/workers/edit.php
index b9b300e..82e9c6a 100644
--- a/system/workers/edit.php
+++ b/system/workers/edit.php
@@ -2,7 +2,7 @@
// Edit extension, https://github.com/annaesvensson/yellow-edit
class YellowEdit {
- const VERSION = "0.9.8";
+ const VERSION = "0.9.9";
public $yellow; // access to API
public $response; // web response
public $merge; // text merge
@@ -1594,7 +1594,7 @@ class YellowEditResponse {
$expire = time() + 60*60*24;
$actionToken = $this->createActionToken($email, $action, $expire);
$locationArguments = "/action:$action/email:$email/expire:$expire/language:$userLanguage/actiontoken:$actionToken/";
- $url = "$scheme://$address$base".$this->yellow->lookup->normaliseArguments($locationArguments, false, false);
+ $url = "$scheme://$address$base".$this->yellow->lookup->normaliseArguments($locationArguments, false);
}
$prefix = "edit".ucfirst($action);
$message = $this->yellow->language->getText("{$prefix}Message", $userLanguage);
diff --git a/system/workers/generate.php b/system/workers/generate.php
index dc0f8c3..e78e629 100755
--- a/system/workers/generate.php
+++ b/system/workers/generate.php
@@ -2,12 +2,12 @@
// Generate extension, https://github.com/annaesvensson/yellow-generate
class YellowGenerate {
- const VERSION = "0.9.5";
- public $yellow; // access to API
- public $files; // number of files
- public $errors; // number of errors
- public $locationsArguments; // locations with location arguments detected
- public $locationsArgumentsPagination; // locations with pagination arguments detected
+ const VERSION = "0.9.6";
+ public $yellow; // access to API
+ public $files; // number of files
+ public $errors; // number of errors
+ public $locationsWithArguments; // locations with arguments detected
+ public $locationsWithPagination; // locations with pagination detected
// Handle initialisation
public function onLoad($yellow) {
@@ -82,7 +82,7 @@ class YellowGenerate {
// Generate static content
public function generateStaticContent($path, $locationFilter, $progressText, $increments, $max) {
$statusCode = 200;
- $this->locationsArguments = $this->locationsArgumentsPagination = array();
+ $this->locationsWithArguments = $this->locationsWithPagination = array();
$staticUrl = $this->yellow->system->get("generateStaticUrl");
list($scheme, $address, $base) = $this->yellow->lookup->getUrlInformation($staticUrl);
$locations = $this->getContentLocations();
@@ -92,18 +92,15 @@ class YellowGenerate {
if (!preg_match("#^$base$locationFilter#", "$base$location")) continue;
$statusCode = max($statusCode, $this->generateStaticFile($path, $location, true));
}
- foreach ($this->locationsArguments as $location) {
+ foreach ($this->locationsWithArguments as $location) {
echo "$progressText ".$this->getProgressPercent($this->files, $filesEstimated, $increments, $max/1.5)."%... ";
if (!preg_match("#^$base$locationFilter#", "$base$location")) continue;
$statusCode = max($statusCode, $this->generateStaticFile($path, $location, true));
}
- $filesEstimated = $this->files + count($this->locationsArguments) + count($this->locationsArgumentsPagination);
- foreach ($this->locationsArgumentsPagination as $location) {
+ $filesEstimated = $this->files + count($this->locationsWithArguments) + count($this->locationsWithPagination);
+ foreach ($this->locationsWithPagination as $location) {
echo "$progressText ".$this->getProgressPercent($this->files, $filesEstimated, $increments, $max)."%... ";
if (!preg_match("#^$base$locationFilter#", "$base$location")) continue;
- if (substru($location, -1)!=$this->yellow->toolbox->getLocationArgumentsSeparator()) {
- $statusCode = max($statusCode, $this->generateStaticFile($path, $location, false, true));
- }
for ($pageNumber=2; $pageNumber<=999; ++$pageNumber) {
$statusCodeLocation = $this->generateStaticFile($path, $location.$pageNumber, false, true);
$statusCode = max($statusCode, $statusCodeLocation);
@@ -155,7 +152,7 @@ class YellowGenerate {
} else {
$statusCode = $this->copyStaticFile($path, $location);
}
- if ($statusCode==200 && $analyse) $this->analyseLocations($scheme, $address, $base, $fileData);
+ if ($statusCode==200 && $analyse) $this->analyseStaticLocations($scheme, $address, $base, $fileData);
if ($statusCode==404 && $probe) $statusCode = 100;
if ($statusCode==404 && $error) $statusCode = 200;
if ($statusCode>=200) ++$this->files;
@@ -219,8 +216,8 @@ class YellowGenerate {
return $statusCode;
}
- // Analyse locations with arguments
- public function analyseLocations($scheme, $address, $base, $rawData) {
+ // Analyse static locations with arguments
+ public function analyseStaticLocations($scheme, $address, $base, $rawData) {
preg_match_all("/<(.*?)href=\"([^\"]+)\"(.*?)>/i", $rawData, $matches);
foreach ($matches[2] as $match) {
$location = rawurldecode($match);
@@ -235,19 +232,18 @@ class YellowGenerate {
$location = substru($location, strlenu($base));
if (!$this->yellow->toolbox->isLocationArguments($location)) continue;
if (!$this->yellow->toolbox->isLocationArgumentsPagination($location)) {
- $location = rtrim($location, "/")."/";
- if (!isset($this->locationsArguments[$location])) {
- $this->locationsArguments[$location] = $location;
+ if (!isset($this->locationsWithArguments[$location])) {
+ $this->locationsWithArguments[$location] = $location;
if ($this->yellow->system->get("coreDebugMode")>=2) {
- echo "YellowGenerate::analyseLocations detected location:$location
\n";
+ echo "YellowGenerate::analyseStaticLocations detected location:$location
\n";
}
}
} else {
$location = rtrim($location, "0..9");
- if (!isset($this->locationsArgumentsPagination[$location])) {
- $this->locationsArgumentsPagination[$location] = $location;
+ if (!isset($this->locationsWithPagination[$location])) {
+ $this->locationsWithPagination[$location] = $location;
if ($this->yellow->system->get("coreDebugMode")>=2) {
- echo "YellowGenerate::analyseLocations detected location:$location
\n";
+ echo "YellowGenerate::analyseStaticLocations detected location:$location
\n";
}
}
}
diff --git a/system/workers/install-blog.bin b/system/workers/install-blog.bin
index 75370c9..21025f9 100644
Binary files a/system/workers/install-blog.bin and b/system/workers/install-blog.bin differ
diff --git a/system/workers/install-wiki.bin b/system/workers/install-wiki.bin
index 3ec23df..5ec35cd 100644
Binary files a/system/workers/install-wiki.bin and b/system/workers/install-wiki.bin differ