# M3P2

These are the sources of an instance of Grav tailored for the courses of M3P2.

The plugins and themes are included.
Only the php vendors are not included.


## Run locally for fast development

### LINUX/MAC

PHP `7.1` (or above) is recommended.  Do tell us what works or not for you.
Apparently, PHP `5.6` works as well. To confirm by @cmeny.

Clone this repository:

    git clone --recursive https://m3p2.ljbac.com/m3p2/grav-website.git m3p2-html-generator


Enter the project:

    cd m3p2-html-generator


Install the dependencies:

	bin/grav install


If it complains that you do not have `bin/composer.phar`, try installing it by hand :

    cd bin
    curl -sS https://getcomposer.org/installer | php
    cd ..


Add the courses from the other repository, if you did not use `git clone --recursive`:

	bin/clone_courses.sh


And run locally

	php -S localhost:8000 system/router.php


Finally, visit http://localhost:8000 in your favorite browser.


At this point, you should be asked to set admin credentials.
These are local and will allow you into [the `/admin` section](http://localhost:8000/admin) of the website.

### WINDOWS

Download php 7.xx

Create C:\php7\

Add "C:\php7\" to environnement variable

	Right click "computer"
	"Properties"
	"advanced parameter" (on the left part)
	then "Environement Variable" (button at the bottom)
	In the "System Variable" part, find "Path"
	Click on it the "Edit"
	go the end of the second field (Value of variable), which should be ended by ";", if it's not the case, add ";"
	then Add "C:\php7\;"
	CLick "OK" then "OK"

Enable gd and curl

	Open C:/php7/php.ini
	Ctrl+F to search for "curl"
	You should find ";extension=curl"
	Remove the ; to enable curl extension
	You should find ";extension=gd2" 2 lines below
	Remove the ; to enable gd extension

Install git

	TODO

Clone your project

	Shift+Right click where you want to put m3p2 to "Open Command line here"
	use the command: "git clone --recursive https://m3p2.ljbac.com/m3p2/grav-website.git m3p2-html-generator"

download https://getcomposer.org/composer.phar and copy it in m3p2-html-generator/bin

Install grav:

	go inside m3p2-html-generator
	Shift+Right click where you want to put m3p2 to "Open Command line here"
	use the command "php bin/grav install"

## Mirror the courses to generate a static website

This may come in handy when we'll want offline access

    wget -mkxKE -e robots=off https://courses.m3p2.ljbac.com

And then to browse locally, for example :

    cd courses.m3p2.ljbac.com
    
    firefox index.html


## Upgrading vendors

Since our plugins and themes are in this repository, they are frozen.

So far, Grav itself is safe to update, as well as all plugins **but mathjax** (until they merge our MR).

Waiting for future Grav updates to specify deps more elegantly (they're working on it at this time).

The theme `textbook` is tailored for M3P2 courses.
The plugin `gitlab-markdown-adapter` was expressly made for this Grav instance.

To update Grav you should use the [Grav Package Manager](https://learn.getgrav.org/advanced/grav-gpm) or `GPM`:

```
$ bin/gpm selfupgrade
```

To update plugins and themes:

```
$ bin/gpm update
```

---

---

---

# ![](https://avatars1.githubusercontent.com/u/8237355?v=2&s=50) Grav

Grav is a **Fast**, **Simple**, and **Flexible**, file-based Web-platform.
It follows similar principles to other flat-file CMS platforms, but has a different design philosophy than most.
Grav comes with a powerful **Package Management System** to allow for simple installation and upgrading of plugins and themes, as well as simple updating of Grav itself.

The underlying architecture of Grav is designed to use well-established and _best-in-class_ technologies to ensure that Grav is simple to use and easy to extend. Some of these key technologies include:

* [Twig Templating](https://twig.sensiolabs.org/): for powerful control of the user interface
* [Markdown](https://en.wikipedia.org/wiki/Markdown): for easy content creation
* [YAML](https://yaml.org): for simple configuration
* [Parsedown](https://parsedown.org/): for fast Markdown and Markdown Extra support
* [Doctrine Cache](https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/caching.html): layer for performance
* [Pimple Dependency Injection Container](https://pimple.sensiolabs.org/): for extensibility and maintainability
* [Symfony Event Dispatcher](https://symfony.com/doc/current/components/event_dispatcher/introduction.html): for plugin event handling
* [Symfony Console](https://symfony.com/doc/current/components/console/introduction.html): for CLI interface
* [Gregwar Image Library](https://github.com/Gregwar/Image): for dynamic image manipulation

# Requirements

- PHP 5.6.4 or higher. Check the [required modules list](https://learn.getgrav.org/basics/requirements#php-requirements)
- Check the [Apache](https://learn.getgrav.org/basics/requirements#apache-requirements) or [IIS](https://learn.getgrav.org/basics/requirements#iis-requirements) requirements


# License

See [LICENSE](LICENSE.txt)

[gitflow-model]: http://nvie.com/posts/a-successful-git-branching-model/
[gitflow-extensions]: https://github.com/nvie/gitflow

