blackcube / core
Blackcube CMS Core system
Installs: 836
Dependents: 3
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Type:yii2-extension
Requires
- php: >=8.0
- ext-dom: *
- ext-fileinfo: *
- ext-intl: *
- ext-json: *
- ext-xmlreader: *
- hashids/hashids: ~4.1
- league/flysystem: ^2.4
- swaggest/json-schema: ~0.12
- vlucas/phpdotenv: ~5.4
- yiisoft/yii2: ~2.0.13
- yiisoft/yii2-imagine: ~2.3
Requires (Dev)
- codeception/codeception: ~5.0
- codeception/module-asserts: ~2.0
- codeception/module-yii2: ~1.1
- league/flysystem-async-aws-s3: ^2.5
- league/flysystem-aws-s3-v3: ^2.5
- league/flysystem-ftp: ^2.4
- league/flysystem-google-cloud-storage: ^2.4
- league/flysystem-memory: ^3.0
- league/flysystem-sftp-v3: ^2.4
- yiisoft/yii2-debug: ~2.1
- yiisoft/yii2-gii: ~2.2
- dev-master
- dev-devel-3.x / 3.x-dev
- 3.5.2
- 3.5.1
- 3.5.0
- 3.4.1
- 3.4.0
- 3.3.1
- 3.3.0
- 3.2.1
- 3.2.0
- 3.1.4
- 3.1.3
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.10
- 3.0.9
- 3.0.8
- 3.0.7
- 3.0.6
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.0
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
- dev-devel
This package is auto-updated.
Last update: 2024-12-19 18:35:45 UTC
README
Pre-requisites
- PHP 8.2+
- Extension
dom
- Extension
fileinfo
- Extension
intl
- Extension
json
- Extension
mbstring
- Extension
xmlreader
- Extension
dom
- Extension
Pre-flight
Add blackcube core to the project
composer require "blackcube/core"
Installation
Beware:
Blackcube core
can be used in stand alone butBlackcube admin
is recommended
Inject Blackcube core in application
// main configuration file 'container' => [ 'singletons' => [ // local filesystem blackcube\core\components\Flysystem::class => [ 'class' => blackcube\core\components\FlysystemLocal::class, 'path' => getstrenv('FILESYSTEM_LOCAL_PATH'), ], // or s3 blackcube\core\components\Flysystem::class => [ 'class' => blackcube\core\components\FlysystemAwsS3::class, 'key' => getstrenv('FILESYSTEM_S3_KEY'), 'secret' => getstrenv('FILESYSTEM_S3_SECRET'), 'bucket' => getstrenv('FILESYSTEM_S3_BUCKET'), 'region' => getstrenv('FILESYSTEM_S3_REGION'), 'version' => 'latest', 'endpoint' => getstrenv('FILESYSTEM_S3_ENDPOINT'), 'pathStyleEndpoint' => getboolenv('FILESYSTEM_S3_PATH_STYLE'), ], ] ], // ... 'bootstrap' => [ // ... boostrapped modules 'blackcube', // blackcube core ], 'modules' => [ // ... other modules 'blackcube' => [ 'class' => blackcube\core\Module::class, 'plugins' => [ // additional plugins ], 'cmsEnabledmodules' => [ // additional modules ], 'allowedParameterDomains' => ['], // override components if needed 'components' => [ 'db' => ... 'cache' => ... 'fs' => ... ], /// end override ], ], // ...
Update DB
Add needed tables in DB
php yii.php migrate
Init database with basic stuff
php yii.php bc:init
Blackcube core is now ready, you can use it
Add translations for new code
Managing translations can be a little tricky, here is a way to do it:
Prepare msgconfig.php
msgconfig.php
is a configuration file for yii
message command, it should be located in the root of the project.
return [ // string, required, root directory of all source files 'sourcePath' => __DIR__ . DIRECTORY_SEPARATOR . 'src', // array, required, list of language codes that the extracted messages // should be translated to. For example, ['zh-CN', 'de']. 'languages' => ['en'], // string, the name of the function for translating messages. // Defaults to 'Yii::t'. This is used as a mark to find the messages to be // translated. You may use a string for single function name or an array for // multiple function names. 'translator' => 'Module::t', // boolean, whether to sort messages by keys when merging new messages // with the existing ones. Defaults to false, which means the new (untranslated) // messages will be separated from the old (translated) ones. 'sort' => false, // boolean, whether to remove messages that no longer appear in the source code. // Defaults to false, which means these messages will NOT be removed. 'removeUnused' => false, // boolean, whether to mark messages that no longer appear in the source code. // Defaults to true, which means each of these messages will be enclosed with a pair of '@@' marks. 'markUnused' => true, // array, list of patterns that specify which files (not directories) should be processed. // If empty or not set, all files will be processed. // See helpers/FileHelper::findFiles() for pattern matching rules. // If a file/directory matches both a pattern in "only" and "except", it will NOT be processed. 'only' => ['*.php'], // array, list of patterns that specify which files/directories should NOT be processed. // If empty or not set, all files/directories will be processed. // See helpers/FileHelper::findFiles() for pattern matching rules. // If a file/directory matches both a pattern in "only" and "except", it will NOT be processed. 'except' => [ '.svn', '.git', '.gitignore', '.gitkeep', '.hgignore', '.hgkeep', '/messages', ], /**/ // 'po' output format is for saving messages to gettext po files. 'format' => 'po', // Root directory containing message translations. 'messagePath' => dirname(__DIR__, 2) . DIRECTORY_SEPARATOR . 'src/i18n', // Name of the file that will be used for translations. 'catalog' => 'messages', // boolean, whether the message file should be overwritten with the merged messages 'overwrite' => true, /**/ ];
Execute the command
php yii.php message src/i18n/msgconfig.php
Once done, you can update the translations in src/i18n/en/messages.po
Beware:
src/i18n/en/messages.po
is the only file that should be updated, move it tosrc/i18n/messages.pot
and revert backsrc/i18n/en/messages.po
to its original state Change msgctxt "XXX" to msgctxt "blackcube/core/XXX" to match Blackcube core context insrc/i18n/messages.pot
mv src/i18n/en/messages.po src/i18n/messages.pot
git checkout src/i18n/en/messages.po
sed -i 's/msgctxt "([^"]+)"/msgctxt "blackcube\/core\/$1"/g' src/i18n/messages.pot
Once done, you can update/add translations in src/i18n/<lang>/messages.po
using poedit or any other tool.
Running tests
# once databe is installed and pre-populated with `php yii.php bc:init`
./vendor/bin/codecept run