Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/main/pages/index.php

166 lines
5.7 KiB

<?php
require_once '../inc/global.inc.php';
use Silex\Application;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\ORM\Tools\Pagination\Paginator;
use Pagerfanta\Pagerfanta;
use Pagerfanta\Adapter\DoctrineORMAdapter;
use Pagerfanta\View\TwitterBootstrapView;
//use Pagerfanta\View\DefaultView;
//use Pages\PagesAdmin;
class PagesController {
/*
function indexAction(Application $app, $page) {
return $this->listAction($app, $page);
}*/
function addAction(Application $app) {
$request = $app['request'];
$form = $this->getForm($app);
if ('POST' == $request->getMethod()) {
$form->bindRequest($request);
if ($form->isValid()) {
$page = $form->getData();
$page->setSlug($page->getTitle());
$em = $app['orm.em'];
/*$page_data = $form->getData();
$page->setContent($page_data['content']);
$page->setSlug($page_data['slug']);
$page->setTitle($page_data['title']);
$em->persist($page);*/
$em->persist($page);
$em->flush();
return $app->redirect($app['url_generator']->generate('show', array('id'=> $page->getId())), 201);
}
}
return $app['template']->render_template('pages/add.tpl', array('form' => $form->createView()));
}
function editAction(Application $app, $id) {
$request = $app['request'];
$page = $app['orm.em']->find('Entity\Pages', $id);
if (empty($page)) {
$app->abort(404, "Page $id does not exist.");
}
$form = $this->getForm($app, $page);
if ('POST' == $request->getMethod()) {
$form->bind($request);
if ($form->isValid()) {
$em = $app['orm.em'];
//$page = $form->getData();
$page->setTitle($page->getTitle());
$em->persist($page);
$em->flush();
return $app->redirect($app['url_generator']->generate('show', array('id'=> $page->getId())), 201);
}
}
return $app['template']->render_template('pages/add.tpl', array('form' => $form->createView()));
}
function showAction(Application $app, $id) {
$page = $app['orm.em']->find('Entity\Pages', $id);
$actions = Display::url(Display::return_icon('list.png', get_lang('Listing'), array(), ICON_SIZE_MEDIUM), $app['url_generator']->generate('index'));
return $app['template']->render_template('pages/show.tpl', array(
'page' => $page,
'actions' => $actions,
));
}
function deleteAction(Application $app, $id) {
$em = $app['orm.em'];
$page = $em->find('Entity\Pages', $id);
$em->remove($page);
$em->flush();
return $app->redirect($app['url_generator']->generate('index'), 201);
}
function listAction(Application $app, $page = 1) {
/*
$source = new Entity('Entity\Pages');
$grid = new Grid();
// Attach the source to the grid
$grid->setSource($source);
// Return the response of the grid to the template
//return $grid->getGridResponse('MyProjectMyBundle::myGrid.html.twig');
*/
$em = $app['orm.em'];
$dql = 'SELECT a FROM Entity\Pages a';
$query = $em->createQuery($dql)->setFirstResult(0)->setMaxResults(100);
//or using the repository
//
//$query = $em->getRepository('Entity\Pages')->getLatestPages();
$adapter = new DoctrineORMAdapter($query);
$pagerfanta = new Pagerfanta($adapter);
$routeGenerator = function($page) use ($app) {
return $app['url_generator']->generate('list', array('page' => $page));
};
$page = intval($app['request']->get('page'));
$pagerfanta->setMaxPerPage(2); // 10 by default
$pagerfanta->setCurrentPage($page);
//$view = new DefaultView();
$view = new TwitterBootstrapView();
$pagination = $view->render($pagerfanta, $routeGenerator, array(
'proximity' => 3,
));
$actions = Display::url(Display::return_icon('add.png', get_lang('Add'), array(), ICON_SIZE_MEDIUM), $app['url_generator']->generate('add'));
//$paginator = new Paginator($query, $fetchJoinCollection = true);
return $app['template']->render_template('pages/listing.tpl', array(
//'pages' => $paginator->getIterator(),
'pages' => $pagerfanta,
'pagination' => $pagination,
'actions' => $actions
));
}
function getForm(Application $app, $entity = null) {
if (empty($entity)) {
$entity = new Entity\Pages();
}
$form = $app['form.factory']->createBuilder('form', $entity);
$form->add('title', 'text', array(
'constraints' => array(new Assert\NotBlank(), new Assert\MinLength(5))
));
$form->add('slug', 'text', array(
//'constraints' => array(new Assert\NotBlank())
));
$form->add('content', 'textarea', array(
// 'constraints' => array()
));
return $form->getForm();
}
}
$app->get('/', 'pages.controller:listAction')->bind('index');
$app->get('/page', 'pages.controller:listAction')->bind('list');
$app->get('/show/{id}', 'pages.controller:showAction')
->bind('show')
->assert('id', '\d+');
$app->get('/delete/{id}', 'pages.controller:deleteAction')
->bind('delete')
->assert('id', '\d+');
$app->match('/edit/{id}', 'pages.controller:editAction', 'GET|POST')
->bind('edit')
->assert('id', '\d+');
$app->match('/add', 'pages.controller:addAction', 'GET|POST')->bind('add');
$app->run();