Many upgrade changes. Templating system refactored. Routing cleaned out. Many thingls simplified.
This commit is contained in:
parent
83ac9fda67
commit
ba788e7746
6
app/Resources/views/Paste/new.html.twig
Normal file
6
app/Resources/views/Paste/new.html.twig
Normal file
|
@ -0,0 +1,6 @@
|
|||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block content %}
|
||||
{# This form recieves form_create object from current context #}
|
||||
{% include 'Form/form_paste_create.html.twig' %}
|
||||
{% endblock %}
|
|
@ -1,4 +1,4 @@
|
|||
{% extends '::base.html.twig' %}
|
||||
{% extends 'base.html.twig' %}
|
||||
|
||||
{% block content %}
|
||||
<div class="paste container-fluid">
|
||||
|
@ -66,7 +66,7 @@
|
|||
</div>
|
||||
<div role="tabpanel" class="tab-pane" id="tab-paste-edit">
|
||||
{# This form recieves form_create object from current context #}
|
||||
{% include 'SkobkinCopyPasteBundle:Form:form_paste_create.html.twig' %}
|
||||
{% include 'Form/form_paste_create.html.twig' %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -1,4 +1,4 @@
|
|||
{% extends '::layout.html.twig' -%}
|
||||
{% extends 'layout.html.twig' -%}
|
||||
|
||||
{%- block css -%}
|
||||
{{- parent() -}}
|
||||
|
@ -20,7 +20,7 @@
|
|||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="{{ path('copypaste_new') }}">{{ 'header_title' | trans }}</a>
|
||||
<a class="navbar-brand" href="{{ path('paste_new') }}">{{ 'header_title' | trans }}</a>
|
||||
</div>
|
||||
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
|
@ -28,7 +28,7 @@
|
|||
<ul class="nav navbar-nav">
|
||||
{% block header_menu_left_items %}
|
||||
<li{% if app.request.attributes.get('_route') == 'copypaste_new' %} class="active"{% endif %}>
|
||||
<a href="{{ path('copypaste_new') }}"><span class="glyphicon glyphicon-plus-sign"></span> {{ 'header_menu_add' | trans }}</a>
|
||||
<a href="{{ path('paste_new') }}"><span class="glyphicon glyphicon-plus-sign"></span> {{ 'header_menu_add' | trans }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{#{{ path('about') }}#}"><span class="glyphicon glyphicon-info-sign"></span> {{ 'header_menu_about' | trans }}</a>
|
||||
|
@ -46,7 +46,7 @@
|
|||
{%- endblock -%}
|
||||
|
||||
{%- block sidebar -%}
|
||||
{{ render(controller('SkobkinCopyPasteBundle:Paste:sidebar')) }}
|
||||
{{ render(controller('Skobkin\\Bundle\\CopyPasteBundle\\Controller\\PasteController::sidebarAction')) }}
|
||||
{%- endblock -%}
|
||||
|
||||
{% block content %}{% endblock %}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<div class="panel-heading">{{ 'sidebar_title' | trans() }}</div>
|
||||
<ul class="list-group">
|
||||
{% for paste in pastes %}
|
||||
<a href="{{ path('copypaste_show_public', {'id': paste.id}) }}" class="list-group-item">
|
||||
<a href="{{ path('paste_show_public', {'id': paste.id}) }}" class="list-group-item">
|
||||
#{{ paste.id }} - {% if paste.author %}{{ paste.author }}{% else %}anonymous{% endif %}
|
||||
</a>
|
||||
{% endfor %}
|
||||
|
|
|
@ -13,17 +13,21 @@ framework:
|
|||
form: ~
|
||||
csrf_protection: ~
|
||||
validation: { enable_annotations: true }
|
||||
templating:
|
||||
engines: ['twig']
|
||||
#assets_version: SomeVersionScheme
|
||||
default_locale: "%locale%"
|
||||
#serializer: { enable_annotations: true }
|
||||
default_locale: '%locale%'
|
||||
trusted_hosts: ~
|
||||
trusted_proxies: ~
|
||||
session:
|
||||
# handler_id set to null will use default session handler from php.ini
|
||||
handler_id: ~
|
||||
fragments: ~
|
||||
http_method_override: true
|
||||
assets: ~
|
||||
php_errors:
|
||||
log: true
|
||||
|
||||
sensio_framework_extra:
|
||||
router:
|
||||
annotations: false
|
||||
|
||||
# Twig Configuration
|
||||
twig:
|
||||
|
@ -31,7 +35,7 @@ twig:
|
|||
strict_variables: "%kernel.debug%"
|
||||
form_themes:
|
||||
- 'bootstrap_3_layout.html.twig'
|
||||
- 'SkobkinCopyPasteBundle:Form:fields.html.twig'
|
||||
- 'Form/fields.html.twig'
|
||||
|
||||
# Doctrine Configuration
|
||||
doctrine:
|
||||
|
|
|
@ -1,4 +1,21 @@
|
|||
skobkin_copy_paste:
|
||||
resource: "@SkobkinCopyPasteBundle/Resources/config/routing.yml"
|
||||
prefix: /
|
||||
paste_show_public:
|
||||
path: /{id}
|
||||
defaults: { _controller: 'Skobkin\Bundle\CopyPasteBundle\Controller\PasteController::showAction', secret: null }
|
||||
requirements:
|
||||
id: \d+
|
||||
|
||||
paste_show_private:
|
||||
path: /{id}/{secret}
|
||||
defaults: { _controller: 'Skobkin\Bundle\CopyPasteBundle\Controller\PasteController::showAction' }
|
||||
requirements:
|
||||
id: \d+
|
||||
secret: \w{16}
|
||||
|
||||
paste_new:
|
||||
path: /
|
||||
defaults: { _controller: 'Skobkin\Bundle\CopyPasteBundle\Controller\PasteController::newAction' }
|
||||
|
||||
paste_create:
|
||||
path: /create
|
||||
defaults: { _controller: 'Skobkin\Bundle\CopyPasteBundle\Controller\PasteController::createAction' }
|
||||
methods: POST
|
|
@ -4,6 +4,27 @@ parameters:
|
|||
# parameter_name: value
|
||||
|
||||
services:
|
||||
# service_name:
|
||||
# class: AppBundle\Directory\ClassName
|
||||
# arguments: ["@another_service_name", "plain_value", "%parameter_name%"]
|
||||
# default configuration for services in *this* file
|
||||
_defaults:
|
||||
# automatically injects dependencies in your services
|
||||
autowire: true
|
||||
# automatically registers your services as commands, event subscribers, etc.
|
||||
autoconfigure: true
|
||||
# this means you cannot fetch services directly from the container via $container->get()
|
||||
# if you need to do this, you can override this setting on individual services
|
||||
public: false
|
||||
|
||||
# makes classes in src/AppBundle available to be used as services
|
||||
# this creates a service per class whose id is the fully-qualified class name
|
||||
Skobkin\Bundle\CopyPasteBundle\:
|
||||
resource: '../../src/Skobkin/Bundle/CopyPasteBundle/*'
|
||||
# you can exclude directories or files
|
||||
# but if a service is unused, it's removed anyway
|
||||
exclude: '../../src/Skobkin/Bundle/CopyPasteBundle/{DataFixtures,DependencyInjection,Entity,Repository,Tests}'
|
||||
|
||||
# controllers are imported separately to make sure they're public
|
||||
# and have a tag that allows actions to type-hint services
|
||||
Skobkin\Bundle\CopyPasteBundle\Controller\:
|
||||
resource: '../../src/Skobkin/Bundle/CopyPasteBundle/Controller'
|
||||
public: true
|
||||
tags: ['controller.service_arguments']
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace Skobkin\Bundle\CopyPasteBundle\Controller;
|
||||
|
||||
use DT\Bundle\GeshiBundle\Highlighter\HighlighterInterface;
|
||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
@ -9,7 +10,6 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
|||
use \Symfony\Component\Form\Form;
|
||||
use Skobkin\Bundle\CopyPasteBundle\Entity\Copypaste;
|
||||
use Skobkin\Bundle\CopyPasteBundle\Form\CopypasteType;
|
||||
use DT\Bundle\GeshiBundle\Highlighter\GeshiHighlighter;
|
||||
use \GeSHi\GeSHi;
|
||||
|
||||
class PasteController extends Controller
|
||||
|
@ -54,9 +54,9 @@ class PasteController extends Controller
|
|||
$em->flush();
|
||||
|
||||
if ($paste->isPrivate()) {
|
||||
return $this->redirect($this->generateUrl('copypaste_show_private', ['id' => $paste->getId(), 'secret' => $paste->getSecret()]));
|
||||
return $this->redirect($this->generateUrl('paste_show_private', ['id' => $paste->getId(), 'secret' => $paste->getSecret()]));
|
||||
} else {
|
||||
return $this->redirect($this->generateUrl('copypaste_show_public', ['id' => $paste->getId()]));
|
||||
return $this->redirect($this->generateUrl('paste_show_public', ['id' => $paste->getId()]));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -73,7 +73,7 @@ class PasteController extends Controller
|
|||
private function createCreateForm(Copypaste $entity)
|
||||
{
|
||||
$form = $this->createForm(CopypasteType::class, $entity, [
|
||||
'action' => $this->generateUrl('copypaste_create'),
|
||||
'action' => $this->generateUrl('paste_create'),
|
||||
'method' => 'POST',
|
||||
]);
|
||||
|
||||
|
@ -92,7 +92,7 @@ class PasteController extends Controller
|
|||
$paste = new Copypaste();
|
||||
$createForm = $this->createCreateForm($paste);
|
||||
|
||||
return $this->render('SkobkinCopyPasteBundle:Copypaste:new.html.twig', [
|
||||
return $this->render('Paste/new.html.twig', [
|
||||
'entity' => $paste,
|
||||
'form_create' => $createForm->createView(),
|
||||
]);
|
||||
|
@ -103,12 +103,12 @@ class PasteController extends Controller
|
|||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function showAction($id, $secret)
|
||||
public function showAction(int $id, ?string $secret, HighlighterInterface $highlighter)
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
|
||||
/* @var $paste Copypaste */
|
||||
$paste = $em->getRepository('SkobkinCopyPasteBundle:Copypaste')->findOneBy([
|
||||
$paste = $em->getRepository(Copypaste::class)->findOneBy([
|
||||
'id' =>$id,
|
||||
'secret' => $secret
|
||||
]);
|
||||
|
@ -119,15 +119,12 @@ class PasteController extends Controller
|
|||
|
||||
$editForm = $this->createCreateForm($paste);
|
||||
|
||||
/* @var $highlighter GeshiHighlighter */
|
||||
$highlighter = $this->get('dt_geshi.highlighter');
|
||||
|
||||
$highlightedCode = $highlighter->highlight($paste->getText(), $paste->getLanguage()->getCode(), function(GeSHi $geshi) {
|
||||
$geshi->set_header_type(GESHI_HEADER_PRE);
|
||||
$geshi->enable_line_numbers(GESHI_NO_LINE_NUMBERS);
|
||||
});
|
||||
|
||||
return $this->render('SkobkinCopyPasteBundle:Copypaste:show.html.twig', [
|
||||
return $this->render('Paste/show.html.twig', [
|
||||
'paste' => $paste,
|
||||
'highlighted_text' => $highlightedCode,
|
||||
'form_create' => $editForm->createView(),
|
||||
|
@ -143,15 +140,13 @@ class PasteController extends Controller
|
|||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
|
||||
$pastes = $em->getRepository('SkobkinCopyPasteBundle:Copypaste')->findBy(
|
||||
$pastes = $em->getRepository(Copypaste::class)->findBy(
|
||||
['secret' => null],
|
||||
['id' => 'DESC'],
|
||||
// @todo move to the config
|
||||
15
|
||||
);
|
||||
|
||||
return $this->render('::sidebar.html.twig', ['pastes' => $pastes]);
|
||||
return $this->render('sidebar.html.twig', ['pastes' => $pastes]);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -23,6 +23,5 @@ class SkobkinCopyPasteExtension extends Extension
|
|||
$config = $this->processConfiguration($configuration, $configs);
|
||||
|
||||
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
||||
$loader->load('services.yml');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
skobkin_copy_paste:
|
||||
resource: "@SkobkinCopyPasteBundle/Resources/config/routing/copypaste.yml"
|
||||
prefix: /
|
|
@ -1,21 +0,0 @@
|
|||
copypaste_show_public:
|
||||
path: /{id}
|
||||
defaults: { _controller: 'Skobkin\Bundle\CopyPasteBundle\Controller\PasteController::showAction', secret: null }
|
||||
requirements:
|
||||
id: \d+
|
||||
|
||||
copypaste_show_private:
|
||||
path: /{id}/{secret}
|
||||
defaults: { _controller: 'Skobkin\Bundle\CopyPasteBundle\Controller\PasteController::showAction' }
|
||||
requirements:
|
||||
id: \d+
|
||||
secret: \w{16}
|
||||
|
||||
copypaste_new:
|
||||
path: /
|
||||
defaults: { _controller: 'Skobkin\Bundle\CopyPasteBundle\Controller\PasteController::newAction' }
|
||||
|
||||
copypaste_create:
|
||||
path: /create
|
||||
defaults: { _controller: 'Skobkin\Bundle\CopyPasteBundle\Controller\PasteController::createAction' }
|
||||
methods: POST
|
|
@ -1 +0,0 @@
|
|||
services:
|
|
@ -1,6 +0,0 @@
|
|||
{% extends '::base.html.twig' %}
|
||||
|
||||
{% block content %}
|
||||
{# This form recieves form_create object from current context #}
|
||||
{% include 'SkobkinCopyPasteBundle:Form:form_paste_create.html.twig' %}
|
||||
{% endblock %}
|
Loading…
Reference in a new issue