mirror of
https://github.com/getgrav/grav.git
synced 2026-07-30 07:41:11 +02:00
Fixed Flex object issues in Windows [#2773]
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
* Grav 1.7: Fixed error on page initialization [#2753](https://github.com/getgrav/grav/issues/2753)
|
||||
* Fixed checking ACL for another user (who is not currently logged in) in a Flex Object or Directory
|
||||
* Fixed bug in Windows where `Filesystem::dirname()` returns backslashes
|
||||
* Fixed Flex object issues in Windows [#2773](https://github.com/getgrav/grav/issues/2773)
|
||||
|
||||
# v1.7.0-rc.2
|
||||
## 12/04/2019
|
||||
|
||||
@@ -19,6 +19,7 @@ use Grav\Common\Flex\Pages\Traits\PageRoutableTrait;
|
||||
use Grav\Common\Flex\Pages\Traits\PageTranslateTrait;
|
||||
use Grav\Common\Page\Pages;
|
||||
use Grav\Common\Utils;
|
||||
use Grav\Framework\Filesystem\Filesystem;
|
||||
use Grav\Framework\Flex\FlexObject;
|
||||
use Grav\Framework\Flex\Pages\FlexPageObject;
|
||||
use Grav\Framework\Route\Route;
|
||||
@@ -108,7 +109,8 @@ class PageObject extends FlexPageObject
|
||||
// TODO: this should not be template!
|
||||
return $this->getProperty('template');
|
||||
case 'route':
|
||||
$key = dirname($this->hasKey() ? '/' . $this->getKey() : '/');
|
||||
$filesystem = Filesystem::getInstance(false);
|
||||
$key = $filesystem->dirname($this->hasKey() ? '/' . $this->getKey() : '/');
|
||||
return $key !== '/' ? $key : null;
|
||||
case 'full_route':
|
||||
return $this->hasKey() ? '/' . $this->getKey() : '';
|
||||
@@ -151,8 +153,10 @@ class PageObject extends FlexPageObject
|
||||
*/
|
||||
protected function reorderSiblings(array $ordering)
|
||||
{
|
||||
$filesystem = Filesystem::getInstance(false);
|
||||
|
||||
$storageKey = $this->getStorageKey();
|
||||
$oldParentKey = ltrim(dirname("/$storageKey"), '/');
|
||||
$oldParentKey = ltrim($filesystem->dirname("/$storageKey"), '/');
|
||||
$newParentKey = $this->getProperty('parent_key');
|
||||
|
||||
$slug = basename($this->getKey());
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace Grav\Common\Flex\Pages;
|
||||
use Grav\Common\Debugger;
|
||||
use Grav\Common\Grav;
|
||||
use Grav\Common\Language\Language;
|
||||
use Grav\Framework\Filesystem\Filesystem;
|
||||
use Grav\Framework\Flex\Storage\FolderStorage;
|
||||
use RocketTheme\Toolbox\File\MarkdownFile;
|
||||
use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator;
|
||||
@@ -260,7 +261,10 @@ class PageStorage extends FolderStorage
|
||||
} else {
|
||||
[$order, $folder] = ['', $objectKey];
|
||||
}
|
||||
$parentKey = ltrim(dirname('/' . $key), '/');
|
||||
|
||||
$filesystem = Filesystem::getInstance(false);
|
||||
|
||||
$parentKey = ltrim($filesystem->dirname('/' . $key), '/');
|
||||
|
||||
return [
|
||||
'key' => $key,
|
||||
@@ -610,8 +614,10 @@ class PageStorage extends FolderStorage
|
||||
// Update parent timestamps.
|
||||
foreach (array_reverse($list) as $storage_key => $meta) {
|
||||
if ($storage_key !== '') {
|
||||
$filesystem = Filesystem::getInstance(false);
|
||||
|
||||
$storage_key = (string)$storage_key;
|
||||
$parentKey = dirname($storage_key);
|
||||
$parentKey = $filesystem->dirname($storage_key);
|
||||
if ($parentKey === '.') {
|
||||
$parentKey = '';
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ use Grav\Common\Page\Interfaces\PageCollectionInterface;
|
||||
use Grav\Common\Page\Interfaces\PageInterface;
|
||||
use Grav\Common\Page\Pages;
|
||||
use Grav\Common\Utils;
|
||||
use Grav\Framework\Filesystem\Filesystem;
|
||||
|
||||
/**
|
||||
* Implements PageRoutableInterface.
|
||||
@@ -46,9 +47,11 @@ trait PageRoutableTrait
|
||||
/** @var Pages $pages */
|
||||
$pages = Grav::instance()['pages'];
|
||||
|
||||
$filesystem = Filesystem::getInstance(false);
|
||||
|
||||
// FIXME: this does not work, needs to use $pages->get() with cached parent id!
|
||||
$key = $this->getKey();
|
||||
$parent_route = dirname('/' . $key);
|
||||
$parent_route = $filesystem->dirname('/' . $key);
|
||||
|
||||
return $parent_route !== '/' ? $pages->find($parent_route) : $pages->root();
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ use Grav\Common\Yaml;
|
||||
use Grav\Framework\Cache\CacheInterface;
|
||||
use Grav\Framework\File\Formatter\MarkdownFormatter;
|
||||
use Grav\Framework\File\Formatter\YamlFormatter;
|
||||
use Grav\Framework\Filesystem\Filesystem;
|
||||
use Grav\Framework\Flex\FlexDirectory;
|
||||
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
|
||||
use Grav\Framework\Flex\Interfaces\FlexIndexInterface;
|
||||
@@ -285,7 +286,9 @@ trait PageLegacyTrait
|
||||
*/
|
||||
public function copy(PageInterface $parent = null)
|
||||
{
|
||||
$parentStorageKey = ltrim(dirname("/{$this->getMasterKey()}"), '/');
|
||||
$filesystem = Filesystem::getInstance(false);
|
||||
|
||||
$parentStorageKey = ltrim($filesystem->dirname("/{$this->getMasterKey()}"), '/');
|
||||
|
||||
/** @var FlexPageIndex $index */
|
||||
$index = $this->getFlexDirectory()->getIndex();
|
||||
|
||||
@@ -15,7 +15,7 @@ use Grav\Common\Page\Interfaces\PageCollectionInterface;
|
||||
use Grav\Common\Page\Interfaces\PageInterface;
|
||||
use Grav\Common\Page\Pages;
|
||||
use Grav\Common\Uri;
|
||||
use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
|
||||
use Grav\Framework\Filesystem\Filesystem;
|
||||
use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator;
|
||||
|
||||
/**
|
||||
@@ -389,8 +389,9 @@ trait PageRoutableTrait
|
||||
$var,
|
||||
function ($value) {
|
||||
if (null === $value) {
|
||||
$filesystem = Filesystem::getInstance(false);
|
||||
$value = $this->getMasterKey() ?: $this->getKey();
|
||||
$value = ltrim(dirname("/{$value}"), '/') ?: '';
|
||||
$value = ltrim($filesystem->dirname("/{$value}"), '/') ?: '';
|
||||
}
|
||||
|
||||
return $value;
|
||||
@@ -415,8 +416,9 @@ trait PageRoutableTrait
|
||||
return null;
|
||||
}
|
||||
|
||||
$filesystem = Filesystem::getInstance(false);
|
||||
$directory = $this->getFlexDirectory();
|
||||
$parentKey = ltrim(dirname("/{$this->getKey()}"), '/');
|
||||
$parentKey = ltrim($filesystem->dirname("/{$this->getKey()}"), '/');
|
||||
if ($parentKey) {
|
||||
$parent = $directory->getObject($parentKey);
|
||||
$language = $this->getLanguage();
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace Grav\Framework\Flex\Storage;
|
||||
use Grav\Common\Filesystem\Folder;
|
||||
use Grav\Common\Grav;
|
||||
use Grav\Common\Utils;
|
||||
use Grav\Framework\Filesystem\Filesystem;
|
||||
use Grav\Framework\Flex\Interfaces\FlexStorageInterface;
|
||||
use RocketTheme\Toolbox\File\File;
|
||||
use InvalidArgumentException;
|
||||
@@ -620,8 +621,9 @@ class FolderStorage extends AbstractFilesystemStorage
|
||||
if (isset($options['file'])) {
|
||||
$pattern .= '/{FILE}{EXT}';
|
||||
} else {
|
||||
$filesystem = Filesystem::getInstance(true);
|
||||
$this->dataFile = \basename($pattern, $extension);
|
||||
$pattern = \dirname($pattern) . '/{FILE}{EXT}';
|
||||
$pattern = $filesystem->dirname($pattern) . '/{FILE}{EXT}';
|
||||
}
|
||||
}
|
||||
$this->prefixed = (bool)($options['prefixed'] ?? strpos($pattern, '/{KEY:2}/'));
|
||||
|
||||
@@ -12,6 +12,7 @@ declare(strict_types=1);
|
||||
namespace Grav\Framework\Flex\Storage;
|
||||
|
||||
use Grav\Common\Filesystem\Folder;
|
||||
use Grav\Framework\Filesystem\Filesystem;
|
||||
use InvalidArgumentException;
|
||||
|
||||
/**
|
||||
@@ -42,11 +43,13 @@ class SimpleStorage extends AbstractFilesystemStorage
|
||||
$formatter = $options['formatter'] ?? $this->detectDataFormatter($options['folder']);
|
||||
$this->initDataFormatter($formatter);
|
||||
|
||||
$filesystem = Filesystem::getInstance(true);
|
||||
|
||||
$extension = $this->dataFormatter->getDefaultFileExtension();
|
||||
$pattern = basename($options['folder']);
|
||||
|
||||
$this->dataPattern = basename($pattern, $extension) . $extension;
|
||||
$this->dataFolder = \dirname($options['folder']);
|
||||
$this->dataFolder = $filesystem->dirname($options['folder']);
|
||||
$this->keyField = $options['key'] ?? 'storage_key';
|
||||
|
||||
// Make sure that the data folder exists.
|
||||
|
||||
@@ -18,6 +18,7 @@ use Grav\Common\Page\Medium\Medium;
|
||||
use Grav\Common\Page\Medium\MediumFactory;
|
||||
use Grav\Common\Utils;
|
||||
use Grav\Framework\Cache\CacheInterface;
|
||||
use Grav\Framework\Filesystem\Filesystem;
|
||||
use Grav\Framework\Flex\FlexDirectory;
|
||||
use Grav\Framework\Form\FormFlashFile;
|
||||
use Psr\Http\Message\UploadedFileInterface;
|
||||
@@ -177,9 +178,11 @@ trait FlexMediaTrait
|
||||
}
|
||||
|
||||
try {
|
||||
$filesystem = Filesystem::getInstance(false);
|
||||
|
||||
// Upload it
|
||||
$filepath = sprintf('%s/%s', $path, $filename);
|
||||
Folder::create(\dirname($filepath));
|
||||
Folder::create($filesystem->dirname($filepath));
|
||||
if ($uploadedFile instanceof FormFlashFile) {
|
||||
$metadata = $uploadedFile->getMetaData();
|
||||
if ($metadata) {
|
||||
@@ -211,8 +214,10 @@ trait FlexMediaTrait
|
||||
$grav = Grav::instance();
|
||||
$language = $grav['language'];
|
||||
|
||||
$filesystem = Filesystem::getInstance(false);
|
||||
|
||||
$basename = basename($filename);
|
||||
$dirname = dirname($filename);
|
||||
$dirname = $filesystem->dirname($filename);
|
||||
$dirname = $dirname === '.' ? '' : '/' . $dirname;
|
||||
|
||||
if (!Utils::checkFilename($basename)) {
|
||||
@@ -237,7 +242,7 @@ trait FlexMediaTrait
|
||||
$locator->clearCache($targetFile);
|
||||
}
|
||||
|
||||
$fileParts = pathinfo($basename);
|
||||
$fileParts = $filesystem->pathinfo($basename);
|
||||
|
||||
if (!file_exists($targetPath)) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user