Updated 063 Proposed Collaborative Workflow in JCB (markdown)

Amigo 2019-11-01 08:45:33 +02:00
parent 3e711b5bbf
commit 3b302d1e94
1 changed files with 11 additions and 10 deletions

@ -5,27 +5,28 @@
[00:00:00](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h00m00s)
(Click on these time links to see Youtube video)
I want to talk to you about a collaborative workflow. JCB like any other Joomla Component can function in a shared environment quite easily, where you have one website or one system that is online, and people can login, and can [00:00:22](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h00m22s) edit components. They can click on a component and while they're working on that component, no one else can, because it will in effect lock the component out for them. If we open the list view again, you will see that it is checked out. This functionality [00:00:46](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h00m46s) is available in JCB. Whether it's an admin view, or a field. If your login and someone else opens it up, it checks out the item. People can work together quite easily in a shared environment where they have one JCB, but multiple users. More than that it also has a very strong Permissions structure,[00:01:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h01m13s) which if you open the Component Builder Permissions area, you'll see that it has quite a long list.>>>>>>>>>>>
I want to talk to you about a collaborative workflow. JCB like any other Joomla Component can function in a shared environment quite easily, where you have one website or one system that is online, and people can login, and can [00:00:22](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h00m22s) edit components. They can click on a component and while they're working on that component, no one else can, because it will in effect lock the component out for them. If we open the list view again, you will see that it is checked out. This functionality [00:00:46](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h00m46s) is available in JCB. Whether it's an admin view, or a field. If your login and someone else opens it up, it checks out the item. People can work together quite easily in a shared environment where they have one JCB, but multiple users. More than that it also has a very strong Permissions structure,[00:01:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h01m13s) which if you open the Component Builder Permissions area, you'll see that it has quite a long list.
I suppose longer than one might anticipate, it's a huge list of permissions. It means you can have different groups in your Joomla groups regarding to Public, Guest etc, that have access and is allowed to work on only certain areas. [00:01:44](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h01m44s) Your possibilities of setting up a development workflow with JCB in one Joomla website is endless. That was the whole idea. The idea behind here was to make JCB a place where you could have teams work together in Joomla Developing Components. This is the one that's worked from day one, this approach. It's very powerful. [00:02:11](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h02m11s) I've already been told by quite a number of developers that they are using that. They have teams working together on components and it is excellent.
I suppose longer than one might anticipate, it's a long list of permissions. It means you can have different groups in your Joomla groups regarding to Public, Guest etc, that have access and is allowed to work on only certain areas. [00:01:44](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h01m44s) Your possibilities of setting up a development workflow with JCB in one Joomla website is endless. That was the whole idea. The idea behind here was to make JCB a place where you could have teams work together in Joomla Developing Components. This is the one that's worked from day one, this approach. It's very powerful. [00:02:11](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h02m11s) I've already been told by quite a number of developers that they are using that. They have teams working together on components and it is excellent.
### Offline Environment
[00:02:23](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h02m23s)
We all know JCBs most desirable environment is an offline environment. Where you do development in your own local developing environment. Where you maybe have a virtual machine running, and you can do docker deployments or something like that when you run Joomla and you're safe within your own network. When you do that the collaborative concept of working together with other developers doesn't come to its right. That's what I've been working on. The whole idea of the JCB packages was birthed out of this need. The need to collaborate with others around a specific component.
We all know JCBs most desirable environment is an offline environment. Where you do development in your own local developing environment. Where you maybe have a virtual machine running, and you can do docker deployments or something like that when you run Joomla and you're safe within your own network. When you do that the collaborative concept of working together with other developers doesn't come to its right. That's what I've been working on. The whole idea of the JCB packages was born out of this need. The need to collaborate with others around a specific component.
### Area Called Servers - Added The Option SFTP - Create Connections Between Different JCBs
[00:03:13](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h03m13s)
We've also started working on a area called servers. In which we have added the option for SFTP which is really smart protocol. It's purely PHP. It will function in moving zip files and things around. But the idea would be in the long run [00:03:44](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h03m44s) that we could possibly create connections between different JCBs. Which could automatically synchronize things almost like they're on the same system. I did have a tread open on that on Github, connecting JCB's with each other to sync development on agreed projects. That was the issue that I opened up, issue 233.
We've also started working on a area called servers. In which we have added the option for SFTP which is really smart protocol. It's purely PHP. It will function in moving zip files and things around. But the idea would be in the long run [00:03:44](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h03m44s) that we could possibly create connections between different JCBs which could automatically synchronize things almost like they're on the same system. I did have a thread open on that on Github, connecting JCB's with each other to sync development on agreed projects. That was the issue that I opened up, issue 233.
### New Feature - Development Method
[00:04:14](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h04m14s)
There was a discussion between me and one of my coworkers and some others from the community which ended up in saying that this is a premium feature. Although we have put it on the back burner, I am still thinking about taking this and making this a reality. [00:04:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h04m42s) I'm part of doing that. I'm taking a specific area of JCB and that area is the import of JCB packages. To improve this area, synchronization will be nothing else but a JCB package traveling from one to the other, updating each other automatically. To achieve that I started working on a feature which is available in the latest version 2.7 9, [00:05:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h05m17s) Development Method. We have called it, the Default, and it is the way that it always used to work. Then there's Expansion. There's a tutorial about this which really explains that you can select specific components that you've developed. Then on the frequency of the [00:05:39](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h05m39s) Cronjob it will build and install this project automatically. That is the first step needing to make that connection between two projects possible. I'm literally talking about different Joomla websites, one being offline and one being online. One that's online to serve like a hub, then everybody that's offline would be pushing the changes to this online and pulling again from it. That is the long-term aim.
There was a discussion between me and one of my coworkers and some others from the community which ended up in saying that this is a premium feature. Although we have put it on the back burner, I am still thinking about taking this and making this a reality. [00:04:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h04m42s)
So part of doing that is to take a specific area of JCB and that area is the import of JCB packages. To improve this area, synchronization will be nothing else but a JCB package traveling from one to the other, updating each other automatically. To achieve that I started working on a feature which is available in the latest version 2.7 9, [00:05:17](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h05m17s) 'Development Method'. We have called it, the Default, and it is the way that it always used to work. Then there's Expansion. There's a tutorial about this which really explains that you can select specific components that you've developed. Then on the frequency of the [00:05:39](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h05m39s) Cronjob it will build and install this project automatically. That is the first step needing to make that connection between two projects possible. I'm literally talking about different Joomla websites, one being offline and one being online. One that's online to serve like a hub, then everybody that's offline would be pushing the changes to this online and pulling again from it. That is the long-term aim.
### Team Of Developers
@ -49,29 +50,29 @@ There's a source code area where you can go and look on GitHub to this program a
[00:08:30](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h08m30s)
First you need to realize there is the JCB Mapped Component and then there is the Joomla Component. The JCB Mapped Component is the fields, the views, the code, everything inside of JCB that can be moved between [00:08:49](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h08m49s) JCBs being one website one or the other. You can extract a package and give it to someone and he can import it into his JCB. This is what this is.
First, you need to realize there is the JCB Mapped Component and then there is the Joomla Component. The JCB Mapped Component is the fields, the views, the code, everything inside of JCB that can be moved between [00:08:49](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h08m49s) JCBs being one website one or the other. You can extract a package and give it to someone and he can import it into his JCB. This is what this is.
### Joomla Component
[00:09:04](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h09m04s)
Where as the Joomla Component is the produced package which when you compile that Mapped Component it produces a Joomla Component and these are two different things. Although they are the same thing. When I think about the workflow, then JCB Mapped Component is affecting Joomla Component. But Joomla Component cannot effect JCB Mapped Component. You can change JCB Mapped Component, make changes to the package and it would uses a different [00:09:35](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h09m35s) result in Joomla Component package. But if you make changes to Joomla Component package, it does not immediately make any difference to JCB Mapped Component package. Unless you make use of what we have called the custom code implementation. We do editing within the IDE. Then yes making changes to Joomla Component package will affect JCB Mapped Component. But that's a whole different story, [00:10:00](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h10m00s) and a little bit beyond what I want to explain. When I think about a workflow, then I would like to see that we make it changed to JCB Mapped Component package. It gets validated by Joomla Component and then everybody updates again this package to be the same as what we decided on. That may not make sense.
Where as the Joomla Component is the produced package which when you compile that Mapped Component it produces a Joomla Component and these are two different things. Although they are the same thing. When I think about the workflow, then JCB Mapped Component is affecting Joomla Component. But Joomla Component cannot effect JCB Mapped Component. You can change JCB Mapped Component, make changes to the package and it would uses a different [00:09:35](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h09m35s) result in Joomla Component package. But if you make changes to Joomla Component package, it does not immediately make any difference to JCB Mapped Component package. Unless you make use of what we have called the custom code implementation where you do editing within the IDE. Then, yes, making changes to Joomla Component package will affect JCB Mapped Component. But that's a whole different story, [00:10:00](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h10m00s) and a little bit beyond what I want to explain. When I think about a workflow, then I would like to see that we make a change to JCB Mapped Component package. It gets validated by what we have here (Joomla Component) and then everybody updates again this package to be the same as what we decided on. That may not make sense.
### Demonstration - Example - Questions And Answers
[00:10:26](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h10m26s)
Let me add some arrows and a demonstration to this. I'm going to use Question And Answers Package as an example. If you are going to become a Collaborator on the Question And Answers package. Then you'd first need to go to the source code of it. On GitHub you would go and open the source code, and you will fork this source code. Which would then [00:10:57](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h10m57s) Give you the option of making changes to the Question And Answers. But not directly manually but instead through JCB. That means that you will then clone this repository that you have forked down to your local development environment, and doing it as follow.
Let me add some arrows and a demonstration to this. I'm going to use Question And Answers Package as an example. If you are going to become a Collaborator on the Question And Answers package. Then you'd first need to go to the source code of it. On GitHub you would go and open the source code, and you will fork this source code. Which would then [00:10:57](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h10m57s) give you the option of making changes to the Question And Answers. But not directly manually but instead through JCB. That means that you will then clone this repository that you have forked down to your local development environment, and doing it as follow.
### First - Local Developing Environment - Options Area - Set Folder Path - Git Path
The first thing you do is you go back to your component where it's installed on your local developing environment, [00:11:26](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h11m26s) open the options area, set the folder path for your Git files. You are going to have a place where all your Git files, the component unzipped, is going to be placed automatically for you. Here you can [00:11:45](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h11m45s) add that. I'm going to place it in my user folder. I'm going to create a folder they call it Joomla. I have to do this manually. Then inside of that I'm going to add another folder called Git. I'm going to save this. I'm quickly going to create those folders and I'll show it to you in the command line. I need to first add the [00:12:18](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h12m18s) Company information. Save and close. It have another one to chose. This is just the language, make sure to put it to British at this stage. The Best practice. Another thing, I don't want to have any prefix at this stage. [00:12:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h12m42s) Save and close. We've got our Git path setup.
The first thing you do is you go back to your component where it's installed on your local developing environment, [00:11:26](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h11m26s) open the options area, set the folder path for your Git files. You are going to have a place where all your Git files, the component unzipped, is going to be placed automatically for you. Here you can [00:11:45](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h11m45s) add that. I'm going to place it in my user folder. I'm going to create a folder then call it, Joomla. I have to do this manually. Then inside of that I'm going to add another folder called 'Git'. I'm going to save this. I'm quickly going to create those folders and show it to you in the command line. I need to first add the [00:12:18](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h12m18s) Company information. Save and close. This is just the language, make sure to put it to British at this stage. It is the best practice. I don't want to have any prefix at this stage. [00:12:42](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h12m42s) Save and close. We've got our Git path setup.
### Create Files In Local Developing Environment - Via Command Line
[00:12:49](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h12m49s)
I need to create those files in my local developing environment. I'll do that via command line. First I'll make a directory, then I'm going to change that directory. In that directory I'm going to create another directory called Git, change the add directory as well. This is the directory where my components are going to be placed. At the moment if we look inside of this directory, there is really nothing showing. The first time I will compile a component [00:13:34](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h13m34s) and I will say to the compiler to add my files to the Git repository. It's going to create a folder with all the code inside it automatically. You will remember that I cloned this repository on GitHub Joomla Questions And Answers. [00:13:54](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h13m54s) To continue I need to get the JCB package for this installed into my JCB program. The way this is done, we go to the JCB package area and select the Questions And Answers package. We will get the package. [00:14:18](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h14m18s) We add the key. At the moment there are not any components on this install. It's fine to leave Merge to Yes. I'm going to Force Local Update of anything. We can just check again that it is the right package. It's the correct package. The checksum you can read. There is a checksum for the package and at the moment it seems that everything is fine, you can make a final check by clicking this link(https://raw.githubusercontent.com/vdm.io) [00:14:50](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h14m50s) and make sure that this number is the same as the one seeing on the page. All is good, click continue. There you have it. We've the component in our system.
I need to create those files in my local developing environment. I'll do that via command line. First, I will make a directory, then I'm going to change that directory. In that directory I'm going to create another directory called, 'Git', change that directory as well. This is the directory where my components are going to be placed. At the moment if we look inside of this directory, there is really nothing showing. The first time I will compile a component [00:13:34](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h13m34s) and I will say to the compiler to add my files to the Git repository. It's going to create a folder with all the code inside it automatically. You will remember that I cloned this repository on GitHub Joomla Questions And Answers. [00:13:54](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h13m54s) To continue I need to get the JCB package for this installed into my JCB program. The way this is done, we go to the JCB package area and select the Questions And Answers package. We will get the package. [00:14:18](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h14m18s) We add the key. At the moment there are not any components on this install. It's fine to leave '_Merge_' to 'Yes'. I'm going to Force Local Update of anything. We can just check again that it is the right package. It's the correct package. The checksum you can read. There is a checksum for the package and at the moment it seems that everything is fine, you can make a final check by clicking this link(https://raw.githubusercontent.com/vdm.io) [00:14:50](https://www.youtube.com/watch?v=zlhFyrCGWik&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=63&t=00h14m50s) and make sure that this number is the same as the one seeing on the page. All is good, click continue. There you have it. We've the component in our system.<<<<<<<<<
### Compile For The First Time - Add To Repository Folder - Yes