working now

This commit is contained in:
Nick Yeoman 2023-06-06 01:58:54 -07:00
parent cca1cc8751
commit 8e677c05f3
7 changed files with 51 additions and 22 deletions

View File

@ -4,17 +4,44 @@ Joomla CMS.
Make sure the projectName is set correctly, it's very important, because it's used for git, docker, mysql and joomla. Make sure the projectName is set correctly, it's very important, because it's used for git, docker, mysql and joomla.
## Installation ## Quick Installation
1. Clone me ```git clone git@git.nickyeoman.com:nick/joomla.git projectName```
1. cd projectName
1. Setup your .env file ```mv env.sample .env``` then edit with your favorite editor.
1. Prepare your project for git ```bash bin/new_project.sh```
1. Run the containers to initialize ```sudo bash bin/docker_up.sh```
1. cli installer ```bash bin/setup_joomla_installer.sh```
1. Manually set Site Meta Description in [Administrator](http://localhost:8000/administrator/index.php?option=com_config)
1. Run ```sudo bash bin/finalize.sh```
## Working Environment ```bash
# STEP 1
# Clone the repo (change projectName to the name of your project)
git clone git@git.nickyeoman.com:nick/joomla.git projectName
# STEP 2
# Move into the dir
cd projectName
# STEP 3
# Setup your env file
mv env.sample .env
vi .env
# STEP 4
# Prepare your project for git
bash bin/new_project.sh
# STEP 5
# Run the containers to initialize
sudo bash bin/docker_up.sh
# STEP 6
# Joomla cli installer
sudo bash bin/setup_joomla_installer.sh
# STEP 7
# Manually set Site Meta Description in [Administrator](http://localhost:8000/administrator/index.php?option=com_config)
# Step 8
# Clean up and Config
sudo bash bin/finalize.sh
```
## Development Environment
Let's update our bash_profile with some alias: Let's update our bash_profile with some alias:
```bash ```bash
@ -35,6 +62,7 @@ joomla cache:clean
1. Move to the directory where you would like to keep the component. ```cd ~/joomla-components/``` 1. Move to the directory where you would like to keep the component. ```cd ~/joomla-components/```
1. Run component creator from your Joomla install. ```bash ~/projects/joomla/projectName/bin/create_component.sh``` 1. Run component creator from your Joomla install. ```bash ~/projects/joomla/projectName/bin/create_component.sh```
1. Optionally save to git repo. 1. Optionally save to git repo.
1. build the zip file by running bin/build_component.sh
## References ## References
@ -44,7 +72,7 @@ joomla cache:clean
* https://github.com/ceford/j4xdemos-com-mywalks/tree/master * https://github.com/ceford/j4xdemos-com-mywalks/tree/master
* https://www.abdulwaheed.pk/en/blog/41-information-technology/44-joomla/302-how-to-create-joomla-4-component.html * https://www.abdulwaheed.pk/en/blog/41-information-technology/44-joomla/302-how-to-create-joomla-4-component.html
* https://www.techfry.com/resources/how-to-create-joomla-component * Can't get this one working either: https://www.techfry.com/resources/how-to-create-joomla-component
* https://docs.joomla.org/J4.x:Developing_an_MVC_Component/Introduction * https://docs.joomla.org/J4.x:Developing_an_MVC_Component/Introduction
* [Develop a component](https://docs.joomla.org/J4.x:Developing_an_MVC_Component/Developing_a_Basic_Component) * Can't get this one working [Develop a component](https://docs.joomla.org/J4.x:Developing_an_MVC_Component/Developing_a_Basic_Component)
* [Minimal component](https://joomla.stackexchange.com/questions/22176/minimal-basic-structure-for-a-frontend-joomla-component-without-using-joomla-mvc) * [Minimal component](https://joomla.stackexchange.com/questions/22176/minimal-basic-structure-for-a-frontend-joomla-component-without-using-joomla-mvc)

View File

@ -6,7 +6,7 @@ if [[ -z "${name}" ]]; then
exit 1 exit 1
fi fi
cat <<EOM > admin/src/View/${name}/html/default.php cat <<EOM > admin/tmpl/${name}/default.php
<?php defined('_JEXEC') or die('Restricted Access'); ?> <?php defined('_JEXEC') or die('Restricted Access'); ?>
<h2>Hello ${name}!</h2> <h2>Hello ${name}!</h2>

View File

@ -8,7 +8,7 @@ fi
cat <<EOM > admin/src/Controller/DisplayController.php cat <<EOM > admin/src/Controller/DisplayController.php
<?php <?php
namespace harvst\\Component\\${name}\\Administrator\\Controller; namespace Harvst\\Component\\${name^}\\Administrator\\Controller;
defined('_JEXEC') or die; defined('_JEXEC') or die;
@ -19,7 +19,7 @@ class DisplayController extends BaseController {
protected \$default_view = '${name}'; protected \$default_view = '${name}';
public function display(\$cachable = false, \$urlparams = array()) { public function display(\$cachable = false, \$urlparams = array()) {
parent::display(); return parent::display(\$cachable, \$urlparams);
} }
} }

View File

@ -28,11 +28,11 @@ cat <<EOM > ${name}.xml
<!-- The description is optional and defaults to the name --> <!-- The description is optional and defaults to the name -->
<description>COM_${name^^}_DESCRIPTION</description> <description>COM_${name^^}_DESCRIPTION</description>
<namespace path="src/">harvst\Component\\${name}</namespace> <namespace path="src/">Harvst\Component\\${name^}</namespace>
<administration> <administration>
<!-- The link that will appear in the Admin panel's "Components" menu --> <!-- The link that will appear in the Admin panel's "Components" menu -->
<menu link="index.php?option=com_${name}">${name}</menu> <menu link="index.php?option=com_${name}">${name^}</menu>
<files folder="admin"> <files folder="admin">
<folder>language</folder> <folder>language</folder>
<folder>services</folder> <folder>services</folder>

View File

@ -16,8 +16,8 @@ use Joomla\DI\ServiceProviderInterface;
return new class implements ServiceProviderInterface { return new class implements ServiceProviderInterface {
public function register(Container \$container): void { public function register(Container \$container): void {
\$container->registerServiceProvider(new MVCFactory('\\harvst\\Component\\${name}')); \$container->registerServiceProvider(new MVCFactory('\\\\Harvst\\\\Component\\\\${name^}'));
\$container->registerServiceProvider(new ComponentDispatcherFactory('\\harvst\\Component\\${name}')); \$container->registerServiceProvider(new ComponentDispatcherFactory('\\\\Harvst\\\\Component\\\\${name^}'));
\$container->set( \$container->set(
ComponentInterface::class, ComponentInterface::class,
function (Container \$container) { function (Container \$container) {

View File

@ -6,10 +6,10 @@ if [[ -z "${name}" ]]; then
exit 1 exit 1
fi fi
cat <<EOM > admin/src/View/${name}/HtmlView.php cat <<EOM > admin/src/View/${name^}/HtmlView.php
<?php <?php
namespace harvst\\Component\\${name}\\Administrator\\Controller; namespace Harvst\\Component\\${name^}\\Administrator\\View\\${name^};
defined('_JEXEC') or die; defined('_JEXEC') or die;

View File

@ -1,4 +1,5 @@
#!/bin/bash #!/bin/bash
# create_component.sh componentName
# Determine the directory where the script is located # Determine the directory where the script is located
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
@ -57,7 +58,7 @@ mkdir -p "$component_dir"
cd "$component_dir" || exit cd "$component_dir" || exit
mkdir -p site mkdir -p site
mkdir -p admin/language/en-GB admin/services mkdir -p admin/language/en-GB admin/services
mkdir -p admin/src/View/${name} admin/tmpl/${name} mkdir -p admin/src/Controller admin/src/View/${name^} admin/tmpl/${name}
# Source the files for generating component files # Source the files for generating component files
source "$script_dir/component_parts/manifest.sh" source "$script_dir/component_parts/manifest.sh"