diff --git a/docs/api/usage.md b/docs/api/usage.md index b873169e491b8c4d6b80cf261a1d91a5451532fb..a037ce9454b0223fd823c41e74d9bd2efbe89da0 100644 --- a/docs/api/usage.md +++ b/docs/api/usage.md @@ -91,19 +91,21 @@ before using the API. See the examples in [Bootstrap Reference]. ## PHP (class.api.php) CiviCRM v3.4 introduced an object-oriented API client, `class.api.php`. -This class be used locally or remotely to invoke APIs, as in: +This class can be used locally or remotely to invoke APIs, as in: ```php require_once 'your/civicrm/folder/api/class.api.php'; -$api = new civicrm_api3(); +$api = new civicrm_api3(array( + // Specify location of "civicrm.settings.php". + 'conf_path' => 'your/sites/default', +)); $apiParams = array( 'first_name' => 'Alice', - 'last_name' => 'Roberts' + 'last_name' => 'Roberts', ); if ($api->Contact->Get($apiParams)) { //each key of the result array is an attribute of the api echo "\n contacts found ".$api->count; - 'contact_type'=>'Individual','return'=>'sort_name,current_employer')) { } else { echo $api->errorMsg(); @@ -111,8 +113,11 @@ else { ``` If you call the API in the object oriented fashion, you do not have to -specify 'version' as a parameter +specify 'version' as a parameter. +The object-oriented client can connect to a local or remote CiviCRM +instance. For details about connection parameters, see the docblock in +[class.api.php](https://github.com/civicrm/civicrm-core/blob/master/api/class.api.php). ## REST diff --git a/docs/basics/skills.md b/docs/basics/skills.md new file mode 100644 index 0000000000000000000000000000000000000000..dd560e20c424fb28e0bbcef63ed904eb7dfda6c4 --- /dev/null +++ b/docs/basics/skills.md @@ -0,0 +1,85 @@ +# Prerequisite skills + +## Learn how to *use* CiviCRM + +Before diving into CiviCRM development, it's worth mentioning that a solid +understanding of CiviCRM from the *user's* perspective can really help. You +pick up the standard user interface patterns that you can re-use in your work, +and you might even realise that the UI already provides the functionality you +wish to develop. To that end, please see the +[User Guide](https://docs.civicrm.org/user/en/stable/). + + +## Learn these developer skills + +Below we've outlined the major technologies that CiviCRM is built with. +You don't need to be a pro at everything listed here to get started, but it's +useful to understand at least of couple of them well, and have a basic +understanding of how they fit together to create CiviCRM. + +Technologies which are contained within the CiviCRM project +(e.g. civix, buildkit) are covered in detail within this guide, but +other technologies (such as PHP and Git, which are not CiviCRM-specific) are +outside its scope. As such, this guide assumes that readers +arrive with a baseline understanding of these developer skills. This page lists +these prerequisite skills, along with pointers to usher the reader towards +appropriate resources for closing skills gaps, wherever necessary. +Items listed towards the top of this list are, generally-speaking, more +important skills for CiviCRM development, but the specific skills needed to +accomplishing a particular development goal, certainly vary. + +- **PHP** - the main programming language in which CiviCRM is written + - [Language reference](http://php.net/manual/en/langref.php) +- **Git** - a version control system for tracking changes to source code + - [Official documentation](https://git-scm.com/documentation) + - [15 minute interactive tutorial](https://try.github.io/levels/1/challenges/1) +- **Command line / bash** - in general, "the command line" refers to using a + text-only interface to run programs such as `civix`, `git`, and many more. + Bash is the most common "shell" program used to execute these commands on + Unix computers (i.e. Linux and OS X). + - [Unix command line tutorial](http://www.ee.surrey.ac.uk/Teaching/Unix/) + - *Microsoft Windows has a command line shell which functions very + differently from bash. While developing CiviCRM on Windows is possible, + it will be a slightly more uphill battle, for this reason and others.* +- **Javascript** - another programing language used in CiviCRM, especially + for any logic that happens within the web browser. *(Note that "javascript" + and "java" are entirely different technologies and should not be confused.)* + - [Javascript tutorial](http://www.w3schools.com/js/default.asp) +- **jQuery** - a javascript library that makes manipulating elements on a web + page easy + - [jQuery documentation](http://api.jquery.com/) +- **HTML** - the markup used so transmit page content to a web browser. + - [HTML tutorial](http://www.w3schools.com/html/default.asp) +- **Smarty** - a "template engine" which allows developers to write an HTML + file for one web page, while easily including content dynamically generated + from PHP + - [Smarty documentation](http://www.smarty.net/docs/en/) +- **CSS** - a programming language used to specify consistent visual style to + be applied to many different elements within a web page. Different web + browsers interpret the CSS code in slightly different ways. + - [CSS tutorial](http://www.w3schools.com/css/default.asp) + - [Can I use](http://caniuse.com/) - good for seeing which web browsers + have implemented certain CSS features + - [Comparison of layout engines](https://en.wikipedia.org/wiki/Comparison_of_layout_engines_\(Cascading_Style_Sheets\)) + another helpful comparison of the differences between web browsers +- **Drupal / Wordpress / Joomla!** - CiviCRM must be installed within one of + these content management systems, and learning more about the underlying + CMS will aid CiviCRM development. Drupal is favored by most CiviCRM + developers and CiviCRM actually borrows many development practices from + the project, so learning Drupal is a good place to start if you are unsure. + - [Drupal documentation](https://www.drupal.org/docs/) + - [Wordpress documentation]() + - [Joomla documentation]() +- **SQL / MySQL** - "SQL" is a standardized language used by many different + kinds of databases to manipulate data in the database. "MySQL" is one kind + of database which CiviCRM uses to store all its data. The query syntax + that MySQL uses conforms [almost](http://troels.arvin.dk/db/rdbms/) + entirely to the SQL standard, so learning SQL is basically synonymous to + learning MySQL. + - [SQL tutorial](http://www.w3schools.com/sql/default.asp) + - [MySQL statement syntax](http://dev.mysql.com/doc/refman/en/sql-syntax.html) + - [MySQL Workbench](http://www.mysql.com/products/workbench/) - + an intuitively designed GUI tool for inspecting and interacting with a + MySQL database (great for learning more about the CiviCRM data model). + + diff --git a/mkdocs.yml b/mkdocs.yml index 69654bf278005dd130aad371013d8372bc43060a..213354713dc9705ec25a33af5755130f823e2e29 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -11,6 +11,7 @@ pages: - Home: index.md - Basics: - Developer Community: basics/community.md + - Prerequisite skills: basics/skills.md - Requirements: requirements.md - Planning your project: basics/planning.md - Build: build.md diff --git a/redirects/wiki-crm.txt b/redirects/wiki-crm.txt new file mode 100644 index 0000000000000000000000000000000000000000..97f84fc5cdc0212602795669389e59ade9ed45ba --- /dev/null +++ b/redirects/wiki-crm.txt @@ -0,0 +1 @@ +Documentation+Infrastructure+Canary develop diff --git a/redirects/wiki-crmdoc.txt b/redirects/wiki-crmdoc.txt index 963e632b274aec5b3408743e04de2146fc51b851..0432d8f3ea807ed5e0bc33212eb68f7ddfd4d61d 100644 --- a/redirects/wiki-crmdoc.txt +++ b/redirects/wiki-crmdoc.txt @@ -3,5 +3,4 @@ The+developer+community basics/community Create+an+Extension extensions/basics Before+you+start basics/planning Recommendations basics/planning -The+codebase core/architecture.md - +The+codebase core/architecture