diff options
Diffstat (limited to 'src/Wallabag')
79 files changed, 1793 insertions, 927 deletions
diff --git a/src/Wallabag/ApiBundle/Controller/WallabagRestController.php b/src/Wallabag/ApiBundle/Controller/WallabagRestController.php index dd17ef97..791bf80b 100644 --- a/src/Wallabag/ApiBundle/Controller/WallabagRestController.php +++ b/src/Wallabag/ApiBundle/Controller/WallabagRestController.php | |||
@@ -23,6 +23,38 @@ class WallabagRestController extends FOSRestController | |||
23 | } | 23 | } |
24 | 24 | ||
25 | /** | 25 | /** |
26 | * Check if an entry exist by url. | ||
27 | * | ||
28 | * @ApiDoc( | ||
29 | * parameters={ | ||
30 | * {"name"="url", "dataType"="string", "required"=true, "format"="An url", "description"="Url to check if it exists"} | ||
31 | * } | ||
32 | * ) | ||
33 | * | ||
34 | * @return JsonResponse | ||
35 | */ | ||
36 | public function getEntriesExistsAction(Request $request) | ||
37 | { | ||
38 | $this->validateAuthentication(); | ||
39 | |||
40 | $url = $request->query->get('url', ''); | ||
41 | |||
42 | if (empty($url)) { | ||
43 | throw $this->createAccessDeniedException('URL is empty?, logged user id: '.$user->getId()); | ||
44 | } | ||
45 | |||
46 | $res = $this->getDoctrine() | ||
47 | ->getRepository('WallabagCoreBundle:Entry') | ||
48 | ->findByUrlAndUserId($url, $this->getUser()->getId()); | ||
49 | |||
50 | $exists = false === $res ? false : true; | ||
51 | |||
52 | $json = $this->get('serializer')->serialize(['exists' => $exists], 'json'); | ||
53 | |||
54 | return (new JsonResponse())->setJson($json); | ||
55 | } | ||
56 | |||
57 | /** | ||
26 | * Retrieve all entries. It could be filtered by many options. | 58 | * Retrieve all entries. It could be filtered by many options. |
27 | * | 59 | * |
28 | * @ApiDoc( | 60 | * @ApiDoc( |
@@ -50,8 +82,8 @@ class WallabagRestController extends FOSRestController | |||
50 | $order = $request->query->get('order', 'desc'); | 82 | $order = $request->query->get('order', 'desc'); |
51 | $page = (int) $request->query->get('page', 1); | 83 | $page = (int) $request->query->get('page', 1); |
52 | $perPage = (int) $request->query->get('perPage', 30); | 84 | $perPage = (int) $request->query->get('perPage', 30); |
53 | $since = $request->query->get('since', 0); | ||
54 | $tags = $request->query->get('tags', ''); | 85 | $tags = $request->query->get('tags', ''); |
86 | $since = $request->query->get('since', 0); | ||
55 | 87 | ||
56 | $pager = $this->getDoctrine() | 88 | $pager = $this->getDoctrine() |
57 | ->getRepository('WallabagCoreBundle:Entry') | 89 | ->getRepository('WallabagCoreBundle:Entry') |
@@ -63,7 +95,20 @@ class WallabagRestController extends FOSRestController | |||
63 | $pagerfantaFactory = new PagerfantaFactory('page', 'perPage'); | 95 | $pagerfantaFactory = new PagerfantaFactory('page', 'perPage'); |
64 | $paginatedCollection = $pagerfantaFactory->createRepresentation( | 96 | $paginatedCollection = $pagerfantaFactory->createRepresentation( |
65 | $pager, | 97 | $pager, |
66 | new Route('api_get_entries', [], UrlGeneratorInterface::ABSOLUTE_URL) | 98 | new Route( |
99 | 'api_get_entries', | ||
100 | [ | ||
101 | 'archive' => $isArchived, | ||
102 | 'starred' => $isStarred, | ||
103 | 'sort' => $sort, | ||
104 | 'order' => $order, | ||
105 | 'page' => $page, | ||
106 | 'perPage' => $perPage, | ||
107 | 'tags' => $tags, | ||
108 | 'since' => $since, | ||
109 | ], | ||
110 | UrlGeneratorInterface::ABSOLUTE_URL | ||
111 | ) | ||
67 | ); | 112 | ); |
68 | 113 | ||
69 | $json = $this->get('serializer')->serialize($paginatedCollection, 'json'); | 114 | $json = $this->get('serializer')->serialize($paginatedCollection, 'json'); |
diff --git a/src/Wallabag/CoreBundle/Command/InstallCommand.php b/src/Wallabag/CoreBundle/Command/InstallCommand.php index 3873d2d3..cc7c2c94 100644 --- a/src/Wallabag/CoreBundle/Command/InstallCommand.php +++ b/src/Wallabag/CoreBundle/Command/InstallCommand.php | |||
@@ -2,6 +2,8 @@ | |||
2 | 2 | ||
3 | namespace Wallabag\CoreBundle\Command; | 3 | namespace Wallabag\CoreBundle\Command; |
4 | 4 | ||
5 | use FOS\UserBundle\Event\UserEvent; | ||
6 | use FOS\UserBundle\FOSUserEvents; | ||
5 | use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; | 7 | use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; |
6 | use Symfony\Component\Console\Helper\Table; | 8 | use Symfony\Component\Console\Helper\Table; |
7 | use Symfony\Component\Console\Input\ArrayInput; | 9 | use Symfony\Component\Console\Input\ArrayInput; |
@@ -236,14 +238,9 @@ class InstallCommand extends ContainerAwareCommand | |||
236 | 238 | ||
237 | $em->persist($user); | 239 | $em->persist($user); |
238 | 240 | ||
239 | $config = new Config($user); | 241 | // dispatch a created event so the associated config will be created |
240 | $config->setTheme($this->getContainer()->getParameter('wallabag_core.theme')); | 242 | $event = new UserEvent($user); |
241 | $config->setItemsPerPage($this->getContainer()->getParameter('wallabag_core.items_on_page')); | 243 | $this->getContainer()->get('event_dispatcher')->dispatch(FOSUserEvents::USER_CREATED, $event); |
242 | $config->setRssLimit($this->getContainer()->getParameter('wallabag_core.rss_limit')); | ||
243 | $config->setReadingSpeed($this->getContainer()->getParameter('wallabag_core.reading_speed')); | ||
244 | $config->setLanguage($this->getContainer()->getParameter('wallabag_core.language')); | ||
245 | |||
246 | $em->persist($config); | ||
247 | 244 | ||
248 | $this->defaultOutput->writeln(''); | 245 | $this->defaultOutput->writeln(''); |
249 | 246 | ||
diff --git a/src/Wallabag/CoreBundle/Controller/ConfigController.php b/src/Wallabag/CoreBundle/Controller/ConfigController.php index 4f75511b..91cdcae5 100644 --- a/src/Wallabag/CoreBundle/Controller/ConfigController.php +++ b/src/Wallabag/CoreBundle/Controller/ConfigController.php | |||
@@ -11,7 +11,6 @@ use Wallabag\CoreBundle\Entity\Config; | |||
11 | use Wallabag\CoreBundle\Entity\TaggingRule; | 11 | use Wallabag\CoreBundle\Entity\TaggingRule; |
12 | use Wallabag\CoreBundle\Form\Type\ConfigType; | 12 | use Wallabag\CoreBundle\Form\Type\ConfigType; |
13 | use Wallabag\CoreBundle\Form\Type\ChangePasswordType; | 13 | use Wallabag\CoreBundle\Form\Type\ChangePasswordType; |
14 | use Wallabag\CoreBundle\Form\Type\NewUserType; | ||
15 | use Wallabag\CoreBundle\Form\Type\RssType; | 14 | use Wallabag\CoreBundle\Form\Type\RssType; |
16 | use Wallabag\CoreBundle\Form\Type\TaggingRuleType; | 15 | use Wallabag\CoreBundle\Form\Type\TaggingRuleType; |
17 | use Wallabag\CoreBundle\Form\Type\UserInformationType; | 16 | use Wallabag\CoreBundle\Form\Type\UserInformationType; |
@@ -106,7 +105,21 @@ class ConfigController extends Controller | |||
106 | 105 | ||
107 | // handle tagging rule | 106 | // handle tagging rule |
108 | $taggingRule = new TaggingRule(); | 107 | $taggingRule = new TaggingRule(); |
109 | $newTaggingRule = $this->createForm(TaggingRuleType::class, $taggingRule, ['action' => $this->generateUrl('config').'#set5']); | 108 | $action = $this->generateUrl('config').'#set5'; |
109 | |||
110 | if ($request->query->has('tagging-rule')) { | ||
111 | $taggingRule = $this->getDoctrine() | ||
112 | ->getRepository('WallabagCoreBundle:TaggingRule') | ||
113 | ->find($request->query->get('tagging-rule')); | ||
114 | |||
115 | if ($this->getUser()->getId() !== $taggingRule->getConfig()->getUser()->getId()) { | ||
116 | return $this->redirect($action); | ||
117 | } | ||
118 | |||
119 | $action = $this->generateUrl('config').'?tagging-rule='.$taggingRule->getId().'#set5'; | ||
120 | } | ||
121 | |||
122 | $newTaggingRule = $this->createForm(TaggingRuleType::class, $taggingRule, ['action' => $action]); | ||
110 | $newTaggingRule->handleRequest($request); | 123 | $newTaggingRule->handleRequest($request); |
111 | 124 | ||
112 | if ($newTaggingRule->isValid()) { | 125 | if ($newTaggingRule->isValid()) { |
@@ -122,45 +135,12 @@ class ConfigController extends Controller | |||
122 | return $this->redirect($this->generateUrl('config').'#set5'); | 135 | return $this->redirect($this->generateUrl('config').'#set5'); |
123 | } | 136 | } |
124 | 137 | ||
125 | // handle adding new user | ||
126 | $newUser = $userManager->createUser(); | ||
127 | // enable created user by default | ||
128 | $newUser->setEnabled(true); | ||
129 | $newUserForm = $this->createForm(NewUserType::class, $newUser, [ | ||
130 | 'validation_groups' => ['Profile'], | ||
131 | 'action' => $this->generateUrl('config').'#set6', | ||
132 | ]); | ||
133 | $newUserForm->handleRequest($request); | ||
134 | |||
135 | if ($newUserForm->isValid() && $this->get('security.authorization_checker')->isGranted('ROLE_SUPER_ADMIN')) { | ||
136 | $userManager->updateUser($newUser, true); | ||
137 | |||
138 | $config = new Config($newUser); | ||
139 | $config->setTheme($this->getParameter('wallabag_core.theme')); | ||
140 | $config->setItemsPerPage($this->getParameter('wallabag_core.items_on_page')); | ||
141 | $config->setRssLimit($this->getParameter('wallabag_core.rss_limit')); | ||
142 | $config->setLanguage($this->getParameter('wallabag_core.language')); | ||
143 | $config->setReadingSpeed($this->getParameter('wallabag_core.reading_speed')); | ||
144 | |||
145 | $em->persist($config); | ||
146 | |||
147 | $em->flush(); | ||
148 | |||
149 | $this->get('session')->getFlashBag()->add( | ||
150 | 'notice', | ||
151 | $this->get('translator')->trans('flashes.config.notice.user_added', ['%username%' => $newUser->getUsername()]) | ||
152 | ); | ||
153 | |||
154 | return $this->redirect($this->generateUrl('config').'#set6'); | ||
155 | } | ||
156 | |||
157 | return $this->render('WallabagCoreBundle:Config:index.html.twig', [ | 138 | return $this->render('WallabagCoreBundle:Config:index.html.twig', [ |
158 | 'form' => [ | 139 | 'form' => [ |
159 | 'config' => $configForm->createView(), | 140 | 'config' => $configForm->createView(), |
160 | 'rss' => $rssForm->createView(), | 141 | 'rss' => $rssForm->createView(), |
161 | 'pwd' => $pwdForm->createView(), | 142 | 'pwd' => $pwdForm->createView(), |
162 | 'user' => $userForm->createView(), | 143 | 'user' => $userForm->createView(), |
163 | 'new_user' => $newUserForm->createView(), | ||
164 | 'new_tagging_rule' => $newTaggingRule->createView(), | 144 | 'new_tagging_rule' => $newTaggingRule->createView(), |
165 | ], | 145 | ], |
166 | 'rss' => [ | 146 | 'rss' => [ |
@@ -210,9 +190,7 @@ class ConfigController extends Controller | |||
210 | */ | 190 | */ |
211 | public function deleteTaggingRuleAction(TaggingRule $rule) | 191 | public function deleteTaggingRuleAction(TaggingRule $rule) |
212 | { | 192 | { |
213 | if ($this->getUser()->getId() != $rule->getConfig()->getUser()->getId()) { | 193 | $this->validateRuleAction($rule); |
214 | throw $this->createAccessDeniedException('You can not access this tagging rule.'); | ||
215 | } | ||
216 | 194 | ||
217 | $em = $this->getDoctrine()->getManager(); | 195 | $em = $this->getDoctrine()->getManager(); |
218 | $em->remove($rule); | 196 | $em->remove($rule); |
@@ -227,6 +205,34 @@ class ConfigController extends Controller | |||
227 | } | 205 | } |
228 | 206 | ||
229 | /** | 207 | /** |
208 | * Edit a tagging rule. | ||
209 | * | ||
210 | * @param TaggingRule $rule | ||
211 | * | ||
212 | * @Route("/tagging-rule/edit/{id}", requirements={"id" = "\d+"}, name="edit_tagging_rule") | ||
213 | * | ||
214 | * @return RedirectResponse | ||
215 | */ | ||
216 | public function editTaggingRuleAction(TaggingRule $rule) | ||
217 | { | ||
218 | $this->validateRuleAction($rule); | ||
219 | |||
220 | return $this->redirect($this->generateUrl('config').'?tagging-rule='.$rule->getId().'#set5'); | ||
221 | } | ||
222 | |||
223 | /** | ||
224 | * Validate that a rule can be edited/deleted by the current user. | ||
225 | * | ||
226 | * @param TaggingRule $rule | ||
227 | */ | ||
228 | private function validateRuleAction(TaggingRule $rule) | ||
229 | { | ||
230 | if ($this->getUser()->getId() != $rule->getConfig()->getUser()->getId()) { | ||
231 | throw $this->createAccessDeniedException('You can not access this tagging rule.'); | ||
232 | } | ||
233 | } | ||
234 | |||
235 | /** | ||
230 | * Retrieve config for the current user. | 236 | * Retrieve config for the current user. |
231 | * If no config were found, create a new one. | 237 | * If no config were found, create a new one. |
232 | * | 238 | * |
@@ -238,6 +244,7 @@ class ConfigController extends Controller | |||
238 | ->getRepository('WallabagCoreBundle:Config') | 244 | ->getRepository('WallabagCoreBundle:Config') |
239 | ->findOneByUser($this->getUser()); | 245 | ->findOneByUser($this->getUser()); |
240 | 246 | ||
247 | // should NEVER HAPPEN ... | ||
241 | if (!$config) { | 248 | if (!$config) { |
242 | $config = new Config($this->getUser()); | 249 | $config = new Config($this->getUser()); |
243 | } | 250 | } |
diff --git a/src/Wallabag/CoreBundle/Controller/DeveloperController.php b/src/Wallabag/CoreBundle/Controller/DeveloperController.php index 63386db0..f3492b74 100644 --- a/src/Wallabag/CoreBundle/Controller/DeveloperController.php +++ b/src/Wallabag/CoreBundle/Controller/DeveloperController.php | |||
@@ -21,7 +21,7 @@ class DeveloperController extends Controller | |||
21 | { | 21 | { |
22 | $clients = $this->getDoctrine()->getRepository('WallabagApiBundle:Client')->findAll(); | 22 | $clients = $this->getDoctrine()->getRepository('WallabagApiBundle:Client')->findAll(); |
23 | 23 | ||
24 | return $this->render('WallabagCoreBundle:Developer:index.html.twig', [ | 24 | return $this->render('@WallabagCore/themes/common/Developer/index.html.twig', [ |
25 | 'clients' => $clients, | 25 | 'clients' => $clients, |
26 | ]); | 26 | ]); |
27 | } | 27 | } |
@@ -52,14 +52,14 @@ class DeveloperController extends Controller | |||
52 | $this->get('translator')->trans('flashes.developer.notice.client_created', ['%name%' => $client->getName()]) | 52 | $this->get('translator')->trans('flashes.developer.notice.client_created', ['%name%' => $client->getName()]) |
53 | ); | 53 | ); |
54 | 54 | ||
55 | return $this->render('WallabagCoreBundle:Developer:client_parameters.html.twig', [ | 55 | return $this->render('@WallabagCore/themes/common/Developer/client_parameters.html.twig', [ |
56 | 'client_id' => $client->getPublicId(), | 56 | 'client_id' => $client->getPublicId(), |
57 | 'client_secret' => $client->getSecret(), | 57 | 'client_secret' => $client->getSecret(), |
58 | 'client_name' => $client->getName(), | 58 | 'client_name' => $client->getName(), |
59 | ]); | 59 | ]); |
60 | } | 60 | } |
61 | 61 | ||
62 | return $this->render('WallabagCoreBundle:Developer:client.html.twig', [ | 62 | return $this->render('@WallabagCore/themes/common/Developer/client.html.twig', [ |
63 | 'form' => $clientForm->createView(), | 63 | 'form' => $clientForm->createView(), |
64 | ]); | 64 | ]); |
65 | } | 65 | } |
@@ -96,6 +96,6 @@ class DeveloperController extends Controller | |||
96 | */ | 96 | */ |
97 | public function howtoFirstAppAction() | 97 | public function howtoFirstAppAction() |
98 | { | 98 | { |
99 | return $this->render('WallabagCoreBundle:Developer:howto_app.html.twig'); | 99 | return $this->render('@WallabagCore/themes/common/Developer/howto_app.html.twig'); |
100 | } | 100 | } |
101 | } | 101 | } |
diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index 40111af0..3b28e635 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Wallabag/CoreBundle/Controller/EntryController.php | |||
@@ -531,7 +531,7 @@ class EntryController extends Controller | |||
531 | } | 531 | } |
532 | 532 | ||
533 | return $this->render( | 533 | return $this->render( |
534 | '@WallabagCore/themes/share.html.twig', | 534 | '@WallabagCore/themes/common/Entry/share.html.twig', |
535 | ['entry' => $entry] | 535 | ['entry' => $entry] |
536 | ); | 536 | ); |
537 | } | 537 | } |
diff --git a/src/Wallabag/CoreBundle/Controller/ExceptionController.php b/src/Wallabag/CoreBundle/Controller/ExceptionController.php new file mode 100644 index 00000000..abfa9c2f --- /dev/null +++ b/src/Wallabag/CoreBundle/Controller/ExceptionController.php | |||
@@ -0,0 +1,40 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\CoreBundle\Controller; | ||
4 | |||
5 | use Symfony\Bundle\TwigBundle\Controller\ExceptionController as BaseExceptionController; | ||
6 | use Symfony\Component\HttpFoundation\Request; | ||
7 | |||
8 | /** | ||
9 | * This controller allow us to customize the error template. | ||
10 | * The only modified line from the parent template is for "WallabagCoreBundle". | ||
11 | */ | ||
12 | class ExceptionController extends BaseExceptionController | ||
13 | { | ||
14 | protected function findTemplate(Request $request, $format, $code, $showException) | ||
15 | { | ||
16 | $name = $showException ? 'exception' : 'error'; | ||
17 | if ($showException && 'html' == $format) { | ||
18 | $name = 'exception_full'; | ||
19 | } | ||
20 | |||
21 | // For error pages, try to find a template for the specific HTTP status code and format | ||
22 | if (!$showException) { | ||
23 | $template = sprintf('WallabagCoreBundle:Exception:%s.%s.twig', $name, $format); | ||
24 | if ($this->templateExists($template)) { | ||
25 | return $template; | ||
26 | } | ||
27 | } | ||
28 | |||
29 | // try to find a template for the given format | ||
30 | $template = sprintf('@Twig/Exception/%s.%s.twig', $name, $format); | ||
31 | if ($this->templateExists($template)) { | ||
32 | return $template; | ||
33 | } | ||
34 | |||
35 | // default to a generic HTML exception | ||
36 | $request->setRequestFormat('html'); | ||
37 | |||
38 | return sprintf('@Twig/Exception/%s.html.twig', $showException ? 'exception_full' : $name); | ||
39 | } | ||
40 | } | ||
diff --git a/src/Wallabag/CoreBundle/Controller/RssController.php b/src/Wallabag/CoreBundle/Controller/RssController.php index 2118885c..38e3b5a0 100644 --- a/src/Wallabag/CoreBundle/Controller/RssController.php +++ b/src/Wallabag/CoreBundle/Controller/RssController.php | |||
@@ -87,7 +87,7 @@ class RssController extends Controller | |||
87 | $perPage = $user->getConfig()->getRssLimit() ?: $this->getParameter('wallabag_core.rss_limit'); | 87 | $perPage = $user->getConfig()->getRssLimit() ?: $this->getParameter('wallabag_core.rss_limit'); |
88 | $entries->setMaxPerPage($perPage); | 88 | $entries->setMaxPerPage($perPage); |
89 | 89 | ||
90 | return $this->render('WallabagCoreBundle:Entry:entries.xml.twig', [ | 90 | return $this->render('@WallabagCore/themes/common/Entry/entries.xml.twig', [ |
91 | 'type' => $type, | 91 | 'type' => $type, |
92 | 'entries' => $entries, | 92 | 'entries' => $entries, |
93 | ]); | 93 | ]); |
diff --git a/src/Wallabag/CoreBundle/Controller/StaticController.php b/src/Wallabag/CoreBundle/Controller/StaticController.php index 2a57f06f..82714217 100644 --- a/src/Wallabag/CoreBundle/Controller/StaticController.php +++ b/src/Wallabag/CoreBundle/Controller/StaticController.php | |||
@@ -15,7 +15,7 @@ class StaticController extends Controller | |||
15 | $addonsUrl = $this->container->getParameter('addons_url'); | 15 | $addonsUrl = $this->container->getParameter('addons_url'); |
16 | 16 | ||
17 | return $this->render( | 17 | return $this->render( |
18 | 'WallabagCoreBundle:Static:howto.html.twig', | 18 | '@WallabagCore/themes/common/Static/howto.html.twig', |
19 | ['addonsUrl' => $addonsUrl] | 19 | ['addonsUrl' => $addonsUrl] |
20 | ); | 20 | ); |
21 | } | 21 | } |
@@ -26,7 +26,7 @@ class StaticController extends Controller | |||
26 | public function aboutAction() | 26 | public function aboutAction() |
27 | { | 27 | { |
28 | return $this->render( | 28 | return $this->render( |
29 | 'WallabagCoreBundle:Static:about.html.twig', | 29 | '@WallabagCore/themes/common/Static/about.html.twig', |
30 | [ | 30 | [ |
31 | 'version' => $this->getParameter('wallabag_core.version'), | 31 | 'version' => $this->getParameter('wallabag_core.version'), |
32 | 'paypal_url' => $this->getParameter('wallabag_core.paypal_url'), | 32 | 'paypal_url' => $this->getParameter('wallabag_core.paypal_url'), |
@@ -40,7 +40,7 @@ class StaticController extends Controller | |||
40 | public function quickstartAction() | 40 | public function quickstartAction() |
41 | { | 41 | { |
42 | return $this->render( | 42 | return $this->render( |
43 | 'WallabagCoreBundle:Static:quickstart.html.twig', | 43 | '@WallabagCore/themes/common/Static/quickstart.html.twig', |
44 | [] | 44 | [] |
45 | ); | 45 | ); |
46 | } | 46 | } |
diff --git a/src/Wallabag/CoreBundle/Helper/EntriesExport.php b/src/Wallabag/CoreBundle/Helper/EntriesExport.php index 1dfa12c8..0c627dcd 100644 --- a/src/Wallabag/CoreBundle/Helper/EntriesExport.php +++ b/src/Wallabag/CoreBundle/Helper/EntriesExport.php | |||
@@ -25,7 +25,7 @@ class EntriesExport | |||
25 | private $footerTemplate = '<div style="text-align:center;"> | 25 | private $footerTemplate = '<div style="text-align:center;"> |
26 | <p>Produced by wallabag with %EXPORT_METHOD%</p> | 26 | <p>Produced by wallabag with %EXPORT_METHOD%</p> |
27 | <p>Please open <a href="https://github.com/wallabag/wallabag/issues">an issue</a> if you have trouble with the display of this E-Book on your device.</p> | 27 | <p>Please open <a href="https://github.com/wallabag/wallabag/issues">an issue</a> if you have trouble with the display of this E-Book on your device.</p> |
28 | </div'; | 28 | </div>'; |
29 | 29 | ||
30 | /** | 30 | /** |
31 | * @param Config $craueConfig CraueConfig instance to get wallabag instance url from database | 31 | * @param Config $craueConfig CraueConfig instance to get wallabag instance url from database |
diff --git a/src/Wallabag/CoreBundle/ParamConverter/UsernameRssTokenConverter.php b/src/Wallabag/CoreBundle/ParamConverter/UsernameRssTokenConverter.php index 6ea2a4f3..40b5673d 100644 --- a/src/Wallabag/CoreBundle/ParamConverter/UsernameRssTokenConverter.php +++ b/src/Wallabag/CoreBundle/ParamConverter/UsernameRssTokenConverter.php | |||
@@ -49,7 +49,7 @@ class UsernameRssTokenConverter implements ParamConverterInterface | |||
49 | $em = $this->registry->getManagerForClass($configuration->getClass()); | 49 | $em = $this->registry->getManagerForClass($configuration->getClass()); |
50 | 50 | ||
51 | // Check, if class name is what we need | 51 | // Check, if class name is what we need |
52 | if ('Wallabag\UserBundle\Entity\User' !== $em->getClassMetadata($configuration->getClass())->getName()) { | 52 | if (null !== $em && 'Wallabag\UserBundle\Entity\User' !== $em->getClassMetadata($configuration->getClass())->getName()) { |
53 | return false; | 53 | return false; |
54 | } | 54 | } |
55 | 55 | ||
@@ -69,9 +69,8 @@ class UsernameRssTokenConverter implements ParamConverterInterface | |||
69 | $username = $request->attributes->get('username'); | 69 | $username = $request->attributes->get('username'); |
70 | $rssToken = $request->attributes->get('token'); | 70 | $rssToken = $request->attributes->get('token'); |
71 | 71 | ||
72 | // Check, if route attributes exists | 72 | if (!$request->attributes->has('username') || !$request->attributes->has('token')) { |
73 | if (null === $username || null === $rssToken) { | 73 | return false; |
74 | throw new \InvalidArgumentException('Route attribute is missing'); | ||
75 | } | 74 | } |
76 | 75 | ||
77 | // Get actual entity manager for class | 76 | // Get actual entity manager for class |
diff --git a/src/Wallabag/CoreBundle/Repository/EntryRepository.php b/src/Wallabag/CoreBundle/Repository/EntryRepository.php index 302e5a53..75127b7d 100644 --- a/src/Wallabag/CoreBundle/Repository/EntryRepository.php +++ b/src/Wallabag/CoreBundle/Repository/EntryRepository.php | |||
@@ -128,7 +128,7 @@ class EntryRepository extends EntityRepository | |||
128 | $qb->andWhere('e.isStarred =:isStarred')->setParameter('isStarred', (bool) $isStarred); | 128 | $qb->andWhere('e.isStarred =:isStarred')->setParameter('isStarred', (bool) $isStarred); |
129 | } | 129 | } |
130 | 130 | ||
131 | if ($since >= 0) { | 131 | if ($since > 0) { |
132 | $qb->andWhere('e.updatedAt > :since')->setParameter('since', new \DateTime(date('Y-m-d H:i:s', $since))); | 132 | $qb->andWhere('e.updatedAt > :since')->setParameter('since', new \DateTime(date('Y-m-d H:i:s', $since))); |
133 | } | 133 | } |
134 | 134 | ||
@@ -281,7 +281,7 @@ class EntryRepository extends EntityRepository | |||
281 | public function findByUrlAndUserId($url, $userId) | 281 | public function findByUrlAndUserId($url, $userId) |
282 | { | 282 | { |
283 | $res = $this->createQueryBuilder('e') | 283 | $res = $this->createQueryBuilder('e') |
284 | ->where('e.url = :url')->setParameter('url', $url) | 284 | ->where('e.url = :url')->setParameter('url', urldecode($url)) |
285 | ->andWhere('e.user = :user_id')->setParameter('user_id', $userId) | 285 | ->andWhere('e.user = :user_id')->setParameter('user_id', $userId) |
286 | ->getQuery() | 286 | ->getQuery() |
287 | ->getResult(); | 287 | ->getResult(); |
diff --git a/src/Wallabag/CoreBundle/Resources/config/services.yml b/src/Wallabag/CoreBundle/Resources/config/services.yml index 23e6d3ca..d1139846 100644 --- a/src/Wallabag/CoreBundle/Resources/config/services.yml +++ b/src/Wallabag/CoreBundle/Resources/config/services.yml | |||
@@ -88,17 +88,6 @@ services: | |||
88 | arguments: | 88 | arguments: |
89 | - WallabagCoreBundle:Tag | 89 | - WallabagCoreBundle:Tag |
90 | 90 | ||
91 | wallabag_core.registration_confirmed: | ||
92 | class: Wallabag\CoreBundle\EventListener\RegistrationConfirmedListener | ||
93 | arguments: | ||
94 | - "@doctrine.orm.entity_manager" | ||
95 | - "%wallabag_core.theme%" | ||
96 | - "%wallabag_core.items_on_page%" | ||
97 | - "%wallabag_core.rss_limit%" | ||
98 | - "%wallabag_core.language%" | ||
99 | tags: | ||
100 | - { name: kernel.event_subscriber } | ||
101 | |||
102 | wallabag_core.helper.entries_export: | 91 | wallabag_core.helper.entries_export: |
103 | class: Wallabag\CoreBundle\Helper\EntriesExport | 92 | class: Wallabag\CoreBundle\Helper\EntriesExport |
104 | arguments: | 93 | arguments: |
@@ -133,3 +122,9 @@ services: | |||
133 | host: '%redis_host%' | 122 | host: '%redis_host%' |
134 | port: '%redis_port%' | 123 | port: '%redis_port%' |
135 | schema: tcp | 124 | schema: tcp |
125 | |||
126 | wallabag_core.exception_controller: | ||
127 | class: Wallabag\CoreBundle\Controller\ExceptionController | ||
128 | arguments: | ||
129 | - '@twig' | ||
130 | - '%kernel.debug%' | ||
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml index 9eeb210b..40644ff5 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml | |||
@@ -31,6 +31,7 @@ menu: | |||
31 | search: 'Søg' | 31 | search: 'Søg' |
32 | # save_link: 'Save a link' | 32 | # save_link: 'Save a link' |
33 | back_to_unread: 'Tilbage til de ulæste artikler' | 33 | back_to_unread: 'Tilbage til de ulæste artikler' |
34 | # users_management: 'Users management' | ||
34 | top: | 35 | top: |
35 | add_new_entry: 'Tilføj ny artikel' | 36 | add_new_entry: 'Tilføj ny artikel' |
36 | search: 'Søg' | 37 | search: 'Søg' |
@@ -45,6 +46,7 @@ footer: | |||
45 | # social: 'Social' | 46 | # social: 'Social' |
46 | # powered_by: 'powered by' | 47 | # powered_by: 'powered by' |
47 | about: 'Om' | 48 | about: 'Om' |
49 | # stats: Since %user_creation% you read %nb_archives% articles. That is about %per_day% a day! | ||
48 | 50 | ||
49 | config: | 51 | config: |
50 | page_title: 'Opsætning' | 52 | page_title: 'Opsætning' |
@@ -94,6 +96,7 @@ config: | |||
94 | # if_label: 'if' | 96 | # if_label: 'if' |
95 | # then_tag_as_label: 'then tag as' | 97 | # then_tag_as_label: 'then tag as' |
96 | # delete_rule_label: 'delete' | 98 | # delete_rule_label: 'delete' |
99 | # edit_rule_label: 'edit' | ||
97 | # rule_label: 'Rule' | 100 | # rule_label: 'Rule' |
98 | # tags_label: 'Tags' | 101 | # tags_label: 'Tags' |
99 | # faq: | 102 | # faq: |
@@ -127,12 +130,6 @@ config: | |||
127 | # or: 'One rule OR another' | 130 | # or: 'One rule OR another' |
128 | # and: 'One rule AND another' | 131 | # and: 'One rule AND another' |
129 | # matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>' | 132 | # matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>' |
130 | form_new_user: | ||
131 | username_label: 'Brugernavn' | ||
132 | password_label: 'Adgangskode' | ||
133 | repeat_new_password_label: 'Gentag adgangskode' | ||
134 | plain_password_label: '????' | ||
135 | email_label: 'Emailadresse' | ||
136 | 133 | ||
137 | entry: | 134 | entry: |
138 | page_titles: | 135 | page_titles: |
@@ -266,12 +263,14 @@ howto: | |||
266 | 263 | ||
267 | quickstart: | 264 | quickstart: |
268 | # page_title: 'Quickstart' | 265 | # page_title: 'Quickstart' |
266 | # more: 'More…' | ||
269 | # intro: | 267 | # intro: |
270 | # title: 'Welcome to wallabag!' | 268 | # title: 'Welcome to wallabag!' |
271 | # paragraph_1: "We'll accompany you to visit wallabag and show you some features which can interest you." | 269 | # paragraph_1: "We'll accompany you to visit wallabag and show you some features which can interest you." |
272 | # paragraph_2: 'Follow us!' | 270 | # paragraph_2: 'Follow us!' |
273 | # configure: | 271 | # configure: |
274 | # title: 'Configure the application' | 272 | # title: 'Configure the application' |
273 | # description: 'In order to have an application which suits you, have a look into the configuration of wallabag.' | ||
275 | # language: 'Change language and design' | 274 | # language: 'Change language and design' |
276 | # rss: 'Enable RSS feeds' | 275 | # rss: 'Enable RSS feeds' |
277 | # tagging_rules: 'Write rules to automatically tag your articles' | 276 | # tagging_rules: 'Write rules to automatically tag your articles' |
@@ -285,6 +284,7 @@ quickstart: | |||
285 | # import: 'Configure import' | 284 | # import: 'Configure import' |
286 | # first_steps: | 285 | # first_steps: |
287 | # title: 'First steps' | 286 | # title: 'First steps' |
287 | # description: "Now wallabag is well configured, it's time to archive the web. You can click on the top right sign + to add a link." | ||
288 | # new_article: 'Save your first article' | 288 | # new_article: 'Save your first article' |
289 | # unread_articles: 'And classify it!' | 289 | # unread_articles: 'And classify it!' |
290 | # migrate: | 290 | # migrate: |
@@ -294,11 +294,15 @@ quickstart: | |||
294 | # wallabag_v1: 'Migrate from wallabag v1' | 294 | # wallabag_v1: 'Migrate from wallabag v1' |
295 | # wallabag_v2: 'Migrate from wallabag v2' | 295 | # wallabag_v2: 'Migrate from wallabag v2' |
296 | # readability: 'Migrate from Readability' | 296 | # readability: 'Migrate from Readability' |
297 | # instapaper: 'Migrate from Instapaper' | ||
297 | # developer: | 298 | # developer: |
298 | # title: 'Developers' | 299 | # title: 'Developers' |
300 | # description: 'We also thought to the developers: Docker, API, translations, etc.' | ||
299 | # create_application: 'Create your third application' | 301 | # create_application: 'Create your third application' |
302 | # use_docker: 'Use Docker to install wallabag' | ||
300 | # docs: | 303 | # docs: |
301 | # title: 'Full documentation' | 304 | # title: 'Full documentation' |
305 | # description: "There are so much features in wallabag. Don't hesitate to read the manual to know them and to learn how to use them." | ||
302 | # annotate: 'Annotate your article' | 306 | # annotate: 'Annotate your article' |
303 | # export: 'Convert your articles into ePUB or PDF' | 307 | # export: 'Convert your articles into ePUB or PDF' |
304 | # search_filters: 'See how you can look for an article by using search engine and filters' | 308 | # search_filters: 'See how you can look for an article by using search engine and filters' |
@@ -351,12 +355,16 @@ import: | |||
351 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | 355 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" |
352 | # firefox: | 356 | # firefox: |
353 | # page_title: 'Import > Firefox' | 357 | # page_title: 'Import > Firefox' |
354 | # description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | 358 | # description: "This importer will import all your Firefox bookmarks. Just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." |
355 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." |
356 | #chrome: | 360 | #chrome: |
357 | # page_title: 'Import > Chrome' | 361 | # page_title: 'Import > Chrome' |
358 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | 362 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" |
359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 363 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." |
364 | # instapaper: | ||
365 | # page_title: 'Import > Instapaper' | ||
366 | # description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
367 | # how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
360 | 368 | ||
361 | developer: | 369 | developer: |
362 | # page_title: 'Developer' | 370 | # page_title: 'Developer' |
@@ -383,12 +391,14 @@ developer: | |||
383 | # page_title: 'Developer > New client' | 391 | # page_title: 'Developer > New client' |
384 | # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.' | 392 | # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.' |
385 | # form: | 393 | # form: |
394 | # name_label: 'Name of the client' | ||
386 | # redirect_uris_label: 'Redirect URIs' | 395 | # redirect_uris_label: 'Redirect URIs' |
387 | # save_label: 'Create a new client' | 396 | # save_label: 'Create a new client' |
388 | # action_back: 'Back' | 397 | # action_back: 'Back' |
389 | # client_parameter: | 398 | # client_parameter: |
390 | # page_title: 'Developer > Client parameters' | 399 | # page_title: 'Developer > Client parameters' |
391 | # page_description: 'Here are your client parameters.' | 400 | # page_description: 'Here are your client parameters.' |
401 | # field_name: 'Client name' | ||
392 | # field_id: 'Client ID' | 402 | # field_id: 'Client ID' |
393 | # field_secret: 'Client secret' | 403 | # field_secret: 'Client secret' |
394 | # back: 'Back' | 404 | # back: 'Back' |
@@ -406,6 +416,33 @@ developer: | |||
406 | # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.' | 416 | # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.' |
407 | # back: 'Back' | 417 | # back: 'Back' |
408 | 418 | ||
419 | user: | ||
420 | # page_title: Users management | ||
421 | # new_user: Create a new user | ||
422 | # edit_user: Edit an existing user | ||
423 | # description: "Here you can manage all users (create, edit and delete)" | ||
424 | # list: | ||
425 | # actions: Actions | ||
426 | # edit_action: Edit | ||
427 | # yes: Yes | ||
428 | # no: No | ||
429 | # create_new_one: Create a new user | ||
430 | form: | ||
431 | username_label: 'Brugernavn' | ||
432 | # name_label: 'Name' | ||
433 | password_label: 'Adgangskode' | ||
434 | repeat_new_password_label: 'Gentag adgangskode' | ||
435 | plain_password_label: '????' | ||
436 | email_label: 'Emailadresse' | ||
437 | # enabled_label: 'Enabled' | ||
438 | # locked_label: 'Locked' | ||
439 | # last_login_label: 'Last login' | ||
440 | # twofactor_label: Two factor authentication | ||
441 | # save: Save | ||
442 | # delete: Delete | ||
443 | # delete_confirm: Are you sure? | ||
444 | # back_to_list: Back to list | ||
445 | |||
409 | flashes: | 446 | flashes: |
410 | config: | 447 | config: |
411 | notice: | 448 | notice: |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml index a9ec2519..6f790744 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml | |||
@@ -31,6 +31,7 @@ menu: | |||
31 | search: 'Suche' | 31 | search: 'Suche' |
32 | save_link: 'Link speichern' | 32 | save_link: 'Link speichern' |
33 | back_to_unread: 'Zurück zu ungelesenen Artikeln' | 33 | back_to_unread: 'Zurück zu ungelesenen Artikeln' |
34 | # users_management: 'Users management' | ||
34 | top: | 35 | top: |
35 | add_new_entry: 'Neuen Artikel hinzufügen' | 36 | add_new_entry: 'Neuen Artikel hinzufügen' |
36 | search: 'Suche' | 37 | search: 'Suche' |
@@ -45,6 +46,7 @@ footer: | |||
45 | social: 'Soziales' | 46 | social: 'Soziales' |
46 | powered_by: 'angetrieben von' | 47 | powered_by: 'angetrieben von' |
47 | about: 'Über' | 48 | about: 'Über' |
49 | # stats: Since %user_creation% you read %nb_archives% articles. That is about %per_day% a day! | ||
48 | 50 | ||
49 | config: | 51 | config: |
50 | page_title: 'Einstellungen' | 52 | page_title: 'Einstellungen' |
@@ -94,6 +96,7 @@ config: | |||
94 | if_label: 'Wenn' | 96 | if_label: 'Wenn' |
95 | then_tag_as_label: 'dann tagge als' | 97 | then_tag_as_label: 'dann tagge als' |
96 | delete_rule_label: 'löschen' | 98 | delete_rule_label: 'löschen' |
99 | # edit_rule_label: 'edit' | ||
97 | rule_label: 'Regel' | 100 | rule_label: 'Regel' |
98 | tags_label: 'Tags' | 101 | tags_label: 'Tags' |
99 | faq: | 102 | faq: |
@@ -127,12 +130,6 @@ config: | |||
127 | or: 'Eine Regel ODER die andere' | 130 | or: 'Eine Regel ODER die andere' |
128 | and: 'Eine Regel UND eine andere' | 131 | and: 'Eine Regel UND eine andere' |
129 | matches: 'Tests, ob eine <i>Variable</i> auf eine <i>Suche</i> zutrifft (Groß- und Kleinschreibung wird nicht berücksichtigt).<br />Beispiel: <code>title matches "Fußball"</code>' | 132 | matches: 'Tests, ob eine <i>Variable</i> auf eine <i>Suche</i> zutrifft (Groß- und Kleinschreibung wird nicht berücksichtigt).<br />Beispiel: <code>title matches "Fußball"</code>' |
130 | form_new_user: | ||
131 | username_label: 'Benutzername' | ||
132 | password_label: 'Kennwort' | ||
133 | repeat_new_password_label: 'Neues Kennwort wiederholen' | ||
134 | plain_password_label: '????' | ||
135 | email_label: 'E-Mail-Adresse' | ||
136 | 133 | ||
137 | entry: | 134 | entry: |
138 | page_titles: | 135 | page_titles: |
@@ -266,12 +263,14 @@ howto: | |||
266 | 263 | ||
267 | quickstart: | 264 | quickstart: |
268 | page_title: 'Schnelleinstieg' | 265 | page_title: 'Schnelleinstieg' |
266 | # more: 'More…' | ||
269 | intro: | 267 | intro: |
270 | title: 'Willkommen zu wallabag!' | 268 | title: 'Willkommen zu wallabag!' |
271 | paragraph_1: "Wir werden dich bei der Benutzung von wallabag begleiten und dir einige Funktionen zeigen, die dich interessieren könnten." | 269 | paragraph_1: "Wir werden dich bei der Benutzung von wallabag begleiten und dir einige Funktionen zeigen, die dich interessieren könnten." |
272 | paragraph_2: 'Folge uns!' | 270 | paragraph_2: 'Folge uns!' |
273 | configure: | 271 | configure: |
274 | title: 'Anwendung konfigurieren' | 272 | title: 'Anwendung konfigurieren' |
273 | # description: 'In order to have an application which suits you, have a look into the configuration of wallabag.' | ||
275 | language: 'Sprache und Design ändern' | 274 | language: 'Sprache und Design ändern' |
276 | rss: 'RSS-Feeds aktivieren' | 275 | rss: 'RSS-Feeds aktivieren' |
277 | tagging_rules: 'Schreibe Regeln, um deine Beiträge automatisch zu taggen (verschlagworten)' | 276 | tagging_rules: 'Schreibe Regeln, um deine Beiträge automatisch zu taggen (verschlagworten)' |
@@ -285,6 +284,7 @@ quickstart: | |||
285 | import: 'Import-Einstellungen ändern' | 284 | import: 'Import-Einstellungen ändern' |
286 | first_steps: | 285 | first_steps: |
287 | title: 'Erste Schritte' | 286 | title: 'Erste Schritte' |
287 | # description: "Now wallabag is well configured, it's time to archive the web. You can click on the top right sign + to add a link" | ||
288 | new_article: 'Speichere deinen ersten Artikel' | 288 | new_article: 'Speichere deinen ersten Artikel' |
289 | unread_articles: 'Und klassifiziere ihn!' | 289 | unread_articles: 'Und klassifiziere ihn!' |
290 | migrate: | 290 | migrate: |
@@ -294,11 +294,15 @@ quickstart: | |||
294 | wallabag_v1: 'von wallabag v1 migrieren' | 294 | wallabag_v1: 'von wallabag v1 migrieren' |
295 | wallabag_v2: 'von wallabag v2 migrieren' | 295 | wallabag_v2: 'von wallabag v2 migrieren' |
296 | readability: 'von Readability migrieren' | 296 | readability: 'von Readability migrieren' |
297 | instapaper: 'von Instapaper migrieren' | ||
297 | developer: | 298 | developer: |
298 | title: 'Entwickler' | 299 | title: 'Entwickler' |
300 | # description: 'We also thought to the developers: Docker, API, translations, etc.' | ||
299 | create_application: 'Erstelle eine Anwendung und nutze die wallabag API' | 301 | create_application: 'Erstelle eine Anwendung und nutze die wallabag API' |
302 | # use_docker: 'Use Docker to install wallabag' | ||
300 | docs: | 303 | docs: |
301 | title: 'Komplette Dokumentation' | 304 | title: 'Komplette Dokumentation' |
305 | # description: "There are so much features in wallabag. Don't hesitate to read the manual to know them and to learn how to use them." | ||
302 | annotate: 'Anmerkungen zu Artikeln hinzufügen' | 306 | annotate: 'Anmerkungen zu Artikeln hinzufügen' |
303 | export: 'Artikel nach ePUB oder PDF konvertieren' | 307 | export: 'Artikel nach ePUB oder PDF konvertieren' |
304 | search_filters: 'Schau nach, wie du nach einem Artikel über die Such- und Filterfunktion suchen kannst' | 308 | search_filters: 'Schau nach, wie du nach einem Artikel über die Such- und Filterfunktion suchen kannst' |
@@ -345,18 +349,22 @@ import: | |||
345 | description: 'Dieser Import wird all deine Artikel aus wallabag v2 importieren. Gehe auf "Alle Artikel" und dann, in der Exportieren-Seitenleiste auf "JSON". Dabei erhältst du eine "All articles.json"-Datei.' | 349 | description: 'Dieser Import wird all deine Artikel aus wallabag v2 importieren. Gehe auf "Alle Artikel" und dann, in der Exportieren-Seitenleiste auf "JSON". Dabei erhältst du eine "All articles.json"-Datei.' |
346 | readability: | 350 | readability: |
347 | page_title: 'Aus Readability importieren' | 351 | page_title: 'Aus Readability importieren' |
348 | # description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).' | 352 | # description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).' |
349 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' | 353 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' |
350 | worker: | 354 | worker: |
351 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | 355 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" |
352 | # firefox: | 356 | firefox: |
353 | # page_title: 'Import > Firefox' | 357 | page_title: 'Aus Firefox importieren' |
354 | # description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | 358 | # description: "This importer will import all your Firefox bookmarks. Just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." |
355 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." |
356 | # chrome: | 360 | chrome: |
357 | # page_title: 'Import > Chrome' | 361 | page_title: 'Aus Chrome importieren' |
358 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | 362 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" |
359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 363 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." |
364 | instapaper: | ||
365 | page_title: 'Aus Instapaper importieren' | ||
366 | # description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
367 | # how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
360 | 368 | ||
361 | developer: | 369 | developer: |
362 | page_title: 'Entwickler' | 370 | page_title: 'Entwickler' |
@@ -383,12 +391,14 @@ developer: | |||
383 | page_title: 'Entwickler > Neuer Client' | 391 | page_title: 'Entwickler > Neuer Client' |
384 | page_description: 'Du bist dabei, einen neuen Client zu erstellen. Fülle das nachfolgende Feld für die Weiterleitungs-URIs deiner Anwendung aus.' | 392 | page_description: 'Du bist dabei, einen neuen Client zu erstellen. Fülle das nachfolgende Feld für die Weiterleitungs-URIs deiner Anwendung aus.' |
385 | form: | 393 | form: |
394 | # name_label: 'Name of the client' | ||
386 | redirect_uris_label: 'Weiterleitungs-URIs' | 395 | redirect_uris_label: 'Weiterleitungs-URIs' |
387 | save_label: 'Neuen Client erstellen' | 396 | save_label: 'Neuen Client erstellen' |
388 | action_back: 'Zurück' | 397 | action_back: 'Zurück' |
389 | client_parameter: | 398 | client_parameter: |
390 | page_title: 'Entwickler > Client-Parameter' | 399 | page_title: 'Entwickler > Client-Parameter' |
391 | page_description: 'Dies sind deine Client-Parameter.' | 400 | page_description: 'Dies sind deine Client-Parameter.' |
401 | # field_name: 'Client name' | ||
392 | field_id: 'Client-ID' | 402 | field_id: 'Client-ID' |
393 | field_secret: 'Client-Secret' | 403 | field_secret: 'Client-Secret' |
394 | back: 'Zurück' | 404 | back: 'Zurück' |
@@ -406,6 +416,33 @@ developer: | |||
406 | paragraph_8: 'Wenn du alle API-Endpunkte sehen willst, werfe einen Blick auf die <a href="%link%">API-Dokumentation</a>.' | 416 | paragraph_8: 'Wenn du alle API-Endpunkte sehen willst, werfe einen Blick auf die <a href="%link%">API-Dokumentation</a>.' |
407 | back: 'Zurück' | 417 | back: 'Zurück' |
408 | 418 | ||
419 | user: | ||
420 | # page_title: Users management | ||
421 | # new_user: Create a new user | ||
422 | # edit_user: Edit an existing user | ||
423 | # description: "Here you can manage all users (create, edit and delete)" | ||
424 | # list: | ||
425 | # actions: Actions | ||
426 | # edit_action: Edit | ||
427 | # yes: Yes | ||
428 | # no: No | ||
429 | # create_new_one: Create a new user | ||
430 | form: | ||
431 | username_label: 'Benutzername' | ||
432 | # name_label: 'Name' | ||
433 | password_label: 'Kennwort' | ||
434 | repeat_new_password_label: 'Neues Kennwort wiederholen' | ||
435 | plain_password_label: '????' | ||
436 | email_label: 'E-Mail-Adresse' | ||
437 | # enabled_label: 'Enabled' | ||
438 | # locked_label: 'Locked' | ||
439 | # last_login_label: 'Last login' | ||
440 | # twofactor_label: Two factor authentication | ||
441 | # save: Save | ||
442 | # delete: Delete | ||
443 | # delete_confirm: Are you sure? | ||
444 | # back_to_list: Back to list | ||
445 | |||
409 | flashes: | 446 | flashes: |
410 | config: | 447 | config: |
411 | notice: | 448 | notice: |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml index c0d8656d..91abe162 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml | |||
@@ -31,6 +31,7 @@ menu: | |||
31 | search: 'Search' | 31 | search: 'Search' |
32 | save_link: 'Save a link' | 32 | save_link: 'Save a link' |
33 | back_to_unread: 'Back to unread articles' | 33 | back_to_unread: 'Back to unread articles' |
34 | users_management: 'Users management' | ||
34 | top: | 35 | top: |
35 | add_new_entry: 'Add a new entry' | 36 | add_new_entry: 'Add a new entry' |
36 | search: 'Search' | 37 | search: 'Search' |
@@ -45,6 +46,7 @@ footer: | |||
45 | social: 'Social' | 46 | social: 'Social' |
46 | powered_by: 'powered by' | 47 | powered_by: 'powered by' |
47 | about: 'About' | 48 | about: 'About' |
49 | stats: Since %user_creation% you read %nb_archives% articles. That is about %per_day% a day! | ||
48 | 50 | ||
49 | config: | 51 | config: |
50 | page_title: 'Config' | 52 | page_title: 'Config' |
@@ -94,6 +96,7 @@ config: | |||
94 | if_label: 'if' | 96 | if_label: 'if' |
95 | then_tag_as_label: 'then tag as' | 97 | then_tag_as_label: 'then tag as' |
96 | delete_rule_label: 'delete' | 98 | delete_rule_label: 'delete' |
99 | edit_rule_label: 'edit' | ||
97 | rule_label: 'Rule' | 100 | rule_label: 'Rule' |
98 | tags_label: 'Tags' | 101 | tags_label: 'Tags' |
99 | faq: | 102 | faq: |
@@ -127,12 +130,6 @@ config: | |||
127 | or: 'One rule OR another' | 130 | or: 'One rule OR another' |
128 | and: 'One rule AND another' | 131 | and: 'One rule AND another' |
129 | matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>' | 132 | matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>' |
130 | form_new_user: | ||
131 | username_label: 'Username' | ||
132 | password_label: 'Password' | ||
133 | repeat_new_password_label: 'Repeat new password' | ||
134 | plain_password_label: '????' | ||
135 | email_label: 'Email' | ||
136 | 133 | ||
137 | entry: | 134 | entry: |
138 | page_titles: | 135 | page_titles: |
@@ -266,12 +263,14 @@ howto: | |||
266 | 263 | ||
267 | quickstart: | 264 | quickstart: |
268 | page_title: 'Quickstart' | 265 | page_title: 'Quickstart' |
266 | more: 'More…' | ||
269 | intro: | 267 | intro: |
270 | title: 'Welcome to wallabag!' | 268 | title: 'Welcome to wallabag!' |
271 | paragraph_1: "We'll accompany you on your visit to wallabag and show you some features that might interest you." | 269 | paragraph_1: "We'll accompany you on your visit to wallabag and show you some features that might interest you." |
272 | paragraph_2: 'Follow us!' | 270 | paragraph_2: 'Follow us!' |
273 | configure: | 271 | configure: |
274 | title: 'Configure the application' | 272 | title: 'Configure the application' |
273 | description: 'In order to have an application which suits you, have a look into the configuration of wallabag.' | ||
275 | language: 'Change language and design' | 274 | language: 'Change language and design' |
276 | rss: 'Enable RSS feeds' | 275 | rss: 'Enable RSS feeds' |
277 | tagging_rules: 'Write rules to automatically tag your articles' | 276 | tagging_rules: 'Write rules to automatically tag your articles' |
@@ -285,6 +284,7 @@ quickstart: | |||
285 | import: 'Configure import' | 284 | import: 'Configure import' |
286 | first_steps: | 285 | first_steps: |
287 | title: 'First steps' | 286 | title: 'First steps' |
287 | description: "Now wallabag is well configured, it's time to archive the web. You can click on the top right sign + to add a link." | ||
288 | new_article: 'Save your first article' | 288 | new_article: 'Save your first article' |
289 | unread_articles: 'And classify it!' | 289 | unread_articles: 'And classify it!' |
290 | migrate: | 290 | migrate: |
@@ -294,11 +294,15 @@ quickstart: | |||
294 | wallabag_v1: 'Migrate from wallabag v1' | 294 | wallabag_v1: 'Migrate from wallabag v1' |
295 | wallabag_v2: 'Migrate from wallabag v2' | 295 | wallabag_v2: 'Migrate from wallabag v2' |
296 | readability: 'Migrate from Readability' | 296 | readability: 'Migrate from Readability' |
297 | instapaper: 'Migrate from Instapaper' | ||
297 | developer: | 298 | developer: |
298 | title: 'Developers' | 299 | title: 'Developers' |
300 | description: 'We also thought to the developers: Docker, API, translations, etc.' | ||
299 | create_application: 'Create your third application' | 301 | create_application: 'Create your third application' |
302 | use_docker: 'Use Docker to install wallabag' | ||
300 | docs: | 303 | docs: |
301 | title: 'Full documentation' | 304 | title: 'Full documentation' |
305 | description: "There are so much features in wallabag. Don't hesitate to read the manual to know them and to learn how to use them." | ||
302 | annotate: 'Annotate your article' | 306 | annotate: 'Annotate your article' |
303 | export: 'Convert your articles into ePUB or PDF' | 307 | export: 'Convert your articles into ePUB or PDF' |
304 | search_filters: 'See how you can look for an article by using the search engine and filters' | 308 | search_filters: 'See how you can look for an article by using the search engine and filters' |
@@ -351,12 +355,16 @@ import: | |||
351 | enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | 355 | enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" |
352 | firefox: | 356 | firefox: |
353 | page_title: 'Import > Firefox' | 357 | page_title: 'Import > Firefox' |
354 | description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | 358 | description: "This importer will import all your Firefox bookmarks. Just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." |
355 | how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 359 | how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." |
356 | chrome: | 360 | chrome: |
357 | page_title: 'Import > Chrome' | 361 | page_title: 'Import > Chrome' |
358 | description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | 362 | description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" |
359 | how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 363 | how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." |
364 | instapaper: | ||
365 | page_title: 'Import > Instapaper' | ||
366 | description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
367 | how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
360 | 368 | ||
361 | developer: | 369 | developer: |
362 | page_title: 'Developer' | 370 | page_title: 'Developer' |
@@ -408,6 +416,33 @@ developer: | |||
408 | paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.' | 416 | paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.' |
409 | back: 'Back' | 417 | back: 'Back' |
410 | 418 | ||
419 | user: | ||
420 | page_title: Users management | ||
421 | new_user: Create a new user | ||
422 | edit_user: Edit an existing user | ||
423 | description: "Here you can manage all users (create, edit and delete)" | ||
424 | list: | ||
425 | actions: Actions | ||
426 | edit_action: Edit | ||
427 | yes: Yes | ||
428 | no: No | ||
429 | create_new_one: Create a new user | ||
430 | form: | ||
431 | username_label: 'Username' | ||
432 | name_label: 'Name' | ||
433 | password_label: 'Password' | ||
434 | repeat_new_password_label: 'Repeat new password' | ||
435 | plain_password_label: '????' | ||
436 | email_label: 'Email' | ||
437 | enabled_label: 'Enabled' | ||
438 | locked_label: 'Locked' | ||
439 | last_login_label: 'Last login' | ||
440 | twofactor_label: Two factor authentication | ||
441 | save: Save | ||
442 | delete: Delete | ||
443 | delete_confirm: Are you sure? | ||
444 | back_to_list: Back to list | ||
445 | |||
411 | flashes: | 446 | flashes: |
412 | config: | 447 | config: |
413 | notice: | 448 | notice: |
@@ -418,7 +453,6 @@ flashes: | |||
418 | rss_updated: 'RSS information updated' | 453 | rss_updated: 'RSS information updated' |
419 | tagging_rules_updated: 'Tagging rules updated' | 454 | tagging_rules_updated: 'Tagging rules updated' |
420 | tagging_rules_deleted: 'Tagging rule deleted' | 455 | tagging_rules_deleted: 'Tagging rule deleted' |
421 | user_added: 'User "%username%" added' | ||
422 | rss_token_updated: 'RSS token updated' | 456 | rss_token_updated: 'RSS token updated' |
423 | entry: | 457 | entry: |
424 | notice: | 458 | notice: |
@@ -449,3 +483,8 @@ flashes: | |||
449 | notice: | 483 | notice: |
450 | client_created: 'New client %name% created.' | 484 | client_created: 'New client %name% created.' |
451 | client_deleted: 'Client %name% deleted' | 485 | client_deleted: 'Client %name% deleted' |
486 | user: | ||
487 | notice: | ||
488 | added: 'User "%username%" added' | ||
489 | updated: 'User "%username%" updated' | ||
490 | deleted: 'User "%username%" deleted' | ||
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml index 1d6993db..25d2f3a2 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml | |||
@@ -31,6 +31,7 @@ menu: | |||
31 | search: 'Buscar' | 31 | search: 'Buscar' |
32 | save_link: 'Archivar un enlace' | 32 | save_link: 'Archivar un enlace' |
33 | back_to_unread: 'Volver a los artículos sin leer' | 33 | back_to_unread: 'Volver a los artículos sin leer' |
34 | # users_management: 'Users management' | ||
34 | top: | 35 | top: |
35 | add_new_entry: 'Añadir un nuevo artículo' | 36 | add_new_entry: 'Añadir un nuevo artículo' |
36 | search: 'Buscar' | 37 | search: 'Buscar' |
@@ -45,6 +46,7 @@ footer: | |||
45 | social: 'Social' | 46 | social: 'Social' |
46 | powered_by: 'funciona por' | 47 | powered_by: 'funciona por' |
47 | about: 'Acerca de' | 48 | about: 'Acerca de' |
49 | # stats: Since %user_creation% you read %nb_archives% articles. That is about %per_day% a day! | ||
48 | 50 | ||
49 | config: | 51 | config: |
50 | page_title: 'Configuración' | 52 | page_title: 'Configuración' |
@@ -94,6 +96,7 @@ config: | |||
94 | if_label: 'si' | 96 | if_label: 'si' |
95 | then_tag_as_label: 'Etiquete como' | 97 | then_tag_as_label: 'Etiquete como' |
96 | delete_rule_label: 'Borre' | 98 | delete_rule_label: 'Borre' |
99 | # edit_rule_label: 'edit' | ||
97 | rule_label: 'Regla' | 100 | rule_label: 'Regla' |
98 | tags_label: 'Etiquetas' | 101 | tags_label: 'Etiquetas' |
99 | faq: | 102 | faq: |
@@ -127,12 +130,6 @@ config: | |||
127 | or: 'Una regla U otra' | 130 | or: 'Una regla U otra' |
128 | and: 'Una regla Y la otra' | 131 | and: 'Una regla Y la otra' |
129 | matches: 'Pruebe si un <i>sujeto</i> corresponde a una <i>búsqueda</i> (insensible a mayusculas).<br />Ejemplo : <code>título coincide "football"</code>' | 132 | matches: 'Pruebe si un <i>sujeto</i> corresponde a una <i>búsqueda</i> (insensible a mayusculas).<br />Ejemplo : <code>título coincide "football"</code>' |
130 | form_new_user: | ||
131 | username_label: 'Nombre de usuario' | ||
132 | password_label: 'Contraseña' | ||
133 | repeat_new_password_label: 'Confirmar la nueva contraseña' | ||
134 | plain_password_label: '????' | ||
135 | email_label: 'Email' | ||
136 | 133 | ||
137 | entry: | 134 | entry: |
138 | page_titles: | 135 | page_titles: |
@@ -266,12 +263,14 @@ howto: | |||
266 | 263 | ||
267 | quickstart: | 264 | quickstart: |
268 | page_title: 'Comienzo rápido' | 265 | page_title: 'Comienzo rápido' |
266 | # more: 'More…' | ||
269 | intro: | 267 | intro: |
270 | title: 'Bienvenido a wallabag !' | 268 | title: 'Bienvenido a wallabag !' |
271 | paragraph_1: "Le acompañaremos a su visita de wallabag y le mostraremos algunas características que le pueden interesar." | 269 | paragraph_1: "Le acompañaremos a su visita de wallabag y le mostraremos algunas características que le pueden interesar." |
272 | paragraph_2: '¡Síganos!' | 270 | paragraph_2: '¡Síganos!' |
273 | configure: | 271 | configure: |
274 | title: 'Configure la aplicación' | 272 | title: 'Configure la aplicación' |
273 | # description: 'In order to have an application which suits you, have a look into the configuration of wallabag.' | ||
275 | language: 'Cambie el idioma y el diseño de la aplicación' | 274 | language: 'Cambie el idioma y el diseño de la aplicación' |
276 | rss: 'Activar los feeds RSS' | 275 | rss: 'Activar los feeds RSS' |
277 | tagging_rules: 'Escribir reglas para etiquetear automaticamente sus artículos' | 276 | tagging_rules: 'Escribir reglas para etiquetear automaticamente sus artículos' |
@@ -285,6 +284,7 @@ quickstart: | |||
285 | import: 'Configure importación' | 284 | import: 'Configure importación' |
286 | first_steps: | 285 | first_steps: |
287 | title: 'Primeros pasos' | 286 | title: 'Primeros pasos' |
287 | # description: "Now wallabag is well configured, it's time to archive the web. You can click on the top right sign + to add a link." | ||
288 | new_article: 'Guarde su primer artículo' | 288 | new_article: 'Guarde su primer artículo' |
289 | unread_articles: '¡Y clasifíquelo!' | 289 | unread_articles: '¡Y clasifíquelo!' |
290 | migrate: | 290 | migrate: |
@@ -294,11 +294,15 @@ quickstart: | |||
294 | wallabag_v1: 'Migrar desde wallabag v1' | 294 | wallabag_v1: 'Migrar desde wallabag v1' |
295 | wallabag_v2: 'Migrar desde wallabag v2' | 295 | wallabag_v2: 'Migrar desde wallabag v2' |
296 | readability: 'Migrar desde Readability' | 296 | readability: 'Migrar desde Readability' |
297 | instapaper: 'Migrar desde Instapaper' | ||
297 | developer: | 298 | developer: |
298 | title: 'Promotores' | 299 | title: 'Promotores' |
300 | # description: 'We also thought to the developers: Docker, API, translations, etc.' | ||
299 | create_application: 'Cree su tercera aplicación' | 301 | create_application: 'Cree su tercera aplicación' |
302 | # use_docker: 'Use Docker to install wallabag' | ||
300 | docs: | 303 | docs: |
301 | title: 'Documentación completa' | 304 | title: 'Documentación completa' |
305 | # description: "There are so much features in wallabag. Don't hesitate to read the manual to know them and to learn how to use them." | ||
302 | annotate: 'Anote su artículo' | 306 | annotate: 'Anote su artículo' |
303 | export: 'Convierta sus artículos a ePub o a PDF' | 307 | export: 'Convierta sus artículos a ePub o a PDF' |
304 | search_filters: 'Aprenda a utilizar el buscador y los filtros para encontrar el artículo que le interese' | 308 | search_filters: 'Aprenda a utilizar el buscador y los filtros para encontrar el artículo que le interese' |
@@ -345,18 +349,22 @@ import: | |||
345 | description: 'Va a importar sus artículos de otra instancia de wallabag v2. Vaya a Todos los artículos, entonces, en la barra lateral, oprima en "JSON". Usted tendrá un fichero "All articles.json"' | 349 | description: 'Va a importar sus artículos de otra instancia de wallabag v2. Vaya a Todos los artículos, entonces, en la barra lateral, oprima en "JSON". Usted tendrá un fichero "All articles.json"' |
346 | readability: | 350 | readability: |
347 | page_title: 'Importar > Readability' | 351 | page_title: 'Importar > Readability' |
348 | # description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).' | 352 | # description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).' |
349 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' | 353 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' |
350 | worker: | 354 | worker: |
351 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | 355 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" |
352 | # firefox: | 356 | firefox: |
353 | # page_title: 'Import > Firefox' | 357 | page_title: 'Importar > Firefox' |
354 | # description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | 358 | # description: "This importer will import all your Firefox bookmarks. Just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." |
355 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." |
356 | # chrome: | 360 | chrome: |
357 | # page_title: 'Import > Chrome' | 361 | page_title: 'Importar > Chrome' |
358 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | 362 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" |
359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 363 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." |
364 | instapaper: | ||
365 | page_title: 'Importar > Instapaper' | ||
366 | # description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
367 | # how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
360 | 368 | ||
361 | developer: | 369 | developer: |
362 | page_title: 'Promotor' | 370 | page_title: 'Promotor' |
@@ -383,12 +391,14 @@ developer: | |||
383 | page_title: 'Promotor > Nuevo cliente' | 391 | page_title: 'Promotor > Nuevo cliente' |
384 | page_description: 'Va a crear un nuevo cliente. Por favor, llene el campo abajo para URI redirigido de su aplicación.' | 392 | page_description: 'Va a crear un nuevo cliente. Por favor, llene el campo abajo para URI redirigido de su aplicación.' |
385 | form: | 393 | form: |
394 | # name_label: 'Name of the client' | ||
386 | redirect_uris_label: 'los URI redirigidos' | 395 | redirect_uris_label: 'los URI redirigidos' |
387 | save_label: 'Crear un nuevo cliente' | 396 | save_label: 'Crear un nuevo cliente' |
388 | action_back: 'Atrás' | 397 | action_back: 'Atrás' |
389 | client_parameter: | 398 | client_parameter: |
390 | page_title: 'Promotor > Parámetros del cliente' | 399 | page_title: 'Promotor > Parámetros del cliente' |
391 | page_description: 'Aquí hay sus parámetros del cliente.' | 400 | page_description: 'Aquí hay sus parámetros del cliente.' |
401 | # field_name: 'Client name' | ||
392 | field_id: 'Identificación del cliente' | 402 | field_id: 'Identificación del cliente' |
393 | field_secret: 'Cliente secreto' | 403 | field_secret: 'Cliente secreto' |
394 | back: 'Atrás' | 404 | back: 'Atrás' |
@@ -406,6 +416,33 @@ developer: | |||
406 | paragraph_8: 'Si quiere ver todos los fines de API, se puede ver <a href="%link%">a nuestra documentación API</a>.' | 416 | paragraph_8: 'Si quiere ver todos los fines de API, se puede ver <a href="%link%">a nuestra documentación API</a>.' |
407 | back: 'Atrás' | 417 | back: 'Atrás' |
408 | 418 | ||
419 | user: | ||
420 | # page_title: Users management | ||
421 | # new_user: Create a new user | ||
422 | # edit_user: Edit an existing user | ||
423 | # description: "Here you can manage all users (create, edit and delete)" | ||
424 | # list: | ||
425 | # actions: Actions | ||
426 | # edit_action: Edit | ||
427 | # yes: Yes | ||
428 | # no: No | ||
429 | # create_new_one: Create a new user | ||
430 | form: | ||
431 | username_label: 'Nombre de usuario' | ||
432 | # name_label: 'Name' | ||
433 | password_label: 'Contraseña' | ||
434 | repeat_new_password_label: 'Confirmar la nueva contraseña' | ||
435 | plain_password_label: '????' | ||
436 | email_label: 'Email' | ||
437 | # enabled_label: 'Enabled' | ||
438 | # locked_label: 'Locked' | ||
439 | # last_login_label: 'Last login' | ||
440 | # twofactor_label: Two factor authentication | ||
441 | # save: Save | ||
442 | # delete: Delete | ||
443 | # delete_confirm: Are you sure? | ||
444 | # back_to_list: Back to list | ||
445 | |||
409 | flashes: | 446 | flashes: |
410 | config: | 447 | config: |
411 | notice: | 448 | notice: |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml index 68272f99..b02ffea0 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml | |||
@@ -31,6 +31,7 @@ menu: | |||
31 | search: 'جستجو' | 31 | search: 'جستجو' |
32 | save_link: 'ذخیرهٔ یک پیوند' | 32 | save_link: 'ذخیرهٔ یک پیوند' |
33 | back_to_unread: 'بازگشت به خواندهنشدهها' | 33 | back_to_unread: 'بازگشت به خواندهنشدهها' |
34 | # users_management: 'Users management' | ||
34 | top: | 35 | top: |
35 | add_new_entry: 'افزودن مقالهٔ تازه' | 36 | add_new_entry: 'افزودن مقالهٔ تازه' |
36 | search: 'جستجو' | 37 | search: 'جستجو' |
@@ -45,6 +46,7 @@ footer: | |||
45 | social: 'شبکههای اجتماعی' | 46 | social: 'شبکههای اجتماعی' |
46 | powered_by: 'توانمند با' | 47 | powered_by: 'توانمند با' |
47 | about: 'درباره' | 48 | about: 'درباره' |
49 | # stats: Since %user_creation% you read %nb_archives% articles. That is about %per_day% a day! | ||
48 | 50 | ||
49 | config: | 51 | config: |
50 | page_title: 'پیکربندی' | 52 | page_title: 'پیکربندی' |
@@ -94,6 +96,7 @@ config: | |||
94 | if_label: 'اگر' | 96 | if_label: 'اگر' |
95 | then_tag_as_label: 'این برچسب را بزن' | 97 | then_tag_as_label: 'این برچسب را بزن' |
96 | delete_rule_label: 'پاک کن' | 98 | delete_rule_label: 'پاک کن' |
99 | # edit_rule_label: 'edit' | ||
97 | rule_label: 'قانون' | 100 | rule_label: 'قانون' |
98 | tags_label: 'برچسبها' | 101 | tags_label: 'برچسبها' |
99 | faq: | 102 | faq: |
@@ -127,12 +130,6 @@ config: | |||
127 | # or: 'One rule OR another' | 130 | # or: 'One rule OR another' |
128 | # and: 'One rule AND another' | 131 | # and: 'One rule AND another' |
129 | # matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>' | 132 | # matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>' |
130 | form_new_user: | ||
131 | username_label: 'نام کاربری' | ||
132 | password_label: 'رمز' | ||
133 | repeat_new_password_label: 'رمز تازه را دوباره بنویسید' | ||
134 | plain_password_label: '????' | ||
135 | email_label: 'نشانی ایمیل' | ||
136 | 133 | ||
137 | entry: | 134 | entry: |
138 | page_titles: | 135 | page_titles: |
@@ -266,6 +263,7 @@ howto: | |||
266 | 263 | ||
267 | quickstart: | 264 | quickstart: |
268 | page_title: 'Quickstart' | 265 | page_title: 'Quickstart' |
266 | # more: 'More…' | ||
269 | intro: | 267 | intro: |
270 | title: 'به wallabag خوش آمدید!!' | 268 | title: 'به wallabag خوش آمدید!!' |
271 | paragraph_1: "به شما کمک خواهیم کرد تا wallabag را بشناسید و با برخی از ویژگیهای جالبش آشنا شوید" | 269 | paragraph_1: "به شما کمک خواهیم کرد تا wallabag را بشناسید و با برخی از ویژگیهای جالبش آشنا شوید" |
@@ -285,6 +283,7 @@ quickstart: | |||
285 | import: 'درونریزی را تنظیم کنید' | 283 | import: 'درونریزی را تنظیم کنید' |
286 | first_steps: | 284 | first_steps: |
287 | title: 'گام نخست' | 285 | title: 'گام نخست' |
286 | # description: "Now wallabag is well configured, it's time to archive the web. You can click on the top right sign + to add a link." | ||
288 | new_article: 'نخستین مقالهٔ خود را ذخیره کنید' | 287 | new_article: 'نخستین مقالهٔ خود را ذخیره کنید' |
289 | unread_articles: 'و آن را طبقهبندی کنید!' | 288 | unread_articles: 'و آن را طبقهبندی کنید!' |
290 | migrate: | 289 | migrate: |
@@ -294,11 +293,15 @@ quickstart: | |||
294 | wallabag_v1: 'مهاجرت از نسخهٔ یکم wallabag' | 293 | wallabag_v1: 'مهاجرت از نسخهٔ یکم wallabag' |
295 | wallabag_v2: 'مهاجرت از نسخهٔ دوم wallabag' | 294 | wallabag_v2: 'مهاجرت از نسخهٔ دوم wallabag' |
296 | readability: 'مهاجرت از نسخهٔ دوم Readability' | 295 | readability: 'مهاجرت از نسخهٔ دوم Readability' |
296 | instapaper: 'مهاجرت از نسخهٔ دوم Instapaper' | ||
297 | developer: | 297 | developer: |
298 | title: 'برنامهنویسان' | 298 | title: 'برنامهنویسان' |
299 | # description: 'We also thought to the developers: Docker, API, translations, etc.' | ||
299 | create_application: 'برنامهٔ wallabag خود را بسازید' | 300 | create_application: 'برنامهٔ wallabag خود را بسازید' |
301 | # use_docker: 'Use Docker to install wallabag' | ||
300 | docs: | 302 | docs: |
301 | title: 'راهنمای کامل' | 303 | title: 'راهنمای کامل' |
304 | # description: "There are so much features in wallabag. Don't hesitate to read the manual to know them and to learn how to use them." | ||
302 | annotate: 'روی مقالههایتان یادداشت بگذارید' | 305 | annotate: 'روی مقالههایتان یادداشت بگذارید' |
303 | export: 'مقالههایتان را به قالب ePUB یا PDF دربیاورید' | 306 | export: 'مقالههایتان را به قالب ePUB یا PDF دربیاورید' |
304 | search_filters: 'به کمک موتور جستجو و فیلترها به دنبال مقالههایتان بگردید' | 307 | search_filters: 'به کمک موتور جستجو و فیلترها به دنبال مقالههایتان بگردید' |
@@ -349,14 +352,18 @@ import: | |||
349 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' | 352 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' |
350 | worker: | 353 | worker: |
351 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | 354 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" |
352 | # firefox: | 355 | firefox: |
353 | # page_title: 'Import > Firefox' | 356 | page_title: 'درونریزی > Firefox' |
354 | # description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | 357 | # description: "This importer will import all your Firefox bookmarks. Just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." |
355 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 358 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." |
356 | # chrome: | 359 | chrome: |
357 | # page_title: 'Import > Chrome' | 360 | page_title: 'درونریزی > Chrome' |
358 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | 361 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" |
359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 362 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." |
363 | instapaper: | ||
364 | page_title: 'درونریزی > Instapaper' | ||
365 | # description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
366 | # how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
360 | 367 | ||
361 | developer: | 368 | developer: |
362 | # page_title: 'Developer' | 369 | # page_title: 'Developer' |
@@ -383,12 +390,14 @@ developer: | |||
383 | # page_title: 'Developer > New client' | 390 | # page_title: 'Developer > New client' |
384 | # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.' | 391 | # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.' |
385 | # form: | 392 | # form: |
393 | # name_label: 'Name of the client' | ||
386 | # redirect_uris_label: 'Redirect URIs' | 394 | # redirect_uris_label: 'Redirect URIs' |
387 | # save_label: 'Create a new client' | 395 | # save_label: 'Create a new client' |
388 | # action_back: 'بازگشت' | 396 | # action_back: 'بازگشت' |
389 | # client_parameter: | 397 | # client_parameter: |
390 | # page_title: 'Developer > Client parameters' | 398 | # page_title: 'Developer > Client parameters' |
391 | # page_description: 'Here are your client parameters.' | 399 | # page_description: 'Here are your client parameters.' |
400 | # field_name: 'Client name' | ||
392 | # field_id: 'Client ID' | 401 | # field_id: 'Client ID' |
393 | # field_secret: 'Client secret' | 402 | # field_secret: 'Client secret' |
394 | # back: 'بازگشت' | 403 | # back: 'بازگشت' |
@@ -406,6 +415,33 @@ developer: | |||
406 | # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.' | 415 | # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.' |
407 | # back: 'بازگشت' | 416 | # back: 'بازگشت' |
408 | 417 | ||
418 | user: | ||
419 | # page_title: Users management | ||
420 | # new_user: Create a new user | ||
421 | # edit_user: Edit an existing user | ||
422 | # description: "Here you can manage all users (create, edit and delete)" | ||
423 | # list: | ||
424 | # actions: Actions | ||
425 | # edit_action: Edit | ||
426 | # yes: Yes | ||
427 | # no: No | ||
428 | # create_new_one: Create a new user | ||
429 | form: | ||
430 | username_label: 'نام کاربری' | ||
431 | # name_label: 'Name' | ||
432 | password_label: 'رمز' | ||
433 | repeat_new_password_label: 'رمز تازه را دوباره بنویسید' | ||
434 | plain_password_label: '????' | ||
435 | email_label: 'نشانی ایمیل' | ||
436 | # enabled_label: 'Enabled' | ||
437 | # locked_label: 'Locked' | ||
438 | # last_login_label: 'Last login' | ||
439 | # twofactor_label: Two factor authentication | ||
440 | # save: Save | ||
441 | # delete: Delete | ||
442 | # delete_confirm: Are you sure? | ||
443 | # back_to_list: Back to list | ||
444 | |||
409 | flashes: | 445 | flashes: |
410 | config: | 446 | config: |
411 | notice: | 447 | notice: |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml index b28068b6..598205b0 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml | |||
@@ -31,6 +31,7 @@ menu: | |||
31 | search: 'Recherche' | 31 | search: 'Recherche' |
32 | save_link: 'Sauvegarder un nouvel article' | 32 | save_link: 'Sauvegarder un nouvel article' |
33 | back_to_unread: 'Retour aux articles non lus' | 33 | back_to_unread: 'Retour aux articles non lus' |
34 | users_management: 'Gestion des utilisateurs' | ||
34 | top: | 35 | top: |
35 | add_new_entry: 'Sauvegarder un nouvel article' | 36 | add_new_entry: 'Sauvegarder un nouvel article' |
36 | search: 'Rechercher' | 37 | search: 'Rechercher' |
@@ -45,9 +46,10 @@ footer: | |||
45 | social: 'Social' | 46 | social: 'Social' |
46 | powered_by: 'propulsé par' | 47 | powered_by: 'propulsé par' |
47 | about: 'À propos' | 48 | about: 'À propos' |
48 | page_title: 'Configuration' | 49 | stats: Depuis le %user_creation% vous avez lu %nb_archives% articles. Ce qui fait %per_day% par jour ! |
49 | 50 | ||
50 | config: | 51 | config: |
52 | page_title: 'Configuration' | ||
51 | tab_menu: | 53 | tab_menu: |
52 | settings: 'Paramètres' | 54 | settings: 'Paramètres' |
53 | rss: 'RSS' | 55 | rss: 'RSS' |
@@ -94,6 +96,7 @@ config: | |||
94 | if_label: 'si' | 96 | if_label: 'si' |
95 | then_tag_as_label: 'alors attribuer les tags' | 97 | then_tag_as_label: 'alors attribuer les tags' |
96 | delete_rule_label: 'supprimer' | 98 | delete_rule_label: 'supprimer' |
99 | edit_rule_label: 'éditer' | ||
97 | rule_label: 'Règle' | 100 | rule_label: 'Règle' |
98 | tags_label: 'Tags' | 101 | tags_label: 'Tags' |
99 | faq: | 102 | faq: |
@@ -127,12 +130,6 @@ config: | |||
127 | or: "Une règle OU l'autre" | 130 | or: "Une règle OU l'autre" |
128 | and: "Une règle ET l'autre" | 131 | and: "Une règle ET l'autre" |
129 | matches: 'Teste si un <i>sujet</i> correspond à une <i>recherche</i> (non sensible à la casse).<br />Exemple : <code>title matches "football"</code>' | 132 | matches: 'Teste si un <i>sujet</i> correspond à une <i>recherche</i> (non sensible à la casse).<br />Exemple : <code>title matches "football"</code>' |
130 | form_new_user: | ||
131 | username_label: "Nom d'utilisateur" | ||
132 | password_label: 'Mot de passe' | ||
133 | repeat_new_password_label: 'Confirmez votre nouveau mot de passe' | ||
134 | plain_password_label: 'Mot de passe en clair' | ||
135 | email_label: 'Adresse e-mail' | ||
136 | 133 | ||
137 | entry: | 134 | entry: |
138 | page_titles: | 135 | page_titles: |
@@ -266,12 +263,14 @@ howto: | |||
266 | 263 | ||
267 | quickstart: | 264 | quickstart: |
268 | page_title: 'Pour bien débuter' | 265 | page_title: 'Pour bien débuter' |
266 | more: 'Et plus encore…' | ||
269 | intro: | 267 | intro: |
270 | title: 'Bienvenue sur wallabag !' | 268 | title: 'Bienvenue sur wallabag !' |
271 | paragraph_1: "Nous allons vous accompagner pour vous faire faire le tour de la maison et vous présenter quelques fonctionnalités qui pourraient vous intéresser pour vous approprier cet outil." | 269 | paragraph_1: "Nous allons vous accompagner pour vous faire faire le tour de la maison et vous présenter quelques fonctionnalités qui pourraient vous intéresser pour vous approprier cet outil." |
272 | paragraph_2: 'Suivez-nous !' | 270 | paragraph_2: 'Suivez-nous !' |
273 | configure: | 271 | configure: |
274 | title: "Configurez l'application" | 272 | title: "Configurez l'application" |
273 | description: 'Pour voir une application qui vous correspond, allez voir du côté de la configuration de wallabag.' | ||
275 | language: "Changez la langue et le design de l'application" | 274 | language: "Changez la langue et le design de l'application" |
276 | rss: 'Activez les flux RSS' | 275 | rss: 'Activez les flux RSS' |
277 | tagging_rules: 'Écrivez des règles pour classer automatiquement vos articles' | 276 | tagging_rules: 'Écrivez des règles pour classer automatiquement vos articles' |
@@ -285,6 +284,7 @@ quickstart: | |||
285 | import: "Configurer l'import" | 284 | import: "Configurer l'import" |
286 | first_steps: | 285 | first_steps: |
287 | title: 'Premiers pas' | 286 | title: 'Premiers pas' |
287 | description: "Maintenant que wallabag est bien configuré, il est temps d'archiver le web. Vous pouvez cliquer sur le signe + dans le coin en haut à droite." | ||
288 | new_article: 'Ajoutez votre premier article' | 288 | new_article: 'Ajoutez votre premier article' |
289 | unread_articles: 'Et rangez-le !' | 289 | unread_articles: 'Et rangez-le !' |
290 | migrate: | 290 | migrate: |
@@ -294,11 +294,15 @@ quickstart: | |||
294 | wallabag_v1: 'Migrer depuis wallabag v1' | 294 | wallabag_v1: 'Migrer depuis wallabag v1' |
295 | wallabag_v2: 'Migrer depuis wallabag v2' | 295 | wallabag_v2: 'Migrer depuis wallabag v2' |
296 | readability: 'Migrer depuis Readability' | 296 | readability: 'Migrer depuis Readability' |
297 | instapaper: 'Migrer depuis Instapaper' | ||
297 | developer: | 298 | developer: |
298 | title: 'Pour les développeurs' | 299 | title: 'Pour les développeurs' |
300 | description: 'Nous avons aussi pensé aux développeurs : Docker, API, traductions, etc.' | ||
299 | create_application: 'Créer votre application tierce' | 301 | create_application: 'Créer votre application tierce' |
302 | use_docker: 'Utiliser Docker pour installer wallabag' | ||
300 | docs: | 303 | docs: |
301 | title: 'Documentation complète' | 304 | title: 'Documentation complète' |
305 | description: "Il y a tellement de fonctionnalités dans wallabag. N'hésitez pas à lire le manuel pour les connaitre et apprendre comment les utiliser." | ||
302 | annotate: 'Annoter votre article' | 306 | annotate: 'Annoter votre article' |
303 | export: 'Convertissez vos articles en ePub ou en PDF' | 307 | export: 'Convertissez vos articles en ePub ou en PDF' |
304 | search_filters: "Apprenez à utiliser le moteur de recherche et les filtres pour retrouver l'article qui vous intéresse" | 308 | search_filters: "Apprenez à utiliser le moteur de recherche et les filtres pour retrouver l'article qui vous intéresse" |
@@ -351,12 +355,16 @@ import: | |||
351 | enabled: "Les imports sont asynchrones. Une fois l'import commencé un worker externe traitera les messages un par un. Le service activé est :" | 355 | enabled: "Les imports sont asynchrones. Une fois l'import commencé un worker externe traitera les messages un par un. Le service activé est :" |
352 | firefox: | 356 | firefox: |
353 | page_title: 'Import > Firefox' | 357 | page_title: 'Import > Firefox' |
354 | description: "Cet outil va vous permettre d'importer tous vos marques-pages de Firefox. <p>Pour Firefox, ouvrez le panneau des marques-pages (Ctrl+Maj+O), puis dans « Importation et sauvegarde », choisissez « Sauvegarde... ». Vous allez récupérer un fichier .json. </p>" | 358 | description: "Cet outil va vous permettre d'importer tous vos marques-pages de Firefox. Ouvrez le panneau des marques-pages (Ctrl+Maj+O), puis dans « Importation et sauvegarde », choisissez « Sauvegarde... ». Vous allez récupérer un fichier .json. </p>" |
355 | how_to: "Choisissez le fichier de sauvegarde de vos marques-page et cliquez sur le bouton pour l'importer. Soyez avertis que le processus peut prendre un temps assez long car tous les articles doivent être récupérés en ligne." | 359 | how_to: "Choisissez le fichier de sauvegarde de vos marques-page et cliquez sur le bouton pour l'importer. Soyez avertis que le processus peut prendre un temps assez long car tous les articles doivent être récupérés en ligne." |
356 | chrome: | 360 | chrome: |
357 | page_title: 'Import > Chrome' | 361 | page_title: 'Import > Chrome' |
358 | description: "Cet outil va vous permettre d'importer tous vos marques-pages de Google Chrome/Chromium. Pour Google Chrome, la situation du fichier dépend de votre système d'exploitation : <ul><li>Sur GNU/Linux, allez dans le répertoire <code>~/.config/google-chrome/Default/</code></li><li>Sous Windows, il devrait se trouver à <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>Sur OS X, il devrait se trouver dans le fichier <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Une fois que vous y êtes, copiez le fichier Bookmarks à un endroit où vous le retrouverez.<em><br>Notez que si vous utilisez Chromium à la place de Chrome, vous devez corriger les chemins en conséquence.</em></p>" | 362 | description: "Cet outil va vous permettre d'importer tous vos marques-pages de Google Chrome/Chromium. Pour Google Chrome, la situation du fichier dépend de votre système d'exploitation : <ul><li>Sur GNU/Linux, allez dans le répertoire <code>~/.config/google-chrome/Default/</code></li><li>Sous Windows, il devrait se trouver à <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>Sur OS X, il devrait se trouver dans le fichier <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Une fois que vous y êtes, copiez le fichier Bookmarks à un endroit où vous le retrouverez.<em><br>Notez que si vous utilisez Chromium à la place de Chrome, vous devez corriger les chemins en conséquence.</em></p>" |
359 | how_to: "Choisissez le fichier de sauvegarde de vos marques-page et cliquez sur le bouton pour l'importer. Soyez avertis que le processus peut prendre un temps assez long car tous les articles doivent être récupérés en ligne." | 363 | how_to: "Choisissez le fichier de sauvegarde de vos marques-page et cliquez sur le bouton pour l'importer. Soyez avertis que le processus peut prendre un temps assez long car tous les articles doivent être récupérés en ligne." |
364 | instapaper: | ||
365 | page_title: 'Import > Instapaper' | ||
366 | description: 'Sur la page des paramètres (`https://www.instapaper.com/user<https://www.instapaper.com/user>`_), cliquez sur "Download .CSV file" dans la section "Export". Un fichier CSV se téléchargera ("instapaper-export.csv").' | ||
367 | how_to: "Choisissez le fichier de votre export Instapaper et cliquez sur le bouton ci-dessous pour l'importer." | ||
360 | 368 | ||
361 | developer: | 369 | developer: |
362 | page_title: 'Développeur' | 370 | page_title: 'Développeur' |
@@ -408,6 +416,33 @@ developer: | |||
408 | paragraph_8: "Si vous voulez toutes les méthodes de l'API, jetez un oeil <a href=\"%link%\">à la documentation de l'API</a>." | 416 | paragraph_8: "Si vous voulez toutes les méthodes de l'API, jetez un oeil <a href=\"%link%\">à la documentation de l'API</a>." |
409 | back: 'Retour' | 417 | back: 'Retour' |
410 | 418 | ||
419 | user: | ||
420 | page_title: Gestion des utilisateurs | ||
421 | new_user: Créer un nouvel utilisateur | ||
422 | edit_user: Éditer un utilisateur existant | ||
423 | description: Ici vous pouvez gérer vos utilisateurs (création, mise à jour et suppression) | ||
424 | list: | ||
425 | actions: Actions | ||
426 | edit_action: Éditer | ||
427 | yes: Oui | ||
428 | no: Non | ||
429 | create_new_one: Créer un nouvel utilisateur | ||
430 | form: | ||
431 | username_label: "Nom d'utilisateur" | ||
432 | name_label: 'Nom' | ||
433 | password_label: 'Mot de passe' | ||
434 | repeat_new_password_label: 'Confirmez votre nouveau mot de passe' | ||
435 | plain_password_label: 'Mot de passe en clair' | ||
436 | email_label: 'Adresse e-mail' | ||
437 | enabled_label: 'Activé' | ||
438 | locked_label: 'Bloqué' | ||
439 | last_login_label: 'Dernière connexion' | ||
440 | twofactor_label: Double authentification | ||
441 | save: Sauvegarder | ||
442 | delete: Supprimer | ||
443 | delete_confirm: Êtes-vous sûr? | ||
444 | back_to_list: Revenir à la liste | ||
445 | |||
411 | flashes: | 446 | flashes: |
412 | config: | 447 | config: |
413 | notice: | 448 | notice: |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml index bd98c8c0..c58c929f 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml | |||
@@ -31,6 +31,7 @@ menu: | |||
31 | search: 'Cerca' | 31 | search: 'Cerca' |
32 | save_link: 'Salva collegamento' | 32 | save_link: 'Salva collegamento' |
33 | back_to_unread: 'Torna ai contenuti non letti' | 33 | back_to_unread: 'Torna ai contenuti non letti' |
34 | # users_management: 'Users management' | ||
34 | top: | 35 | top: |
35 | add_new_entry: 'Aggiungi un nuovo contenuto' | 36 | add_new_entry: 'Aggiungi un nuovo contenuto' |
36 | search: 'Cerca' | 37 | search: 'Cerca' |
@@ -45,6 +46,7 @@ footer: | |||
45 | social: 'Social' | 46 | social: 'Social' |
46 | powered_by: 'powered by' | 47 | powered_by: 'powered by' |
47 | about: 'About' | 48 | about: 'About' |
49 | # stats: Since %user_creation% you read %nb_archives% articles. That is about %per_day% a day! | ||
48 | 50 | ||
49 | config: | 51 | config: |
50 | page_title: 'Configurazione' | 52 | page_title: 'Configurazione' |
@@ -94,6 +96,7 @@ config: | |||
94 | if_label: 'se' | 96 | if_label: 'se' |
95 | then_tag_as_label: 'allora tagga come' | 97 | then_tag_as_label: 'allora tagga come' |
96 | delete_rule_label: 'elimina' | 98 | delete_rule_label: 'elimina' |
99 | # edit_rule_label: 'edit' | ||
97 | rule_label: 'Regola' | 100 | rule_label: 'Regola' |
98 | tags_label: 'Tag' | 101 | tags_label: 'Tag' |
99 | faq: | 102 | faq: |
@@ -127,12 +130,6 @@ config: | |||
127 | or: "Una regola O un'altra" | 130 | or: "Una regola O un'altra" |
128 | and: "Una regola E un'altra" | 131 | and: "Una regola E un'altra" |
129 | matches: 'Verifica che un <i>oggetto</i> risulti in una <i>ricerca</i> (case-insensitive).<br />Esempio: <code>titolo contiene "football"</code>' | 132 | matches: 'Verifica che un <i>oggetto</i> risulti in una <i>ricerca</i> (case-insensitive).<br />Esempio: <code>titolo contiene "football"</code>' |
130 | form_new_user: | ||
131 | username_label: 'Username' | ||
132 | password_label: 'Password' | ||
133 | repeat_new_password_label: 'Ripeti password' | ||
134 | plain_password_label: '????' | ||
135 | email_label: 'E-mail' | ||
136 | 133 | ||
137 | entry: | 134 | entry: |
138 | page_titles: | 135 | page_titles: |
@@ -160,6 +157,7 @@ entry: | |||
160 | status_label: 'Stato' | 157 | status_label: 'Stato' |
161 | archived_label: 'Archiviati' | 158 | archived_label: 'Archiviati' |
162 | starred_label: 'Preferiti' | 159 | starred_label: 'Preferiti' |
160 | # unread_label: 'Unread' | ||
163 | preview_picture_label: "Ha un'immagine di anteprima" | 161 | preview_picture_label: "Ha un'immagine di anteprima" |
164 | preview_picture_help: 'Immagine di anteprima' | 162 | preview_picture_help: 'Immagine di anteprima' |
165 | language_label: 'Lingua' | 163 | language_label: 'Lingua' |
@@ -265,12 +263,14 @@ howto: | |||
265 | 263 | ||
266 | quickstart: | 264 | quickstart: |
267 | page_title: 'Introduzione' | 265 | page_title: 'Introduzione' |
266 | # more: 'More…' | ||
268 | intro: | 267 | intro: |
269 | title: 'Benvenuto su wallabag!' | 268 | title: 'Benvenuto su wallabag!' |
270 | paragraph_1: "Un tour in cui ti guideremo per scoprire e che ti mostrerà delle funzionalità che potrebbero interessarti." | 269 | paragraph_1: "Un tour in cui ti guideremo per scoprire e che ti mostrerà delle funzionalità che potrebbero interessarti." |
271 | paragraph_2: 'Seguici!' | 270 | paragraph_2: 'Seguici!' |
272 | configure: | 271 | configure: |
273 | title: "Configura l'applicazione" | 272 | title: "Configura l'applicazione" |
273 | # description: 'In order to have an application which suits you, have a look into the configuration of wallabag.' | ||
274 | language: 'Cambia lingua e design' | 274 | language: 'Cambia lingua e design' |
275 | rss: 'Abilita i feed RSS' | 275 | rss: 'Abilita i feed RSS' |
276 | tagging_rules: 'Scrivi delle regole per taggare automaticamente i contenuti' | 276 | tagging_rules: 'Scrivi delle regole per taggare automaticamente i contenuti' |
@@ -284,6 +284,7 @@ quickstart: | |||
284 | import: "Configura l'importazione" | 284 | import: "Configura l'importazione" |
285 | first_steps: | 285 | first_steps: |
286 | title: 'Pimi passi' | 286 | title: 'Pimi passi' |
287 | # description: "Now wallabag is well configured, it's time to archive the web. You can click on the top right sign + to add a link." | ||
287 | new_article: 'Salva il tuo primo contenuto' | 288 | new_article: 'Salva il tuo primo contenuto' |
288 | unread_articles: 'E classificalo!' | 289 | unread_articles: 'E classificalo!' |
289 | migrate: | 290 | migrate: |
@@ -293,11 +294,15 @@ quickstart: | |||
293 | wallabag_v1: 'Trasferisci da wallabag v1' | 294 | wallabag_v1: 'Trasferisci da wallabag v1' |
294 | wallabag_v2: 'Trasferisci da wallabag v2' | 295 | wallabag_v2: 'Trasferisci da wallabag v2' |
295 | readability: 'Trasferisci da Readability' | 296 | readability: 'Trasferisci da Readability' |
297 | instapaper: 'Trasferisci da Instapaper' | ||
296 | developer: | 298 | developer: |
297 | title: 'Sviluppatori' | 299 | title: 'Sviluppatori' |
300 | # description: 'We also thought to the developers: Docker, API, translations, etc.' | ||
298 | create_application: 'Crea la tua applicazione' | 301 | create_application: 'Crea la tua applicazione' |
302 | # use_docker: 'Use Docker to install wallabag' | ||
299 | docs: | 303 | docs: |
300 | title: 'Documentazione completa' | 304 | title: 'Documentazione completa' |
305 | # description: "There are so much features in wallabag. Don't hesitate to read the manual to know them and to learn how to use them." | ||
301 | annotate: 'Annota il tuo contenuto' | 306 | annotate: 'Annota il tuo contenuto' |
302 | export: 'Converti i tuoi contenuti in EPUB o PDF' | 307 | export: 'Converti i tuoi contenuti in EPUB o PDF' |
303 | search_filters: 'Impara come puoi recuperare un contenuto tramite la ricerca e i filtri' | 308 | search_filters: 'Impara come puoi recuperare un contenuto tramite la ricerca e i filtri' |
@@ -348,14 +353,18 @@ import: | |||
348 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' | 353 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' |
349 | worker: | 354 | worker: |
350 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | 355 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" |
351 | # firefox: | 356 | firefox: |
352 | # page_title: 'Import > Firefox' | 357 | page_title: 'Importa da > Firefox' |
353 | # description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | 358 | # description: "This importer will import all your Firefox bookmarks. Just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." |
354 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." |
355 | # chrome: | 360 | chrome: |
356 | # page_title: 'Import > Chrome' | 361 | page_title: 'Importa da > Chrome' |
357 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | 362 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" |
358 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 363 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." |
364 | instapaper: | ||
365 | page_title: 'Importa da > Instapaper' | ||
366 | # description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
367 | # how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
359 | 368 | ||
360 | developer: | 369 | developer: |
361 | page_title: 'Sviluppatori' | 370 | page_title: 'Sviluppatori' |
@@ -382,12 +391,14 @@ developer: | |||
382 | page_title: 'Sviluppatori > Nuovo client' | 391 | page_title: 'Sviluppatori > Nuovo client' |
383 | page_description: 'Stai per creare un nuovo client. Compila i campi sottostanti per il redirect URI della tua applicazione.' | 392 | page_description: 'Stai per creare un nuovo client. Compila i campi sottostanti per il redirect URI della tua applicazione.' |
384 | form: | 393 | form: |
394 | # name_label: 'Name of the client' | ||
385 | redirect_uris_label: 'Redirect URI' | 395 | redirect_uris_label: 'Redirect URI' |
386 | save_label: 'Crea un nuovo client' | 396 | save_label: 'Crea un nuovo client' |
387 | action_back: 'Indietro' | 397 | action_back: 'Indietro' |
388 | client_parameter: | 398 | client_parameter: |
389 | page_title: 'Sviluppatori > parametri Client' | 399 | page_title: 'Sviluppatori > parametri Client' |
390 | page_description: 'Questi sono i tuoi parametri del client.' | 400 | page_description: 'Questi sono i tuoi parametri del client.' |
401 | # field_name: 'Client name' | ||
391 | field_id: 'Client ID' | 402 | field_id: 'Client ID' |
392 | field_secret: 'Client secret' | 403 | field_secret: 'Client secret' |
393 | back: 'Indietro' | 404 | back: 'Indietro' |
@@ -405,6 +416,33 @@ developer: | |||
405 | paragraph_8: 'Se vuoi visualizzare tutti gli API endpoints, dai una occhiata alla <a href="%link%">documentazione delle API</a>.' | 416 | paragraph_8: 'Se vuoi visualizzare tutti gli API endpoints, dai una occhiata alla <a href="%link%">documentazione delle API</a>.' |
406 | back: 'Indietro' | 417 | back: 'Indietro' |
407 | 418 | ||
419 | user: | ||
420 | # page_title: Users management | ||
421 | # new_user: Create a new user | ||
422 | # edit_user: Edit an existing user | ||
423 | # description: "Here you can manage all users (create, edit and delete)" | ||
424 | # list: | ||
425 | # actions: Actions | ||
426 | # edit_action: Edit | ||
427 | # yes: Yes | ||
428 | # no: No | ||
429 | # create_new_one: Create a new user | ||
430 | form: | ||
431 | username_label: 'Username' | ||
432 | # name_label: 'Name' | ||
433 | password_label: 'Password' | ||
434 | repeat_new_password_label: 'Ripeti password' | ||
435 | plain_password_label: '????' | ||
436 | email_label: 'E-mail' | ||
437 | # enabled_label: 'Enabled' | ||
438 | # locked_label: 'Locked' | ||
439 | # last_login_label: 'Last login' | ||
440 | # twofactor_label: Two factor authentication | ||
441 | # save: Save | ||
442 | # delete: Delete | ||
443 | # delete_confirm: Are you sure? | ||
444 | # back_to_list: Back to list | ||
445 | |||
408 | flashes: | 446 | flashes: |
409 | config: | 447 | config: |
410 | notice: | 448 | notice: |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml index 6da9ff18..8f06434d 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml | |||
@@ -19,18 +19,19 @@ menu: | |||
19 | unread: 'Pas legits' | 19 | unread: 'Pas legits' |
20 | starred: 'Favorits' | 20 | starred: 'Favorits' |
21 | archive: 'Legits' | 21 | archive: 'Legits' |
22 | all_articles: 'Tots los articles' | 22 | all_articles: 'Totes los articles' |
23 | config: 'Configuracion' | 23 | config: 'Configuracion' |
24 | tags: 'Etiquetas' | 24 | tags: 'Etiquetas' |
25 | internal_settings: 'Configuracion interna' | 25 | internal_settings: 'Configuracion interna' |
26 | import: 'Importar' | 26 | import: 'Importar' |
27 | howto: 'Ajuda' | 27 | howto: 'Ajuda' |
28 | developer: 'Desvolopador' | 28 | developer: 'Desvolopador' |
29 | logout: 'Déconnexion' | 29 | logout: 'Desconnexion' |
30 | about: 'A prepaus' | 30 | about: 'A prepaus' |
31 | search: 'Cercar' | 31 | search: 'Cercar' |
32 | save_link: 'Enregistrar un novèl article' | 32 | save_link: 'Enregistrar un novèl article' |
33 | back_to_unread: 'Tornar als articles pas legits' | 33 | back_to_unread: 'Tornar als articles pas legits' |
34 | # users_management: 'Users management' | ||
34 | top: | 35 | top: |
35 | add_new_entry: 'Enregistrar un novèl article' | 36 | add_new_entry: 'Enregistrar un novèl article' |
36 | search: 'Cercar' | 37 | search: 'Cercar' |
@@ -45,9 +46,10 @@ footer: | |||
45 | social: 'Social' | 46 | social: 'Social' |
46 | powered_by: 'propulsat per' | 47 | powered_by: 'propulsat per' |
47 | about: 'A prepaus' | 48 | about: 'A prepaus' |
48 | page_title: 'Configuracion' | 49 | # stats: Since %user_creation% you read %nb_archives% articles. That is about %per_day% a day! |
49 | 50 | ||
50 | config: | 51 | config: |
52 | page_title: 'Configuracion' | ||
51 | tab_menu: | 53 | tab_menu: |
52 | settings: 'Paramètres' | 54 | settings: 'Paramètres' |
53 | rss: 'RSS' | 55 | rss: 'RSS' |
@@ -72,8 +74,8 @@ config: | |||
72 | form_rss: | 74 | form_rss: |
73 | description: "Los fluxes RSS fornits per wallabag vos permeton de legir vòstres articles salvagardats dins vòstre lector de fluxes preferit. Per los poder emplegar, vos cal, d'en primièr crear un geton." | 75 | description: "Los fluxes RSS fornits per wallabag vos permeton de legir vòstres articles salvagardats dins vòstre lector de fluxes preferit. Per los poder emplegar, vos cal, d'en primièr crear un geton." |
74 | token_label: 'Geton RSS' | 76 | token_label: 'Geton RSS' |
75 | no_token: 'Aucun jeton généré' | 77 | no_token: 'Pas cap de geton generat' |
76 | token_create: 'Pas cap de geton generat' | 78 | token_create: 'Creatz vòstre geton' |
77 | token_reset: 'Reïnicializatz vòstre geton' | 79 | token_reset: 'Reïnicializatz vòstre geton' |
78 | rss_links: 'URL de vòstres fluxes RSS' | 80 | rss_links: 'URL de vòstres fluxes RSS' |
79 | rss_link: | 81 | rss_link: |
@@ -94,6 +96,7 @@ config: | |||
94 | if_label: 'se' | 96 | if_label: 'se' |
95 | then_tag_as_label: 'alara atribuir las etiquetas' | 97 | then_tag_as_label: 'alara atribuir las etiquetas' |
96 | delete_rule_label: 'suprimir' | 98 | delete_rule_label: 'suprimir' |
99 | # edit_rule_label: 'edit' | ||
97 | rule_label: 'Règla' | 100 | rule_label: 'Règla' |
98 | tags_label: 'Etiquetas' | 101 | tags_label: 'Etiquetas' |
99 | faq: | 102 | faq: |
@@ -127,12 +130,6 @@ config: | |||
127 | or: "Una règla O l'autra" | 130 | or: "Una règla O l'autra" |
128 | and: "Una règla E l'autra" | 131 | and: "Una règla E l'autra" |
129 | matches: 'Teste se un <i>subjècte</i> correspond a una <i>recerca</i> (non sensibla a la cassa).<br />Exemple : <code>title matches \"football\"</code>' | 132 | matches: 'Teste se un <i>subjècte</i> correspond a una <i>recerca</i> (non sensibla a la cassa).<br />Exemple : <code>title matches \"football\"</code>' |
130 | form_new_user: | ||
131 | username_label: "Nom d'utilizaire" | ||
132 | password_label: 'Senhal' | ||
133 | repeat_new_password_label: 'Confirmatz vòstre novèl senhal' | ||
134 | plain_password_label: 'Senhal en clar' | ||
135 | email_label: 'Adreça de corrièl' | ||
136 | 133 | ||
137 | entry: | 134 | entry: |
138 | page_titles: | 135 | page_titles: |
@@ -187,7 +184,7 @@ entry: | |||
187 | re_fetch_content: 'Tornar cargar lo contengut' | 184 | re_fetch_content: 'Tornar cargar lo contengut' |
188 | delete: 'Suprimir' | 185 | delete: 'Suprimir' |
189 | add_a_tag: 'Ajustar una etiqueta' | 186 | add_a_tag: 'Ajustar una etiqueta' |
190 | share_content: 'Partatjar' | 187 | share_content: 'Partejar' |
191 | share_email_label: 'Corrièl' | 188 | share_email_label: 'Corrièl' |
192 | public_link: 'ligam public' | 189 | public_link: 'ligam public' |
193 | delete_public_link: 'suprimir lo ligam public' | 190 | delete_public_link: 'suprimir lo ligam public' |
@@ -224,7 +221,7 @@ about: | |||
224 | developped_by: 'Desvolopat per' | 221 | developped_by: 'Desvolopat per' |
225 | website: 'Site web' | 222 | website: 'Site web' |
226 | many_contributors: 'E un fum de contributors ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">sur Github</a>' | 223 | many_contributors: 'E un fum de contributors ♥ <a href="https://github.com/wallabag/wallabag/graphs/contributors">sur Github</a>' |
227 | project_website: 'Site web del projète' | 224 | project_website: 'Site web del projècte' |
228 | license: 'Licéncia' | 225 | license: 'Licéncia' |
229 | version: 'Version' | 226 | version: 'Version' |
230 | getting_help: | 227 | getting_help: |
@@ -245,7 +242,7 @@ about: | |||
245 | 242 | ||
246 | howto: | 243 | howto: |
247 | page_title: 'Ajuda' | 244 | page_title: 'Ajuda' |
248 | page_description: "I a mai d'un biai d'enregistrar un article :" | 245 | page_description: "I a mai d'un biais d'enregistrar un article :" |
249 | top_menu: | 246 | top_menu: |
250 | browser_addons: 'Extensions de navigator' | 247 | browser_addons: 'Extensions de navigator' |
251 | mobile_apps: 'Aplicacions mobil' | 248 | mobile_apps: 'Aplicacions mobil' |
@@ -266,12 +263,14 @@ howto: | |||
266 | 263 | ||
267 | quickstart: | 264 | quickstart: |
268 | page_title: 'Per ben començar' | 265 | page_title: 'Per ben començar' |
266 | # more: 'More…' | ||
269 | intro: | 267 | intro: |
270 | title: 'Benvenguda sus wallabag !' | 268 | title: 'Benvenguda sus wallabag !' |
271 | paragraph_1: "Anem vos guidar per far lo torn de la proprietat e vos presentar unas fonccionalitats que vos poirián interessar per vos apropriar aquesta aisina." | 269 | paragraph_1: "Anem vos guidar per far lo torn de la proprietat e vos presentar unas fonccionalitats que vos poirián interessar per vos apropriar aquesta aisina." |
272 | paragraph_2: 'Seguètz-nos ' | 270 | paragraph_2: 'Seguètz-nos ' |
273 | configure: | 271 | configure: |
274 | title: "Configuratz l'aplicacio" | 272 | title: "Configuratz l'aplicacio" |
273 | # description: 'In order to have an application which suits you, have a look into the configuration of wallabag.' | ||
275 | language: "Cambiatz la lenga e l'estil de l'aplicacion" | 274 | language: "Cambiatz la lenga e l'estil de l'aplicacion" |
276 | rss: 'Activatz los fluxes RSS' | 275 | rss: 'Activatz los fluxes RSS' |
277 | tagging_rules: 'Escrivètz de règlas per classar automaticament vòstres articles' | 276 | tagging_rules: 'Escrivètz de règlas per classar automaticament vòstres articles' |
@@ -285,6 +284,7 @@ quickstart: | |||
285 | import: 'Configurar los impòrt' | 284 | import: 'Configurar los impòrt' |
286 | first_steps: | 285 | first_steps: |
287 | title: 'Primièrs passes' | 286 | title: 'Primièrs passes' |
287 | # description: "Now wallabag is well configured, it's time to archive the web. You can click on the top right sign + to add a link." | ||
288 | new_article: 'Ajustatz vòstre primièr article' | 288 | new_article: 'Ajustatz vòstre primièr article' |
289 | unread_articles: 'E racaptatz-lo !' | 289 | unread_articles: 'E racaptatz-lo !' |
290 | migrate: | 290 | migrate: |
@@ -294,11 +294,15 @@ quickstart: | |||
294 | wallabag_v1: 'Migrar dempuèi wallabag v1' | 294 | wallabag_v1: 'Migrar dempuèi wallabag v1' |
295 | wallabag_v2: 'Migrar dempuèi wallabag v2' | 295 | wallabag_v2: 'Migrar dempuèi wallabag v2' |
296 | readability: 'Migrar dempuèi Readability' | 296 | readability: 'Migrar dempuèi Readability' |
297 | instapaper: 'Migrar dempuèi Instapaper' | ||
297 | developer: | 298 | developer: |
298 | title: 'Pels desvolopadors' | 299 | title: 'Pels desvolopadors' |
300 | # description: 'We also thought to the developers: Docker, API, translations, etc.' | ||
299 | create_application: 'Crear vòstra aplicacion tèrça' | 301 | create_application: 'Crear vòstra aplicacion tèrça' |
302 | # use_docker: 'Use Docker to install wallabag' | ||
300 | docs: | 303 | docs: |
301 | title: 'Documentacion complèta' | 304 | title: 'Documentacion complèta' |
305 | # description: "There are so much features in wallabag. Don't hesitate to read the manual to know them and to learn how to use them." | ||
302 | annotate: 'Anotatar vòstre article' | 306 | annotate: 'Anotatar vòstre article' |
303 | export: 'Convertissètz vòstres articles en ePub o en PDF' | 307 | export: 'Convertissètz vòstres articles en ePub o en PDF' |
304 | search_filters: "Aprenètz a utilizar lo motor de recèrca e los filtres per retrobar l'article que vos interèssa" | 308 | search_filters: "Aprenètz a utilizar lo motor de recèrca e los filtres per retrobar l'article que vos interèssa" |
@@ -344,22 +348,26 @@ import: | |||
344 | page_title: 'Importar > Wallabag v2' | 348 | page_title: 'Importar > Wallabag v2' |
345 | description: "Aquesta aisina importarà totas vòstras donadas d'una instància mai de wallabag v2. Anatz dins totes vòstres articles, puèi, sus la barra laterala, clicatz sus \"JSON\". Traparatz un fichièr \"All articles.json\"" | 349 | description: "Aquesta aisina importarà totas vòstras donadas d'una instància mai de wallabag v2. Anatz dins totes vòstres articles, puèi, sus la barra laterala, clicatz sus \"JSON\". Traparatz un fichièr \"All articles.json\"" |
346 | readability: | 350 | readability: |
347 | page_title: 'Importer > Readability' | 351 | page_title: 'Importar > Readability' |
348 | description: "Aquesta aisina importarà totas vòstres articles de Readability. Sus la pagina de l'aisina (https://www.readability.com/tools/), clicatz sus \"Export your data\" dins la seccion \"Data Export\". Recebretz un corrièl per telecargar un json (qu'acaba pas amb un .json de fach)." | 352 | description: "Aquesta aisina importarà totas vòstres articles de Readability. Sus la pagina de l'aisina (https://www.readability.com/tools/), clicatz sus \"Export your data\" dins la seccion \"Data Export\". Recebretz un corrièl per telecargar un json (qu'acaba pas amb un .json de fach)." |
349 | how_to: "Mercés de seleccionar vòstre Readability fichièr e de clicar sul boton dejós per lo telecargar e l'importar." | 353 | how_to: "Mercés de seleccionar vòstre Readability fichièr e de clicar sul boton dejós per lo telecargar e l'importar." |
350 | worker: | 354 | worker: |
351 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | 355 | enabled: "L'importacion se fa de manièra asincròna. Un còp l'importacion lançada, una aisina externa s'ocuparà dels messatges un per un. Lo servici actual es : " |
352 | # firefox: | 356 | firefox: |
353 | # page_title: 'Import > Firefox' | 357 | page_title: 'Importar > Firefox' |
354 | # description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | 358 | description: "Aquesta aisina importarà totas vòstres favorits de Firefox. Just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." |
355 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 359 | how_to: "Mercés de causir lo fichièr de salvagarda e de clicar sul boton dejós per l'importar. Notatz que lo tractament pòt durar un moment ja que totes los articles an d'èsser recuperats." |
356 | # chrome: | 360 | chrome: |
357 | # page_title: 'Import > Chrome' | 361 | page_title: 'Importar > Chrome' |
358 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | 362 | description: "Aquesta aisina importarà totas vòstres favorits de Chrome. L'emplaçament del fichièr depend de vòstre sistèma operatiu : <ul><li>Sus Linux, anatz al dorsièr <code>~/.config/chromium/Default/</code></li><li>Sus Windows, deu èsser dins <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>sus OS X, deu èsser dins <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Un còp enlà, copiatz lo fichièr de favorits dins un endrech que volètz.<em><br>Notatz que s'avètz Chromium al lòc de Chrome, vos cal cambiar lo camin segon aquesta situacion.</em></p>" |
359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 363 | how_to: "Mercés de causir lo fichièr de salvagarda e de clicar sul boton dejós per l'importar. Notatz que lo tractament pòt durar un moment ja que totes los articles an d'èsser recuperats." |
364 | instapaper: | ||
365 | page_title: 'Importar > Instapaper' | ||
366 | description: "Aquesta aisina importarà totas vòstres articles d'Instapaper. Sus la pagina de paramètres (https://www.instapaper.com/user), clicatz sus \"Download .CSV file\" dins la seccion \"Export\". Un fichièr CSV serà telecargat (aital \"instapaper-export.csv\")." | ||
367 | how_to: "Mercés de causir vòstre fichièr Instapaper e de clicar sul boton dejós per lo telecargar e l'importar" | ||
360 | 368 | ||
361 | developer: | 369 | developer: |
362 | page_title: 'Desvolopador' | 370 | page_title: 'Desvolopaire' |
363 | welcome_message: "Benvenguda sus l'API de wallabag" | 371 | welcome_message: "Benvenguda sus l'API de wallabag" |
364 | documentation: 'Documentacion' | 372 | documentation: 'Documentacion' |
365 | how_to_first_app: 'Cossí crear vòstra primièra aplicacion' | 373 | how_to_first_app: 'Cossí crear vòstra primièra aplicacion' |
@@ -383,16 +391,18 @@ developer: | |||
383 | page_title: 'Desvlopador > Novèl client' | 391 | page_title: 'Desvlopador > Novèl client' |
384 | page_description: "Anatz crear un novèl client. Mercés de cumplir l'url de redireccion cap a vòstra aplicacion." | 392 | page_description: "Anatz crear un novèl client. Mercés de cumplir l'url de redireccion cap a vòstra aplicacion." |
385 | form: | 393 | form: |
394 | name_label: "Nom del client" | ||
386 | redirect_uris_label: 'URLs de redireccion' | 395 | redirect_uris_label: 'URLs de redireccion' |
387 | save_label: 'Crear un novèl client' | 396 | save_label: 'Crear un novèl client' |
388 | action_back: 'Retorn' | 397 | action_back: 'Retorn' |
389 | client_parameter: | 398 | client_parameter: |
390 | page_title: 'Desvolopador > Los paramètres de vòstre client' | 399 | page_title: 'Desvolopador > Los paramètres de vòstre client' |
391 | page_description: 'Vaquí los paramètres de vòstre client' | 400 | page_description: 'Vaquí los paramètres de vòstre client' |
401 | field_name: 'Nom del client' | ||
392 | field_id: 'ID Client' | 402 | field_id: 'ID Client' |
393 | field_secret: 'Clau secreta' | 403 | field_secret: 'Clau secreta' |
394 | back: 'Retour' | 404 | back: 'Retour' |
395 | read_howto: 'Legir \"cossí crear ma primièra aplicacion\"' | 405 | read_howto: 'Legir "cossí crear ma primièra aplicacion"' |
396 | howto: | 406 | howto: |
397 | page_title: 'Desvolopador > Cossí crear ma primièra aplicacion' | 407 | page_title: 'Desvolopador > Cossí crear ma primièra aplicacion' |
398 | description: | 408 | description: |
@@ -406,6 +416,33 @@ developer: | |||
406 | paragraph_8: "Se volètz totas las adreças d'accès de l'API, donatz un còp d’uèlh <a href=\"%link%\">a la documentacion de l'API</a>." | 416 | paragraph_8: "Se volètz totas las adreças d'accès de l'API, donatz un còp d’uèlh <a href=\"%link%\">a la documentacion de l'API</a>." |
407 | back: 'Retorn' | 417 | back: 'Retorn' |
408 | 418 | ||
419 | user: | ||
420 | # page_title: Users management | ||
421 | # new_user: Create a new user | ||
422 | # edit_user: Edit an existing user | ||
423 | # description: "Here you can manage all users (create, edit and delete)" | ||
424 | # list: | ||
425 | # actions: Actions | ||
426 | # edit_action: Edit | ||
427 | # yes: Yes | ||
428 | # no: No | ||
429 | # create_new_one: Create a new user | ||
430 | form: | ||
431 | username_label: "Nom d'utilizaire" | ||
432 | # name_label: 'Name' | ||
433 | password_label: 'Senhal' | ||
434 | repeat_new_password_label: 'Confirmatz vòstre novèl senhal' | ||
435 | plain_password_label: 'Senhal en clar' | ||
436 | email_label: 'Adreça de corrièl' | ||
437 | # enabled_label: 'Enabled' | ||
438 | # locked_label: 'Locked' | ||
439 | # last_login_label: 'Last login' | ||
440 | # twofactor_label: Two factor authentication | ||
441 | # save: Save | ||
442 | # delete: Delete | ||
443 | # delete_confirm: Are you sure? | ||
444 | # back_to_list: Back to list | ||
445 | |||
409 | flashes: | 446 | flashes: |
410 | config: | 447 | config: |
411 | notice: | 448 | notice: |
@@ -422,10 +459,10 @@ flashes: | |||
422 | notice: | 459 | notice: |
423 | entry_already_saved: 'Article ja salvargardat lo %date%' | 460 | entry_already_saved: 'Article ja salvargardat lo %date%' |
424 | entry_saved: 'Article enregistrat' | 461 | entry_saved: 'Article enregistrat' |
425 | # entry_saved_failed: 'Entry saved but fetching content failed' | 462 | entry_saved_failed: 'Article salvat mai fracàs de la recuperacion del contengut' |
426 | entry_updated: 'Article mes a jorn' | 463 | entry_updated: 'Article mes a jorn' |
427 | entry_reloaded: 'Article recargat' | 464 | entry_reloaded: 'Article recargat' |
428 | # entry_reload_failed: 'Entry reloaded but fetching content failed' | 465 | entry_reload_failed: "L'article es estat cargat de nòu mai la recuperacion del contengut a fracassat" |
429 | entry_archived: 'Article marcat coma legit' | 466 | entry_archived: 'Article marcat coma legit' |
430 | entry_unarchived: 'Article marcat coma pas legit' | 467 | entry_unarchived: 'Article marcat coma pas legit' |
431 | entry_starred: 'Article apondut dins los favorits' | 468 | entry_starred: 'Article apondut dins los favorits' |
@@ -439,10 +476,10 @@ flashes: | |||
439 | failed: "L'importacion a fracassat, mercés de tornar ensajar" | 476 | failed: "L'importacion a fracassat, mercés de tornar ensajar" |
440 | failed_on_file: "Errorr pendent du tractament de l'import. Mercés de verificar vòstre fichièr." | 477 | failed_on_file: "Errorr pendent du tractament de l'import. Mercés de verificar vòstre fichièr." |
441 | summary: "Rapòrt d'import: %imported% importats, %skipped% ja presents." | 478 | summary: "Rapòrt d'import: %imported% importats, %skipped% ja presents." |
442 | # summary_with_queue: 'Import summary: %queued% queued.' | 479 | summary_with_queue: "Rapòrt d'import : %queued% en espèra de tractament." |
443 | error: | 480 | error: |
444 | # redis_enabled_not_installed: Redis is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check Redis configuration. | 481 | redis_enabled_not_installed: "Redis es capable d'importar de manièra asincròna mai sembla que <u>podèm pas nos conectar amb el</u>. Mercés de verificar la configuracion de Redis." |
445 | # rabbit_enabled_not_installed: RabbitMQ is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check RabbitMQ configuration. | 482 | rabbit_enabled_not_installed: "RabbitMQ es capable d'importar de manièra asincròna mai sembla que <u>podèm pas nos conectar amb el</u>. Mercés de verificar la configuracion de RabbitMQ." |
446 | developer: | 483 | developer: |
447 | notice: | 484 | notice: |
448 | client_created: 'Novèl client creat' | 485 | client_created: 'Novèl client creat' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml index f58cd039..54e669b3 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml | |||
@@ -31,6 +31,7 @@ menu: | |||
31 | search: 'Szukaj' | 31 | search: 'Szukaj' |
32 | save_link: 'Zapisz link' | 32 | save_link: 'Zapisz link' |
33 | back_to_unread: 'Powrót do nieprzeczytanych artykułów' | 33 | back_to_unread: 'Powrót do nieprzeczytanych artykułów' |
34 | # users_management: 'Users management' | ||
34 | top: | 35 | top: |
35 | add_new_entry: 'Dodaj nowy wpis' | 36 | add_new_entry: 'Dodaj nowy wpis' |
36 | search: 'Szukaj' | 37 | search: 'Szukaj' |
@@ -45,6 +46,7 @@ footer: | |||
45 | social: 'Społeczność' | 46 | social: 'Społeczność' |
46 | powered_by: 'Kontrolowany przez' | 47 | powered_by: 'Kontrolowany przez' |
47 | about: 'O nas' | 48 | about: 'O nas' |
49 | # stats: Since %user_creation% you read %nb_archives% articles. That is about %per_day% a day! | ||
48 | 50 | ||
49 | config: | 51 | config: |
50 | page_title: 'Konfiguracja' | 52 | page_title: 'Konfiguracja' |
@@ -94,6 +96,7 @@ config: | |||
94 | if_label: 'jeżeli' | 96 | if_label: 'jeżeli' |
95 | then_tag_as_label: 'wtedy otaguj jako' | 97 | then_tag_as_label: 'wtedy otaguj jako' |
96 | delete_rule_label: 'usuń' | 98 | delete_rule_label: 'usuń' |
99 | # edit_rule_label: 'edit' | ||
97 | rule_label: 'Reguła' | 100 | rule_label: 'Reguła' |
98 | tags_label: 'Tagi' | 101 | tags_label: 'Tagi' |
99 | faq: | 102 | faq: |
@@ -127,12 +130,6 @@ config: | |||
127 | or: 'Jedna reguła LUB inna' | 130 | or: 'Jedna reguła LUB inna' |
128 | and: 'Jedna reguła I inna' | 131 | and: 'Jedna reguła I inna' |
129 | matches: 'Sprawdź czy <i>temat</i> pasuje <i>szukaj</i> (duże lub małe litery).<br />Przykład: <code>tytuł zawiera "piłka nożna"</code>' | 132 | matches: 'Sprawdź czy <i>temat</i> pasuje <i>szukaj</i> (duże lub małe litery).<br />Przykład: <code>tytuł zawiera "piłka nożna"</code>' |
130 | form_new_user: | ||
131 | username_label: 'Nazwa użytkownika' | ||
132 | password_label: 'Hasło' | ||
133 | repeat_new_password_label: 'Powtórz nowe hasło' | ||
134 | plain_password_label: 'Jawne hasło' | ||
135 | email_label: 'Adres email' | ||
136 | 133 | ||
137 | entry: | 134 | entry: |
138 | page_titles: | 135 | page_titles: |
@@ -266,12 +263,14 @@ howto: | |||
266 | 263 | ||
267 | quickstart: | 264 | quickstart: |
268 | page_title: 'Szybki start' | 265 | page_title: 'Szybki start' |
266 | # more: 'More…' | ||
269 | intro: | 267 | intro: |
270 | title: 'Witaj w wallabag!' | 268 | title: 'Witaj w wallabag!' |
271 | paragraph_1: "Będziemy ci towarzyszyli w Twojej poznaniu wallabag i pokażemy możliwości, które mogą cię zainteresować." | 269 | paragraph_1: "Będziemy ci towarzyszyli w Twojej poznaniu wallabag i pokażemy możliwości, które mogą cię zainteresować." |
272 | paragraph_2: 'Śledź nas!' | 270 | paragraph_2: 'Śledź nas!' |
273 | configure: | 271 | configure: |
274 | title: 'Konfiguruj aplikację' | 272 | title: 'Konfiguruj aplikację' |
273 | description: 'In order to have an application which suits you, have a look into the configuration of wallabag.' | ||
275 | language: 'Zmień język i wygląd' | 274 | language: 'Zmień język i wygląd' |
276 | rss: 'Włącz kanały RSS' | 275 | rss: 'Włącz kanały RSS' |
277 | tagging_rules: 'Napisz reguły pozwalające na automatyczne otagowanie twoich artykułów' | 276 | tagging_rules: 'Napisz reguły pozwalające na automatyczne otagowanie twoich artykułów' |
@@ -285,6 +284,7 @@ quickstart: | |||
285 | import: 'Skonfigurować import' | 284 | import: 'Skonfigurować import' |
286 | first_steps: | 285 | first_steps: |
287 | title: 'Pierwsze kroki' | 286 | title: 'Pierwsze kroki' |
287 | # description: "Now wallabag is well configured, it's time to archive the web. You can click on the top right sign + to add a link" | ||
288 | new_article: 'Zapisz swój pierwszy artukuł' | 288 | new_article: 'Zapisz swój pierwszy artukuł' |
289 | unread_articles: 'I sklasyfikuj go!' | 289 | unread_articles: 'I sklasyfikuj go!' |
290 | migrate: | 290 | migrate: |
@@ -294,11 +294,15 @@ quickstart: | |||
294 | wallabag_v1: 'Migruj z wallabag v1' | 294 | wallabag_v1: 'Migruj z wallabag v1' |
295 | wallabag_v2: 'Migruj z wallabag v2' | 295 | wallabag_v2: 'Migruj z wallabag v2' |
296 | readability: 'Migruj z Readability' | 296 | readability: 'Migruj z Readability' |
297 | instapaper: 'Migruj z Instapaper' | ||
297 | developer: | 298 | developer: |
298 | title: 'Deweloperzy' | 299 | title: 'Deweloperzy' |
300 | # description: 'We also thought to the developers: Docker, API, translations, etc.' | ||
299 | create_application: 'Stwórz swoją aplikację' | 301 | create_application: 'Stwórz swoją aplikację' |
302 | # use_docker: 'Use Docker to install wallabag' | ||
300 | docs: | 303 | docs: |
301 | title: 'Pełna Dokumentacja' | 304 | title: 'Pełna Dokumentacja' |
305 | # description: "There are so much features in wallabag. Don't hesitate to read the manual to know them and to learn how to use them." | ||
302 | annotate: 'Dadaj adnotację do swojego artykułu' | 306 | annotate: 'Dadaj adnotację do swojego artykułu' |
303 | export: 'Konwertuj swoje artykuły do ePUB lub PDF' | 307 | export: 'Konwertuj swoje artykuły do ePUB lub PDF' |
304 | search_filters: 'Zabacz jak możesz znaleźć artykuł dzięku użyciu silnika wyszukiwarki i filtrów' | 308 | search_filters: 'Zabacz jak możesz znaleźć artykuł dzięku użyciu silnika wyszukiwarki i filtrów' |
@@ -351,12 +355,16 @@ import: | |||
351 | enabled: "Import jest wykonywany asynchronicznie. Od momentu rozpoczęcia importu, zewnętrzna usługa może zajmować się na raz tylko jednym zadaniem. Bieżącą usługą jest:" | 355 | enabled: "Import jest wykonywany asynchronicznie. Od momentu rozpoczęcia importu, zewnętrzna usługa może zajmować się na raz tylko jednym zadaniem. Bieżącą usługą jest:" |
352 | firefox: | 356 | firefox: |
353 | page_title: 'Import > Firefox' | 357 | page_title: 'Import > Firefox' |
354 | description: "Ten importer zaimportuje wszystkie twoje zakładki z Firefoksa. <p>Dla Firefoksa, idź do twoich zakładek (Ctrl+Shift+O), następnie w \"Import i kopie zapasowe\", wybierz \"Utwórz kopię zapasową...\". Uzyskasz plik .json." | 358 | description: "Ten importer zaimportuje wszystkie twoje zakładki z Firefoksa. Idź do twoich zakładek (Ctrl+Shift+O), następnie w \"Import i kopie zapasowe\", wybierz \"Utwórz kopię zapasową...\". Uzyskasz plik .json." |
355 | how_to: "Wybierz swój plik z zakładkami i naciśnij poniższy przycisk, aby je zaimportować. Może to zająć dłuższą chwilę, zanim wszystkie artykuły zostaną przeniesione." | 359 | how_to: "Wybierz swój plik z zakładkami i naciśnij poniższy przycisk, aby je zaimportować. Może to zająć dłuższą chwilę, zanim wszystkie artykuły zostaną przeniesione." |
356 | chrome: | 360 | chrome: |
357 | page_title: 'Import > Chrome' | 361 | page_title: 'Import > Chrome' |
358 | description: "Ten importer zaimportuje wszystkie twoje zakładki z Chrome. Lokalizacja pliku jest zależna od twojego systemy operacyjnego : <ul><li>Pod Linuksem, idź do katalogu <code>~/.config/chromium/Default/</code></li><li>Pod Windowsem, powinien się on znajdować w <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>Pod OS X, powinien się on znajdować w <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Po odnalezieniu pliku, skopiuj go w łatwo dostęne miejsce.<em><br>Jeżeli używasz Chromium zamiast Chrome, będziesz musiał odpowiednio poprawić ścieżkę dostępu.</em></p>" | 362 | description: "Ten importer zaimportuje wszystkie twoje zakładki z Chrome. Lokalizacja pliku jest zależna od twojego systemy operacyjnego : <ul><li>Pod Linuksem, idź do katalogu <code>~/.config/chromium/Default/</code></li><li>Pod Windowsem, powinien się on znajdować w <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>Pod OS X, powinien się on znajdować w <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Po odnalezieniu pliku, skopiuj go w łatwo dostęne miejsce.<em><br>Jeżeli używasz Chromium zamiast Chrome, będziesz musiał odpowiednio poprawić ścieżkę dostępu.</em></p>" |
359 | how_to: "Wybierz swój plik z zakładkami i naciśnij poniższy przycisk, aby je zaimportować. Może to zająć dłuższą chwilę, zanim wszystkie artykuły zostaną przeniesione." | 363 | how_to: "Wybierz swój plik z zakładkami i naciśnij poniższy przycisk, aby je zaimportować. Może to zająć dłuższą chwilę, zanim wszystkie artykuły zostaną przeniesione." |
364 | instapaper: | ||
365 | page_title: 'Import > Instapaper' | ||
366 | description: 'Ten importer, zaimportuje wszystkie twoje artykuły z Instapaper. W ustawieniach (https://www.instapaper.com/user), kliknij na "Download .CSV file" w sekcji "Export". Otrzymasz plik CSV.' | ||
367 | how_to: 'Wybierz swój plik eksportu z Instapaper i kliknij poniższy przycisk, aby go załadować.' | ||
360 | 368 | ||
361 | developer: | 369 | developer: |
362 | page_title: 'Deweloper' | 370 | page_title: 'Deweloper' |
@@ -366,36 +374,38 @@ developer: | |||
366 | full_documentation: 'Pokaż pełne API' | 374 | full_documentation: 'Pokaż pełne API' |
367 | list_methods: 'Lista metod API' | 375 | list_methods: 'Lista metod API' |
368 | clients: | 376 | clients: |
369 | title: 'Klienci' | 377 | title: 'Klienci' |
370 | create_new: 'Utwórz nowego klienta' | 378 | create_new: 'Utwórz nowego klienta' |
371 | existing_clients: | 379 | existing_clients: |
372 | title: 'Istniejący klienci' | 380 | title: 'Istniejący klienci' |
373 | field_id: 'ID klienta' | 381 | field_id: 'ID klienta' |
374 | field_secret: 'Client secret' | 382 | field_secret: 'Client secret' |
375 | field_uris: 'Przekieruj URIs' | 383 | field_uris: 'Przekieruj URIs' |
376 | field_grant_types: 'Przyznaj pozwolenie' | 384 | field_grant_types: 'Przyznaj pozwolenie' |
377 | no_client: 'Nie ma jeszcze klienta.' | 385 | no_client: 'Nie ma jeszcze klienta.' |
378 | remove: | 386 | remove: |
379 | warn_message_1: 'Masz możliwość usunięcia tego klienta. Ta akcja jest NIEODWRACALNA !' | 387 | warn_message_1: 'Masz możliwość usunięcia tego klienta. Ta akcja jest NIEODWRACALNA !' |
380 | warn_message_2: "Jeżeli go usuniesz, aplikacje skonfigurowane z tym klientem nię będa w stanie autoryzować twojego wallabag." | 388 | warn_message_2: "Jeżeli go usuniesz, aplikacje skonfigurowane z tym klientem nię będa w stanie autoryzować twojego wallabag." |
381 | action: 'Usuń tego klienta' | 389 | action: 'Usuń tego klienta' |
382 | client: | 390 | client: |
383 | page_title: 'Deweloper > Nowy klient' | 391 | page_title: 'Deweloper > Nowy klient' |
384 | page_description: 'Tworzysz nowego klienta. Wypełnij poniższe pole w celu przekierowania URI twojej aplikacji.' | 392 | page_description: 'Tworzysz nowego klienta. Wypełnij poniższe pole w celu przekierowania URI twojej aplikacji.' |
385 | form: | 393 | form: |
386 | redirect_uris_label: 'Przekieruj adresy URI' | 394 | # name_label: 'Name of the client' |
387 | save_label: 'Stwórz nowego klienta' | 395 | redirect_uris_label: 'Przekieruj adresy URI' |
388 | action_back: 'Cofnij' | 396 | save_label: 'Stwórz nowego klienta' |
397 | action_back: 'Cofnij' | ||
389 | client_parameter: | 398 | client_parameter: |
390 | page_title: 'Deweloper > Parametry klienta' | 399 | page_title: 'Deweloper > Parametry klienta' |
391 | page_description: 'Tutaj znajdują się parametry klienta.' | 400 | page_description: 'Tutaj znajdują się parametry klienta.' |
392 | field_id: 'Client ID' | 401 | # field_name: 'Client name' |
393 | field_secret: 'Client secret' | 402 | field_id: 'Client ID' |
394 | back: 'Cofnij' | 403 | field_secret: 'Client secret' |
395 | read_howto: 'Przeczytaj jak "Stworzyć moją pierwszą aplikację"' | 404 | back: 'Cofnij' |
405 | read_howto: 'Przeczytaj jak "Stworzyć moją pierwszą aplikację"' | ||
396 | howto: | 406 | howto: |
397 | page_title: 'Deweloper > Jak stworzyć moją pierwszą aplikację' | 407 | page_title: 'Deweloper > Jak stworzyć moją pierwszą aplikację' |
398 | description: | 408 | description: |
399 | paragraph_1: 'Następujące komendy korzystają <a href="https://github.com/jkbrzt/httpie">Biblioteka HTTPie</a>. Upewnij się, czy zainstalowałeś ją w swoim systemie zanim z niej skorzystasz' | 409 | paragraph_1: 'Następujące komendy korzystają <a href="https://github.com/jkbrzt/httpie">Biblioteka HTTPie</a>. Upewnij się, czy zainstalowałeś ją w swoim systemie zanim z niej skorzystasz' |
400 | paragraph_2: 'Potrzebujesz tokena w celu nawiązania komunikacji między swoją aplikacją a API wallabag.' | 410 | paragraph_2: 'Potrzebujesz tokena w celu nawiązania komunikacji między swoją aplikacją a API wallabag.' |
401 | paragraph_3: 'W celu stworzenia tokena musisz <a href="%link%">stwórz nowego klienta</a>.' | 411 | paragraph_3: 'W celu stworzenia tokena musisz <a href="%link%">stwórz nowego klienta</a>.' |
@@ -404,7 +414,34 @@ developer: | |||
404 | paragraph_6: 'access_token jest użyteczny do wywołania API endpoint. Na przykład:' | 414 | paragraph_6: 'access_token jest użyteczny do wywołania API endpoint. Na przykład:' |
405 | paragraph_7: 'To wywołanie zwróci wszystkie twoje wpisy.' | 415 | paragraph_7: 'To wywołanie zwróci wszystkie twoje wpisy.' |
406 | paragraph_8: 'Jeżeli chcesz wyświetlić wszystkie punkty końcowe API, zobacz <a href="%link%">Dokumentacja naszego API</a>.' | 416 | paragraph_8: 'Jeżeli chcesz wyświetlić wszystkie punkty końcowe API, zobacz <a href="%link%">Dokumentacja naszego API</a>.' |
407 | back: 'Cofnij' | 417 | back: 'Cofnij' |
418 | |||
419 | user: | ||
420 | # page_title: Users management | ||
421 | # new_user: Create a new user | ||
422 | # edit_user: Edit an existing user | ||
423 | # description: "Here you can manage all users (create, edit and delete)" | ||
424 | # list: | ||
425 | # actions: Actions | ||
426 | # edit_action: Edit | ||
427 | # yes: Yes | ||
428 | # no: No | ||
429 | # create_new_one: Create a new user | ||
430 | form: | ||
431 | username_label: 'Nazwa użytkownika' | ||
432 | # name_label: 'Name' | ||
433 | password_label: 'Hasło' | ||
434 | repeat_new_password_label: 'Powtórz nowe hasło' | ||
435 | plain_password_label: 'Jawne hasło' | ||
436 | email_label: 'Adres email' | ||
437 | # enabled_label: 'Enabled' | ||
438 | # locked_label: 'Locked' | ||
439 | # last_login_label: 'Last login' | ||
440 | # twofactor_label: Two factor authentication | ||
441 | # save: Save | ||
442 | # delete: Delete | ||
443 | # delete_confirm: Are you sure? | ||
444 | # back_to_list: Back to list | ||
408 | 445 | ||
409 | flashes: | 446 | flashes: |
410 | config: | 447 | config: |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml index 067f7878..4e0e454c 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml | |||
@@ -31,6 +31,7 @@ menu: | |||
31 | search: 'Căutare' | 31 | search: 'Căutare' |
32 | # save_link: 'Save a link' | 32 | # save_link: 'Save a link' |
33 | back_to_unread: 'Înapoi la articolele necitite' | 33 | back_to_unread: 'Înapoi la articolele necitite' |
34 | # users_management: 'Users management' | ||
34 | top: | 35 | top: |
35 | add_new_entry: 'Introdu un nou articol' | 36 | add_new_entry: 'Introdu un nou articol' |
36 | search: 'Căutare' | 37 | search: 'Căutare' |
@@ -45,6 +46,7 @@ footer: | |||
45 | # social: 'Social' | 46 | # social: 'Social' |
46 | # powered_by: 'powered by' | 47 | # powered_by: 'powered by' |
47 | about: 'Despre' | 48 | about: 'Despre' |
49 | # stats: Since %user_creation% you read %nb_archives% articles. That is about %per_day% a day! | ||
48 | 50 | ||
49 | config: | 51 | config: |
50 | page_title: 'Configurație' | 52 | page_title: 'Configurație' |
@@ -94,6 +96,7 @@ config: | |||
94 | # if_label: 'if' | 96 | # if_label: 'if' |
95 | # then_tag_as_label: 'then tag as' | 97 | # then_tag_as_label: 'then tag as' |
96 | # delete_rule_label: 'delete' | 98 | # delete_rule_label: 'delete' |
99 | # edit_rule_label: 'edit' | ||
97 | # rule_label: 'Rule' | 100 | # rule_label: 'Rule' |
98 | # tags_label: 'Tags' | 101 | # tags_label: 'Tags' |
99 | # faq: | 102 | # faq: |
@@ -127,12 +130,6 @@ config: | |||
127 | # or: 'One rule OR another' | 130 | # or: 'One rule OR another' |
128 | # and: 'One rule AND another' | 131 | # and: 'One rule AND another' |
129 | # matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>' | 132 | # matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>' |
130 | form_new_user: | ||
131 | username_label: 'Nume de utilizator' | ||
132 | password_label: 'Parolă' | ||
133 | repeat_new_password_label: 'Repeat new password' | ||
134 | plain_password_label: '????' | ||
135 | email_label: 'E-mail' | ||
136 | 133 | ||
137 | entry: | 134 | entry: |
138 | page_titles: | 135 | page_titles: |
@@ -266,12 +263,14 @@ howto: | |||
266 | 263 | ||
267 | quickstart: | 264 | quickstart: |
268 | # page_title: 'Quickstart' | 265 | # page_title: 'Quickstart' |
266 | # more: 'More…' | ||
269 | # intro: | 267 | # intro: |
270 | # title: 'Welcome to wallabag!' | 268 | # title: 'Welcome to wallabag!' |
271 | # paragraph_1: "We'll accompany you to visit wallabag and show you some features which can interest you." | 269 | # paragraph_1: "We'll accompany you to visit wallabag and show you some features which can interest you." |
272 | # paragraph_2: 'Follow us!' | 270 | # paragraph_2: 'Follow us!' |
273 | # configure: | 271 | # configure: |
274 | # title: 'Configure the application' | 272 | # title: 'Configure the application' |
273 | # description: 'In order to have an application which suits you, have a look into the configuration of wallabag.' | ||
275 | # language: 'Change language and design' | 274 | # language: 'Change language and design' |
276 | # rss: 'Enable RSS feeds' | 275 | # rss: 'Enable RSS feeds' |
277 | # tagging_rules: 'Write rules to automatically tag your articles' | 276 | # tagging_rules: 'Write rules to automatically tag your articles' |
@@ -285,6 +284,7 @@ quickstart: | |||
285 | # import: 'Configure import' | 284 | # import: 'Configure import' |
286 | # first_steps: | 285 | # first_steps: |
287 | # title: 'First steps' | 286 | # title: 'First steps' |
287 | # description: "Now wallabag is well configured, it's time to archive the web. You can click on the top right sign + to add a link." | ||
288 | # new_article: 'Save your first article' | 288 | # new_article: 'Save your first article' |
289 | # unread_articles: 'And classify it!' | 289 | # unread_articles: 'And classify it!' |
290 | # migrate: | 290 | # migrate: |
@@ -294,11 +294,15 @@ quickstart: | |||
294 | # wallabag_v1: 'Migrate from wallabag v1' | 294 | # wallabag_v1: 'Migrate from wallabag v1' |
295 | # wallabag_v2: 'Migrate from wallabag v2' | 295 | # wallabag_v2: 'Migrate from wallabag v2' |
296 | # readability: 'Migrate from Readability' | 296 | # readability: 'Migrate from Readability' |
297 | # instapaper: 'Migrate from Instapaper' | ||
297 | # developer: | 298 | # developer: |
298 | # title: 'Developers' | 299 | # title: 'Developers' |
300 | # description: 'We also thought to the developers: Docker, API, translations, etc.' | ||
299 | # create_application: 'Create your third application' | 301 | # create_application: 'Create your third application' |
302 | # use_docker: 'Use Docker to install wallabag' | ||
300 | # docs: | 303 | # docs: |
301 | # title: 'Full documentation' | 304 | # title: 'Full documentation' |
305 | # description: "There are so much features in wallabag. Don't hesitate to read the manual to know them and to learn how to use them." | ||
302 | # annotate: 'Annotate your article' | 306 | # annotate: 'Annotate your article' |
303 | # export: 'Convert your articles into ePUB or PDF' | 307 | # export: 'Convert your articles into ePUB or PDF' |
304 | # search_filters: 'See how you can look for an article by using search engine and filters' | 308 | # search_filters: 'See how you can look for an article by using search engine and filters' |
@@ -351,12 +355,16 @@ import: | |||
351 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | 355 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" |
352 | # firefox: | 356 | # firefox: |
353 | # page_title: 'Import > Firefox' | 357 | # page_title: 'Import > Firefox' |
354 | # description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | 358 | # description: "This importer will import all your Firefox bookmarks. Just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." |
355 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." |
356 | # chrome: | 360 | # chrome: |
357 | # page_title: 'Import > Chrome' | 361 | # page_title: 'Import > Chrome' |
358 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | 362 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" |
359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 363 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." |
364 | # instapaper: | ||
365 | # page_title: 'Import > Instapaper' | ||
366 | # description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
367 | # how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
360 | 368 | ||
361 | developer: | 369 | developer: |
362 | # page_title: 'Developer' | 370 | # page_title: 'Developer' |
@@ -383,12 +391,14 @@ developer: | |||
383 | # page_title: 'Developer > New client' | 391 | # page_title: 'Developer > New client' |
384 | # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.' | 392 | # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.' |
385 | # form: | 393 | # form: |
394 | # name_label: 'Name of the client' | ||
386 | # redirect_uris_label: 'Redirect URIs' | 395 | # redirect_uris_label: 'Redirect URIs' |
387 | # save_label: 'Create a new client' | 396 | # save_label: 'Create a new client' |
388 | # action_back: 'Back' | 397 | # action_back: 'Back' |
389 | # client_parameter: | 398 | # client_parameter: |
390 | # page_title: 'Developer > Client parameters' | 399 | # page_title: 'Developer > Client parameters' |
391 | # page_description: 'Here are your client parameters.' | 400 | # page_description: 'Here are your client parameters.' |
401 | # field_name: 'Client name' | ||
392 | # field_id: 'Client ID' | 402 | # field_id: 'Client ID' |
393 | # field_secret: 'Client secret' | 403 | # field_secret: 'Client secret' |
394 | # back: 'Back' | 404 | # back: 'Back' |
@@ -406,6 +416,33 @@ developer: | |||
406 | # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.' | 416 | # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.' |
407 | # back: 'Back' | 417 | # back: 'Back' |
408 | 418 | ||
419 | user: | ||
420 | # page_title: Users management | ||
421 | # new_user: Create a new user | ||
422 | # edit_user: Edit an existing user | ||
423 | # description: "Here you can manage all users (create, edit and delete)" | ||
424 | # list: | ||
425 | # actions: Actions | ||
426 | # edit_action: Edit | ||
427 | # yes: Yes | ||
428 | # no: No | ||
429 | # create_new_one: Create a new user | ||
430 | form: | ||
431 | username_label: 'Nume de utilizator' | ||
432 | # name_label: 'Name' | ||
433 | password_label: 'Parolă' | ||
434 | repeat_new_password_label: 'Repeat new password' | ||
435 | plain_password_label: '????' | ||
436 | email_label: 'E-mail' | ||
437 | # enabled_label: 'Enabled' | ||
438 | # locked_label: 'Locked' | ||
439 | # last_login_label: 'Last login' | ||
440 | # twofactor_label: Two factor authentication | ||
441 | # save: Save | ||
442 | # delete: Delete | ||
443 | # delete_confirm: Are you sure? | ||
444 | # back_to_list: Back to list | ||
445 | |||
409 | flashes: | 446 | flashes: |
410 | config: | 447 | config: |
411 | notice: | 448 | notice: |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml index 62c69510..02b3aae6 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml | |||
@@ -31,6 +31,7 @@ menu: | |||
31 | search: 'Ara' | 31 | search: 'Ara' |
32 | # save_link: 'Save a link' | 32 | # save_link: 'Save a link' |
33 | back_to_unread: 'Okunmayan makalelere geri dön' | 33 | back_to_unread: 'Okunmayan makalelere geri dön' |
34 | # users_management: 'Users management' | ||
34 | top: | 35 | top: |
35 | add_new_entry: 'Yeni bir makale ekle' | 36 | add_new_entry: 'Yeni bir makale ekle' |
36 | search: 'Ara' | 37 | search: 'Ara' |
@@ -45,6 +46,7 @@ footer: | |||
45 | social: 'Sosyal' | 46 | social: 'Sosyal' |
46 | powered_by: 'powered by' | 47 | powered_by: 'powered by' |
47 | about: 'Hakkımızda' | 48 | about: 'Hakkımızda' |
49 | # stats: Since %user_creation% you read %nb_archives% articles. That is about %per_day% a day! | ||
48 | 50 | ||
49 | config: | 51 | config: |
50 | page_title: 'Yapılandırma' | 52 | page_title: 'Yapılandırma' |
@@ -127,12 +129,6 @@ config: | |||
127 | or: 'Bir kural veya birbaşkası' | 129 | or: 'Bir kural veya birbaşkası' |
128 | and: 'Bir kural ve diğeri' | 130 | and: 'Bir kural ve diğeri' |
129 | # matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>' | 131 | # matches: 'Tests that a <i>subject</i> is matches a <i>search</i> (case-insensitive).<br />Example: <code>title matches "football"</code>' |
130 | form_new_user: | ||
131 | username_label: 'Kullanıcı adı' | ||
132 | password_label: 'Şifre' | ||
133 | repeat_new_password_label: 'Yeni şifrenin tekrarı' | ||
134 | plain_password_label: '????' | ||
135 | email_label: 'E-posta' | ||
136 | 132 | ||
137 | entry: | 133 | entry: |
138 | page_titles: | 134 | page_titles: |
@@ -266,12 +262,14 @@ howto: | |||
266 | 262 | ||
267 | quickstart: | 263 | quickstart: |
268 | page_title: 'Hızlı başlangıç' | 264 | page_title: 'Hızlı başlangıç' |
265 | # more: 'More…' | ||
269 | intro: | 266 | intro: |
270 | title: 'wallabag' | 267 | title: 'wallabag' |
271 | paragraph_1: "wallabag kurduğunuz için teşekkür ederiz. Bu sayfada biz size eşlik edecek ve ilginizi çekecek birkaç özellik göstereceğim." | 268 | paragraph_1: "wallabag kurduğunuz için teşekkür ederiz. Bu sayfada biz size eşlik edecek ve ilginizi çekecek birkaç özellik göstereceğim." |
272 | paragraph_2: 'Bizi takip edin!' | 269 | paragraph_2: 'Bizi takip edin!' |
273 | configure: | 270 | configure: |
274 | title: 'Uygulamayı Yapılandırma' | 271 | title: 'Uygulamayı Yapılandırma' |
272 | # description: 'In order to have an application which suits you, have a look into the configuration of wallabag.' | ||
275 | language: 'Dili ve tasarımı değiştirme' | 273 | language: 'Dili ve tasarımı değiştirme' |
276 | rss: 'RSS akışını aktifleştirme' | 274 | rss: 'RSS akışını aktifleştirme' |
277 | # tagging_rules: 'Write rules to automatically tag your articles' | 275 | # tagging_rules: 'Write rules to automatically tag your articles' |
@@ -285,6 +283,7 @@ quickstart: | |||
285 | # import: 'Configure import' | 283 | # import: 'Configure import' |
286 | first_steps: | 284 | first_steps: |
287 | title: 'İlk adım' | 285 | title: 'İlk adım' |
286 | # description: "Now wallabag is well configured, it's time to archive the web. You can click on the top right sign + to add a link." | ||
288 | new_article: 'İlk makalenizi kaydedin' | 287 | new_article: 'İlk makalenizi kaydedin' |
289 | unread_articles: 'Ve bunu sınıflandırın!' | 288 | unread_articles: 'Ve bunu sınıflandırın!' |
290 | migrate: | 289 | migrate: |
@@ -294,11 +293,15 @@ quickstart: | |||
294 | wallabag_v1: "wallabag v1 üzerindeki verilerinizi wallabag'in yeni sürümüne aktarın" | 293 | wallabag_v1: "wallabag v1 üzerindeki verilerinizi wallabag'in yeni sürümüne aktarın" |
295 | wallabag_v2: "wallabag v2 üzerindeki verilerinizi wallabag'in yeni sürümüne aktarın" | 294 | wallabag_v2: "wallabag v2 üzerindeki verilerinizi wallabag'in yeni sürümüne aktarın" |
296 | readability: "Readability üzerindeki verilerinizi wallabag'e aktarın'" | 295 | readability: "Readability üzerindeki verilerinizi wallabag'e aktarın'" |
296 | instapaper: "Instapaper üzerindeki verilerinizi wallabag'e aktarın'" | ||
297 | developer: | 297 | developer: |
298 | # title: 'Developers' | 298 | # title: 'Developers' |
299 | # description: 'We also thought to the developers: Docker, API, translations, etc.' | ||
299 | # create_application: 'Create your third application' | 300 | # create_application: 'Create your third application' |
301 | # use_docker: 'Use Docker to install wallabag' | ||
300 | docs: | 302 | docs: |
301 | title: 'Dokümantasyon' | 303 | title: 'Dokümantasyon' |
304 | # description: "There are so much features in wallabag. Don't hesitate to read the manual to know them and to learn how to use them." | ||
302 | # annotate: 'Annotate your article' | 305 | # annotate: 'Annotate your article' |
303 | export: 'Makalelerinizi ePUB ya da PDF formatına çevirme' | 306 | export: 'Makalelerinizi ePUB ya da PDF formatına çevirme' |
304 | search_filters: 'Makaleleri görüntülemek için arama motorlarını ve filteri kullanma' | 307 | search_filters: 'Makaleleri görüntülemek için arama motorlarını ve filteri kullanma' |
@@ -349,14 +352,18 @@ import: | |||
349 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' | 352 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' |
350 | worker: | 353 | worker: |
351 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | 354 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" |
352 | # firefox: | 355 | firefox: |
353 | # page_title: 'Import > Firefox' | 356 | page_title: 'İçe Aktar > Firefox' |
354 | # description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | 357 | # description: "This importer will import all your Firefox bookmarks. Just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." |
355 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 358 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." |
356 | # chrome: | 359 | chrome: |
357 | # page_title: 'Import > Chrome' | 360 | page_title: 'İçe Aktar > Chrome' |
358 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | 361 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" |
359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | 362 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." |
363 | instapaper: | ||
364 | page_title: 'İçe Aktar > Instapaper' | ||
365 | # description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
366 | # how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
360 | 367 | ||
361 | developer: | 368 | developer: |
362 | # page_title: 'Developer' | 369 | # page_title: 'Developer' |
@@ -383,12 +390,14 @@ developer: | |||
383 | # page_title: 'Developer > New client' | 390 | # page_title: 'Developer > New client' |
384 | # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.' | 391 | # page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.' |
385 | # form: | 392 | # form: |
393 | # name_label: 'Name of the client' | ||
386 | # redirect_uris_label: 'Redirect URIs' | 394 | # redirect_uris_label: 'Redirect URIs' |
387 | # save_label: 'Create a new client' | 395 | # save_label: 'Create a new client' |
388 | # action_back: 'Back' | 396 | # action_back: 'Back' |
389 | # client_parameter: | 397 | # client_parameter: |
390 | # page_title: 'Developer > Client parameters' | 398 | # page_title: 'Developer > Client parameters' |
391 | # page_description: 'Here are your client parameters.' | 399 | # page_description: 'Here are your client parameters.' |
400 | # field_name: 'Client name' | ||
392 | # field_id: 'Client ID' | 401 | # field_id: 'Client ID' |
393 | # field_secret: 'Client secret' | 402 | # field_secret: 'Client secret' |
394 | # back: 'Back' | 403 | # back: 'Back' |
@@ -406,6 +415,33 @@ developer: | |||
406 | # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.' | 415 | # paragraph_8: 'If you want to see all the API endpoints, you can have a look <a href="%link%">to our API documentation</a>.' |
407 | # back: 'Back' | 416 | # back: 'Back' |
408 | 417 | ||
418 | user: | ||
419 | # page_title: Users management | ||
420 | # new_user: Create a new user | ||
421 | # edit_user: Edit an existing user | ||
422 | # description: "Here you can manage all users (create, edit and delete)" | ||
423 | # list: | ||
424 | # actions: Actions | ||
425 | # edit_action: Edit | ||
426 | # yes: Yes | ||
427 | # no: No | ||
428 | # create_new_one: Create a new user | ||
429 | form: | ||
430 | username_label: 'Kullanıcı adı' | ||
431 | # name_label: 'Name' | ||
432 | password_label: 'Şifre' | ||
433 | repeat_new_password_label: 'Yeni şifrenin tekrarı' | ||
434 | plain_password_label: '????' | ||
435 | email_label: 'E-posta' | ||
436 | # enabled_label: 'Enabled' | ||
437 | # locked_label: 'Locked' | ||
438 | # last_login_label: 'Last login' | ||
439 | # twofactor_label: Two factor authentication | ||
440 | # save: Save | ||
441 | # delete: Delete | ||
442 | # delete_confirm: Are you sure? | ||
443 | # back_to_list: Back to list | ||
444 | |||
409 | flashes: | 445 | flashes: |
410 | config: | 446 | config: |
411 | notice: | 447 | notice: |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.da.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.da.yml index dfe2c64d..313339ed 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/validators.da.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/validators.da.yml | |||
@@ -1,6 +1,6 @@ | |||
1 | validator: | 1 | validator: |
2 | password_must_match: 'De indtastede adgangskoder skal være ens' | 2 | password_must_match: 'De indtastede adgangskoder skal være ens' |
3 | password_too_short: 'Adgangskoden skal være mindst 8 tegn' | 3 | password_too_short: 'Adgangskoden skal være mindst 8 tegn' |
4 | # password_wrong_value: 'Wrong value for your current password' | 4 | # password_wrong_value: 'Wrong value for your current password' |
5 | # item_per_page_too_high: 'This will certainly kill the app' | 5 | # item_per_page_too_high: 'This will certainly kill the app' |
6 | # rss_limit_too_hight: 'This will certainly kill the app' | 6 | # rss_limit_too_hight: 'This will certainly kill the app' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.tr.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.tr.yml index 80ab470a..1b358965 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/validators.tr.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/validators.tr.yml | |||
@@ -1,6 +1,6 @@ | |||
1 | validator: | 1 | validator: |
2 | # password_must_match: 'The password fields must match.' | 2 | # password_must_match: 'The password fields must match.' |
3 | # password_too_short: 'Password should by at least 8 chars long' | 3 | # password_too_short: 'Password should by at least 8 chars long' |
4 | # password_wrong_value: 'Wrong value for your current password' | 4 | # password_wrong_value: 'Wrong value for your current password' |
5 | # item_per_page_too_high: 'This will certainly kill the app' | 5 | # item_per_page_too_high: 'This will certainly kill the app' |
6 | # rss_limit_too_hight: 'This will certainly kill the app' | 6 | # rss_limit_too_hight: 'This will certainly kill the app' |
diff --git a/src/Wallabag/CoreBundle/Resources/views/base.html.twig b/src/Wallabag/CoreBundle/Resources/views/base.html.twig index 0f88901a..a1a9a136 100644 --- a/src/Wallabag/CoreBundle/Resources/views/base.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/base.html.twig | |||
@@ -43,7 +43,7 @@ | |||
43 | {% block scripts %} | 43 | {% block scripts %} |
44 | {% endblock %} | 44 | {% endblock %} |
45 | 45 | ||
46 | <title>wallabag - {% block title %}{% endblock %}</title> | 46 | <title>{% block title %}{% endblock %} – wallabag</title> |
47 | {% endblock %} | 47 | {% endblock %} |
48 | </head> | 48 | </head> |
49 | 49 | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig index 6446cf2c..ff7ef73a 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig | |||
@@ -191,6 +191,7 @@ | |||
191 | « {{ tagging_rule.rule }} » | 191 | « {{ tagging_rule.rule }} » |
192 | {{ 'config.form_rules.then_tag_as_label'|trans }} | 192 | {{ 'config.form_rules.then_tag_as_label'|trans }} |
193 | « {{ tagging_rule.tags|join(', ') }} » | 193 | « {{ tagging_rule.tags|join(', ') }} » |
194 | <a href="{{ path('edit_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.edit_rule_label'|trans }}" class="tool mode_edit">✎</a> | ||
194 | <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}" class="tool delete icon-trash icon"></a> | 195 | <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}" class="tool delete icon-trash icon"></a> |
195 | </li> | 196 | </li> |
196 | {% endfor %} | 197 | {% endfor %} |
@@ -301,46 +302,4 @@ | |||
301 | </table> | 302 | </table> |
302 | </div> | 303 | </div> |
303 | </div> | 304 | </div> |
304 | |||
305 | {% if is_granted('ROLE_SUPER_ADMIN') %} | ||
306 | <h2>{{ 'config.tab_menu.new_user'|trans }}</h2> | ||
307 | |||
308 | {{ form_start(form.new_user) }} | ||
309 | {{ form_errors(form.new_user) }} | ||
310 | |||
311 | <fieldset class="w500p inline"> | ||
312 | <div class="row"> | ||
313 | {{ form_label(form.new_user.username) }} | ||
314 | {{ form_errors(form.new_user.username) }} | ||
315 | {{ form_widget(form.new_user.username) }} | ||
316 | </div> | ||
317 | </fieldset> | ||
318 | |||
319 | <fieldset class="w500p inline"> | ||
320 | <div class="row"> | ||
321 | {{ form_label(form.new_user.plainPassword.first) }} | ||
322 | {{ form_errors(form.new_user.plainPassword.first) }} | ||
323 | {{ form_widget(form.new_user.plainPassword.first) }} | ||
324 | </div> | ||
325 | </fieldset> | ||
326 | |||
327 | <fieldset class="w500p inline"> | ||
328 | <div class="row"> | ||
329 | {{ form_label(form.new_user.plainPassword.second) }} | ||
330 | {{ form_errors(form.new_user.plainPassword.second) }} | ||
331 | {{ form_widget(form.new_user.plainPassword.second) }} | ||
332 | </div> | ||
333 | </fieldset> | ||
334 | |||
335 | <fieldset class="w500p inline"> | ||
336 | <div class="row"> | ||
337 | {{ form_label(form.new_user.email) }} | ||
338 | {{ form_errors(form.new_user.email) }} | ||
339 | {{ form_widget(form.new_user.email) }} | ||
340 | </div> | ||
341 | </fieldset> | ||
342 | |||
343 | {{ form_rest(form.new_user) }} | ||
344 | {% endif %} | ||
345 | </form> | ||
346 | {% endblock %} | 305 | {% endblock %} |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig index 8d841b4c..1c0430e8 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig | |||
@@ -1,7 +1,7 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | 1 | {% extends "WallabagCoreBundle::layout.html.twig" %} |
2 | 2 | ||
3 | {% block title %} | 3 | {% block title %} |
4 | {% include "@WallabagCore/themes/_title.html.twig" %} | 4 | {% include "@WallabagCore/themes/common/Entry/_title.html.twig" %} |
5 | {% endblock %} | 5 | {% endblock %} |
6 | 6 | ||
7 | {% block content %} | 7 | {% block content %} |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Exception/error.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Exception/error.html.twig new file mode 100644 index 00000000..b52634fd --- /dev/null +++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Exception/error.html.twig | |||
@@ -0,0 +1,24 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'error.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block body_class %}login{% endblock %} | ||
6 | |||
7 | {% block menu %}{% endblock %} | ||
8 | {% block messages %}{% endblock %} | ||
9 | {% block header %}{% endblock %} | ||
10 | |||
11 | {% block content %} | ||
12 | <main class="valign-wrapper"> | ||
13 | <div class="valign row"> | ||
14 | <div class="card sw"> | ||
15 | <div class="center"><img src="{{ asset('bundles/wallabagcore/themes/_global/img/logo-w.png') }}" alt="wallabag logo" /></div> | ||
16 | <h2>{{ status_code }}: {{ status_text }}</h2> | ||
17 | <p>{{ exception.message }}</p> | ||
18 | </div> | ||
19 | </div> | ||
20 | </main> | ||
21 | {% endblock %} | ||
22 | |||
23 | {% block footer %} | ||
24 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig deleted file mode 100644 index 918249dc..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig +++ /dev/null | |||
@@ -1,169 +0,0 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'about.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | <h2>{{ 'about.top_menu.who_behind_wallabag'|trans }}</h2> | ||
7 | |||
8 | <dl> | ||
9 | <dt>{{ 'about.who_behind_wallabag.developped_by'|trans }}</dt> | ||
10 | <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://www.loeuillet.org">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd> | ||
11 | <dd>Thomas Citharel — <a href="https://tcit.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd> | ||
12 | <dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd> | ||
13 | |||
14 | <dt>{{ 'about.who_behind_wallabag.many_contributors'|trans|raw }}</dt> | ||
15 | |||
16 | <dt>{{ 'about.who_behind_wallabag.project_website'|trans }}</dt> | ||
17 | <dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd> | ||
18 | |||
19 | <dt>{{ 'about.who_behind_wallabag.license'|trans }}: <a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dt> | ||
20 | |||
21 | <dt>{{ 'about.who_behind_wallabag.version'|trans }}: {{ version }}</dt> | ||
22 | </dl> | ||
23 | |||
24 | <h2>{{ 'about.top_menu.getting_help'|trans }}</h2> | ||
25 | |||
26 | <dl> | ||
27 | <dt>{{ 'about.getting_help.documentation'|trans }}</dt> | ||
28 | <dd><a href="http://doc.wallabag.org/en/master/">english</a></dd> | ||
29 | <dd><a href="http://doc.wallabag.org/fr/master/">français</a></dd> | ||
30 | |||
31 | <dt>{{ 'about.getting_help.bug_reports'|trans }}</dt> | ||
32 | <dd>{{ 'about.getting_help.support'|trans|raw }}</dd> | ||
33 | </dl> | ||
34 | |||
35 | <h2>{{ 'about.top_menu.helping'|trans }}</h2> | ||
36 | |||
37 | <p>{{ 'about.helping.description'|trans }}</p> | ||
38 | |||
39 | <dl> | ||
40 | <dd>{{ 'about.helping.by_contributing_2'|trans }} <a href="https://github.com/wallabag/wallabag/issues/1254">{{ 'about.helping.by_contributing'|trans }}</a></dd> | ||
41 | <dd><a href="{{ paypal_url }}">{{ 'about.helping.by_paypal'|trans }}</a></dd> | ||
42 | </dl> | ||
43 | |||
44 | <h2>{{ 'about.top_menu.contributors'|trans }}</h2> | ||
45 | <p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{{ 'about.contributors.description'|trans }}</a></p> | ||
46 | |||
47 | <h2>{{ 'about.top_menu.third_party'|trans }}</h2> | ||
48 | <p>{{ 'about.third_party.description'|trans }}</p> | ||
49 | <table class="striped"> | ||
50 | <tr> | ||
51 | <th>{{ 'about.third_party.package'|trans }}</th> | ||
52 | <th>{{ 'about.third_party.license'|trans }}</th> | ||
53 | </tr> | ||
54 | <tr><td>behat/transliterator</td><td>Artistic 1.0</td></tr> | ||
55 | <tr><td>CraueConfigBundle</td><td>MIT</td></tr> | ||
56 | <tr><td>doctrine/annotations</td><td>MIT</td></tr> | ||
57 | <tr><td>doctrine/cache</td><td>MIT</td></tr> | ||
58 | <tr><td>doctrine/collections</td><td>MIT</td></tr> | ||
59 | <tr><td>doctrine/common</td><td>MIT</td></tr> | ||
60 | <tr><td>doctrine/dbal</td><td>MIT</td></tr> | ||
61 | <tr><td>doctrine/doctrine-bundle</td><td>MIT</td></tr> | ||
62 | <tr><td>doctrine/doctrine-cache-bundle</td><td>MIT</td></tr> | ||
63 | <tr><td>doctrine/doctrine-migrations-bundle</td><td>MIT</td></tr> | ||
64 | <tr><td>doctrine/inflector</td><td>MIT</td></tr> | ||
65 | <tr><td>doctrine/instantiator</td><td>MIT</td></tr> | ||
66 | <tr><td>doctrine/lexer</td><td>MIT</td></tr> | ||
67 | <tr><td>doctrine/migrations</td><td>LGPL-2.1</td></tr> | ||
68 | <tr><td>doctrine/orm</td><td>MIT</td></tr> | ||
69 | <tr><td>friendsofsymfony/oauth-server-bundle</td><td>MIT</td></tr> | ||
70 | <tr><td>friendsofsymfony/oauth2-php</td><td>MIT</td></tr> | ||
71 | <tr><td>friendsofsymfony/rest-bundle</td><td>MIT</td></tr> | ||
72 | <tr><td>friendsofsymfony/user-bundle</td><td>MIT</td></tr> | ||
73 | <tr><td>gedmo/doctrine-extensions</td><td>MIT</td></tr> | ||
74 | <tr><td>grandt/binstring</td><td>LGPL-2.1</td></tr> | ||
75 | <tr><td>grandt/phpepub</td><td>LGPL-2.1</td></tr> | ||
76 | <tr><td>grandt/phpresizegif</td><td>LGPL-2.1</td></tr> | ||
77 | <tr><td>grandt/phpzipmerge</td><td>LGPL-2.1</td></tr> | ||
78 | <tr><td>grandt/relativepath</td><td>LGPL-2.1</td></tr> | ||
79 | <tr><td>guzzlehttp/guzzle</td><td>MIT</td></tr> | ||
80 | <tr><td>guzzlehttp/ringphp</td><td>MIT</td></tr> | ||
81 | <tr><td>guzzlehttp/streams</td><td>MIT</td></tr> | ||
82 | <tr><td>hoa/compiler</td><td>BSD-3-Clause</td></tr> | ||
83 | <tr><td>hoa/consistency</td><td>BSD-3-Clause</td></tr> | ||
84 | <tr><td>hoa/event</td><td>BSD-3-Clause</td></tr> | ||
85 | <tr><td>hoa/exception</td><td>BSD-3-Clause</td></tr> | ||
86 | <tr><td>hoa/file</td><td>BSD-3-Clause</td></tr> | ||
87 | <tr><td>hoa/iterator</td><td>BSD-3-Clause</td></tr> | ||
88 | <tr><td>hoa/math</td><td>BSD-3-Clause</td></tr> | ||
89 | <tr><td>hoa/protocol</td><td>BSD-3-Clause</td></tr> | ||
90 | <tr><td>hoa/regex</td><td>BSD-3-Clause</td></tr> | ||
91 | <tr><td>hoa/ruler</td><td>BSD-3-Clausev | ||
92 | <tr><td>hoa/stream</td><td>BSD-3-Clause</td></tr> | ||
93 | <tr><td>hoa/ustring</td><td>BSD-3-Clause</td></tr> | ||
94 | <tr><td>hoa/visitor</td><td>BSD-3-Clause</td></tr> | ||
95 | <tr><td>hoa/zformat</td><td>BSD-3-Clause</td></tr> | ||
96 | <tr><td>htmlawed/htmlawed</td><td>GPL-2.0+ or LGPL-3.0</td></tr> | ||
97 | <tr><td>incenteev/composer-parameter-handler</td><td>MIT</td></tr> | ||
98 | <tr><td>j0k3r/graby</td><td>AGPL-3.0</td></tr> | ||
99 | <tr><td>j0k3r/graby-site-config</td><td>AGPL-3.0</td></tr> | ||
100 | <tr><td>j0k3r/php-readability</td><td>Apache-2.0</td></tr> | ||
101 | <tr><td>j0k3r/safecurl</td><td>MIT</td></tr> | ||
102 | <tr><td>jdorn/sql-formatter</td><td>MIT</td></tr> | ||
103 | <tr><td>jms/metadata</td><td>Apache</td></tr> | ||
104 | <tr><td>jms/parser-lib</td><td>Apache2</td></tr> | ||
105 | <tr><td>jms/serializer</td><td>Apache2</td></tr> | ||
106 | <tr><td>jms/serializer-bundle</td><td>Apache2</td></tr> | ||
107 | <tr><td>kphoen/rulerz</td><td>MIT</td></tr> | ||
108 | <tr><td>kphoen/rulerz-bundle</td><td>MIT</td></tr> | ||
109 | <tr><td>kriswallsmith/assetic</td><td>MIT</td></tr> | ||
110 | <tr><td>lexik/form-filter-bundle</td><td>MIT</td></tr> | ||
111 | <tr><td>liip/theme-bundle</td><td>MIT</td></tr> | ||
112 | <tr><td>mgargano/simplehtmldom</td><td>MIT</td></tr> | ||
113 | <tr><td>michelf/php-markdown</td><td>BSD-3-Clause</td></tr> | ||
114 | <tr><td>monolog/monolog</td><td>MIT</td></tr> | ||
115 | <tr><td>neitanod/forceutf8</td><td>BSD-3-Clause</td></tr> | ||
116 | <tr><td>nelmio/api-doc-bundle</td><td>MIT</td></tr> | ||
117 | <tr><td>nelmio/cors-bundle</td><td>MIT</td></tr> | ||
118 | <tr><td>ocramius/proxy-manager</td><td>MIT</td></tr> | ||
119 | <tr><td>pagerfanta/pagerfanta</td><td>MIT</td></tr> | ||
120 | <tr><td>paragonie/random_compat</td><td>MIT</td></tr> | ||
121 | <tr><td>phpcollection/phpcollection</td><td>Apache2</td></tr> | ||
122 | <tr><td>phpoption/phpoption</td><td>Apache2</td></tr> | ||
123 | <tr><td>phpzip/phpzip</td><td>LGPL-2.1</td></tr> | ||
124 | <tr><td>psr/log</td><td>MIT</td></tr> | ||
125 | <tr><td>react/promise</td><td>MIT</td></tr> | ||
126 | <tr><td>scheb/two-factor-bundle</td><td>MIT</td></tr> | ||
127 | <tr><td>sensio/distribution-bundle</td><td>MIT</td></tr> | ||
128 | <tr><td>sensio/framework-extra-bundle</td><td>MIT</td></tr> | ||
129 | <tr><td>sensiolabs/security-checker</td><td>MIT</td></tr> | ||
130 | <tr><td>simplepie/simplepie</td><td>BSD-3-Clause</td></tr> | ||
131 | <tr><td>smalot/pdfparser</td><td>GPL-3.0</td></tr> | ||
132 | <tr><td>sonata-project/google-authenticator</td><td>MIT</td></tr> | ||
133 | <tr><td>stof/doctrine-extensions-bundle</td><td>MIT</td></tr> | ||
134 | <tr><td>swiftmailer/swiftmailer</td><td>MIT</td></tr> | ||
135 | <tr><td>symfony/assetic-bundle</td><td>MIT</td></tr> | ||
136 | <tr><td>symfony/monolog-bundle</td><td>MIT</td></tr> | ||
137 | <tr><td>All of Symfony</td><td>MIT-licenced</td></tr> | ||
138 | <tr><td>tecnickcom/tcpdf</td><td>LGPLv3</td></tr> | ||
139 | <tr><td>twig/extensions</td><td>MIT</td></tr> | ||
140 | <tr><td>twig/twig</td><td>BSD-3-Clause</td></tr> | ||
141 | <tr><td>wallabag/php-mobi</td><td>Apache-2.0</td></tr> | ||
142 | <tr><td>willdurand/hateoas</td><td>MIT</td></tr> | ||
143 | <tr><td>willdurand/hateoas-bundle</td><td>MIT</td></tr> | ||
144 | <tr><td>willdurand/jsonp-callback-validator</td><td>MIT</td></tr> | ||
145 | <tr><td>willdurand/negotiation</td><td>MIT</td></tr> | ||
146 | <tr><td>zendframework/zend-code</td><td>BSD-3-Clause</td></tr> | ||
147 | <tr><td>zendframework/zend-eventmanager</td><td>BSD-3-Clause</td></tr> | ||
148 | <tr><td>doctrine/data-fixtures</td><td>MIT</td></tr> | ||
149 | <tr><td>doctrine/doctrine-fixtures-bundle</td><td>MIT</td></tr> | ||
150 | <tr><td>phpdocumentor/reflection-docblock</td><td>MIT</td></tr> | ||
151 | <tr><td>phpspec/prophecy</td><td>MIT</td></tr> | ||
152 | <tr><td>phpunit/php-code-coverage</td><td>BSD-3-Clause</td></tr> | ||
153 | <tr><td>phpunit/php-file-iterator</td><td>BSD-3-Clause</td></tr> | ||
154 | <tr><td>phpunit/php-text-template</td><td>BSD-3-Clause</td></tr> | ||
155 | <tr><td>phpunit/php-timer</td><td>BSD-3-Clause</td></tr> | ||
156 | <tr><td>phpunit/php-token-stream</td><td>BSD-3-Clause</td></tr> | ||
157 | <tr><td>phpunit/phpunit</td><td>BSD-3-Clause</td></tr> | ||
158 | <tr><td>phpunit/phpunit-mock-objects</td><td>BSD-3-Clause</td></tr> | ||
159 | <tr><td>sebastian/comparator</td><td>BSD-3-Clause</td></tr> | ||
160 | <tr><td>sebastian/diff</td><td>BSD-3-Clause</td></tr> | ||
161 | <tr><td>sebastian/environment</td><td>BSD-3-Clause</td></tr> | ||
162 | <tr><td>sebastian/exporter</td><td>BSD-3-Clause</td></tr> | ||
163 | <tr><td>sebastian/global-state</td><td>BSD-3-Clause</td></tr> | ||
164 | <tr><td>sebastian/recursion-context</td><td>BSD-3-Clause</td></tr> | ||
165 | <tr><td>sebastian/version</td><td>BSD-3-Clause</td></tr> | ||
166 | <tr><td>sensio/generator-bundle</td><td>MIT</td></tr> | ||
167 | <tr><td>symfony/phpunit-bridge</td><td>MIT</td></tr> | ||
168 | </table> | ||
169 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig deleted file mode 100644 index b529a0ac..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig +++ /dev/null | |||
@@ -1,28 +0,0 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'howto.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | <h2>{{ 'howto.page_title'|trans }}</h2> | ||
7 | |||
8 | <p>{{ 'howto.page_description'|trans }}</p> | ||
9 | <ul> | ||
10 | <li><a href="{{ path('new') }}">{{ 'howto.form.description'|trans }}</a></li> | ||
11 | </ul> | ||
12 | <h3>{{ 'howto.top_menu.browser_addons'|trans }}</h3> | ||
13 | <ul> | ||
14 | <li><a href="{{ addonsUrl.firefox }}" target="_blank">{{ 'howto.browser_addons.firefox'|trans }}</a></li> | ||
15 | <li><a href="{{ addonsUrl.chrome }}" target="_blank">{{ 'howto.browser_addons.chrome'|trans }}</a></li> | ||
16 | </ul> | ||
17 | <h3>{{ 'howto.top_menu.mobile_apps'|trans }}</h3> | ||
18 | <ul> | ||
19 | <li>Android: <a href="{{ addonsUrl.f_droid }}" target="_blank">{{ 'howto.mobile_apps.android.via_f_droid'|trans }}</a> / <a href="{{ addonsUrl.google_play }}" target="_blank">{{ 'howto.mobile_apps.android.via_google_play'|trans }}</a></li> | ||
20 | <li>iOS: <a href="{{ addonsUrl.ios }}" target="_blank">{{ 'howto.mobile_apps.ios'|trans }}</a></li> | ||
21 | <li>Windows Phone: <a href="{{ addonsUrl.windows }}" target="_blank">{{ 'howto.mobile_apps.windows'|trans }}</a></li> | ||
22 | </ul> | ||
23 | <h3>{{ 'howto.top_menu.bookmarklet'|trans }}</h3> | ||
24 | <p> | ||
25 | {{ 'howto.bookmarklet.description'|trans }} | ||
26 | {% include 'WallabagCoreBundle::_bookmarklet.html.twig' %} | ||
27 | |||
28 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/quickstart.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/quickstart.html.twig deleted file mode 100644 index ea1c1cbe..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/quickstart.html.twig +++ /dev/null | |||
@@ -1,67 +0,0 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'quickstart.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | |||
7 | <h3>{{ 'quickstart.intro.title'|trans }}</h3> | ||
8 | <p>{{ 'quickstart.intro.paragraph_1'|trans }}</p> | ||
9 | <p>{{ 'quickstart.intro.paragraph_2'|trans }}</p> | ||
10 | |||
11 | <h4>{{ 'quickstart.configure.title'|trans }}</h4> | ||
12 | <ul> | ||
13 | <li><a href="{{ path('config') }}">{{ 'quickstart.configure.language'|trans }}</a></li> | ||
14 | <li><a href="{{ path('config') }}#set2">{{ 'quickstart.configure.rss'|trans }}</a></li> | ||
15 | <li><a href="{{ path('config') }}#set5">{{ 'quickstart.configure.tagging_rules'|trans }}</a></li> | ||
16 | </ul> | ||
17 | |||
18 | {% if is_granted('ROLE_SUPER_ADMIN') %} | ||
19 | <h4>{{ 'quickstart.admin.title'|trans }}</h4> | ||
20 | <p>{{ 'quickstart.admin.description'|trans }}</p> | ||
21 | <ul> | ||
22 | <li><a href="{{ path('config') }}#set6">{{ 'quickstart.admin.new_user'|trans }}</a></li> | ||
23 | <li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{{ 'quickstart.admin.analytics'|trans }}</a></li> | ||
24 | <li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{{ 'quickstart.admin.sharing'|trans }}</a></li> | ||
25 | <li><a href="{{ path('craue_config_settings_modify') }}#set-export">{{ 'quickstart.admin.export'|trans }}</a></li> | ||
26 | <li><a href="{{ path('craue_config_settings_modify') }}#set-import">{{ 'quickstart.admin.import'|trans }}</a></li> | ||
27 | </ul> | ||
28 | {% endif %} | ||
29 | |||
30 | <h4>{{ 'quickstart.first_steps.title'|trans }}</h4> | ||
31 | <ul> | ||
32 | <li><a href="{{ path('new') }}">{{ 'quickstart.first_steps.new_article'|trans }}</a></li> | ||
33 | <li><a href="{{ path('unread') }}">{{ 'quickstart.first_steps.unread_articles'|trans }}</a></li> | ||
34 | </ul> | ||
35 | |||
36 | <h4>{{ 'quickstart.migrate.title'|trans }}</h4> | ||
37 | <p>{{ 'quickstart.migrate.description'|trans }}</p> | ||
38 | <ul> | ||
39 | <li><a href="{{ path('import_pocket') }}">{{ 'quickstart.migrate.pocket'|trans }}</a></li> | ||
40 | <li><a href="{{ path('import_wallabag_v1') }}">{{ 'quickstart.migrate.wallabag_v1'|trans }}</a></li> | ||
41 | <li><a href="{{ path('import_wallabag_v2') }}">{{ 'quickstart.migrate.wallabag_v2'|trans }}</a></li> | ||
42 | <li><a href="{{ path('import_readability') }}">{{ 'quickstart.migrate.readability'|trans }}</a></li> | ||
43 | </ul> | ||
44 | |||
45 | <h4>{{ 'quickstart.developer.title'|trans }}</h4> | ||
46 | <ul> | ||
47 | <li><a href="{{ path('developer') }}">{{ 'quickstart.developer.create_application'|trans }}</a></li> | ||
48 | </ul> | ||
49 | |||
50 | <h4>{{ 'quickstart.docs.title'|trans }}</h4> | ||
51 | <ul> | ||
52 | <li><a href="http://doc.wallabag.org/en/master/user/annotations.html">{{ 'quickstart.docs.annotate'|trans }}</a></li> | ||
53 | <li><a href="http://doc.wallabag.org/en/master/user/download_articles.html">{{ 'quickstart.docs.export'|trans }}</a></li> | ||
54 | <li><a href="http://doc.wallabag.org/en/master/user/filters.html">{{ 'quickstart.docs.search_filters'|trans }}</a></li> | ||
55 | <li><a href="http://doc.wallabag.org/en/master/user/errors_during_fetching.html">{{ 'quickstart.docs.fetching_errors'|trans }}</a></li> | ||
56 | <li><a href="http://doc.wallabag.org/">{{ 'quickstart.docs.all_docs'|trans }}</a></li> | ||
57 | </ul> | ||
58 | |||
59 | <h4>{{ 'quickstart.support.title'|trans }}</h4> | ||
60 | <p>{{ 'quickstart.support.description'|trans }}</p> | ||
61 | <ul> | ||
62 | <li><a href="https://github.com/wallabag/wallabag/issues/">{{ 'quickstart.support.github'|trans }}</a></li> | ||
63 | <li><a href="mailto:hello@wallabag.org">{{ 'quickstart.support.email'|trans }}</a></li> | ||
64 | <li><a href="https://gitter.im/wallabag/wallabag">{{ 'quickstart.support.gitter'|trans }}</a></li> | ||
65 | </ul> | ||
66 | |||
67 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig index 4fd4d317..30fd0d85 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig | |||
@@ -42,6 +42,7 @@ | |||
42 | </li>--> | 42 | </li>--> |
43 | <li><a href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a></li> | 43 | <li><a href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a></li> |
44 | {% if is_granted('ROLE_SUPER_ADMIN') %} | 44 | {% if is_granted('ROLE_SUPER_ADMIN') %} |
45 | <li><a href="{{ path('user_index') }}">{{ 'menu.left.users_management'|trans }}</a></li> | ||
45 | <li><a href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a></li> | 46 | <li><a href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a></li> |
46 | {% endif %} | 47 | {% endif %} |
47 | <li><a href="{{ path('import') }}">{{ 'menu.left.import'|trans }}</a></li> | 48 | <li><a href="{{ path('import') }}">{{ 'menu.left.import'|trans }}</a></li> |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Developer/client.html.twig index 8a5da71a..8a5da71a 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Developer/client.html.twig | |||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client_parameters.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Developer/client_parameters.html.twig index b498cceb..b498cceb 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client_parameters.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Developer/client_parameters.html.twig | |||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/howto_app.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Developer/howto_app.html.twig index acbc2c88..acbc2c88 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/howto_app.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Developer/howto_app.html.twig | |||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Developer/index.html.twig index 3430c0d4..3430c0d4 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/index.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Developer/index.html.twig | |||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/_title.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/_title.html.twig index d1c2f203..d1c2f203 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/_title.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/_title.html.twig | |||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/entries.xml.twig index 288bb54f..288bb54f 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/entries.xml.twig | |||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/share.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/share.html.twig index b82b3d3d..b82b3d3d 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/share.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/share.html.twig | |||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/common/Mail/forgotPassword.txt.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Mail/forgotPassword.txt.twig new file mode 100644 index 00000000..631bcb88 --- /dev/null +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Mail/forgotPassword.txt.twig | |||
@@ -0,0 +1,6 @@ | |||
1 | Hello {{username}}! | ||
2 | |||
3 | To reset your password - please visit {{confirmationUrl}} | ||
4 | |||
5 | Regards, | ||
6 | Wallabag bot | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/_bookmarklet.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/_bookmarklet.html.twig index 966a84db..966a84db 100644 --- a/src/Wallabag/CoreBundle/Resources/views/_bookmarklet.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/_bookmarklet.html.twig | |||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/about.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/about.html.twig index d0b94279..d0b94279 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/about.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/about.html.twig | |||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/howto.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/howto.html.twig index 6a177d6b..67a10190 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/howto.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/howto.html.twig | |||
@@ -35,7 +35,7 @@ | |||
35 | <div class="col s12"> | 35 | <div class="col s12"> |
36 | <h5>{{ 'howto.top_menu.bookmarklet'|trans }}</h5> | 36 | <h5>{{ 'howto.top_menu.bookmarklet'|trans }}</h5> |
37 | {{ 'howto.bookmarklet.description'|trans }} | 37 | {{ 'howto.bookmarklet.description'|trans }} |
38 | {% include 'WallabagCoreBundle::_bookmarklet.html.twig' %} | 38 | {% include '@WallabagCore/themes/common/Static/_bookmarklet.html.twig' %} |
39 | </div> | 39 | </div> |
40 | 40 | ||
41 | </div> | 41 | </div> |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/quickstart.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/quickstart.html.twig new file mode 100644 index 00000000..226bafea --- /dev/null +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/quickstart.html.twig | |||
@@ -0,0 +1,119 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'quickstart.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | |||
7 | <div class="row"> | ||
8 | <div class="col s12"> | ||
9 | <div class="card-panel settings"> | ||
10 | |||
11 | <div class="row"> | ||
12 | <h3>{{ 'quickstart.intro.title'|trans }}</h3> | ||
13 | |||
14 | <ul class="row data"> | ||
15 | <li class="col l4 m6 s12"> | ||
16 | <div class="card teal darken-1"> | ||
17 | <div class="card-content white-text"> | ||
18 | <span class="card-title">{{ 'quickstart.configure.title'|trans }}</span> | ||
19 | <p>{{ 'quickstart.configure.description'|trans }}</p> | ||
20 | </div> | ||
21 | <div class="card-action"> | ||
22 | <ul> | ||
23 | <li><a href="{{ path('config') }}">{{ 'quickstart.configure.language'|trans }}</a></li> | ||
24 | <li><a href="{{ path('config') }}#set2">{{ 'quickstart.configure.rss'|trans }}</a></li> | ||
25 | <li><a href="{{ path('config') }}#set5">{{ 'quickstart.more'|trans }}</a></li> | ||
26 | </ul> | ||
27 | </div> | ||
28 | </div> | ||
29 | </li> | ||
30 | |||
31 | <li class="col l4 m6 s12"> | ||
32 | <div class="card green darken-1"> | ||
33 | <div class="card-content white-text"> | ||
34 | <span class="card-title">{{ 'quickstart.first_steps.title'|trans }}</span> | ||
35 | <p>{{ 'quickstart.first_steps.description'|trans }}</p> | ||
36 | </div> | ||
37 | <div class="card-action"> | ||
38 | <ul> | ||
39 | <li><a href="{{ path('new') }}">{{ 'quickstart.first_steps.new_article'|trans }}</a></li> | ||
40 | <li><a href="{{ path('unread') }}">{{ 'quickstart.first_steps.unread_articles'|trans }}</a></li> | ||
41 | </ul> | ||
42 | </div> | ||
43 | </div> | ||
44 | </li> | ||
45 | |||
46 | <li class="col l4 m6 s12"> | ||
47 | <div class="card light-green darken-1"> | ||
48 | <div class="card-content white-text"> | ||
49 | <span class="card-title">{{ 'quickstart.migrate.title'|trans }}</span> | ||
50 | <p>{{ 'quickstart.migrate.description'|trans }}</p> | ||
51 | </div> | ||
52 | <div class="card-action"> | ||
53 | <ul> | ||
54 | <li><a href="{{ path('import_pocket') }}">{{ 'quickstart.migrate.pocket'|trans }}</a></li> | ||
55 | <li><a href="{{ path('import_readability') }}">{{ 'quickstart.migrate.readability'|trans }}</a></li> | ||
56 | <li><a href="{{ path('import_instapaper') }}">{{ 'quickstart.migrate.instapaper'|trans }}</a></li> | ||
57 | <li><a href="{{ path('import') }}">{{ 'quickstart.more'|trans }}</a></li> | ||
58 | </ul> | ||
59 | </div> | ||
60 | </div> | ||
61 | </li> | ||
62 | |||
63 | <li class="col l4 m6 s12"> | ||
64 | <div class="card blue darken-1"> | ||
65 | <div class="card-content white-text"> | ||
66 | <span class="card-title">{{ 'quickstart.developer.title'|trans }}</span> | ||
67 | <p>{{ 'quickstart.developer.description'|trans }}</p> | ||
68 | </div> | ||
69 | <div class="card-action"> | ||
70 | <ul> | ||
71 | <li><a href="{{ path('developer') }}">{{ 'quickstart.developer.create_application'|trans }}</a></li> | ||
72 | <li><a href="http://doc.wallabag.org/en/master/developer/docker.html">{{ 'quickstart.developer.use_docker'|trans }}</a></li> | ||
73 | <li><a href="http://doc.wallabag.org/en/master/index.html#dev-docs">{{ 'quickstart.more'|trans }}</a></li> | ||
74 | </ul> | ||
75 | </div> | ||
76 | </div> | ||
77 | </li> | ||
78 | |||
79 | <li class="col l4 m6 s12"> | ||
80 | <div class="card light-blue darken-1"> | ||
81 | <div class="card-content white-text"> | ||
82 | <span class="card-title">{{ 'quickstart.docs.title'|trans }}</span> | ||
83 | <p>{{ 'quickstart.docs.description'|trans }}</p> | ||
84 | </div> | ||
85 | <div class="card-action"> | ||
86 | <ul> | ||
87 | <li><a href="http://doc.wallabag.org/en/master/user/annotations.html">{{ 'quickstart.docs.annotate'|trans }}</a></li> | ||
88 | <li><a href="http://doc.wallabag.org/en/master/user/download_articles.html">{{ 'quickstart.docs.export'|trans }}</a></li> | ||
89 | <li><a href="http://doc.wallabag.org/">{{ 'quickstart.docs.all_docs'|trans }}</a></li> | ||
90 | </ul> | ||
91 | </div> | ||
92 | </div> | ||
93 | </li> | ||
94 | |||
95 | <li class="col l4 m6 s12"> | ||
96 | <div class="card cyan darken-1"> | ||
97 | <div class="card-content white-text"> | ||
98 | <span class="card-title">{{ 'quickstart.support.title'|trans }}</span> | ||
99 | <p>{{ 'quickstart.support.description'|trans }}</p> | ||
100 | </div> | ||
101 | <div class="card-action"> | ||
102 | <ul> | ||
103 | <li><a href="https://github.com/wallabag/wallabag/issues/">{{ 'quickstart.support.github'|trans }}</a></li> | ||
104 | <li><a href="mailto:hello@wallabag.org">{{ 'quickstart.support.email'|trans }}</a></li> | ||
105 | <li><a href="https://gitter.im/wallabag/wallabag">{{ 'quickstart.support.gitter'|trans }}</a></li> | ||
106 | </ul> | ||
107 | </div> | ||
108 | </div> | ||
109 | </li> | ||
110 | |||
111 | </ul> | ||
112 | |||
113 | </div> | ||
114 | |||
115 | </div> | ||
116 | </div> | ||
117 | </div> | ||
118 | |||
119 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig index 5330c353..270c077f 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig | |||
@@ -16,9 +16,6 @@ | |||
16 | <li class="tab col s3"><a href="#set3">{{ 'config.tab_menu.user_info'|trans }}</a></li> | 16 | <li class="tab col s3"><a href="#set3">{{ 'config.tab_menu.user_info'|trans }}</a></li> |
17 | <li class="tab col s3"><a href="#set4">{{ 'config.tab_menu.password'|trans }}</a></li> | 17 | <li class="tab col s3"><a href="#set4">{{ 'config.tab_menu.password'|trans }}</a></li> |
18 | <li class="tab col s3"><a href="#set5">{{ 'config.tab_menu.rules'|trans }}</a></li> | 18 | <li class="tab col s3"><a href="#set5">{{ 'config.tab_menu.rules'|trans }}</a></li> |
19 | {% if is_granted('ROLE_SUPER_ADMIN') %} | ||
20 | <li class="tab col s3"><a href="#set6">{{ 'config.tab_menu.new_user'|trans }}</a></li> | ||
21 | {% endif %} | ||
22 | </ul> | 19 | </ul> |
23 | </div> | 20 | </div> |
24 | 21 | ||
@@ -157,11 +154,9 @@ | |||
157 | <div class="row"> | 154 | <div class="row"> |
158 | <div class="input-field col s12"> | 155 | <div class="input-field col s12"> |
159 | {{ 'config.form_user.two_factor_description'|trans }} | 156 | {{ 'config.form_user.two_factor_description'|trans }} |
160 | </div> | ||
161 | </div> | ||
162 | 157 | ||
163 | <div class="row"> | 158 | <br /> |
164 | <div class="input-field col s12"> | 159 | |
165 | {{ form_widget(form.user.twoFactorAuthentication) }} | 160 | {{ form_widget(form.user.twoFactorAuthentication) }} |
166 | {{ form_label(form.user.twoFactorAuthentication) }} | 161 | {{ form_label(form.user.twoFactorAuthentication) }} |
167 | {{ form_errors(form.user.twoFactorAuthentication) }} | 162 | {{ form_errors(form.user.twoFactorAuthentication) }} |
@@ -218,6 +213,9 @@ | |||
218 | « {{ tagging_rule.rule }} » | 213 | « {{ tagging_rule.rule }} » |
219 | {{ 'config.form_rules.then_tag_as_label'|trans }} | 214 | {{ 'config.form_rules.then_tag_as_label'|trans }} |
220 | « {{ tagging_rule.tags|join(', ') }} » | 215 | « {{ tagging_rule.tags|join(', ') }} » |
216 | <a href="{{ path('edit_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.edit_rule_label'|trans }}"> | ||
217 | <i class="tool grey-text mode_edit material-icons">mode_edit</i> | ||
218 | </a> | ||
221 | <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}"> | 219 | <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}"> |
222 | <i class="tool grey-text delete material-icons">delete</i> | 220 | <i class="tool grey-text delete material-icons">delete</i> |
223 | </a> | 221 | </a> |
@@ -336,49 +334,6 @@ | |||
336 | </div> | 334 | </div> |
337 | </div> | 335 | </div> |
338 | </div> | 336 | </div> |
339 | |||
340 | {% if is_granted('ROLE_SUPER_ADMIN') %} | ||
341 | <div id="set6" class="col s12"> | ||
342 | {{ form_start(form.new_user) }} | ||
343 | {{ form_errors(form.new_user) }} | ||
344 | |||
345 | <div class="row"> | ||
346 | <div class="input-field col s12"> | ||
347 | {{ form_label(form.new_user.username) }} | ||
348 | {{ form_errors(form.new_user.username) }} | ||
349 | {{ form_widget(form.new_user.username) }} | ||
350 | </div> | ||
351 | </div> | ||
352 | |||
353 | <div class="row"> | ||
354 | <div class="input-field col s12"> | ||
355 | {{ form_label(form.new_user.plainPassword.first) }} | ||
356 | {{ form_errors(form.new_user.plainPassword.first) }} | ||
357 | {{ form_widget(form.new_user.plainPassword.first) }} | ||
358 | </div> | ||
359 | </div> | ||
360 | |||
361 | <div class="row"> | ||
362 | <div class="input-field col s12"> | ||
363 | {{ form_label(form.new_user.plainPassword.second) }} | ||
364 | {{ form_errors(form.new_user.plainPassword.second) }} | ||
365 | {{ form_widget(form.new_user.plainPassword.second) }} | ||
366 | </div> | ||
367 | </div> | ||
368 | |||
369 | <div class="row"> | ||
370 | <div class="input-field col s12"> | ||
371 | {{ form_label(form.new_user.email) }} | ||
372 | {{ form_errors(form.new_user.email) }} | ||
373 | {{ form_widget(form.new_user.email) }} | ||
374 | </div> | ||
375 | </div> | ||
376 | |||
377 | {{ form_widget(form.new_user.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} | ||
378 | {{ form_rest(form.new_user) }} | ||
379 | </form> | ||
380 | </div> | ||
381 | {% endif %} | ||
382 | </div> | 337 | </div> |
383 | 338 | ||
384 | </div> | 339 | </div> |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client.html.twig deleted file mode 100644 index 8a5da71a..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client.html.twig +++ /dev/null | |||
@@ -1,37 +0,0 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'developer.client.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | <div class="row"> | ||
7 | <div class="col s12"> | ||
8 | <div class="card-panel settings"> | ||
9 | |||
10 | <div class="row"> | ||
11 | <p>{{ 'developer.client.page_description'|trans }}</p> | ||
12 | {{ form_start(form) }} | ||
13 | {{ form_errors(form) }} | ||
14 | |||
15 | <div class="input-field col s12"> | ||
16 | {{ form_label(form.name) }} | ||
17 | {{ form_errors(form.name) }} | ||
18 | {{ form_widget(form.name) }} | ||
19 | </div> | ||
20 | |||
21 | <div class="input-field col s12"> | ||
22 | {{ form_label(form.redirect_uris) }} | ||
23 | {{ form_errors(form.redirect_uris) }} | ||
24 | {{ form_widget(form.redirect_uris) }} | ||
25 | </div> | ||
26 | |||
27 | <a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{{ 'developer.client.action_back'|trans }}</a> | ||
28 | {{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} | ||
29 | |||
30 | {{ form_rest(form) }} | ||
31 | </div> | ||
32 | |||
33 | </div> | ||
34 | </div> | ||
35 | </div> | ||
36 | |||
37 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client_parameters.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client_parameters.html.twig deleted file mode 100644 index b498cceb..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client_parameters.html.twig +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'developer.client_parameter.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | <div class="row"> | ||
7 | <div class="col s12"> | ||
8 | <div class="card-panel settings"> | ||
9 | <div class="row"> | ||
10 | <p>{{ 'developer.client_parameter.page_description'|trans }}</p> | ||
11 | <ul> | ||
12 | <li>{{ 'developer.client_parameter.field_name'|trans }}: <strong><pre>{{ client_name }}</pre></strong></li> | ||
13 | <li>{{ 'developer.client_parameter.field_id'|trans }}: <strong><pre>{{ client_id }}</pre></strong></li> | ||
14 | <li>{{ 'developer.client_parameter.field_secret'|trans }}: <strong><pre>{{ client_secret }}</pre></strong></li> | ||
15 | </ul> | ||
16 | |||
17 | <a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{{ 'developer.client_parameter.back'|trans }}</a> | ||
18 | <a href="{{ path('developer_howto_firstapp') }}" class="btn waves-effect waves-light">{{ 'developer.client_parameter.read_howto'|trans }}</a> | ||
19 | </div> | ||
20 | </div> | ||
21 | </div> | ||
22 | </div> | ||
23 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/howto_app.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/howto_app.html.twig deleted file mode 100644 index acbc2c88..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/howto_app.html.twig +++ /dev/null | |||
@@ -1,63 +0,0 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'developer.howto.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block css %} | ||
6 | {{ parent() }} | ||
7 | <link rel="stylesheet" href="{{ asset('https://cdnjs.cloudflare.com/ajax/libs/prism/1.4.1/themes/prism-dark.min.css') }}"> | ||
8 | {% endblock %} | ||
9 | |||
10 | {% block content %} | ||
11 | <div class="row"> | ||
12 | <div class="col s12"> | ||
13 | <div class="card-panel settings"> | ||
14 | |||
15 | <div class="row"> | ||
16 | <p>{{ 'developer.howto.description.paragraph_1'|trans|raw }}</p> | ||
17 | <p>{{ 'developer.howto.description.paragraph_2'|trans }}</p> | ||
18 | <p>{{ 'developer.howto.description.paragraph_3'|trans({'%link%': path('developer_create_client')})|raw }}</p> | ||
19 | <p>{{ 'developer.howto.description.paragraph_4'|trans }}</p> | ||
20 | <p> | ||
21 | <pre><code class="language-bash">http POST http://v2.wallabag.org/oauth/v2/token \ | ||
22 | grant_type=password \ | ||
23 | client_id=12_5um6nz50ceg4088c0840wwc0kgg44g00kk84og044ggkscso0k \ | ||
24 | client_secret=3qd12zpeaxes8cwg8c0404g888co4wo8kc4gcw0occww8cgw4k \ | ||
25 | username=yourUsername \ | ||
26 | password=yourPassw0rd</code></pre> | ||
27 | </p> | ||
28 | <p>{{ 'developer.howto.description.paragraph_5'|trans }}</p> | ||
29 | <p> | ||
30 | <pre><code class="language-bash">HTTP/1.1 200 OK | ||
31 | Cache-Control: no-store, private | ||
32 | Connection: close | ||
33 | Content-Type: application/json | ||
34 | Date: Tue, 06 Oct 2015 18:24:03 GMT | ||
35 | Host: localhost:8000 | ||
36 | Pragma: no-cache | ||
37 | X-Debug-Token: be00a1 | ||
38 | X-Debug-Token-Link: /profiler/be00a1 | ||
39 | X-Powered-By: PHP/5.5.9-1ubuntu4.13 | ||
40 | { | ||
41 | "access_token": "ZWFjNjA3ZWMwYWVmYzRkYTBlMmQ3NTllYmVhOGJiZDE0ZTg1NjE4MjczOTVlNzM0ZTRlMWQ0MmRlMmYwNTk5Mw", | ||
42 | "expires_in": 3600, | ||
43 | "refresh_token": "ODBjODU1NWUwNmUzZTBkNDQ5YWVlZTVlMjQ2Y2I0OWM2NTM1ZGM2M2Y3MDhjMTViM2U2MzYxYzRkMDk5ODRlZg", | ||
44 | "scope": null, | ||
45 | "token_type": "bearer" | ||
46 | }</code></pre> | ||
47 | </p> | ||
48 | <p>{{ 'developer.howto.description.paragraph_6'|trans }}</p> | ||
49 | <p> | ||
50 | <pre><code class="language-bash">http GET http://v2.wallabag.org/api/entries.json \ | ||
51 | "Authorization:Bearer ZWFjNjA3ZWMwYWVmYzRkYTBlMmQ3NTllYmVhOGJiZDE0ZTg1NjE4MjczOTVlNzM0ZTRlMWQ0MmRlMmYwNTk5Mw"</code></pre> | ||
52 | </p> | ||
53 | <p>{{ 'developer.howto.description.paragraph_7'|trans }}</p> | ||
54 | <p>{{ 'developer.howto.description.paragraph_8'|trans({'%link%': path('nelmio_api_doc_index')})|raw }}</p> | ||
55 | <p><a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{{ 'developer.howto.back'|trans }}</a></p> | ||
56 | </div> | ||
57 | |||
58 | </div> | ||
59 | </div> | ||
60 | </div> | ||
61 | <script src="{{ asset('https://cdnjs.cloudflare.com/ajax/libs/prism/1.4.1/prism.min.js') }}"></script> | ||
62 | <script src="{{ asset('https://cdnjs.cloudflare.com/ajax/libs/prism/1.4.1/components/prism-bash.min.js') }}"></script> | ||
63 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/index.html.twig deleted file mode 100644 index 3430c0d4..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/index.html.twig +++ /dev/null | |||
@@ -1,69 +0,0 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'developer.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | <div class="row"> | ||
7 | <div class="col s12"> | ||
8 | <div class="card-panel settings"> | ||
9 | |||
10 | <div class="row"> | ||
11 | <h3>{{ 'developer.welcome_message'|trans }}</h3> | ||
12 | |||
13 | <h4>{{ 'developer.documentation'|trans }}</h4> | ||
14 | |||
15 | <ul> | ||
16 | <li><a href="{{ path('developer_howto_firstapp') }}">{{ 'developer.how_to_first_app'|trans }}</a></li> | ||
17 | <li><a href="http://doc.wallabag.org/en/master/developer/api.html">{{ 'developer.full_documentation'|trans }}</a></li> | ||
18 | <li><a href="{{ path('nelmio_api_doc_index') }}">{{ 'developer.list_methods'|trans }}</a></li> | ||
19 | </ul> | ||
20 | |||
21 | <h4>{{ 'developer.clients.title'|trans }}</h4> | ||
22 | <ul> | ||
23 | <li><a href="{{ path('developer_create_client') }}">{{ 'developer.clients.create_new'|trans }}</a></li> | ||
24 | </ul> | ||
25 | |||
26 | <h4>{{ 'developer.existing_clients.title'|trans }}</h4> | ||
27 | {% if clients %} | ||
28 | <ul class="collapsible" data-collapsible="expandable"> | ||
29 | {% for client in clients %} | ||
30 | <li> | ||
31 | <div class="collapsible-header">{{ client.name }} - #{{ client.id }}</div> | ||
32 | <div class="collapsible-body"> | ||
33 | <table class="striped"> | ||
34 | <tr> | ||
35 | <td>{{ 'developer.existing_clients.field_id'|trans }}</td> | ||
36 | <td><strong><code>{{ client.id }}_{{ client.randomId }}</code></strong></td> | ||
37 | </tr> | ||
38 | <tr> | ||
39 | <td>{{ 'developer.existing_clients.field_secret'|trans }}</td> | ||
40 | <td><strong><code>{{ client.secret }}</code></strong></td> | ||
41 | </tr> | ||
42 | <tr> | ||
43 | <td>{{ 'developer.existing_clients.field_uris'|trans }}</td> | ||
44 | <td><strong><code>{{ client.redirectUris|json_encode() }}</code></strong></td> | ||
45 | </tr> | ||
46 | <tr> | ||
47 | <td>{{ 'developer.existing_clients.field_grant_types'|trans }}</td> | ||
48 | <td><strong><code>{{ client.allowedGrantTypes|json_encode() }}</code></strong></td> | ||
49 | </tr> | ||
50 | </table> | ||
51 | <p> | ||
52 | {{ 'developer.remove.warn_message_1'|trans({'%name%': client.name }) }}<br/> | ||
53 | {{ 'developer.remove.warn_message_2'|trans({'%name%': client.name }) }}<br/> | ||
54 | <a class="waves-effect waves-light red btn" href="{{ path('developer_delete_client', {'id': client.id}) }}">{{ 'developer.remove.action'|trans({'%name%': client.name }) }}</a> | ||
55 | </p> | ||
56 | </div> | ||
57 | </li> | ||
58 | {% endfor %} | ||
59 | </ul> | ||
60 | {% else %} | ||
61 | {{ 'developer.existing_clients.no_client'|trans }} | ||
62 | {% endif %} | ||
63 | </div> | ||
64 | |||
65 | </div> | ||
66 | </div> | ||
67 | </div> | ||
68 | |||
69 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig index 1c5057dd..01fde953 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig | |||
@@ -1,7 +1,7 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | 1 | {% extends "WallabagCoreBundle::layout.html.twig" %} |
2 | 2 | ||
3 | {% block title %} | 3 | {% block title %} |
4 | {% include "@WallabagCore/themes/_title.html.twig" %} | 4 | {% include "@WallabagCore/themes/common/Entry/_title.html.twig" %} |
5 | {% endblock %} | 5 | {% endblock %} |
6 | 6 | ||
7 | {% block content %} | 7 | {% block content %} |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig deleted file mode 100644 index 288bb54f..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/"> | ||
3 | <channel> | ||
4 | <title>wallabag — {{type}} feed</title> | ||
5 | <link>{{ url('unread') }}</link> | ||
6 | <pubDate>{{ "now"|date('D, d M Y H:i:s') }}</pubDate> | ||
7 | <generator>wallabag</generator> | ||
8 | <description>wallabag {{type}} elements</description> | ||
9 | |||
10 | {% for entry in entries %} | ||
11 | |||
12 | <item> | ||
13 | <title><![CDATA[{{ entry.title }}]]></title> | ||
14 | <source url="{{ url('view', { 'id': entry.id }) }}">wallabag</source> | ||
15 | <link>{{ entry.url }}</link> | ||
16 | <guid>{{ entry.url }}</guid> | ||
17 | <pubDate>{{ entry.createdAt|date('D, d M Y H:i:s') }}</pubDate> | ||
18 | <description> | ||
19 | <![CDATA[{%- if entry.readingTime > 0 -%}{{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}{%- else -%}{{ 'entry.list.reading_time_less_one_minute'|trans|raw }}{%- endif %}{{ entry.content|raw -}}]]> | ||
20 | </description> | ||
21 | </item> | ||
22 | |||
23 | {% endfor %} | ||
24 | |||
25 | </channel> | ||
26 | </rss> | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Exception/error.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Exception/error.html.twig new file mode 100644 index 00000000..6be78edb --- /dev/null +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Exception/error.html.twig | |||
@@ -0,0 +1,30 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'error.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block body_class %}login{% endblock %} | ||
6 | |||
7 | {% block menu %}{% endblock %} | ||
8 | {% block messages %}{% endblock %} | ||
9 | |||
10 | {% block content %} | ||
11 | <main class="valign-wrapper"> | ||
12 | <div class="valign row"> | ||
13 | <div class="card sw"> | ||
14 | <div class="center"><img src="{{ asset('bundles/wallabagcore/themes/_global/img/logo-other_themes.png') }}" alt="wallabag logo" /></div> | ||
15 | <div class="card-content"> | ||
16 | <div class="row"> | ||
17 | <h5>{{ status_code }}: {{ status_text }}</h5> | ||
18 | <p>{{ exception.message }}</p> | ||
19 | {# {% for trace in exception.trace %} | ||
20 | <p>{{ trace.class }} - {{ trace.type }} - {{ trace.file }} - {{ trace.line }}</p> | ||
21 | {% endfor %} #} | ||
22 | </div> | ||
23 | </div> | ||
24 | </div> | ||
25 | </div> | ||
26 | </main> | ||
27 | {% endblock %} | ||
28 | |||
29 | {% block footer %} | ||
30 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/quickstart.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/quickstart.html.twig deleted file mode 100644 index 8cbf4ab4..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/quickstart.html.twig +++ /dev/null | |||
@@ -1,77 +0,0 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'quickstart.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | |||
7 | <div class="row"> | ||
8 | <div class="col s12"> | ||
9 | <div class="card-panel settings"> | ||
10 | |||
11 | <div class="row"> | ||
12 | <h3>{{ 'quickstart.intro.title'|trans }}</h3> | ||
13 | <p>{{ 'quickstart.intro.paragraph_1'|trans }}</p> | ||
14 | <p>{{ 'quickstart.intro.paragraph_2'|trans }}</p> | ||
15 | |||
16 | <h4>{{ 'quickstart.configure.title'|trans }}</h4> | ||
17 | <ul> | ||
18 | <li><a href="{{ path('config') }}">{{ 'quickstart.configure.language'|trans }}</a></li> | ||
19 | <li><a href="{{ path('config') }}#set2">{{ 'quickstart.configure.rss'|trans }}</a></li> | ||
20 | <li><a href="{{ path('config') }}#set5">{{ 'quickstart.configure.tagging_rules'|trans }}</a></li> | ||
21 | </ul> | ||
22 | |||
23 | {% if is_granted('ROLE_SUPER_ADMIN') %} | ||
24 | <h4>{{ 'quickstart.admin.title'|trans }}</h4> | ||
25 | <p>{{ 'quickstart.admin.description'|trans }}</p> | ||
26 | <ul> | ||
27 | <li><a href="{{ path('config') }}#set6">{{ 'quickstart.admin.new_user'|trans }}</a></li> | ||
28 | <li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{{ 'quickstart.admin.analytics'|trans }}</a></li> | ||
29 | <li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{{ 'quickstart.admin.sharing'|trans }}</a></li> | ||
30 | <li><a href="{{ path('craue_config_settings_modify') }}#set-export">{{ 'quickstart.admin.export'|trans }}</a></li> | ||
31 | <li><a href="{{ path('craue_config_settings_modify') }}#set-import">{{ 'quickstart.admin.import'|trans }}</a></li> | ||
32 | </ul> | ||
33 | {% endif %} | ||
34 | |||
35 | <h4>{{ 'quickstart.first_steps.title'|trans }}</h4> | ||
36 | <ul> | ||
37 | <li><a href="{{ path('new') }}">{{ 'quickstart.first_steps.new_article'|trans }}</a></li> | ||
38 | <li><a href="{{ path('unread') }}">{{ 'quickstart.first_steps.unread_articles'|trans }}</a></li> | ||
39 | </ul> | ||
40 | |||
41 | <h4>{{ 'quickstart.migrate.title'|trans }}</h4> | ||
42 | <p>{{ 'quickstart.migrate.description'|trans }}</p> | ||
43 | <ul> | ||
44 | <li><a href="{{ path('import_pocket') }}">{{ 'quickstart.migrate.pocket'|trans }}</a></li> | ||
45 | <li><a href="{{ path('import_wallabag_v1') }}">{{ 'quickstart.migrate.wallabag_v1'|trans }}</a></li> | ||
46 | <li><a href="{{ path('import_wallabag_v2') }}">{{ 'quickstart.migrate.wallabag_v2'|trans }}</a></li> | ||
47 | <li><a href="{{ path('import_readability') }}">{{ 'quickstart.migrate.readability'|trans }}</a></li> | ||
48 | </ul> | ||
49 | |||
50 | <h4>{{ 'quickstart.developer.title'|trans }}</h4> | ||
51 | <ul> | ||
52 | <li><a href="{{ path('developer') }}">{{ 'quickstart.developer.create_application'|trans }}</a></li> | ||
53 | </ul> | ||
54 | |||
55 | <h4>{{ 'quickstart.docs.title'|trans }}</h4> | ||
56 | <ul> | ||
57 | <li><a href="http://doc.wallabag.org/en/master/user/annotations.html">{{ 'quickstart.docs.annotate'|trans }}</a></li> | ||
58 | <li><a href="http://doc.wallabag.org/en/master/user/download_articles.html">{{ 'quickstart.docs.export'|trans }}</a></li> | ||
59 | <li><a href="http://doc.wallabag.org/en/master/user/filters.html">{{ 'quickstart.docs.search_filters'|trans }}</a></li> | ||
60 | <li><a href="http://doc.wallabag.org/en/master/user/errors_during_fetching.html">{{ 'quickstart.docs.fetching_errors'|trans }}</a></li> | ||
61 | <li><a href="http://doc.wallabag.org/">{{ 'quickstart.docs.all_docs'|trans }}</a></li> | ||
62 | </ul> | ||
63 | |||
64 | <h4>{{ 'quickstart.support.title'|trans }}</h4> | ||
65 | <p>{{ 'quickstart.support.description'|trans }}</p> | ||
66 | <ul> | ||
67 | <li><a href="https://github.com/wallabag/wallabag/issues/">{{ 'quickstart.support.github'|trans }}</a></li> | ||
68 | <li><a href="mailto:hello@wallabag.org">{{ 'quickstart.support.email'|trans }}</a></li> | ||
69 | <li><a href="https://gitter.im/wallabag/wallabag">{{ 'quickstart.support.gitter'|trans }}</a></li> | ||
70 | </ul> | ||
71 | </div> | ||
72 | |||
73 | </div> | ||
74 | </div> | ||
75 | </div> | ||
76 | |||
77 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig index df05e2a4..c7d6d70d 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig | |||
@@ -45,7 +45,7 @@ | |||
45 | <li class="bold {% if currentRoute == 'archive' %}active{% endif %}"> | 45 | <li class="bold {% if currentRoute == 'archive' %}active{% endif %}"> |
46 | <a class="waves-effect" href="{{ path('archive') }}">{{ 'menu.left.archive'|trans }} <span class="numberItems grey-text">{{ count_entries('archive') }}</span></a> | 46 | <a class="waves-effect" href="{{ path('archive') }}">{{ 'menu.left.archive'|trans }} <span class="numberItems grey-text">{{ count_entries('archive') }}</span></a> |
47 | </li> | 47 | </li> |
48 | <li class="bold border-bottom {% if currentRoute == 'all' %}active{% endif %}"> | 48 | <li class="bold {% if currentRoute == 'all' %}active{% endif %}"> |
49 | <a class="waves-effect" href="{{ path('all') }}">{{ 'menu.left.all_articles'|trans }} <span class="numberItems grey-text">{{ count_entries('all') }}</span></a> | 49 | <a class="waves-effect" href="{{ path('all') }}">{{ 'menu.left.all_articles'|trans }} <span class="numberItems grey-text">{{ count_entries('all') }}</span></a> |
50 | </li> | 50 | </li> |
51 | <li class="bold border-bottom {% if currentRoute == 'tags' %}active{% endif %}"> | 51 | <li class="bold border-bottom {% if currentRoute == 'tags' %}active{% endif %}"> |
@@ -55,6 +55,10 @@ | |||
55 | <a class="waves-effect" href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a> | 55 | <a class="waves-effect" href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a> |
56 | </li> | 56 | </li> |
57 | {% if is_granted('ROLE_SUPER_ADMIN') %} | 57 | {% if is_granted('ROLE_SUPER_ADMIN') %} |
58 | <li class="bold {% if currentRoute starts with 'user_' %}active{% endif %}"> | ||
59 | <a class="waves-effect" href="{{ path('user_index') }}">{{ 'menu.left.users_management'|trans }}</a> | ||
60 | </li> | ||
61 | |||
58 | <li class="bold border-bottom {% if currentRoute == 'craue_config_settings_modify' %}active{% endif %}"> | 62 | <li class="bold border-bottom {% if currentRoute == 'craue_config_settings_modify' %}active{% endif %}"> |
59 | <a class="waves-effect" href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a> | 63 | <a class="waves-effect" href="{{ path('craue_config_settings_modify') }}">{{ 'menu.left.internal_settings'|trans }}</a> |
60 | </li> | 64 | </li> |
@@ -122,8 +126,19 @@ | |||
122 | <footer class="page-footer cyan darken-2"> | 126 | <footer class="page-footer cyan darken-2"> |
123 | <div class="footer-copyright"> | 127 | <div class="footer-copyright"> |
124 | <div class="container"> | 128 | <div class="container"> |
125 | <p>{{ 'footer.wallabag.powered_by'|trans }} <a target="_blank" href="https://wallabag.org" class="grey-text text-lighten-4">wallabag</a></p> | 129 | <div class="row"> |
126 | <a class="grey-text text-lighten-4 right" href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a> | 130 | <div class="col s8"> |
131 | <p> | ||
132 | {{ display_stats() }} | ||
133 | </p> | ||
134 | </div> | ||
135 | <div class="col s4"> | ||
136 | <p> | ||
137 | {{ 'footer.wallabag.powered_by'|trans }} <a target="_blank" href="https://wallabag.org" class="grey-text text-lighten-4">wallabag</a> – | ||
138 | <a class="grey-text text-lighten-4" href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans|lower }}</a> | ||
139 | </p> | ||
140 | </div> | ||
141 | </div> | ||
127 | </div> | 142 | </div> |
128 | </div> | 143 | </div> |
129 | </footer> | 144 | </footer> |
diff --git a/src/Wallabag/CoreBundle/Twig/WallabagExtension.php b/src/Wallabag/CoreBundle/Twig/WallabagExtension.php index fb4c7412..783cde3e 100644 --- a/src/Wallabag/CoreBundle/Twig/WallabagExtension.php +++ b/src/Wallabag/CoreBundle/Twig/WallabagExtension.php | |||
@@ -5,6 +5,7 @@ namespace Wallabag\CoreBundle\Twig; | |||
5 | use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; | 5 | use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; |
6 | use Wallabag\CoreBundle\Repository\EntryRepository; | 6 | use Wallabag\CoreBundle\Repository\EntryRepository; |
7 | use Wallabag\CoreBundle\Repository\TagRepository; | 7 | use Wallabag\CoreBundle\Repository\TagRepository; |
8 | use Symfony\Component\Translation\TranslatorInterface; | ||
8 | 9 | ||
9 | class WallabagExtension extends \Twig_Extension implements \Twig_Extension_GlobalsInterface | 10 | class WallabagExtension extends \Twig_Extension implements \Twig_Extension_GlobalsInterface |
10 | { | 11 | { |
@@ -12,13 +13,15 @@ class WallabagExtension extends \Twig_Extension implements \Twig_Extension_Globa | |||
12 | private $entryRepository; | 13 | private $entryRepository; |
13 | private $tagRepository; | 14 | private $tagRepository; |
14 | private $lifeTime; | 15 | private $lifeTime; |
16 | private $translator; | ||
15 | 17 | ||
16 | public function __construct(EntryRepository $entryRepository = null, TagRepository $tagRepository = null, TokenStorageInterface $tokenStorage = null, $lifeTime = 0) | 18 | public function __construct(EntryRepository $entryRepository, TagRepository $tagRepository, TokenStorageInterface $tokenStorage, $lifeTime, TranslatorInterface $translator) |
17 | { | 19 | { |
18 | $this->entryRepository = $entryRepository; | 20 | $this->entryRepository = $entryRepository; |
19 | $this->tagRepository = $tagRepository; | 21 | $this->tagRepository = $tagRepository; |
20 | $this->tokenStorage = $tokenStorage; | 22 | $this->tokenStorage = $tokenStorage; |
21 | $this->lifeTime = $lifeTime; | 23 | $this->lifeTime = $lifeTime; |
24 | $this->translator = $translator; | ||
22 | } | 25 | } |
23 | 26 | ||
24 | public function getFilters() | 27 | public function getFilters() |
@@ -33,6 +36,7 @@ class WallabagExtension extends \Twig_Extension implements \Twig_Extension_Globa | |||
33 | return array( | 36 | return array( |
34 | new \Twig_SimpleFunction('count_entries', [$this, 'countEntries']), | 37 | new \Twig_SimpleFunction('count_entries', [$this, 'countEntries']), |
35 | new \Twig_SimpleFunction('count_tags', [$this, 'countTags']), | 38 | new \Twig_SimpleFunction('count_tags', [$this, 'countTags']), |
39 | new \Twig_SimpleFunction('display_stats', [$this, 'displayStats']), | ||
36 | ); | 40 | ); |
37 | } | 41 | } |
38 | 42 | ||
@@ -107,6 +111,40 @@ class WallabagExtension extends \Twig_Extension implements \Twig_Extension_Globa | |||
107 | return $this->tagRepository->countAllTags($user->getId()); | 111 | return $this->tagRepository->countAllTags($user->getId()); |
108 | } | 112 | } |
109 | 113 | ||
114 | /** | ||
115 | * Display a single line about reading stats. | ||
116 | * | ||
117 | * @return string | ||
118 | */ | ||
119 | public function displayStats() | ||
120 | { | ||
121 | $user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null; | ||
122 | |||
123 | if (null === $user || !is_object($user)) { | ||
124 | return 0; | ||
125 | } | ||
126 | |||
127 | $query = $this->entryRepository->getBuilderForArchiveByUser($user->getId()) | ||
128 | ->select('e.id') | ||
129 | ->groupBy('e.id') | ||
130 | ->getQuery(); | ||
131 | |||
132 | $query->useQueryCache(true); | ||
133 | $query->useResultCache(true); | ||
134 | $query->setResultCacheLifetime($this->lifeTime); | ||
135 | |||
136 | $nbArchives = count($query->getArrayResult()); | ||
137 | |||
138 | $interval = $user->getCreatedAt()->diff(new \DateTime('now')); | ||
139 | $nbDays = (int) $interval->format('%a') ?: 1; | ||
140 | |||
141 | return $this->translator->trans('footer.stats', [ | ||
142 | '%user_creation%' => $user->getCreatedAt()->format('F jS, Y'), | ||
143 | '%nb_archives%' => $nbArchives, | ||
144 | '%per_day%' => round($nbArchives / $nbDays, 2), | ||
145 | ]); | ||
146 | } | ||
147 | |||
110 | public function getName() | 148 | public function getName() |
111 | { | 149 | { |
112 | return 'wallabag_extension'; | 150 | return 'wallabag_extension'; |
diff --git a/src/Wallabag/ImportBundle/Command/RedisWorkerCommand.php b/src/Wallabag/ImportBundle/Command/RedisWorkerCommand.php index 5f90e00f..c2c11f11 100644 --- a/src/Wallabag/ImportBundle/Command/RedisWorkerCommand.php +++ b/src/Wallabag/ImportBundle/Command/RedisWorkerCommand.php | |||
@@ -17,7 +17,7 @@ class RedisWorkerCommand extends ContainerAwareCommand | |||
17 | $this | 17 | $this |
18 | ->setName('wallabag:import:redis-worker') | 18 | ->setName('wallabag:import:redis-worker') |
19 | ->setDescription('Launch Redis worker') | 19 | ->setDescription('Launch Redis worker') |
20 | ->addArgument('serviceName', InputArgument::REQUIRED, 'Service to use: wallabag_v1, wallabag_v2, pocket or readability') | 20 | ->addArgument('serviceName', InputArgument::REQUIRED, 'Service to use: wallabag_v1, wallabag_v2, pocket, readability, firefox, chrome or instapaper') |
21 | ->addOption('maxIterations', '', InputOption::VALUE_OPTIONAL, 'Number of iterations before stoping', false) | 21 | ->addOption('maxIterations', '', InputOption::VALUE_OPTIONAL, 'Number of iterations before stoping', false) |
22 | ; | 22 | ; |
23 | } | 23 | } |
diff --git a/src/Wallabag/ImportBundle/Controller/ImportController.php b/src/Wallabag/ImportBundle/Controller/ImportController.php index 36a2a399..15de75ff 100644 --- a/src/Wallabag/ImportBundle/Controller/ImportController.php +++ b/src/Wallabag/ImportBundle/Controller/ImportController.php | |||
@@ -38,7 +38,11 @@ class ImportController extends Controller | |||
38 | $nbRabbitMessages = $this->getTotalMessageInRabbitQueue('pocket') | 38 | $nbRabbitMessages = $this->getTotalMessageInRabbitQueue('pocket') |
39 | + $this->getTotalMessageInRabbitQueue('readability') | 39 | + $this->getTotalMessageInRabbitQueue('readability') |
40 | + $this->getTotalMessageInRabbitQueue('wallabag_v1') | 40 | + $this->getTotalMessageInRabbitQueue('wallabag_v1') |
41 | + $this->getTotalMessageInRabbitQueue('wallabag_v2'); | 41 | + $this->getTotalMessageInRabbitQueue('wallabag_v2') |
42 | + $this->getTotalMessageInRabbitQueue('firefox') | ||
43 | + $this->getTotalMessageInRabbitQueue('chrome') | ||
44 | + $this->getTotalMessageInRabbitQueue('instapaper') | ||
45 | ; | ||
42 | } catch (\Exception $e) { | 46 | } catch (\Exception $e) { |
43 | $rabbitNotInstalled = true; | 47 | $rabbitNotInstalled = true; |
44 | } | 48 | } |
@@ -49,7 +53,11 @@ class ImportController extends Controller | |||
49 | $nbRedisMessages = $redis->llen('wallabag.import.pocket') | 53 | $nbRedisMessages = $redis->llen('wallabag.import.pocket') |
50 | + $redis->llen('wallabag.import.readability') | 54 | + $redis->llen('wallabag.import.readability') |
51 | + $redis->llen('wallabag.import.wallabag_v1') | 55 | + $redis->llen('wallabag.import.wallabag_v1') |
52 | + $redis->llen('wallabag.import.wallabag_v2'); | 56 | + $redis->llen('wallabag.import.wallabag_v2') |
57 | + $redis->llen('wallabag.import.firefox') | ||
58 | + $redis->llen('wallabag.import.chrome') | ||
59 | + $redis->llen('wallabag.import.instapaper') | ||
60 | ; | ||
53 | } catch (\Exception $e) { | 61 | } catch (\Exception $e) { |
54 | $redisNotInstalled = true; | 62 | $redisNotInstalled = true; |
55 | } | 63 | } |
diff --git a/src/Wallabag/ImportBundle/Controller/InstapaperController.php b/src/Wallabag/ImportBundle/Controller/InstapaperController.php new file mode 100644 index 00000000..c3fc8a39 --- /dev/null +++ b/src/Wallabag/ImportBundle/Controller/InstapaperController.php | |||
@@ -0,0 +1,77 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Controller; | ||
4 | |||
5 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; | ||
6 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | ||
7 | use Symfony\Component\HttpFoundation\Request; | ||
8 | use Wallabag\ImportBundle\Form\Type\UploadImportType; | ||
9 | |||
10 | class InstapaperController extends Controller | ||
11 | { | ||
12 | /** | ||
13 | * @Route("/instapaper", name="import_instapaper") | ||
14 | */ | ||
15 | public function indexAction(Request $request) | ||
16 | { | ||
17 | $form = $this->createForm(UploadImportType::class); | ||
18 | $form->handleRequest($request); | ||
19 | |||
20 | $instapaper = $this->get('wallabag_import.instapaper.import'); | ||
21 | $instapaper->setUser($this->getUser()); | ||
22 | |||
23 | if ($this->get('craue_config')->get('import_with_rabbitmq')) { | ||
24 | $instapaper->setProducer($this->get('old_sound_rabbit_mq.import_instapaper_producer')); | ||
25 | } elseif ($this->get('craue_config')->get('import_with_redis')) { | ||
26 | $instapaper->setProducer($this->get('wallabag_import.producer.redis.instapaper')); | ||
27 | } | ||
28 | |||
29 | if ($form->isValid()) { | ||
30 | $file = $form->get('file')->getData(); | ||
31 | $markAsRead = $form->get('mark_as_read')->getData(); | ||
32 | $name = 'instapaper_'.$this->getUser()->getId().'.csv'; | ||
33 | |||
34 | if (null !== $file && in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes')) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) { | ||
35 | $res = $instapaper | ||
36 | ->setFilepath($this->getParameter('wallabag_import.resource_dir').'/'.$name) | ||
37 | ->setMarkAsRead($markAsRead) | ||
38 | ->import(); | ||
39 | |||
40 | $message = 'flashes.import.notice.failed'; | ||
41 | |||
42 | if (true === $res) { | ||
43 | $summary = $instapaper->getSummary(); | ||
44 | $message = $this->get('translator')->trans('flashes.import.notice.summary', [ | ||
45 | '%imported%' => $summary['imported'], | ||
46 | '%skipped%' => $summary['skipped'], | ||
47 | ]); | ||
48 | |||
49 | if (0 < $summary['queued']) { | ||
50 | $message = $this->get('translator')->trans('flashes.import.notice.summary_with_queue', [ | ||
51 | '%queued%' => $summary['queued'], | ||
52 | ]); | ||
53 | } | ||
54 | |||
55 | unlink($this->getParameter('wallabag_import.resource_dir').'/'.$name); | ||
56 | } | ||
57 | |||
58 | $this->get('session')->getFlashBag()->add( | ||
59 | 'notice', | ||
60 | $message | ||
61 | ); | ||
62 | |||
63 | return $this->redirect($this->generateUrl('homepage')); | ||
64 | } else { | ||
65 | $this->get('session')->getFlashBag()->add( | ||
66 | 'notice', | ||
67 | 'flashes.import.notice.failed_on_file' | ||
68 | ); | ||
69 | } | ||
70 | } | ||
71 | |||
72 | return $this->render('WallabagImportBundle:Instapaper:index.html.twig', [ | ||
73 | 'form' => $form->createView(), | ||
74 | 'import' => $instapaper, | ||
75 | ]); | ||
76 | } | ||
77 | } | ||
diff --git a/src/Wallabag/ImportBundle/Import/AbstractImport.php b/src/Wallabag/ImportBundle/Import/AbstractImport.php index a1a14576..764b390a 100644 --- a/src/Wallabag/ImportBundle/Import/AbstractImport.php +++ b/src/Wallabag/ImportBundle/Import/AbstractImport.php | |||
@@ -106,6 +106,10 @@ abstract class AbstractImport implements ImportInterface | |||
106 | $i = 1; | 106 | $i = 1; |
107 | 107 | ||
108 | foreach ($entries as $importedEntry) { | 108 | foreach ($entries as $importedEntry) { |
109 | if ($this->markAsRead) { | ||
110 | $importedEntry = $this->setEntryAsRead($importedEntry); | ||
111 | } | ||
112 | |||
109 | $entry = $this->parseEntry($importedEntry); | 113 | $entry = $this->parseEntry($importedEntry); |
110 | 114 | ||
111 | if (null === $entry) { | 115 | if (null === $entry) { |
diff --git a/src/Wallabag/ImportBundle/Import/BrowserImport.php b/src/Wallabag/ImportBundle/Import/BrowserImport.php index e15443c4..9d75685b 100644 --- a/src/Wallabag/ImportBundle/Import/BrowserImport.php +++ b/src/Wallabag/ImportBundle/Import/BrowserImport.php | |||
@@ -45,6 +45,8 @@ abstract class BrowserImport extends AbstractImport | |||
45 | $data = json_decode(file_get_contents($this->filepath), true); | 45 | $data = json_decode(file_get_contents($this->filepath), true); |
46 | 46 | ||
47 | if (empty($data)) { | 47 | if (empty($data)) { |
48 | $this->logger->error('Wallabag Browser: no entries in imported file'); | ||
49 | |||
48 | return false; | 50 | return false; |
49 | } | 51 | } |
50 | 52 | ||
diff --git a/src/Wallabag/ImportBundle/Import/InstapaperImport.php b/src/Wallabag/ImportBundle/Import/InstapaperImport.php new file mode 100644 index 00000000..cf4c785c --- /dev/null +++ b/src/Wallabag/ImportBundle/Import/InstapaperImport.php | |||
@@ -0,0 +1,140 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Import; | ||
4 | |||
5 | use Wallabag\CoreBundle\Entity\Entry; | ||
6 | |||
7 | class InstapaperImport extends AbstractImport | ||
8 | { | ||
9 | private $filepath; | ||
10 | |||
11 | /** | ||
12 | * {@inheritdoc} | ||
13 | */ | ||
14 | public function getName() | ||
15 | { | ||
16 | return 'Instapaper'; | ||
17 | } | ||
18 | |||
19 | /** | ||
20 | * {@inheritdoc} | ||
21 | */ | ||
22 | public function getUrl() | ||
23 | { | ||
24 | return 'import_instapaper'; | ||
25 | } | ||
26 | |||
27 | /** | ||
28 | * {@inheritdoc} | ||
29 | */ | ||
30 | public function getDescription() | ||
31 | { | ||
32 | return 'import.instapaper.description'; | ||
33 | } | ||
34 | |||
35 | /** | ||
36 | * Set file path to the json file. | ||
37 | * | ||
38 | * @param string $filepath | ||
39 | */ | ||
40 | public function setFilepath($filepath) | ||
41 | { | ||
42 | $this->filepath = $filepath; | ||
43 | |||
44 | return $this; | ||
45 | } | ||
46 | |||
47 | /** | ||
48 | * {@inheritdoc} | ||
49 | */ | ||
50 | public function import() | ||
51 | { | ||
52 | if (!$this->user) { | ||
53 | $this->logger->error('InstapaperImport: user is not defined'); | ||
54 | |||
55 | return false; | ||
56 | } | ||
57 | |||
58 | if (!file_exists($this->filepath) || !is_readable($this->filepath)) { | ||
59 | $this->logger->error('InstapaperImport: unable to read file', ['filepath' => $this->filepath]); | ||
60 | |||
61 | return false; | ||
62 | } | ||
63 | |||
64 | $entries = []; | ||
65 | $handle = fopen($this->filepath, 'r'); | ||
66 | while (($data = fgetcsv($handle, 10240)) !== false) { | ||
67 | if ('URL' === $data[0]) { | ||
68 | continue; | ||
69 | } | ||
70 | |||
71 | $entries[] = [ | ||
72 | 'url' => $data[0], | ||
73 | 'title' => $data[1], | ||
74 | 'status' => $data[3], | ||
75 | 'is_archived' => $data[3] === 'Archive' || $data[3] === 'Starred', | ||
76 | 'is_starred' => $data[3] === 'Starred', | ||
77 | 'content_type' => '', | ||
78 | 'language' => '', | ||
79 | ]; | ||
80 | } | ||
81 | fclose($handle); | ||
82 | |||
83 | if (empty($entries)) { | ||
84 | $this->logger->error('InstapaperImport: no entries in imported file'); | ||
85 | |||
86 | return false; | ||
87 | } | ||
88 | |||
89 | if ($this->producer) { | ||
90 | $this->parseEntriesForProducer($entries); | ||
91 | |||
92 | return true; | ||
93 | } | ||
94 | |||
95 | $this->parseEntries($entries); | ||
96 | |||
97 | return true; | ||
98 | } | ||
99 | |||
100 | /** | ||
101 | * {@inheritdoc} | ||
102 | */ | ||
103 | public function parseEntry(array $importedEntry) | ||
104 | { | ||
105 | $existingEntry = $this->em | ||
106 | ->getRepository('WallabagCoreBundle:Entry') | ||
107 | ->findByUrlAndUserId($importedEntry['url'], $this->user->getId()); | ||
108 | |||
109 | if (false !== $existingEntry) { | ||
110 | ++$this->skippedEntries; | ||
111 | |||
112 | return; | ||
113 | } | ||
114 | |||
115 | $entry = new Entry($this->user); | ||
116 | $entry->setUrl($importedEntry['url']); | ||
117 | $entry->setTitle($importedEntry['title']); | ||
118 | |||
119 | // update entry with content (in case fetching failed, the given entry will be return) | ||
120 | $entry = $this->fetchContent($entry, $importedEntry['url'], $importedEntry); | ||
121 | |||
122 | $entry->setArchived($importedEntry['is_archived']); | ||
123 | $entry->setStarred($importedEntry['is_starred']); | ||
124 | |||
125 | $this->em->persist($entry); | ||
126 | ++$this->importedEntries; | ||
127 | |||
128 | return $entry; | ||
129 | } | ||
130 | |||
131 | /** | ||
132 | * {@inheritdoc} | ||
133 | */ | ||
134 | protected function setEntryAsRead(array $importedEntry) | ||
135 | { | ||
136 | $importedEntry['is_archived'] = 1; | ||
137 | |||
138 | return $importedEntry; | ||
139 | } | ||
140 | } | ||
diff --git a/src/Wallabag/ImportBundle/Import/ReadabilityImport.php b/src/Wallabag/ImportBundle/Import/ReadabilityImport.php index fa2b7053..b8c0f777 100644 --- a/src/Wallabag/ImportBundle/Import/ReadabilityImport.php +++ b/src/Wallabag/ImportBundle/Import/ReadabilityImport.php | |||
@@ -64,6 +64,8 @@ class ReadabilityImport extends AbstractImport | |||
64 | $data = json_decode(file_get_contents($this->filepath), true); | 64 | $data = json_decode(file_get_contents($this->filepath), true); |
65 | 65 | ||
66 | if (empty($data) || empty($data['bookmarks'])) { | 66 | if (empty($data) || empty($data['bookmarks'])) { |
67 | $this->logger->error('ReadabilityImport: no entries in imported file'); | ||
68 | |||
67 | return false; | 69 | return false; |
68 | } | 70 | } |
69 | 71 | ||
diff --git a/src/Wallabag/ImportBundle/Import/WallabagImport.php b/src/Wallabag/ImportBundle/Import/WallabagImport.php index 3754e4a9..702da057 100644 --- a/src/Wallabag/ImportBundle/Import/WallabagImport.php +++ b/src/Wallabag/ImportBundle/Import/WallabagImport.php | |||
@@ -58,6 +58,8 @@ abstract class WallabagImport extends AbstractImport | |||
58 | $data = json_decode(file_get_contents($this->filepath), true); | 58 | $data = json_decode(file_get_contents($this->filepath), true); |
59 | 59 | ||
60 | if (empty($data)) { | 60 | if (empty($data)) { |
61 | $this->logger->error('WallabagImport: no entries in imported file'); | ||
62 | |||
61 | return false; | 63 | return false; |
62 | } | 64 | } |
63 | 65 | ||
diff --git a/src/Wallabag/ImportBundle/Resources/config/rabbit.yml b/src/Wallabag/ImportBundle/Resources/config/rabbit.yml index 6ada6302..70b8a0d4 100644 --- a/src/Wallabag/ImportBundle/Resources/config/rabbit.yml +++ b/src/Wallabag/ImportBundle/Resources/config/rabbit.yml | |||
@@ -14,6 +14,13 @@ services: | |||
14 | - "@wallabag_user.user_repository" | 14 | - "@wallabag_user.user_repository" |
15 | - "@wallabag_import.readability.import" | 15 | - "@wallabag_import.readability.import" |
16 | - "@logger" | 16 | - "@logger" |
17 | wallabag_import.consumer.amqp.instapaper: | ||
18 | class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer | ||
19 | arguments: | ||
20 | - "@doctrine.orm.entity_manager" | ||
21 | - "@wallabag_user.user_repository" | ||
22 | - "@wallabag_import.instapaper.import" | ||
23 | - "@logger" | ||
17 | wallabag_import.consumer.amqp.wallabag_v1: | 24 | wallabag_import.consumer.amqp.wallabag_v1: |
18 | class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer | 25 | class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer |
19 | arguments: | 26 | arguments: |
diff --git a/src/Wallabag/ImportBundle/Resources/config/redis.yml b/src/Wallabag/ImportBundle/Resources/config/redis.yml index c9c2cf26..0a81e1b5 100644 --- a/src/Wallabag/ImportBundle/Resources/config/redis.yml +++ b/src/Wallabag/ImportBundle/Resources/config/redis.yml | |||
@@ -20,6 +20,26 @@ services: | |||
20 | - "@wallabag_import.readability.import" | 20 | - "@wallabag_import.readability.import" |
21 | - "@logger" | 21 | - "@logger" |
22 | 22 | ||
23 | # instapaper | ||
24 | wallabag_import.queue.redis.instapaper: | ||
25 | class: Simpleue\Queue\RedisQueue | ||
26 | arguments: | ||
27 | - "@wallabag_core.redis.client" | ||
28 | - "wallabag.import.instapaper" | ||
29 | |||
30 | wallabag_import.producer.redis.instapaper: | ||
31 | class: Wallabag\ImportBundle\Redis\Producer | ||
32 | arguments: | ||
33 | - "@wallabag_import.queue.redis.instapaper" | ||
34 | |||
35 | wallabag_import.consumer.redis.instapaper: | ||
36 | class: Wallabag\ImportBundle\Consumer\RedisEntryConsumer | ||
37 | arguments: | ||
38 | - "@doctrine.orm.entity_manager" | ||
39 | - "@wallabag_user.user_repository" | ||
40 | - "@wallabag_import.instapaper.import" | ||
41 | - "@logger" | ||
42 | |||
23 | 43 | ||
24 | wallabag_import.queue.redis.pocket: | 44 | wallabag_import.queue.redis.pocket: |
25 | class: Simpleue\Queue\RedisQueue | 45 | class: Simpleue\Queue\RedisQueue |
diff --git a/src/Wallabag/ImportBundle/Resources/config/services.yml b/src/Wallabag/ImportBundle/Resources/config/services.yml index 990f336d..89adc71b 100644 --- a/src/Wallabag/ImportBundle/Resources/config/services.yml +++ b/src/Wallabag/ImportBundle/Resources/config/services.yml | |||
@@ -57,6 +57,16 @@ services: | |||
57 | tags: | 57 | tags: |
58 | - { name: wallabag_import.import, alias: readability } | 58 | - { name: wallabag_import.import, alias: readability } |
59 | 59 | ||
60 | wallabag_import.instapaper.import: | ||
61 | class: Wallabag\ImportBundle\Import\InstapaperImport | ||
62 | arguments: | ||
63 | - "@doctrine.orm.entity_manager" | ||
64 | - "@wallabag_core.content_proxy" | ||
65 | calls: | ||
66 | - [ setLogger, [ "@logger" ]] | ||
67 | tags: | ||
68 | - { name: wallabag_import.import, alias: instapaper } | ||
69 | |||
60 | wallabag_import.firefox.import: | 70 | wallabag_import.firefox.import: |
61 | class: Wallabag\ImportBundle\Import\FirefoxImport | 71 | class: Wallabag\ImportBundle\Import\FirefoxImport |
62 | arguments: | 72 | arguments: |
diff --git a/src/Wallabag/ImportBundle/Resources/views/Instapaper/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/Instapaper/index.html.twig new file mode 100644 index 00000000..5789361f --- /dev/null +++ b/src/Wallabag/ImportBundle/Resources/views/Instapaper/index.html.twig | |||
@@ -0,0 +1,45 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'import.instapaper.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | <div class="row"> | ||
7 | <div class="col s12"> | ||
8 | <div class="card-panel settings"> | ||
9 | {% include 'WallabagImportBundle:Import:_workerEnabled.html.twig' %} | ||
10 | |||
11 | <div class="row"> | ||
12 | <blockquote>{{ import.description|trans }}</blockquote> | ||
13 | <p>{{ 'import.instapaper.how_to'|trans }}</p> | ||
14 | |||
15 | <div class="col s12"> | ||
16 | {{ form_start(form, {'method': 'POST'}) }} | ||
17 | {{ form_errors(form) }} | ||
18 | <div class="row"> | ||
19 | <div class="file-field input-field col s12"> | ||
20 | {{ form_errors(form.file) }} | ||
21 | <div class="btn"> | ||
22 | <span>{{ form.file.vars.label|trans }}</span> | ||
23 | {{ form_widget(form.file) }} | ||
24 | </div> | ||
25 | <div class="file-path-wrapper"> | ||
26 | <input class="file-path validate" type="text"> | ||
27 | </div> | ||
28 | </div> | ||
29 | <div class="input-field col s6 with-checkbox"> | ||
30 | <h6>{{ 'import.form.mark_as_read_title'|trans }}</h6> | ||
31 | {{ form_widget(form.mark_as_read) }} | ||
32 | {{ form_label(form.mark_as_read) }} | ||
33 | </div> | ||
34 | </div> | ||
35 | |||
36 | {{ form_widget(form.save, { 'attr': {'class': 'btn waves-effect waves-light'} }) }} | ||
37 | |||
38 | {{ form_rest(form) }} | ||
39 | </form> | ||
40 | </div> | ||
41 | </div> | ||
42 | </div> | ||
43 | </div> | ||
44 | </div> | ||
45 | {% endblock %} | ||
diff --git a/src/Wallabag/UserBundle/Controller/ManageController.php b/src/Wallabag/UserBundle/Controller/ManageController.php new file mode 100644 index 00000000..92ee2b41 --- /dev/null +++ b/src/Wallabag/UserBundle/Controller/ManageController.php | |||
@@ -0,0 +1,149 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\UserBundle\Controller; | ||
4 | |||
5 | use FOS\UserBundle\Event\UserEvent; | ||
6 | use FOS\UserBundle\FOSUserEvents; | ||
7 | use Symfony\Component\HttpFoundation\Request; | ||
8 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; | ||
9 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; | ||
10 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | ||
11 | use Wallabag\UserBundle\Entity\User; | ||
12 | use Wallabag\CoreBundle\Entity\Config; | ||
13 | |||
14 | /** | ||
15 | * User controller. | ||
16 | */ | ||
17 | class ManageController extends Controller | ||
18 | { | ||
19 | /** | ||
20 | * Lists all User entities. | ||
21 | * | ||
22 | * @Route("/", name="user_index") | ||
23 | * @Method("GET") | ||
24 | */ | ||
25 | public function indexAction() | ||
26 | { | ||
27 | $em = $this->getDoctrine()->getManager(); | ||
28 | |||
29 | $users = $em->getRepository('WallabagUserBundle:User')->findAll(); | ||
30 | |||
31 | return $this->render('WallabagUserBundle:Manage:index.html.twig', array( | ||
32 | 'users' => $users, | ||
33 | )); | ||
34 | } | ||
35 | |||
36 | /** | ||
37 | * Creates a new User entity. | ||
38 | * | ||
39 | * @Route("/new", name="user_new") | ||
40 | * @Method({"GET", "POST"}) | ||
41 | */ | ||
42 | public function newAction(Request $request) | ||
43 | { | ||
44 | $userManager = $this->container->get('fos_user.user_manager'); | ||
45 | |||
46 | $user = $userManager->createUser(); | ||
47 | // enable created user by default | ||
48 | $user->setEnabled(true); | ||
49 | |||
50 | $form = $this->createForm('Wallabag\UserBundle\Form\NewUserType', $user, [ | ||
51 | 'validation_groups' => ['Profile'], | ||
52 | ]); | ||
53 | $form->handleRequest($request); | ||
54 | |||
55 | if ($form->isSubmitted() && $form->isValid()) { | ||
56 | $userManager->updateUser($user); | ||
57 | |||
58 | // dispatch a created event so the associated config will be created | ||
59 | $event = new UserEvent($user, $request); | ||
60 | $this->get('event_dispatcher')->dispatch(FOSUserEvents::USER_CREATED, $event); | ||
61 | |||
62 | $this->get('session')->getFlashBag()->add( | ||
63 | 'notice', | ||
64 | $this->get('translator')->trans('flashes.user.notice.added', ['%username%' => $user->getUsername()]) | ||
65 | ); | ||
66 | |||
67 | return $this->redirectToRoute('user_edit', array('id' => $user->getId())); | ||
68 | } | ||
69 | |||
70 | return $this->render('WallabagUserBundle:Manage:new.html.twig', array( | ||
71 | 'user' => $user, | ||
72 | 'form' => $form->createView(), | ||
73 | )); | ||
74 | } | ||
75 | |||
76 | /** | ||
77 | * Displays a form to edit an existing User entity. | ||
78 | * | ||
79 | * @Route("/{id}/edit", name="user_edit") | ||
80 | * @Method({"GET", "POST"}) | ||
81 | */ | ||
82 | public function editAction(Request $request, User $user) | ||
83 | { | ||
84 | $deleteForm = $this->createDeleteForm($user); | ||
85 | $editForm = $this->createForm('Wallabag\UserBundle\Form\UserType', $user); | ||
86 | $editForm->handleRequest($request); | ||
87 | |||
88 | if ($editForm->isSubmitted() && $editForm->isValid()) { | ||
89 | $em = $this->getDoctrine()->getManager(); | ||
90 | $em->persist($user); | ||
91 | $em->flush(); | ||
92 | |||
93 | $this->get('session')->getFlashBag()->add( | ||
94 | 'notice', | ||
95 | $this->get('translator')->trans('flashes.user.notice.updated', ['%username%' => $user->getUsername()]) | ||
96 | ); | ||
97 | |||
98 | return $this->redirectToRoute('user_edit', array('id' => $user->getId())); | ||
99 | } | ||
100 | |||
101 | return $this->render('WallabagUserBundle:Manage:edit.html.twig', array( | ||
102 | 'user' => $user, | ||
103 | 'edit_form' => $editForm->createView(), | ||
104 | 'delete_form' => $deleteForm->createView(), | ||
105 | 'twofactor_auth' => $this->getParameter('twofactor_auth'), | ||
106 | )); | ||
107 | } | ||
108 | |||
109 | /** | ||
110 | * Deletes a User entity. | ||
111 | * | ||
112 | * @Route("/{id}", name="user_delete") | ||
113 | * @Method("DELETE") | ||
114 | */ | ||
115 | public function deleteAction(Request $request, User $user) | ||
116 | { | ||
117 | $form = $this->createDeleteForm($user); | ||
118 | $form->handleRequest($request); | ||
119 | |||
120 | if ($form->isSubmitted() && $form->isValid()) { | ||
121 | $this->get('session')->getFlashBag()->add( | ||
122 | 'notice', | ||
123 | $this->get('translator')->trans('flashes.user.notice.deleted', ['%username%' => $user->getUsername()]) | ||
124 | ); | ||
125 | |||
126 | $em = $this->getDoctrine()->getManager(); | ||
127 | $em->remove($user); | ||
128 | $em->flush(); | ||
129 | } | ||
130 | |||
131 | return $this->redirectToRoute('user_index'); | ||
132 | } | ||
133 | |||
134 | /** | ||
135 | * Creates a form to delete a User entity. | ||
136 | * | ||
137 | * @param User $user The User entity | ||
138 | * | ||
139 | * @return \Symfony\Component\Form\Form The form | ||
140 | */ | ||
141 | private function createDeleteForm(User $user) | ||
142 | { | ||
143 | return $this->createFormBuilder() | ||
144 | ->setAction($this->generateUrl('user_delete', array('id' => $user->getId()))) | ||
145 | ->setMethod('DELETE') | ||
146 | ->getForm() | ||
147 | ; | ||
148 | } | ||
149 | } | ||
diff --git a/src/Wallabag/UserBundle/Entity/User.php b/src/Wallabag/UserBundle/Entity/User.php index dfed8e47..d98ae76a 100644 --- a/src/Wallabag/UserBundle/Entity/User.php +++ b/src/Wallabag/UserBundle/Entity/User.php | |||
@@ -64,7 +64,7 @@ class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterf | |||
64 | protected $entries; | 64 | protected $entries; |
65 | 65 | ||
66 | /** | 66 | /** |
67 | * @ORM\OneToOne(targetEntity="Wallabag\CoreBundle\Entity\Config", mappedBy="user") | 67 | * @ORM\OneToOne(targetEntity="Wallabag\CoreBundle\Entity\Config", mappedBy="user", cascade={"remove"}) |
68 | */ | 68 | */ |
69 | protected $config; | 69 | protected $config; |
70 | 70 | ||
diff --git a/src/Wallabag/CoreBundle/EventListener/RegistrationConfirmedListener.php b/src/Wallabag/UserBundle/EventListener/CreateConfigListener.php index 10586126..15f4ac3d 100644 --- a/src/Wallabag/CoreBundle/EventListener/RegistrationConfirmedListener.php +++ b/src/Wallabag/UserBundle/EventListener/CreateConfigListener.php | |||
@@ -1,39 +1,49 @@ | |||
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace Wallabag\CoreBundle\EventListener; | 3 | namespace Wallabag\UserBundle\EventListener; |
4 | 4 | ||
5 | use Doctrine\ORM\EntityManager; | 5 | use Doctrine\ORM\EntityManager; |
6 | use FOS\UserBundle\Event\FilterUserResponseEvent; | 6 | use FOS\UserBundle\Event\UserEvent; |
7 | use FOS\UserBundle\FOSUserEvents; | 7 | use FOS\UserBundle\FOSUserEvents; |
8 | use Symfony\Component\EventDispatcher\EventDispatcherInterface; | 8 | use Symfony\Component\EventDispatcher\EventDispatcherInterface; |
9 | use Symfony\Component\EventDispatcher\EventSubscriberInterface; | 9 | use Symfony\Component\EventDispatcher\EventSubscriberInterface; |
10 | use Wallabag\CoreBundle\Entity\Config; | 10 | use Wallabag\CoreBundle\Entity\Config; |
11 | 11 | ||
12 | class RegistrationConfirmedListener implements EventSubscriberInterface | 12 | /** |
13 | * This listener will create the associated configuration when a user register. | ||
14 | * This configuration will be created right after the registration (no matter if it needs an email validation). | ||
15 | */ | ||
16 | class CreateConfigListener implements EventSubscriberInterface | ||
13 | { | 17 | { |
14 | private $em; | 18 | private $em; |
15 | private $theme; | 19 | private $theme; |
16 | private $itemsOnPage; | 20 | private $itemsOnPage; |
17 | private $rssLimit; | 21 | private $rssLimit; |
18 | private $language; | 22 | private $language; |
23 | private $readingSpeed; | ||
19 | 24 | ||
20 | public function __construct(EntityManager $em, $theme, $itemsOnPage, $rssLimit, $language) | 25 | public function __construct(EntityManager $em, $theme, $itemsOnPage, $rssLimit, $language, $readingSpeed) |
21 | { | 26 | { |
22 | $this->em = $em; | 27 | $this->em = $em; |
23 | $this->theme = $theme; | 28 | $this->theme = $theme; |
24 | $this->itemsOnPage = $itemsOnPage; | 29 | $this->itemsOnPage = $itemsOnPage; |
25 | $this->rssLimit = $rssLimit; | 30 | $this->rssLimit = $rssLimit; |
26 | $this->language = $language; | 31 | $this->language = $language; |
32 | $this->readingSpeed = $readingSpeed; | ||
27 | } | 33 | } |
28 | 34 | ||
29 | public static function getSubscribedEvents() | 35 | public static function getSubscribedEvents() |
30 | { | 36 | { |
31 | return [ | 37 | return [ |
32 | FOSUserEvents::REGISTRATION_CONFIRMED => 'authenticate', | 38 | // when a user register using the normal form |
39 | FOSUserEvents::REGISTRATION_COMPLETED => 'createConfig', | ||
40 | // when we manually create a user using the command line | ||
41 | // OR when we create it from the config UI | ||
42 | FOSUserEvents::USER_CREATED => 'createConfig', | ||
33 | ]; | 43 | ]; |
34 | } | 44 | } |
35 | 45 | ||
36 | public function authenticate(FilterUserResponseEvent $event, $eventName = null, EventDispatcherInterface $eventDispatcher = null) | 46 | public function createConfig(UserEvent $event, $eventName = null, EventDispatcherInterface $eventDispatcher = null) |
37 | { | 47 | { |
38 | if (!$event->getUser()->isEnabled()) { | 48 | if (!$event->getUser()->isEnabled()) { |
39 | return; | 49 | return; |
@@ -44,6 +54,8 @@ class RegistrationConfirmedListener implements EventSubscriberInterface | |||
44 | $config->setItemsPerPage($this->itemsOnPage); | 54 | $config->setItemsPerPage($this->itemsOnPage); |
45 | $config->setRssLimit($this->rssLimit); | 55 | $config->setRssLimit($this->rssLimit); |
46 | $config->setLanguage($this->language); | 56 | $config->setLanguage($this->language); |
57 | $config->setReadingSpeed($this->readingSpeed); | ||
58 | |||
47 | $this->em->persist($config); | 59 | $this->em->persist($config); |
48 | $this->em->flush(); | 60 | $this->em->flush(); |
49 | } | 61 | } |
diff --git a/src/Wallabag/CoreBundle/Form/Type/NewUserType.php b/src/Wallabag/UserBundle/Form/NewUserType.php index 6a6f63d1..ad5a2405 100644 --- a/src/Wallabag/CoreBundle/Form/Type/NewUserType.php +++ b/src/Wallabag/UserBundle/Form/NewUserType.php | |||
@@ -1,6 +1,6 @@ | |||
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace Wallabag\CoreBundle\Form\Type; | 3 | namespace Wallabag\UserBundle\Form; |
4 | 4 | ||
5 | use Symfony\Component\Form\AbstractType; | 5 | use Symfony\Component\Form\AbstractType; |
6 | use Symfony\Component\Form\Extension\Core\Type\EmailType; | 6 | use Symfony\Component\Form\Extension\Core\Type\EmailType; |
@@ -19,13 +19,13 @@ class NewUserType extends AbstractType | |||
19 | $builder | 19 | $builder |
20 | ->add('username', TextType::class, [ | 20 | ->add('username', TextType::class, [ |
21 | 'required' => true, | 21 | 'required' => true, |
22 | 'label' => 'config.form_new_user.username_label', | 22 | 'label' => 'user.form.username_label', |
23 | ]) | 23 | ]) |
24 | ->add('plainPassword', RepeatedType::class, [ | 24 | ->add('plainPassword', RepeatedType::class, [ |
25 | 'type' => PasswordType::class, | 25 | 'type' => PasswordType::class, |
26 | 'invalid_message' => 'validator.password_must_match', | 26 | 'invalid_message' => 'validator.password_must_match', |
27 | 'first_options' => ['label' => 'config.form_new_user.password_label'], | 27 | 'first_options' => ['label' => 'user.form.password_label'], |
28 | 'second_options' => ['label' => 'config.form_new_user.repeat_new_password_label'], | 28 | 'second_options' => ['label' => 'user.form.repeat_new_password_label'], |
29 | 'constraints' => [ | 29 | 'constraints' => [ |
30 | new Constraints\Length([ | 30 | new Constraints\Length([ |
31 | 'min' => 8, | 31 | 'min' => 8, |
@@ -33,13 +33,13 @@ class NewUserType extends AbstractType | |||
33 | ]), | 33 | ]), |
34 | new Constraints\NotBlank(), | 34 | new Constraints\NotBlank(), |
35 | ], | 35 | ], |
36 | 'label' => 'config.form_new_user.plain_password_label', | 36 | 'label' => 'user.form.plain_password_label', |
37 | ]) | 37 | ]) |
38 | ->add('email', EmailType::class, [ | 38 | ->add('email', EmailType::class, [ |
39 | 'label' => 'config.form_new_user.email_label', | 39 | 'label' => 'user.form.email_label', |
40 | ]) | 40 | ]) |
41 | ->add('save', SubmitType::class, [ | 41 | ->add('save', SubmitType::class, [ |
42 | 'label' => 'config.form.save', | 42 | 'label' => 'user.form.save', |
43 | ]) | 43 | ]) |
44 | ; | 44 | ; |
45 | } | 45 | } |
diff --git a/src/Wallabag/UserBundle/Form/UserType.php b/src/Wallabag/UserBundle/Form/UserType.php new file mode 100644 index 00000000..cfa67793 --- /dev/null +++ b/src/Wallabag/UserBundle/Form/UserType.php | |||
@@ -0,0 +1,61 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\UserBundle\Form; | ||
4 | |||
5 | use Symfony\Component\Form\AbstractType; | ||
6 | use Symfony\Component\Form\FormBuilderInterface; | ||
7 | use Symfony\Component\OptionsResolver\OptionsResolver; | ||
8 | use Symfony\Component\Form\Extension\Core\Type\CheckboxType; | ||
9 | use Symfony\Component\Form\Extension\Core\Type\SubmitType; | ||
10 | use Symfony\Component\Form\Extension\Core\Type\TextType; | ||
11 | use Symfony\Component\Form\Extension\Core\Type\EmailType; | ||
12 | |||
13 | class UserType extends AbstractType | ||
14 | { | ||
15 | /** | ||
16 | * @param FormBuilderInterface $builder | ||
17 | * @param array $options | ||
18 | */ | ||
19 | public function buildForm(FormBuilderInterface $builder, array $options) | ||
20 | { | ||
21 | $builder | ||
22 | ->add('name', TextType::class, [ | ||
23 | 'required' => false, | ||
24 | 'label' => 'user.form.name_label', | ||
25 | ]) | ||
26 | ->add('username', TextType::class, [ | ||
27 | 'required' => true, | ||
28 | 'label' => 'user.form.username_label', | ||
29 | ]) | ||
30 | ->add('email', EmailType::class, [ | ||
31 | 'required' => true, | ||
32 | 'label' => 'user.form.email_label', | ||
33 | ]) | ||
34 | ->add('enabled', CheckboxType::class, [ | ||
35 | 'required' => false, | ||
36 | 'label' => 'user.form.enabled_label', | ||
37 | ]) | ||
38 | ->add('locked', CheckboxType::class, [ | ||
39 | 'required' => false, | ||
40 | 'label' => 'user.form.locked_label', | ||
41 | ]) | ||
42 | ->add('twoFactorAuthentication', CheckboxType::class, [ | ||
43 | 'required' => false, | ||
44 | 'label' => 'user.form.twofactor_label', | ||
45 | ]) | ||
46 | ->add('save', SubmitType::class, [ | ||
47 | 'label' => 'user.form.save', | ||
48 | ]) | ||
49 | ; | ||
50 | } | ||
51 | |||
52 | /** | ||
53 | * @param OptionsResolver $resolver | ||
54 | */ | ||
55 | public function configureOptions(OptionsResolver $resolver) | ||
56 | { | ||
57 | $resolver->setDefaults(array( | ||
58 | 'data_class' => 'Wallabag\UserBundle\Entity\User', | ||
59 | )); | ||
60 | } | ||
61 | } | ||
diff --git a/src/Wallabag/UserBundle/Resources/config/services.yml b/src/Wallabag/UserBundle/Resources/config/services.yml index 05830555..eb9c8e67 100644 --- a/src/Wallabag/UserBundle/Resources/config/services.yml +++ b/src/Wallabag/UserBundle/Resources/config/services.yml | |||
@@ -20,3 +20,15 @@ services: | |||
20 | factory: [ "@doctrine.orm.default_entity_manager", getRepository ] | 20 | factory: [ "@doctrine.orm.default_entity_manager", getRepository ] |
21 | arguments: | 21 | arguments: |
22 | - WallabagUserBundle:User | 22 | - WallabagUserBundle:User |
23 | |||
24 | wallabag_user.create_config: | ||
25 | class: Wallabag\UserBundle\EventListener\CreateConfigListener | ||
26 | arguments: | ||
27 | - "@doctrine.orm.entity_manager" | ||
28 | - "%wallabag_core.theme%" | ||
29 | - "%wallabag_core.items_on_page%" | ||
30 | - "%wallabag_core.rss_limit%" | ||
31 | - "%wallabag_core.language%" | ||
32 | - "%wallabag_core.reading_speed%" | ||
33 | tags: | ||
34 | - { name: kernel.event_subscriber } | ||
diff --git a/src/Wallabag/UserBundle/Resources/views/Manage/edit.html.twig b/src/Wallabag/UserBundle/Resources/views/Manage/edit.html.twig new file mode 100644 index 00000000..d5cf99c3 --- /dev/null +++ b/src/Wallabag/UserBundle/Resources/views/Manage/edit.html.twig | |||
@@ -0,0 +1,86 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'user.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | |||
7 | <div class="row"> | ||
8 | <div class="col s12"> | ||
9 | <div class="card-panel"> | ||
10 | <div class="row"> | ||
11 | <div class="input-field col s12"> | ||
12 | <h4>{{ 'user.edit_user'|trans }}</h4> | ||
13 | |||
14 | <div id="set6" class="col s12"> | ||
15 | {{ form_start(edit_form) }} | ||
16 | {{ form_errors(edit_form) }} | ||
17 | |||
18 | <div class="row"> | ||
19 | <div class="input-field col s12"> | ||
20 | {{ form_label(edit_form.name) }} | ||
21 | {{ form_errors(edit_form.name) }} | ||
22 | {{ form_widget(edit_form.name) }} | ||
23 | </div> | ||
24 | </div> | ||
25 | |||
26 | <div class="row"> | ||
27 | <div class="input-field col s12"> | ||
28 | {{ form_label(edit_form.username) }} | ||
29 | {{ form_errors(edit_form.username) }} | ||
30 | {{ form_widget(edit_form.username) }} | ||
31 | </div> | ||
32 | </div> | ||
33 | |||
34 | <div class="row"> | ||
35 | <div class="input-field col s12"> | ||
36 | {{ form_label(edit_form.email) }} | ||
37 | {{ form_errors(edit_form.email) }} | ||
38 | {{ form_widget(edit_form.email) }} | ||
39 | </div> | ||
40 | </div> | ||
41 | |||
42 | <div class="row"> | ||
43 | <div class="input-field col s12"> | ||
44 | {{ form_widget(edit_form.enabled) }} | ||
45 | {{ form_label(edit_form.enabled) }} | ||
46 | {{ form_errors(edit_form.enabled) }} | ||
47 | </div> | ||
48 | </div> | ||
49 | |||
50 | <div class="row"> | ||
51 | <div class="input-field col s12"> | ||
52 | {{ form_widget(edit_form.locked) }} | ||
53 | {{ form_label(edit_form.locked) }} | ||
54 | {{ form_errors(edit_form.locked) }} | ||
55 | </div> | ||
56 | </div> | ||
57 | |||
58 | {% if twofactor_auth %} | ||
59 | <div class="row"> | ||
60 | <div class="input-field col s12"> | ||
61 | {{ form_widget(edit_form.twoFactorAuthentication) }} | ||
62 | {{ form_label(edit_form.twoFactorAuthentication) }} | ||
63 | {{ form_errors(edit_form.twoFactorAuthentication) }} | ||
64 | </div> | ||
65 | </div> | ||
66 | {% endif %} | ||
67 | |||
68 | <br/> | ||
69 | |||
70 | {{ form_widget(edit_form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} | ||
71 | {{ form_rest(edit_form) }} | ||
72 | </form> | ||
73 | <p> | ||
74 | {{ form_start(delete_form) }} | ||
75 | <button {% if app.user.id == user.id %}disabled="disabled"{% endif %} onclick="return confirm('{{ 'user.form.delete_confirm'|trans|escape('js') }}')" type="submit" class="btn waves-effect waves-light red">{{ 'user.form.delete'|trans }}</button> | ||
76 | {{ form_end(delete_form) }} | ||
77 | </p> | ||
78 | <p><a class="waves-effect waves-light btn blue-grey" href="{{ path('user_index') }}">{{ 'user.form.back_to_list'|trans }}</a></p> | ||
79 | </div> | ||
80 | </div> | ||
81 | </div> | ||
82 | </div> | ||
83 | </div> | ||
84 | </div> | ||
85 | |||
86 | {% endblock %} | ||
diff --git a/src/Wallabag/UserBundle/Resources/views/Manage/index.html.twig b/src/Wallabag/UserBundle/Resources/views/Manage/index.html.twig new file mode 100644 index 00000000..996bdb1a --- /dev/null +++ b/src/Wallabag/UserBundle/Resources/views/Manage/index.html.twig | |||
@@ -0,0 +1,48 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'user.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | |||
7 | <div class="row"> | ||
8 | <div class="col s12"> | ||
9 | <div class="card-panel"> | ||
10 | <div class="row"> | ||
11 | <div class="input-field col s12"> | ||
12 | <p class="help">{{ 'user.description'|trans|raw }}</p> | ||
13 | |||
14 | <table class="bordered"> | ||
15 | <thead> | ||
16 | <tr> | ||
17 | <th>{{ 'user.form.username_label'|trans }}</th> | ||
18 | <th>{{ 'user.form.email_label'|trans }}</th> | ||
19 | <th>{{ 'user.form.last_login_label'|trans }}</th> | ||
20 | <th>{{ 'user.form.locked_label'|trans }}</th> | ||
21 | <th>{{ 'user.list.actions'|trans }}</th> | ||
22 | </tr> | ||
23 | </thead> | ||
24 | <tbody> | ||
25 | {% for user in users %} | ||
26 | <tr> | ||
27 | <td>{{ user.username }}</td> | ||
28 | <td>{{ user.email }}</td> | ||
29 | <td>{% if user.lastLogin %}{{ user.lastLogin|date('Y-m-d H:i:s') }}{% endif %}</td> | ||
30 | <td>{% if user.locked %}{{ 'user.list.yes'|trans }}{% else %}{{ 'user.list.no'|trans }}{% endif %}</td> | ||
31 | <td> | ||
32 | <a href="{{ path('user_edit', { 'id': user.id }) }}">{{ 'user.list.edit_action'|trans }}</a> | ||
33 | </td> | ||
34 | </tr> | ||
35 | {% endfor %} | ||
36 | </tbody> | ||
37 | </table> | ||
38 | <br /> | ||
39 | <p> | ||
40 | <a href="{{ path('user_new') }}" class="waves-effect waves-light btn">{{ 'user.list.create_new_one'|trans }}</a> | ||
41 | </p> | ||
42 | </div> | ||
43 | </div> | ||
44 | </div> | ||
45 | </div> | ||
46 | </div> | ||
47 | |||
48 | {% endblock %} | ||
diff --git a/src/Wallabag/UserBundle/Resources/views/Manage/new.html.twig b/src/Wallabag/UserBundle/Resources/views/Manage/new.html.twig new file mode 100644 index 00000000..8c894c04 --- /dev/null +++ b/src/Wallabag/UserBundle/Resources/views/Manage/new.html.twig | |||
@@ -0,0 +1,61 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'user.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | |||
7 | <div class="row"> | ||
8 | <div class="col s12"> | ||
9 | <div class="card-panel"> | ||
10 | <div class="row"> | ||
11 | <div class="input-field col s12"> | ||
12 | <h4>{{ 'user.new_user'|trans }}</h4> | ||
13 | |||
14 | <div id="set6" class="col s12"> | ||
15 | {{ form_start(form) }} | ||
16 | {{ form_errors(form) }} | ||
17 | |||
18 | <div class="row"> | ||
19 | <div class="input-field col s12"> | ||
20 | {{ form_label(form.username) }} | ||
21 | {{ form_errors(form.username) }} | ||
22 | {{ form_widget(form.username) }} | ||
23 | </div> | ||
24 | </div> | ||
25 | |||
26 | <div class="row"> | ||
27 | <div class="input-field col s12"> | ||
28 | {{ form_label(form.plainPassword.first) }} | ||
29 | {{ form_errors(form.plainPassword.first) }} | ||
30 | {{ form_widget(form.plainPassword.first) }} | ||
31 | </div> | ||
32 | </div> | ||
33 | |||
34 | <div class="row"> | ||
35 | <div class="input-field col s12"> | ||
36 | {{ form_label(form.plainPassword.second) }} | ||
37 | {{ form_errors(form.plainPassword.second) }} | ||
38 | {{ form_widget(form.plainPassword.second) }} | ||
39 | </div> | ||
40 | </div> | ||
41 | |||
42 | <div class="row"> | ||
43 | <div class="input-field col s12"> | ||
44 | {{ form_label(form.email) }} | ||
45 | {{ form_errors(form.email) }} | ||
46 | {{ form_widget(form.email) }} | ||
47 | </div> | ||
48 | </div> | ||
49 | |||
50 | {{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} | ||
51 | {{ form_rest(form) }} | ||
52 | </form> | ||
53 | <p><a class="waves-effect waves-light btn blue-grey" href="{{ path('user_index') }}">{{ 'user.form.back_to_list'|trans }}</a></p> | ||
54 | </div> | ||
55 | </div> | ||
56 | </div> | ||
57 | </div> | ||
58 | </div> | ||
59 | </div> | ||
60 | |||
61 | {% endblock %} | ||
diff --git a/src/Wallabag/UserBundle/Resources/views/Registration/checkEmail.html.twig b/src/Wallabag/UserBundle/Resources/views/Registration/check_email.html.twig index 50937276..50937276 100644 --- a/src/Wallabag/UserBundle/Resources/views/Registration/checkEmail.html.twig +++ b/src/Wallabag/UserBundle/Resources/views/Registration/check_email.html.twig | |||
diff --git a/src/Wallabag/UserBundle/Resources/views/manage.html.twig b/src/Wallabag/UserBundle/Resources/views/manage.html.twig new file mode 100644 index 00000000..c614c55f --- /dev/null +++ b/src/Wallabag/UserBundle/Resources/views/manage.html.twig | |||
@@ -0,0 +1,43 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'user.manage.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | |||
7 | <div class="row"> | ||
8 | <div class="col s12"> | ||
9 | <div class="card-panel"> | ||
10 | <div class="row"> | ||
11 | <div class="input-field col s12"> | ||
12 | <p class="help">{{ 'user.manage.description'|trans|raw }}</p> | ||
13 | |||
14 | <table class="bordered"> | ||
15 | <thead> | ||
16 | <tr> | ||
17 | <th>{{ 'user.manage.field.username'|trans }}</th> | ||
18 | <th>{{ 'user.manage.field.email'|trans }}</th> | ||
19 | <th>{{ 'user.manage.field.last_login'|trans }}</th> | ||
20 | <th>{{ 'user.manage.field.locked'|trans }}</th> | ||
21 | <th>{{ 'user.manage.action'|trans }}</th> | ||
22 | </tr> | ||
23 | </thead> | ||
24 | |||
25 | <tbody> | ||
26 | {% for user in users %} | ||
27 | <tr> | ||
28 | <td>{{ user.username }}</td> | ||
29 | <td>{{ user.email }}</td> | ||
30 | <td>{{ user.lastLogin|date('d/m/Y H:i:s') }}</td> | ||
31 | <td>{{ user.locked ? 'yes' : 'no' }}</td> | ||
32 | <td>edit - delete</td> | ||
33 | </tr> | ||
34 | {% endfor %} | ||
35 | </tbody> | ||
36 | </table> | ||
37 | </div> | ||
38 | </div> | ||
39 | </div> | ||
40 | </div> | ||
41 | </div> | ||
42 | |||
43 | {% endblock %} | ||