Posted
over 15 years
ago
Open source documentation
Diem documentation is quite complete:
22 Reference Book pages
+7 Diem Ipsum pages
+7 Howto pages
*2 versions (5.0 and 5.1)
= 72 pages
Untill today, only diem-project.org webmasters were able to write and fix Diem
... [More]
documentation. That was a hard time.
So I took some time to move all documentation to GitHub: Diem Documentation GitHub repo. Now you can create documentation issues, and even better, fork and improve it!
Git branches are used to separate 5.0 and 5.1 documentation: 5.0, 5.1.
The best thing is that diem-project.org pages are synchronized with the documentation repository. Each time we push to GitHub, the website is automatically updated, thanks to a post-receive hook.
Synchronize a Git repo with a database
In case you need, as I did, to update a database each time a Git repository receives data, this section may help you.
Install a local repo on the production server
As diem-project.org is itself a Git repo, I added the documentation as a submodule:
git submodule add git://github.com/diem-project/diem-docs.git data/diem-docs
Configure the GitHub repo
Add a post-receive hook url to the GitHub repo. The url must execute a symfony action on the website.
The symfony action
So this action gets called each time Diem GitHub repo receives data.
We need to fetch the files using Git, then read them to upgrade the database.
// handle GitHub post-receive hook
public function executeUpdateFromGit(dmWebRequest $request)
{
$this->forward404Unless($request->isMethod('post'));
$repoDir = sfConfig::get('sf_root_dir').'/data/diem-docs';
// include phpGitRepo
require_once(sfConfig::get('sf_root_dir').'/lib/vendor/php-git-repo/lib/phpGitRepo.php');
// create a git repo instance
$repo = new phpGitRepo($repoDir);
// run the synchronizer passing it the repo instance
$synchronizer = new gitDocumentationSynchronizer($repo);
$synchronizer->execute();
return $this->renderText('done');
}
See the action code on diem-project.org GitHub repo
To get new files from the GitHub repo I used php-git-repo, a lightweight PHP abstraction layer to Git.
I create a phpGitRepo instance and pass it to my database-specific synchronizer.
The synchronizer
For each Diem branch (currently 5.0 and 5.1), the synchronizer will checkout the appropriate Git branch and update it from the server using php-git-repo.
Then it compares files to the database content, and updates the database if needed.
class gitDocumentationSynchronizer extends dmConfigurable
{
protected $repo;
public function __construct(phpGitRepo $repo)
{
$this->repo = $repo;
}
public function execute()
{
$this->repo->git('fetch origin');
foreach($this->getBranches() as $branch)
{
$this->checkoutBranch($branch);
$this->updateBranch($branch);
$this->updateDatabase($branch);
}
}
See the synchronizer code on diem-project.org GitHub repo
If you find a typo on Diem documentation, or wanna see something documented better, feel free to create an issue. Or even better, fork the repository and pull your contribution request.
Happy Dieming and stay tuned, Diem 5.1 is coming along very, very nicely! [Less]
|
Posted
over 15 years
ago
Open source documentation
Diem documentation is quite complete:
22 Reference Book pages
+7 Diem Ipsum pages
+7 Howto pages
*2 versions (5.0 and 5.1)
= 72 pages
Untill today, only diem-project.org webmasters were able to write and fix Diem
... [More]
documentation. That was a hard time.
So I took some time to move all documentation to GitHub: Diem Documentation GitHub repo. Now you can create documentation issues, and even better, fork and improve it!
Git branches are used to separate 5.0 and 5.1 documentation: 5.0, 5.1.
The best thing is that diem-project.org pages are synchronized with the documentation repository. Each time we push to GitHub, the website is automatically updated, thanks to a post-receive hook.
Synchronize a Git repo with a database
In case you need, as I did, to update a database each time a Git repository receives data, this section may help you.
Install a local repo on the production server
As diem-project.org is itself a Git repo, I added the documentation as a submodule:
git submodule add git://github.com/diem-project/diem-docs.git data/diem-docs
Configure the GitHub repo
Add a post-receive hook url to the GitHub repo. The url must execute a symfony action on the website.
The symfony action
So this action gets called each time Diem GitHub repo receives data.
We need to fetch the files using Git, then read them to upgrade the database.
// handle GitHub post-receive hook
public function executeUpdateFromGit(dmWebRequest $request)
{
$this->forward404Unless($request->isMethod('post'));
$repoDir = sfConfig::get('sf_root_dir').'/data/diem-docs';
// include phpGitRepo
require_once(sfConfig::get('sf_root_dir').'/lib/vendor/php-git-repo/lib/phpGitRepo.php');
// create a git repo instance
$repo = new phpGitRepo($repoDir);
// run the synchronizer passing it the repo instance
$synchronizer = new gitDocumentationSynchronizer($repo);
$synchronizer->execute();
return $this->renderText('done');
}
See the action code on diem-project.org GitHub repo
To get new files from the GitHub repo I used php-git-repo, a lightweight PHP abstraction layer to Git.
I create a phpGitRepo instance and pass it to my database-specific synchronizer.
The synchronizer
For each Diem branch (currently 5.0 and 5.1), the synchronizer will checkout the appropriate Git branch and update it from the server using php-git-repo.
Then it compares files to the database content, and updates the database if needed.
class gitDocumentationSynchronizer extends dmConfigurable
{
protected $repo;
public function __construct(phpGitRepo $repo)
{
$this->repo = $repo;
}
public function execute()
{
$this->repo->git('fetch origin');
foreach($this->getBranches() as $branch)
{
$this->checkoutBranch($branch);
$this->updateBranch($branch);
$this->updateDatabase($branch);
}
}
See the synchronizer code on diem-project.org GitHub repo
If you find a typo on Diem documentation, or wanna see something documented better, feel free to create an issue. Or even better, fork the repository and pull your contribution request.
Happy Dieming and stay tuned, Diem 5.1 is coming along very, very nicely! [Less]
|
Posted
over 15 years
ago
Open source documentation
Diem documentation is quite complete:
22 Reference Book pages
+7 Diem Ipsum pages
+7 Howto pages
*2 versions (5.0 and 5.1)
= 72 pages
Untill today, only diem-project.org webmasters were able to write and fix Diem
... [More]
documentation. That was a hard time.
So I took some time to move all documentation to GitHub: Diem Documentation GitHub repo. Now you can create documentation issues, and even better, fork and improve it!
Git branches are used to separate 5.0 and 5.1 documentation: 5.0, 5.1.
The best thing is that diem-project.org pages are synchronized with the documentation repository. Each time we push to GitHub, the website is automatically updated, thanks to a post-receive hook.
Synchronize a Git repo with a database
In case you need, as I did, to update a database each time a Git repository receives data, this section may help you.
Install a local repo on the production server
As diem-project.org is itself a Git repo, I added the documentation as a submodule:
git submodule add git://github.com/diem-project/diem-docs.git data/diem-docs
Configure the GitHub repo
Add a post-receive hook url to the GitHub repo. The url must execute a symfony action on the website.
The symfony action
So this action gets called each time Diem GitHub repo receives data.
We need to fetch the files using Git, then read them to upgrade the database.
// handle GitHub post-receive hook
public function executeUpdateFromGit(dmWebRequest $request)
{
$this->forward404Unless($request->isMethod('post'));
$repoDir = sfConfig::get('sf_root_dir').'/data/diem-docs';
// include phpGitRepo
require_once(sfConfig::get('sf_root_dir').'/lib/vendor/php-git-repo/lib/phpGitRepo.php');
// create a git repo instance
$repo = new phpGitRepo($repoDir);
// run the synchronizer passing it the repo instance
$synchronizer = new gitDocumentationSynchronizer($repo);
$synchronizer->execute();
return $this->renderText('done');
}
See the action code on diem-project.org GitHub repo
To get new files from the GitHub repo I used php-git-repo, a lightweight PHP abstraction layer to Git.
I create a phpGitRepo instance and pass it to my database-specific synchronizer.
The synchronizer
For each Diem branch (currently 5.0 and 5.1), the synchronizer will checkout the appropriate Git branch and update it from the server using php-git-repo.
Then it compares files to the database content, and updates the database if needed.
class gitDocumentationSynchronizer extends dmConfigurable
{
protected $repo;
public function __construct(phpGitRepo $repo)
{
$this->repo = $repo;
}
public function execute()
{
$this->repo->git('fetch origin');
foreach($this->getBranches() as $branch)
{
$this->checkoutBranch($branch);
$this->updateBranch($branch);
$this->updateDatabase($branch);
}
}
See the synchronizer code on diem-project.org GitHub repo
If you find a typo on Diem documentation, or wanna see something documented better, feel free to create an issue. Or even better, fork the repository and pull your contribution request.
Happy Dieming and stay tuned, Diem 5.1 is coming along very, very nicely! [Less]
|
Posted
over 15 years
ago
dmTalkPlugin provides an HTML/CSS/JS web chat.
It allows to create rooms and chat without any registration.
Try it online!
|
Posted
over 15 years
ago
dmTalkPlugin provides an HTML/CSS/JS web chat.
It allows to create rooms and chat without any registration.
Try it online!
|
Posted
over 15 years
ago
dmTalkPlugin provides an HTML/CSS/JS web chat.
It allows to create rooms and chat without any registration.
Try it online!
|
Posted
over 15 years
ago
Accessible from your admin interface, this bot lets you choose pages, then browse them like a unauthenticated visitor.
It will report the status of your pages, detect errors and preload the cache.
It can be used for automated functional tests.
|
Posted
over 15 years
ago
Sometimes, we want to be able to change some symfony config from the admin panel.
This very simple plugin allows you to override any sfConfig app_* from the System > Configuration > Settings panel.
You just have to create a new setting starting with the app_ prefix.
|
Posted
over 15 years
ago
|
Posted
over 15 years
ago
Sometimes you want to share your website pages with twitter. You can shorten the page urls with a JavaScript API, but it slows down terribly your website.
This plugin asks only once for the shorten url, then cache it in database for later access.
|