mirror of
https://github.com/wallabag/wallabag.git
synced 2024-11-26 11:01:04 +00:00
Add controller, views and translations for ignore origin instance rules
Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
This commit is contained in:
parent
b22eb27623
commit
7408a6cb68
26 changed files with 673 additions and 4 deletions
|
@ -79,4 +79,5 @@ security:
|
|||
- { path: ^/annotations, roles: ROLE_USER }
|
||||
- { path: ^/2fa, role: IS_AUTHENTICATED_2FA_IN_PROGRESS }
|
||||
- { path: ^/users, roles: ROLE_SUPER_ADMIN }
|
||||
- { path: ^/ignore-origin-instance-rules, roles: ROLE_SUPER_ADMIN }
|
||||
- { path: ^/, roles: ROLE_USER }
|
||||
|
|
|
@ -0,0 +1,138 @@
|
|||
<?php
|
||||
|
||||
namespace Wallabag\CoreBundle\Controller;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
use Wallabag\CoreBundle\Entity\IgnoreOriginInstanceRule;
|
||||
|
||||
/**
|
||||
* IgnoreOriginInstanceRuleController controller.
|
||||
*
|
||||
* @Route("/ignore-origin-instance-rules")
|
||||
*/
|
||||
class IgnoreOriginInstanceRuleController extends Controller
|
||||
{
|
||||
/**
|
||||
* Lists all IgnoreOriginInstanceRule entities.
|
||||
*
|
||||
* @Route("/", name="ignore_origin_instance_rules_index", methods={"GET"})
|
||||
*/
|
||||
public function indexAction()
|
||||
{
|
||||
$rules = $this->get('wallabag_core.ignore_origin_instance_rule_repository')->findAll();
|
||||
|
||||
return $this->render('WallabagCoreBundle:IgnoreOriginInstanceRule:index.html.twig', [
|
||||
'rules' => $rules,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new ignore origin instance rule entity.
|
||||
*
|
||||
* @Route("/new", name="ignore_origin_instance_rules_new", methods={"GET", "POST"})
|
||||
*
|
||||
* @return \Symfony\Component\HttpFoundation\Response
|
||||
*/
|
||||
public function newAction(Request $request)
|
||||
{
|
||||
$ignoreOriginInstanceRule = new IgnoreOriginInstanceRule();
|
||||
|
||||
$form = $this->createForm('Wallabag\CoreBundle\Form\Type\IgnoreOriginInstanceRuleType', $ignoreOriginInstanceRule);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$em->persist($ignoreOriginInstanceRule);
|
||||
$em->flush();
|
||||
|
||||
$this->get('session')->getFlashBag()->add(
|
||||
'notice',
|
||||
$this->get('translator')->trans('flashes.ignore_origin_instance_rule.notice.added')
|
||||
);
|
||||
|
||||
return $this->redirectToRoute('ignore_origin_instance_rules_index');
|
||||
}
|
||||
|
||||
return $this->render('WallabagCoreBundle:IgnoreOriginInstanceRule:new.html.twig', [
|
||||
'rule' => $ignoreOriginInstanceRule,
|
||||
'form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays a form to edit an existing ignore origin instance rule entity.
|
||||
*
|
||||
* @Route("/{id}/edit", name="ignore_origin_instance_rules_edit", methods={"GET", "POST"})
|
||||
*
|
||||
* @return \Symfony\Component\HttpFoundation\Response
|
||||
*/
|
||||
public function editAction(Request $request, IgnoreOriginInstanceRule $ignoreOriginInstanceRule)
|
||||
{
|
||||
$deleteForm = $this->createDeleteForm($ignoreOriginInstanceRule);
|
||||
$editForm = $this->createForm('Wallabag\CoreBundle\Form\Type\IgnoreOriginInstanceRuleType', $ignoreOriginInstanceRule);
|
||||
$editForm->handleRequest($request);
|
||||
|
||||
if ($editForm->isSubmitted() && $editForm->isValid()) {
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$em->persist($ignoreOriginInstanceRule);
|
||||
$em->flush();
|
||||
|
||||
$this->get('session')->getFlashBag()->add(
|
||||
'notice',
|
||||
$this->get('translator')->trans('flashes.ignore_origin_instance_rule.notice.updated')
|
||||
);
|
||||
|
||||
return $this->redirectToRoute('ignore_origin_instance_rules_index');
|
||||
}
|
||||
|
||||
return $this->render('WallabagCoreBundle:IgnoreOriginInstanceRule:edit.html.twig', [
|
||||
'rule' => $ignoreOriginInstanceRule,
|
||||
'edit_form' => $editForm->createView(),
|
||||
'delete_form' => $deleteForm->createView(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes a site credential entity.
|
||||
*
|
||||
* @Route("/{id}", name="ignore_origin_instance_rules_delete", methods={"DELETE"})
|
||||
*
|
||||
* @return \Symfony\Component\HttpFoundation\RedirectResponse
|
||||
*/
|
||||
public function deleteAction(Request $request, IgnoreOriginInstanceRule $ignoreOriginInstanceRule)
|
||||
{
|
||||
$form = $this->createDeleteForm($ignoreOriginInstanceRule);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$this->get('session')->getFlashBag()->add(
|
||||
'notice',
|
||||
$this->get('translator')->trans('flashes.ignore_origin_instance_rule.notice.deleted')
|
||||
);
|
||||
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$em->remove($ignoreOriginInstanceRule);
|
||||
$em->flush();
|
||||
}
|
||||
|
||||
return $this->redirectToRoute('ignore_origin_instance_rules_index');
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a form to delete a ignore origin instance rule entity.
|
||||
*
|
||||
* @param IgnoreOriginInstanceRule $ignoreOriginInstanceRule The ignore origin instance rule entity
|
||||
*
|
||||
* @return \Symfony\Component\Form\Form The form
|
||||
*/
|
||||
private function createDeleteForm(IgnoreOriginInstanceRule $ignoreOriginInstanceRule)
|
||||
{
|
||||
return $this->createFormBuilder()
|
||||
->setAction($this->generateUrl('ignore_origin_instance_rules_delete', ['id' => $ignoreOriginInstanceRule->getId()]))
|
||||
->setMethod('DELETE')
|
||||
->getForm()
|
||||
;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
namespace Wallabag\CoreBundle\Form\Type;
|
||||
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
||||
class IgnoreOriginInstanceRuleType extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder
|
||||
->add('rule', TextType::class, [
|
||||
'required' => true,
|
||||
'label' => 'config.form_rules.rule_label',
|
||||
])
|
||||
->add('save', SubmitType::class, [
|
||||
'label' => 'config.form.save',
|
||||
])
|
||||
;
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver)
|
||||
{
|
||||
$resolver->setDefaults([
|
||||
'data_class' => 'Wallabag\CoreBundle\Entity\IgnoreOriginInstanceRule',
|
||||
]);
|
||||
}
|
||||
|
||||
public function getBlockPrefix()
|
||||
{
|
||||
return 'ignore_origin_instance_rule';
|
||||
}
|
||||
}
|
|
@ -33,6 +33,7 @@ menu:
|
|||
back_to_unread: 'Tilbage til de ulæste artikler'
|
||||
# users_management: 'Users management'
|
||||
# site_credentials: 'Site credentials'
|
||||
# ignore_origin_instance_rules: 'Global ignore origin rules'
|
||||
# quickstart: "Quickstart"
|
||||
top:
|
||||
add_new_entry: 'Tilføj ny artikel'
|
||||
|
@ -661,3 +662,8 @@ flashes:
|
|||
# added: 'Site credential for "%host%" added'
|
||||
# updated: 'Site credential for "%host%" updated'
|
||||
# deleted: 'Site credential for "%host%" deleted'
|
||||
ignore_origin_instance_rule:
|
||||
notice:
|
||||
# added: 'Global ignore origin rule added'
|
||||
# updated: 'Global ignore origin rule updated'
|
||||
# deleted: 'Global ignore origin rule deleted'
|
||||
|
|
|
@ -33,6 +33,7 @@ menu:
|
|||
back_to_unread: 'Zurück zu ungelesenen Artikeln'
|
||||
users_management: 'Benutzerverwaltung'
|
||||
site_credentials: 'Zugangsdaten'
|
||||
# ignore_origin_instance_rules: 'Global ignore origin rules'
|
||||
quickstart: "Schnelleinstieg"
|
||||
top:
|
||||
add_new_entry: 'Neuen Artikel hinzufügen'
|
||||
|
@ -661,3 +662,8 @@ flashes:
|
|||
added: 'Zugangsdaten für "%host%" hinzugefügt'
|
||||
updated: 'Zugangsdaten für "%host%" aktualisiert'
|
||||
deleted: 'Zugangsdaten für "%host%" gelöscht'
|
||||
ignore_origin_instance_rule:
|
||||
notice:
|
||||
# added: 'Global ignore origin rule added'
|
||||
# updated: 'Global ignore origin rule updated'
|
||||
# deleted: 'Global ignore origin rule deleted'
|
||||
|
|
|
@ -33,6 +33,7 @@ menu:
|
|||
back_to_unread: 'Back to unread articles'
|
||||
users_management: 'Users management'
|
||||
site_credentials: 'Site credentials'
|
||||
ignore_origin_instance_rules: 'Global ignore origin rules'
|
||||
quickstart: "Quickstart"
|
||||
top:
|
||||
add_new_entry: 'Add a new entry'
|
||||
|
@ -595,6 +596,24 @@ site_credential:
|
|||
delete_confirm: Are you sure?
|
||||
back_to_list: Back to list
|
||||
|
||||
ignore_origin_instance_rule:
|
||||
page_title: Global ignore origin rules
|
||||
new_ignore_origin_instance_rule: Create a global ignore origin rule
|
||||
edit_ignore_origin_instance_rule: Edit an existing ignore origin rule
|
||||
description: "Here you can manage the global ignore origin rules used to ignore some patterns of origin url."
|
||||
list:
|
||||
actions: Actions
|
||||
edit_action: Edit
|
||||
yes: Yes
|
||||
no: No
|
||||
create_new_one: Create a new global ignore origin rule
|
||||
form:
|
||||
rule_label: Rule
|
||||
save: Save
|
||||
delete: Delete
|
||||
delete_confirm: Are you sure?
|
||||
back_to_list: Back to list
|
||||
|
||||
error:
|
||||
page_title: An error occurred
|
||||
|
||||
|
@ -661,3 +680,8 @@ flashes:
|
|||
added: 'Site credential for "%host%" added'
|
||||
updated: 'Site credential for "%host%" updated'
|
||||
deleted: 'Site credential for "%host%" deleted'
|
||||
ignore_origin_instance_rule:
|
||||
notice:
|
||||
added: 'Global ignore origin rule added'
|
||||
updated: 'Global ignore origin rule updated'
|
||||
deleted: 'Global ignore origin rule deleted'
|
||||
|
|
|
@ -33,6 +33,7 @@ menu:
|
|||
back_to_unread: 'Volver a los artículos sin leer'
|
||||
users_management: 'Configuración de usuarios'
|
||||
site_credentials: 'Credenciales del sitio'
|
||||
# ignore_origin_instance_rules: 'Global ignore origin rules'
|
||||
quickstart: "Inicio rápido"
|
||||
top:
|
||||
add_new_entry: 'Añadir un nuevo artículo'
|
||||
|
@ -661,3 +662,8 @@ flashes:
|
|||
added: 'Credenciales del sitio añadidas para "%host%"'
|
||||
updated: 'Credenciales del sitio actualizadas para "%host%"'
|
||||
deleted: 'Credenciales del sitio eliminadas para "%host%"'
|
||||
ignore_origin_instance_rule:
|
||||
notice:
|
||||
# added: 'Global ignore origin rule added'
|
||||
# updated: 'Global ignore origin rule updated'
|
||||
# deleted: 'Global ignore origin rule deleted'
|
||||
|
|
|
@ -33,6 +33,7 @@ menu:
|
|||
back_to_unread: 'بازگشت به خواندهنشدهها'
|
||||
# users_management: 'Users management'
|
||||
# site_credentials: 'Site credentials'
|
||||
# ignore_origin_instance_rules: 'Global ignore origin rules'
|
||||
quickstart: "Quickstart"
|
||||
top:
|
||||
add_new_entry: 'افزودن مقالهٔ تازه'
|
||||
|
@ -661,3 +662,8 @@ flashes:
|
|||
# added: 'Site credential for "%host%" added'
|
||||
# updated: 'Site credential for "%host%" updated'
|
||||
# deleted: 'Site credential for "%host%" deleted'
|
||||
ignore_origin_instance_rule:
|
||||
notice:
|
||||
# added: 'Global ignore origin rule added'
|
||||
# updated: 'Global ignore origin rule updated'
|
||||
# deleted: 'Global ignore origin rule deleted'
|
||||
|
|
|
@ -33,6 +33,7 @@ menu:
|
|||
back_to_unread: "Retour aux articles non lus"
|
||||
users_management: "Gestion des utilisateurs"
|
||||
site_credentials: 'Accès aux sites'
|
||||
ignore_origin_instance_rules: "Règles globales d'omission d'origine"
|
||||
quickstart: "Pour bien débuter"
|
||||
top:
|
||||
add_new_entry: "Sauvegarder un nouvel article"
|
||||
|
@ -619,11 +620,8 @@ flashes:
|
|||
otp_disabled: "Authentification à double-facteur désactivée"
|
||||
tagging_rules_imported: Règles bien importées
|
||||
tagging_rules_not_imported: Impossible d'importer les règles
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
ignore_origin_rules_deleted: "Règle d'omission d'origine supprimée"
|
||||
ignore_origin_rules_updated: "Règle d'omission d'origine mise à jour"
|
||||
>>>>>>> 4c595340... fixup! Add new Ignore Origin rules tab, update ConfigController
|
||||
entry:
|
||||
notice:
|
||||
entry_already_saved: "Article déjà sauvegardé le %date%"
|
||||
|
|
|
@ -33,6 +33,7 @@ menu:
|
|||
back_to_unread: 'Torna ai contenuti non letti'
|
||||
users_management: 'Gestione utenti'
|
||||
site_credentials: 'Credenziali sito'
|
||||
# ignore_origin_instance_rules: 'Global ignore origin rules'
|
||||
quickstart: "Introduzione"
|
||||
top:
|
||||
add_new_entry: 'Aggiungi un nuovo contenuto'
|
||||
|
@ -661,3 +662,8 @@ flashes:
|
|||
# added: 'Site credential for "%host%" added'
|
||||
# updated: 'Site credential for "%host%" updated'
|
||||
# deleted: 'Site credential for "%host%" deleted'
|
||||
ignore_origin_instance_rule:
|
||||
notice:
|
||||
# added: 'Global ignore origin rule added'
|
||||
# updated: 'Global ignore origin rule updated'
|
||||
# deleted: 'Global ignore origin rule deleted'
|
||||
|
|
|
@ -33,6 +33,7 @@ menu:
|
|||
back_to_unread: 'Tornar als articles pas legits'
|
||||
users_management: 'Gestion dels utilizaires'
|
||||
site_credentials: 'Identificants del site'
|
||||
# ignore_origin_instance_rules: 'Global ignore origin rules'
|
||||
quickstart: "Per ben començar"
|
||||
top:
|
||||
add_new_entry: 'Enregistrar un novèl article'
|
||||
|
@ -661,3 +662,8 @@ flashes:
|
|||
added: 'Identificant per "%host%" ajustat'
|
||||
updated: 'Identificant per "%host%" mes a jorn'
|
||||
deleted: 'Identificant per "%host%" suprimit'
|
||||
ignore_origin_instance_rule:
|
||||
notice:
|
||||
# added: 'Global ignore origin rule added'
|
||||
# updated: 'Global ignore origin rule updated'
|
||||
# deleted: 'Global ignore origin rule deleted'
|
||||
|
|
|
@ -33,6 +33,7 @@ menu:
|
|||
back_to_unread: 'Powrót do nieprzeczytanych artykułów'
|
||||
users_management: 'Zarządzanie użytkownikami'
|
||||
site_credentials: 'Poświadczenia strony'
|
||||
# ignore_origin_instance_rules: 'Global ignore origin rules'
|
||||
quickstart: "Szybki start"
|
||||
top:
|
||||
add_new_entry: 'Dodaj nowy wpis'
|
||||
|
@ -661,3 +662,8 @@ flashes:
|
|||
added: 'Poświadczenie dla "%host%" dodane'
|
||||
updated: 'Poświadczenie dla "%host%" zaktualizowane'
|
||||
deleted: 'Poświadczenie dla "%host%" usuniętę'
|
||||
ignore_origin_instance_rule:
|
||||
notice:
|
||||
# added: 'Global ignore origin rule added'
|
||||
# updated: 'Global ignore origin rule updated'
|
||||
# deleted: 'Global ignore origin rule deleted'
|
||||
|
|
|
@ -33,6 +33,7 @@ menu:
|
|||
back_to_unread: 'Voltar para os artigos não lidos'
|
||||
users_management: 'Gestão de Usuários'
|
||||
site_credentials: 'Credenciais do site'
|
||||
# ignore_origin_instance_rules: 'Global ignore origin rules'
|
||||
quickstart: "Começo Rápido"
|
||||
top:
|
||||
add_new_entry: 'Adicionar um novo artigo'
|
||||
|
@ -658,3 +659,8 @@ flashes:
|
|||
added: 'Credencial do site para "%host%" foi adicionada'
|
||||
updated: 'Credencial do site pa "%host%" atualizada'
|
||||
deleted: 'Credencial do site pa "%host%" removida'
|
||||
ignore_origin_instance_rule:
|
||||
notice:
|
||||
# added: 'Global ignore origin rule added'
|
||||
# updated: 'Global ignore origin rule updated'
|
||||
# deleted: 'Global ignore origin rule deleted'
|
||||
|
|
|
@ -33,6 +33,7 @@ menu:
|
|||
back_to_unread: 'Înapoi la articolele necitite'
|
||||
# users_management: 'Users management'
|
||||
# site_credentials: 'Site credentials'
|
||||
# ignore_origin_instance_rules: 'Global ignore origin rules'
|
||||
# quickstart: "Quickstart"
|
||||
top:
|
||||
add_new_entry: 'Introdu un nou articol'
|
||||
|
@ -660,3 +661,8 @@ flashes:
|
|||
# added: 'Site credential for "%host%" added'
|
||||
# updated: 'Site credential for "%host%" updated'
|
||||
# deleted: 'Site credential for "%host%" deleted'
|
||||
ignore_origin_instance_rule:
|
||||
notice:
|
||||
# added: 'Global ignore origin rule added'
|
||||
# updated: 'Global ignore origin rule updated'
|
||||
# deleted: 'Global ignore origin rule deleted'
|
||||
|
|
|
@ -33,6 +33,7 @@ menu:
|
|||
back_to_unread: 'Назад к непрочитанным записям'
|
||||
users_management: 'Управление пользователями'
|
||||
site_credentials: 'Site credentials'
|
||||
# ignore_origin_instance_rules: 'Global ignore origin rules'
|
||||
quickstart: "Быстрый старт"
|
||||
top:
|
||||
add_new_entry: 'Добавить новую запись'
|
||||
|
@ -660,3 +661,8 @@ flashes:
|
|||
# added: 'Site credential for "%host%" added'
|
||||
# updated: 'Site credential for "%host%" updated'
|
||||
# deleted: 'Site credential for "%host%" deleted'
|
||||
ignore_origin_instance_rule:
|
||||
notice:
|
||||
# added: 'Global ignore origin rule added'
|
||||
# updated: 'Global ignore origin rule updated'
|
||||
# deleted: 'Global ignore origin rule deleted'
|
||||
|
|
|
@ -33,6 +33,7 @@ menu:
|
|||
back_to_unread: 'กลับไปยังรายการที่ไม่ได้อ่าน'
|
||||
users_management: 'การจัดการผู้ใช้'
|
||||
site_credentials: 'การรับรองไซต์'
|
||||
# ignore_origin_instance_rules: 'Global ignore origin rules'
|
||||
quickstart: "เริ่มแบบด่วน"
|
||||
top:
|
||||
add_new_entry: 'เพิ่มรายการใหม่'
|
||||
|
@ -660,3 +661,8 @@ flashes:
|
|||
added: 'ไซต์ข้อมูลประจำตัวสำหรับ "%host%" ที่ทำการเพิ่ม'
|
||||
updated: 'ไซต์ข้อมูลประจำตัวสำหรับ "%host%" ที่ทำการอัปเดต'
|
||||
deleted: 'ไซต์ข้อมูลประจำตัวสำหรับ "%host%" ที่ทำการลบ'
|
||||
ignore_origin_instance_rule:
|
||||
notice:
|
||||
# added: 'Global ignore origin rule added'
|
||||
# updated: 'Global ignore origin rule updated'
|
||||
# deleted: 'Global ignore origin rule deleted'
|
||||
|
|
|
@ -33,6 +33,7 @@ menu:
|
|||
back_to_unread: 'Okunmayan makalelere geri dön'
|
||||
# users_management: 'Users management'
|
||||
# site_credentials: 'Site credentials'
|
||||
# ignore_origin_instance_rules: 'Global ignore origin rules'
|
||||
quickstart: "Hızlı başlangıç"
|
||||
top:
|
||||
add_new_entry: 'Yeni bir makale ekle'
|
||||
|
@ -660,3 +661,8 @@ flashes:
|
|||
# added: 'Site credential for "%host%" added'
|
||||
# updated: 'Site credential for "%host%" updated'
|
||||
# deleted: 'Site credential for "%host%" deleted'
|
||||
ignore_origin_instance_rule:
|
||||
notice:
|
||||
# added: 'Global ignore origin rule added'
|
||||
# updated: 'Global ignore origin rule updated'
|
||||
# deleted: 'Global ignore origin rule deleted'
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{{ 'ignore_origin_instance_rule.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<div class="card-panel">
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
<h4>{{ 'ignore_origin_instance_rule.edit_ignore_origin_instance_rule'|trans }}</h4>
|
||||
|
||||
<div id="set6" class="col s12">
|
||||
{{ form_start(edit_form) }}
|
||||
{{ form_errors(edit_form) }}
|
||||
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
{{ form_label(edit_form.rule) }}
|
||||
{{ form_errors(edit_form.rule) }}
|
||||
{{ form_widget(edit_form.rule) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
|
||||
{{ form_widget(edit_form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
|
||||
{{ form_widget(edit_form._token) }}
|
||||
</form>
|
||||
<p>
|
||||
{{ form_start(delete_form) }}
|
||||
<button onclick="return confirm('{{ 'ignore_origin_instance_rule.form.delete_confirm'|trans|escape('js') }}')" type="submit" class="btn waves-effect waves-light red">{{ 'ignore_origin_instance_rule.form.delete'|trans }}</button>
|
||||
{{ form_end(delete_form) }}
|
||||
</p>
|
||||
<p><a class="waves-effect waves-light btn blue-grey" href="{{ path('ignore_origin_instance_rules_index') }}">{{ 'ignore_origin_instance_rule.form.back_to_list'|trans }}</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
|
@ -0,0 +1,42 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{{ 'ignore_origin_instance_rule.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<div class="card-panel">
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
<p class="help">{{ 'ignore_origin_instance_rule.description'|trans|raw }}</p>
|
||||
|
||||
<table class="bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ 'ignore_origin_instance_rule.form.rule_label'|trans }}</th>
|
||||
<th>{{ 'ignore_origin_instance_rule.list.actions'|trans }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for rule in rules %}
|
||||
<tr>
|
||||
<td>{{ rule.rule }}</td>
|
||||
<td>
|
||||
<a href="{{ path('ignore_origin_instance_rules_edit', { 'id': rule.id }) }}">{{ 'ignore_origin_instance_rule.list.edit_action'|trans }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<br />
|
||||
<p>
|
||||
<a href="{{ path('ignore_origin_instance_rules_new') }}" class="waves-effect waves-light btn">{{ 'ignore_origin_instance_rule.list.create_new_one'|trans }}</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
|
@ -0,0 +1,37 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{{ 'ignore_origin_instance_rule.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<div class="card-panel">
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
<h4>{{ 'ignore_origin_instance_rule.new_ignore_origin_instance_rule'|trans }}</h4>
|
||||
|
||||
<div id="set6" class="col s12">
|
||||
{{ form_start(form) }}
|
||||
{{ form_errors(form) }}
|
||||
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
{{ form_label(form.rule) }}
|
||||
{{ form_errors(form.rule) }}
|
||||
{{ form_widget(form.rule) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
|
||||
{{ form_rest(form) }}
|
||||
</form>
|
||||
<p><a class="waves-effect waves-light btn blue-grey" href="{{ path('ignore_origin_instance_rules_index') }}">{{ 'ignore_origin_instance_rule.form.back_to_list'|trans }}</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
|
@ -45,6 +45,7 @@
|
|||
{% if is_granted('ROLE_SUPER_ADMIN') %}
|
||||
<li class="menu users"><a href="{{ path('user_index') }}">{{ 'menu.left.users_management'|trans }}</a></li>
|
||||
<li class="menu internal"><a href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a></li>
|
||||
<li class="menu ignore"><a href="{{ path('ignore_origin_instance_rules_index') }}">{{ 'menu.left.ignore_origin_instance_rules'|trans }}</a></li>
|
||||
{% endif %}
|
||||
<li class="menu import"><a href="{{ path('import') }}">{{ 'menu.left.import'|trans }}</a></li>
|
||||
<li class="menu howto"><a href="{{ path('howto') }}">{{ 'menu.left.howto'|trans }}</a></li>
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{{ 'ignore_origin_instance_rule.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<div class="card-panel">
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
<h4>{{ 'ignore_origin_instance_rule.edit_ignore_origin_instance_rule'|trans }}</h4>
|
||||
|
||||
<div id="set6" class="col s12">
|
||||
{{ form_start(edit_form) }}
|
||||
{{ form_errors(edit_form) }}
|
||||
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
{{ form_label(edit_form.rule) }}
|
||||
{{ form_errors(edit_form.rule) }}
|
||||
{{ form_widget(edit_form.rule) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
|
||||
{{ form_widget(edit_form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
|
||||
{{ form_widget(edit_form._token) }}
|
||||
</form>
|
||||
<p>
|
||||
{{ form_start(delete_form) }}
|
||||
<button onclick="return confirm('{{ 'ignore_origin_instance_rule.form.delete_confirm'|trans|escape('js') }}')" type="submit" class="btn waves-effect waves-light red">{{ 'ignore_origin_instance_rule.form.delete'|trans }}</button>
|
||||
{{ form_end(delete_form) }}
|
||||
</p>
|
||||
<p><a class="waves-effect waves-light btn blue-grey" href="{{ path('ignore_origin_instance_rules_index') }}">{{ 'ignore_origin_instance_rule.form.back_to_list'|trans }}</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
|
@ -0,0 +1,42 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{{ 'ignore_origin_instance_rule.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<div class="card-panel">
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
<p class="help">{{ 'ignore_origin_instance_rule.description'|trans|raw }}</p>
|
||||
|
||||
<table class="bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ 'ignore_origin_instance_rule.form.rule_label'|trans }}</th>
|
||||
<th>{{ 'ignore_origin_instance_rule.list.actions'|trans }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for rule in rules %}
|
||||
<tr>
|
||||
<td>{{ rule.rule }}</td>
|
||||
<td>
|
||||
<a href="{{ path('ignore_origin_instance_rules_edit', { 'id': rule.id }) }}">{{ 'ignore_origin_instance_rule.list.edit_action'|trans }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<br />
|
||||
<p>
|
||||
<a href="{{ path('ignore_origin_instance_rules_new') }}" class="waves-effect waves-light btn">{{ 'ignore_origin_instance_rule.list.create_new_one'|trans }}</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
|
@ -0,0 +1,37 @@
|
|||
{% extends "WallabagCoreBundle::layout.html.twig" %}
|
||||
|
||||
{% block title %}{{ 'ignore_origin_instance_rule.page_title'|trans }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<div class="card-panel">
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
<h4>{{ 'ignore_origin_instance_rule.new_ignore_origin_instance_rule'|trans }}</h4>
|
||||
|
||||
<div id="set6" class="col s12">
|
||||
{{ form_start(form) }}
|
||||
{{ form_errors(form) }}
|
||||
|
||||
<div class="row">
|
||||
<div class="input-field col s12">
|
||||
{{ form_label(form.rule) }}
|
||||
{{ form_errors(form.rule) }}
|
||||
{{ form_widget(form.rule) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
|
||||
{{ form_rest(form) }}
|
||||
</form>
|
||||
<p><a class="waves-effect waves-light btn blue-grey" href="{{ path('ignore_origin_instance_rules_index') }}">{{ 'ignore_origin_instance_rule.form.back_to_list'|trans }}</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
|
@ -78,9 +78,13 @@
|
|||
<a class="waves-effect" href="{{ path('user_index') }}">{{ 'menu.left.users_management'|trans }}</a>
|
||||
</li>
|
||||
|
||||
<li class="bold border-bottom {% if currentRoute == 'craue_config_settings_modify' %}active{% endif %}">
|
||||
<li class="bold {% if currentRoute == 'craue_config_settings_modify' %}active{% endif %}">
|
||||
<a class="waves-effect" href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a>
|
||||
</li>
|
||||
|
||||
<li class="bold border-bottom {% if currentRoute == 'ignore_origin_instance_rules_index' %}active{% endif %}">
|
||||
<a class="waves-effect" href="{{ path('ignore_origin_instance_rules_index') }}">{{ 'menu.left.ignore_origin_instance_rules'|trans }}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
<li class="bold {% if currentRoute == 'import' %}active{% endif %}">
|
||||
<a class="waves-effect" href="{{ path('import') }}">{{ 'menu.left.import'|trans }}</a>
|
||||
|
|
|
@ -0,0 +1,148 @@
|
|||
<?php
|
||||
|
||||
namespace Tests\Wallabag\CoreBundle\Controller;
|
||||
|
||||
use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
|
||||
|
||||
class IgnoreOriginInstanceRuleControllerTest extends WallabagCoreTestCase
|
||||
{
|
||||
public function testListIgnoreOriginInstanceRule()
|
||||
{
|
||||
$this->logInAs('admin');
|
||||
$client = $this->getClient();
|
||||
|
||||
$crawler = $client->request('GET', '/ignore-origin-instance-rules/');
|
||||
|
||||
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
||||
|
||||
$body = $crawler->filter('body')->extract(['_text'])[0];
|
||||
|
||||
$this->assertContains('ignore_origin_instance_rule.description', $body);
|
||||
$this->assertContains('ignore_origin_instance_rule.list.create_new_one', $body);
|
||||
}
|
||||
|
||||
public function testIgnoreOriginInstanceRuleCreationEditionDeletion()
|
||||
{
|
||||
$this->logInAs('admin');
|
||||
$client = $this->getClient();
|
||||
|
||||
// Creation
|
||||
$crawler = $client->request('GET', '/ignore-origin-instance-rules/new');
|
||||
|
||||
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
||||
|
||||
$body = $crawler->filter('body')->extract(['_text'])[0];
|
||||
|
||||
$this->assertContains('ignore_origin_instance_rule.new_ignore_origin_instance_rule', $body);
|
||||
$this->assertContains('ignore_origin_instance_rule.form.back_to_list', $body);
|
||||
|
||||
$form = $crawler->filter('button[id=ignore_origin_instance_rule_save]')->form();
|
||||
|
||||
$data = [
|
||||
'ignore_origin_instance_rule[rule]' => 'host = "foo.example.com"',
|
||||
];
|
||||
|
||||
$client->submit($form, $data);
|
||||
|
||||
$this->assertSame(302, $client->getResponse()->getStatusCode());
|
||||
|
||||
$crawler = $client->followRedirect();
|
||||
|
||||
$this->assertContains('flashes.ignore_origin_instance_rule.notice.added', $crawler->filter('body')->extract(['_text'])[0]);
|
||||
|
||||
// Edition
|
||||
$editLink = $crawler->filter('div[id=content] table a')->last()->link();
|
||||
|
||||
$crawler = $client->click($editLink);
|
||||
|
||||
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
||||
|
||||
$this->assertContains('foo.example.com', $crawler->filter('form[name=ignore_origin_instance_rule] input[type=text]')->extract(['value'])[0]);
|
||||
|
||||
$body = $crawler->filter('body')->extract(['_text'])[0];
|
||||
|
||||
$this->assertContains('ignore_origin_instance_rule.edit_ignore_origin_instance_rule', $body);
|
||||
$this->assertContains('ignore_origin_instance_rule.form.back_to_list', $body);
|
||||
|
||||
$form = $crawler->filter('button[id=ignore_origin_instance_rule_save]')->form();
|
||||
|
||||
$data = [
|
||||
'ignore_origin_instance_rule[rule]' => 'host = "bar.example.com"',
|
||||
];
|
||||
|
||||
$client->submit($form, $data);
|
||||
|
||||
$this->assertSame(302, $client->getResponse()->getStatusCode());
|
||||
|
||||
$crawler = $client->followRedirect();
|
||||
|
||||
$this->assertContains('flashes.ignore_origin_instance_rule.notice.updated', $crawler->filter('body')->extract(['_text'])[0]);
|
||||
|
||||
$editLink = $crawler->filter('div[id=content] table a')->last()->link();
|
||||
|
||||
$crawler = $client->click($editLink);
|
||||
|
||||
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
||||
|
||||
$this->assertContains('bar.example.com', $crawler->filter('form[name=ignore_origin_instance_rule] input[type=text]')->extract(['value'])[0]);
|
||||
|
||||
$deleteForm = $crawler->filter('body')->selectButton('ignore_origin_instance_rule.form.delete')->form();
|
||||
|
||||
$client->submit($deleteForm, []);
|
||||
|
||||
$this->assertSame(302, $client->getResponse()->getStatusCode());
|
||||
|
||||
$crawler = $client->followRedirect();
|
||||
|
||||
$this->assertContains('flashes.ignore_origin_instance_rule.notice.deleted', $crawler->filter('body')->extract(['_text'])[0]);
|
||||
}
|
||||
|
||||
public function dataForIgnoreOriginInstanceRuleCreationFail()
|
||||
{
|
||||
return [
|
||||
[
|
||||
[
|
||||
'ignore_origin_instance_rule[rule]' => 'foo = "bar"',
|
||||
],
|
||||
[
|
||||
'The variable',
|
||||
'does not exist.',
|
||||
],
|
||||
],
|
||||
[
|
||||
[
|
||||
'ignore_origin_instance_rule[rule]' => '_all != "none"',
|
||||
],
|
||||
[
|
||||
'The operator',
|
||||
'does not exist.',
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider dataForIgnoreOriginInstanceRuleCreationFail
|
||||
*/
|
||||
public function testIgnoreOriginInstanceRuleCreationFail($data, $messages)
|
||||
{
|
||||
$this->logInAs('admin');
|
||||
$client = $this->getClient();
|
||||
|
||||
$crawler = $client->request('GET', '/ignore-origin-instance-rules/new');
|
||||
|
||||
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
||||
|
||||
$form = $crawler->filter('button[id=ignore_origin_instance_rule_save]')->form();
|
||||
|
||||
$crawler = $client->submit($form, $data);
|
||||
|
||||
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
||||
|
||||
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
||||
|
||||
foreach ($messages as $message) {
|
||||
$this->assertContains($message, $body[0]);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue