To retain the original page written by EW this page was added for the transcription of the YouTube video and will be the format for the other videos to be on separate pages linked to in the main page so it is left as is for the videos.

Joseph Geller 2018-09-15 22:02:39 -05:00
parent 4a90fcef4b
commit 3caa8b3c01

18
Intro-to-JCB.md Normal file

@ -0,0 +1,18 @@
Joomla! Component Builder (hereafter known as JCB) was built for those who know the PHP programming language. If you don't know PHP, there are some great places to learn it. One of the few I would recommend is [Lynda.com](https://www.lynda.com/) and you can go to the website and search for PHP. You will find many courses that should get you on your way. If you don't know CSS, JavaScript, and HTML then you definitely need to go visit this website and ones similar to it and get that knowledge. JCB was not created for those who have no development skills.
I developed JCB for myself as a Joomla! Component developer to easily and quickly get the bulk of the code common to most Joomla! Components so I could focus on the custom code which goes beyond the norm. If you don't have an understanding of the Joomla! API, you will be at a disadvantage. It's not that difficult to get this knowledge, but you do need to be able to read PHP and build a Joomla! web site. Understanding the Joomla API requires an understanding of Object Oriented Programming (OOP) and the classes, methods and properties in the Joomla! core. A good way to do this is to build a Joomla! web site without any installed extensions. Then, look at its directory, folders and files. Become familiar with the many models, views and controllers (MVC) within the directory structure.
For example, open a view and read through the script. If you use NetBeans you can position your cursor within the function name and press control shift. It will go to the source and display where in the Joomla website that function is declared. Open that file by clicking it in the left hand column. Continue this exercise with other controllers, models and views that are interconnected. You will begin to see the way the code connects them with each other in a similar fashion for each MVC group. Look through the class methods to see which ones are being extended. Note how some arent extending any classes and so on. That's how I got to know how things worked in Joomla! and eventually was able to write sophisticated and feature rich components. Most other developers also learn this way.
Developers familiar with lets say the Google API have an advantage with understanding how JCB works. They will immediately see the JCB application is implementing the [Joomla! API](https://api.joomla.org/cms-3/namespaces/Joomla.html)repeatedly. I am not in the habit of reinventing things and as such I'm trying to stay as close to Joomla! coding conventions as possible. As I become aware of better ways to implement it, I would like to enhance what is already written and also employ it in what has not been coded yet. I am open to better ways of doing something already implemented or ideas for code I am in the process of developing. Please communicate that to me. I will gladly do what is necessary to change the code and implement your suggestion.
I have and continue to do the bulk of the work developing JCB. If its not a serious issue with JCB requiring my involvement and instead is an issue within your component builds you must be willing to get your hands dirty. If you built something and it doesn't work you need to debug it. The best way to do this is to build a local sandbox environment as I do. I have PHP, MySQL and Joomla. If I was to open a browser I would type in local followed by VDM as an example. I have a few sites here and they are what we will be working in throughout this manual. One being developed is this Bowler component. Other sites are on the server so I use a small script on my server to change to another site let's say Builder.VDM which is another site thats loading some of the best displays that I'm working on. So, I add an administrator to that, open the backend and log in to run in a sandbox environment. What are the advantages?
Not being exposed to the Internet is one advantage. Those of you that already have a sandbox environment are familiar with all these advantages but for those of you who don't, you can work offline most of the time plus add some things like XDEBUG and other scripts which help you debug your application very easily. Why is online development not a good solution? It is time consuming and difficult to build an online server and expensive; it's much easier and less costly to develop offline. If you don't know how to do that please visit [Lynda.com](https://www.lynda.com/) and look at a course called [Linux for PHP Developers by John Peck](https://www.lynda.com/Linux-tutorials/Linux-PHP-Developers/587676-2.html?srchtrk=index%3a1%0alinktypeid%3a2%0aq%3aUp+and+Running+with+Linux+for+PHP+Developers%0apage%3a1%0as) This is an excellent course to get your own local developing environment set up. I Don't know if this URL is going to be helpful, but Up and Running with Apache for Linux PHP developers which I watched many moons ago has been very helpful to get my initial sandbox set up and ones after that. It will probably be beneficial for you to read also. You'll find you get better as you find better ways, but it's a good place to start.
The best place for functions to be functional is offline. If you're going to develop online, please realize there may be security risks, especially when you've compiled an application. It places it in your temporary folder, which can be accessed from anywhere. Anyone can access your temporary folder on your server or your website. You can delete the application from there immediately with a button which I'll show you later but it unsafe. The purpose of the application was to create a development environment where you can safely explore all aspects of the environment you have installed. So, I would still suggest you develop offline.
Since JCB is free, please help me to ensure the future of this component by not sharing its training videos online or with anyone else. The only way that I can sustain this development effort is if you don't share these videos. So please, if you'll be so kind not to share these videos with your organization or perhaps a company you own. I can't stop you from doing that. So, if you do I would encourage you to consider donating. If you start to reap the benefits of the time that this application saves you do likewise so this application can be further developed for the rest of the community and for yourself
We would like to also involve you on get up so you can go to https://github.com/vdm-io/Joomla-Component-Builder. If you have issues, requests or anything else, please come here, go to issues and open a new issue. I will ensure that you can do that If you've got an account, of course, we'll get up and then may at least our discussions you're all logged and it's public and others can see it and we Can also come back as to it and reference?
If you want to make a feature request then you can start that feature request obviously here in the issues and Possibly if it exists I'll point you out to it. And if the training is needed to build added to this training video set but If there is a feature request that I started here and it feels that you can't wait Because we possibly will create milestones and we'll add feature requests to milestones And if you want to ensure that a feature request ends up being done like before anyone elses, then you need to communicate with me at this email and I can send you a link to make a donation or I Yeah, I'll give you an invoice even if needed So that we can ensure that feature request be done before others Okay, so that's maybe all of it just looking at sort of an introduction If you have any questions, please let me know obviously not regarding the component itself but just these points I've mentioned I Would be grateful. Okay, it's let's get on with it Since I'm really looking forward to showing you how everything works.