diff --git a/.gitignore b/.gitignore
index bb0972d84..bb7764588 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,22 @@
+/app/SymfonyRequirements.php
+/app/bootstrap.php.cache
+/app/check.php
+/app/cache/*
+/app/config/parameters.yml
+/app/logs/*
+!app/cache/.gitkeep
+!app/logs/.gitkeep
.idea
.DS_Store
.vagrant
-app/assets/*
-app/cache/*
-vendor
-composer.phar
+/vendor/
app/db/poche.sqlite
-app/config/config.inc.php
\ No newline at end of file
+
+/bin/
+!bin/install
+!bin/test
+!bin/symfony
+
+/data/
+
+/web/.htaccess
\ No newline at end of file
diff --git a/app/.htaccess b/app/.htaccess
new file mode 100644
index 000000000..fb1de45bd
--- /dev/null
+++ b/app/.htaccess
@@ -0,0 +1,7 @@
+
+ Require all denied
+
+
+ Order deny,allow
+ Deny from all
+
diff --git a/app/AppCache.php b/app/AppCache.php
new file mode 100644
index 000000000..ddb51db05
--- /dev/null
+++ b/app/AppCache.php
@@ -0,0 +1,9 @@
+getEnvironment(), array('dev', 'test'))) {
+ $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
+ $bundles[] = new Acme\DemoBundle\AcmeDemoBundle();
+ $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
+ $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
+ $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
+ }
+
+ return $bundles;
+ }
+
+ public function registerContainerConfiguration(LoaderInterface $loader)
+ {
+ $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
+ }
+}
diff --git a/app/Resources/views/_global/public/css/jquery-ui-1.10.4.custom.css b/app/Resources/views/_global/public/css/jquery-ui-1.10.4.custom.css
new file mode 100644
index 000000000..5690172f6
--- /dev/null
+++ b/app/Resources/views/_global/public/css/jquery-ui-1.10.4.custom.css
@@ -0,0 +1,560 @@
+/*! jQuery UI - v1.10.4 - 2014-03-09
+* http://jqueryui.com
+* Includes: jquery.ui.core.css, jquery.ui.autocomplete.css, jquery.ui.menu.css, jquery.ui.theme.css
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden {
+ display: none;
+}
+.ui-helper-hidden-accessible {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+}
+.ui-helper-reset {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ outline: 0;
+ line-height: 1.3;
+ text-decoration: none;
+ font-size: 100%;
+ list-style: none;
+}
+.ui-helper-clearfix:before,
+.ui-helper-clearfix:after {
+ content: "";
+ display: table;
+ border-collapse: collapse;
+}
+.ui-helper-clearfix:after {
+ clear: both;
+}
+.ui-helper-clearfix {
+ min-height: 0; /* support: IE7 */
+}
+.ui-helper-zfix {
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ position: absolute;
+ opacity: 0;
+ filter:Alpha(Opacity=0);
+}
+
+.ui-front {
+ z-index: 100;
+}
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled {
+ cursor: default !important;
+}
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+ display: block;
+ text-indent: -99999px;
+ overflow: hidden;
+ background-repeat: no-repeat;
+}
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+.ui-autocomplete {
+ position: absolute;
+ top: 0;
+ left: 0;
+ cursor: default;
+}
+.ui-menu {
+ list-style: none;
+ padding: 2px;
+ margin: 0;
+ display: block;
+ outline: none;
+}
+.ui-menu .ui-menu {
+ margin-top: -3px;
+ position: absolute;
+}
+.ui-menu .ui-menu-item {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ /* support: IE10, see #8844 */
+ list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+}
+.ui-menu .ui-menu-divider {
+ margin: 5px -2px 5px -2px;
+ height: 0;
+ font-size: 0;
+ line-height: 0;
+ border-width: 1px 0 0 0;
+}
+.ui-menu .ui-menu-item a {
+ text-decoration: none;
+ display: block;
+ padding: 2px .4em;
+ line-height: 1.5;
+ min-height: 0; /* support: IE7 */
+ font-weight: normal;
+}
+.ui-menu .ui-menu-item a.ui-state-focus,
+.ui-menu .ui-menu-item a.ui-state-active {
+ font-weight: normal;
+ margin: -1px;
+}
+
+.ui-menu .ui-state-disabled {
+ font-weight: normal;
+ margin: .4em 0 .2em;
+ line-height: 1.5;
+}
+.ui-menu .ui-state-disabled a {
+ cursor: default;
+}
+
+/* icon support */
+.ui-menu-icons {
+ position: relative;
+}
+.ui-menu-icons .ui-menu-item a {
+ position: relative;
+ padding-left: 2em;
+}
+
+/* left-aligned */
+.ui-menu .ui-icon {
+ position: absolute;
+ top: .2em;
+ left: .2em;
+}
+
+/* right-aligned */
+.ui-menu .ui-menu-icon {
+ position: static;
+ float: right;
+}
+
+/* Component containers
+----------------------------------*/
+.ui-widget {
+ font-family: Verdana,Arial,sans-serif;
+ font-size: 1.1em;
+}
+.ui-widget .ui-widget {
+ font-size: 1em;
+}
+.ui-widget input,
+.ui-widget select,
+.ui-widget textarea,
+.ui-widget button {
+ font-family: Verdana,Arial,sans-serif;
+ font-size: 1em;
+}
+.ui-widget-content {
+ border: 1px solid #aaaaaa;
+ background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;
+ color: #222222;
+}
+.ui-widget-content a {
+ color: #222222;
+}
+.ui-widget-header {
+ border: 1px solid #aaaaaa;
+ background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;
+ color: #222222;
+ font-weight: bold;
+}
+.ui-widget-header a {
+ color: #222222;
+}
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default,
+.ui-widget-content .ui-state-default,
+.ui-widget-header .ui-state-default {
+ border: 1px solid #d3d3d3;
+ background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
+ font-weight: normal;
+ color: #555555;
+}
+.ui-state-default a,
+.ui-state-default a:link,
+.ui-state-default a:visited {
+ color: #555555;
+ text-decoration: none;
+}
+.ui-state-hover,
+.ui-widget-content .ui-state-hover,
+.ui-widget-header .ui-state-hover,
+.ui-state-focus,
+.ui-widget-content .ui-state-focus,
+.ui-widget-header .ui-state-focus {
+ border: 1px solid #999999;
+ background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;
+ font-weight: normal;
+ color: #212121;
+}
+.ui-state-hover a,
+.ui-state-hover a:hover,
+.ui-state-hover a:link,
+.ui-state-hover a:visited,
+.ui-state-focus a,
+.ui-state-focus a:hover,
+.ui-state-focus a:link,
+.ui-state-focus a:visited {
+ color: #212121;
+ text-decoration: none;
+}
+.ui-state-active,
+.ui-widget-content .ui-state-active,
+.ui-widget-header .ui-state-active {
+ border: 1px solid #aaaaaa;
+ background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
+ font-weight: normal;
+ color: #212121;
+}
+.ui-state-active a,
+.ui-state-active a:link,
+.ui-state-active a:visited {
+ color: #212121;
+ text-decoration: none;
+}
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight,
+.ui-widget-content .ui-state-highlight,
+.ui-widget-header .ui-state-highlight {
+ border: 1px solid #fcefa1;
+ background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;
+ color: #363636;
+}
+.ui-state-highlight a,
+.ui-widget-content .ui-state-highlight a,
+.ui-widget-header .ui-state-highlight a {
+ color: #363636;
+}
+.ui-state-error,
+.ui-widget-content .ui-state-error,
+.ui-widget-header .ui-state-error {
+ border: 1px solid #cd0a0a;
+ background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;
+ color: #cd0a0a;
+}
+.ui-state-error a,
+.ui-widget-content .ui-state-error a,
+.ui-widget-header .ui-state-error a {
+ color: #cd0a0a;
+}
+.ui-state-error-text,
+.ui-widget-content .ui-state-error-text,
+.ui-widget-header .ui-state-error-text {
+ color: #cd0a0a;
+}
+.ui-priority-primary,
+.ui-widget-content .ui-priority-primary,
+.ui-widget-header .ui-priority-primary {
+ font-weight: bold;
+}
+.ui-priority-secondary,
+.ui-widget-content .ui-priority-secondary,
+.ui-widget-header .ui-priority-secondary {
+ opacity: .7;
+ filter:Alpha(Opacity=70);
+ font-weight: normal;
+}
+.ui-state-disabled,
+.ui-widget-content .ui-state-disabled,
+.ui-widget-header .ui-state-disabled {
+ opacity: .35;
+ filter:Alpha(Opacity=35);
+ background-image: none;
+}
+.ui-state-disabled .ui-icon {
+ filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
+}
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+ width: 16px;
+ height: 16px;
+}
+.ui-icon,
+.ui-widget-content .ui-icon {
+ background-image: url(images/ui-icons_222222_256x240.png);
+}
+.ui-widget-header .ui-icon {
+ background-image: url(images/ui-icons_222222_256x240.png);
+}
+.ui-state-default .ui-icon {
+ background-image: url(images/ui-icons_888888_256x240.png);
+}
+.ui-state-hover .ui-icon,
+.ui-state-focus .ui-icon {
+ background-image: url(images/ui-icons_454545_256x240.png);
+}
+.ui-state-active .ui-icon {
+ background-image: url(images/ui-icons_454545_256x240.png);
+}
+.ui-state-highlight .ui-icon {
+ background-image: url(images/ui-icons_2e83ff_256x240.png);
+}
+.ui-state-error .ui-icon,
+.ui-state-error-text .ui-icon {
+ background-image: url(images/ui-icons_cd0a0a_256x240.png);
+}
+
+/* positioning */
+.ui-icon-blank { background-position: 16px 16px; }
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-on { background-position: -96px -144px; }
+.ui-icon-radio-off { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-left,
+.ui-corner-tl {
+ border-top-left-radius: 4px;
+}
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-right,
+.ui-corner-tr {
+ border-top-right-radius: 4px;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-left,
+.ui-corner-bl {
+ border-bottom-left-radius: 4px;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-right,
+.ui-corner-br {
+ border-bottom-right-radius: 4px;
+}
+
+/* Overlays */
+.ui-widget-overlay {
+ background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
+ opacity: .3;
+ filter: Alpha(Opacity=30);
+}
+.ui-widget-shadow {
+ margin: -8px 0 0 -8px;
+ padding: 8px;
+ background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
+ opacity: .3;
+ filter: Alpha(Opacity=30);
+ border-radius: 8px;
+}
diff --git a/app/Resources/views/_global/public/css/jquery-ui-1.10.4.custom.min.css b/app/Resources/views/_global/public/css/jquery-ui-1.10.4.custom.min.css
new file mode 100644
index 000000000..4dba92a8a
--- /dev/null
+++ b/app/Resources/views/_global/public/css/jquery-ui-1.10.4.custom.min.css
@@ -0,0 +1,7 @@
+/*! jQuery UI - v1.10.4 - 2014-03-09
+* http://jqueryui.com
+* Includes: jquery.ui.core.css, jquery.ui.autocomplete.css, jquery.ui.menu.css, jquery.ui.theme.css
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
+
+.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
\ No newline at end of file
diff --git a/app/Resources/views/_global/public/img/appicon/apple-touch-icon-114.png b/app/Resources/views/_global/public/img/appicon/apple-touch-icon-114.png
new file mode 100755
index 000000000..0e96edd5c
Binary files /dev/null and b/app/Resources/views/_global/public/img/appicon/apple-touch-icon-114.png differ
diff --git a/app/Resources/views/_global/public/img/appicon/apple-touch-icon-120.png b/app/Resources/views/_global/public/img/appicon/apple-touch-icon-120.png
new file mode 100755
index 000000000..dc5aab1c4
Binary files /dev/null and b/app/Resources/views/_global/public/img/appicon/apple-touch-icon-120.png differ
diff --git a/app/Resources/views/_global/public/img/appicon/apple-touch-icon-144.png b/app/Resources/views/_global/public/img/appicon/apple-touch-icon-144.png
new file mode 100755
index 000000000..1d005db6f
Binary files /dev/null and b/app/Resources/views/_global/public/img/appicon/apple-touch-icon-144.png differ
diff --git a/app/Resources/views/_global/public/img/appicon/apple-touch-icon-152.png b/app/Resources/views/_global/public/img/appicon/apple-touch-icon-152.png
new file mode 100755
index 000000000..f915231fa
Binary files /dev/null and b/app/Resources/views/_global/public/img/appicon/apple-touch-icon-152.png differ
diff --git a/app/Resources/views/_global/public/img/appicon/apple-touch-icon-57.png b/app/Resources/views/_global/public/img/appicon/apple-touch-icon-57.png
new file mode 100755
index 000000000..5aa19ed96
Binary files /dev/null and b/app/Resources/views/_global/public/img/appicon/apple-touch-icon-57.png differ
diff --git a/app/Resources/views/_global/public/img/appicon/apple-touch-icon-72.png b/app/Resources/views/_global/public/img/appicon/apple-touch-icon-72.png
new file mode 100755
index 000000000..b8b48e1bc
Binary files /dev/null and b/app/Resources/views/_global/public/img/appicon/apple-touch-icon-72.png differ
diff --git a/app/Resources/views/_global/public/img/appicon/apple-touch-icon-76.png b/app/Resources/views/_global/public/img/appicon/apple-touch-icon-76.png
new file mode 100755
index 000000000..9f9dba27e
Binary files /dev/null and b/app/Resources/views/_global/public/img/appicon/apple-touch-icon-76.png differ
diff --git a/app/Resources/views/_global/public/img/appicon/apple-touch-icon.png b/app/Resources/views/_global/public/img/appicon/apple-touch-icon.png
new file mode 100755
index 000000000..9cf29e2b4
Binary files /dev/null and b/app/Resources/views/_global/public/img/appicon/apple-touch-icon.png differ
diff --git a/app/Resources/views/_global/public/img/appicon/favicon.ico b/app/Resources/views/_global/public/img/appicon/favicon.ico
new file mode 100755
index 000000000..0346558ba
Binary files /dev/null and b/app/Resources/views/_global/public/img/appicon/favicon.ico differ
diff --git a/app/Resources/views/_global/public/img/icons/carrot-icon--black.png b/app/Resources/views/_global/public/img/icons/carrot-icon--black.png
new file mode 100644
index 000000000..6da7925b5
Binary files /dev/null and b/app/Resources/views/_global/public/img/icons/carrot-icon--black.png differ
diff --git a/app/Resources/views/_global/public/img/icons/carrot-icon--white.png b/app/Resources/views/_global/public/img/icons/carrot-icon--white.png
new file mode 100644
index 000000000..a70044b6f
Binary files /dev/null and b/app/Resources/views/_global/public/img/icons/carrot-icon--white.png differ
diff --git a/app/Resources/views/_global/public/img/icons/diaspora-icon--black.png b/app/Resources/views/_global/public/img/icons/diaspora-icon--black.png
new file mode 100644
index 000000000..32bca1947
Binary files /dev/null and b/app/Resources/views/_global/public/img/icons/diaspora-icon--black.png differ
diff --git a/app/Resources/views/_global/public/img/icons/diaspora-icon--white.png b/app/Resources/views/_global/public/img/icons/diaspora-icon--white.png
new file mode 100644
index 000000000..fc48d47c4
Binary files /dev/null and b/app/Resources/views/_global/public/img/icons/diaspora-icon--white.png differ
diff --git a/app/Resources/views/_global/public/js/autoClose.js b/app/Resources/views/_global/public/js/autoClose.js
new file mode 100644
index 000000000..e9145b7e2
--- /dev/null
+++ b/app/Resources/views/_global/public/js/autoClose.js
@@ -0,0 +1,6 @@
+$(document).ready(function() {
+ current_url = window.location.href
+ if (current_url.match("&closewin=true")) {
+ window.close();
+ }
+});
diff --git a/app/Resources/views/_global/public/js/autoCompleteTags.js b/app/Resources/views/_global/public/js/autoCompleteTags.js
new file mode 100755
index 000000000..90bc982c2
--- /dev/null
+++ b/app/Resources/views/_global/public/js/autoCompleteTags.js
@@ -0,0 +1,47 @@
+jQuery(function($) {
+
+ function split( val ) {
+ return val.split( /,\s*/ );
+ }
+ function extractLast( term ) {
+ return split( term ).pop();
+ }
+
+
+ $("#value").bind("keydown", function(event) {
+ if (event.keyCode === $.ui.keyCode.TAB && $(this).data("ui-autocomplete").menu.active) {
+ event.preventDefault();
+ }
+ }).autocomplete({
+ source : function(request, response) {
+ $.getJSON("./?view=tags", {
+ term : extractLast(request.term),
+ //id: $(':hidden#entry_id').val()
+ }, response);
+ },
+ search : function() {
+ // custom minLength
+ var term = extractLast(this.value);
+ if (term.length < 1) {
+ return false;
+ }
+ },
+ focus : function() {
+ // prevent value inserted on focus
+ return false;
+ },
+ select : function(event, ui) {
+ var terms = split(this.value);
+ // remove the current input
+ terms.pop();
+ // add the selected item
+ terms.push(ui.item.value);
+ // add placeholder to get the comma-and-space at the end
+ terms.push("");
+ this.value = terms.join(", ");
+ return false;
+ }
+ });
+
+
+});
diff --git a/app/Resources/views/_global/public/js/jquery-2.0.3.min.js b/app/Resources/views/_global/public/js/jquery-2.0.3.min.js
new file mode 100644
index 000000000..a4dd0a2f5
--- /dev/null
+++ b/app/Resources/views/_global/public/js/jquery-2.0.3.min.js
@@ -0,0 +1 @@
+(function(e,undefined){var t,n,r=typeof undefined,i=e.location,o=e.document,s=o.documentElement,a=e.jQuery,u=e.$,l={},c=[],p="2.0.3",f=c.concat,h=c.push,d=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,x=function(e,n){return new x.fn.init(e,n,t)},b=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^-ms-/,N=/-([\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener("DOMContentLoaded",S,!1),e.removeEventListener("load",S,!1),x.ready()};x.fn=x.prototype={jquery:p,constructor:x,init:function(e,t,n){var r,i;if(!e)return this;if("string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:T.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),C.test(r[1])&&x.isPlainObject(t))for(r in t)x.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=o.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?n.ready(e):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return d.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[1]||{},a=2),"object"==typeof s||x.isFunction(s)||(s={}),u===a&&(s=this,--a);u>a;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r&&(l&&r&&(x.isPlainObject(r)||(i=x.isArray(r)))?(i?(i=!1,o=n&&x.isArray(n)?n:[]):o=n&&x.isPlainObject(n)?n:{},s[t]=x.extend(l,o,r)):r!==undefined&&(s[t]=r));return s},x.extend({expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=a),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){(e===!0?--x.readyWait:x.isReady)||(x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(o,[x]),x.fn.trigger&&x(o).trigger("ready").off("ready")))},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if("object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||"string"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=undefined}return(!t||t.getElementsByTagName("parsererror").length)&&x.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(e){var t,n=eval;e=x.trim(e),e&&(1===e.indexOf("use strict")?(t=o.createElement("script"),t.text=e,o.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(k,"ms-").replace(N,E)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,s=j(e);if(n){if(s){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(s){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:function(e){return null==e?"":v.call(e)},makeArray:function(e,t){var n=t||[];return null!=e&&(j(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:g.call(t,e,n)},merge:function(e,t){var n=t.length,r=e.length,i=0;if("number"==typeof n)for(;n>i;i++)e[r++]=t[i];else while(t[i]!==undefined)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r,i=[],o=0,s=e.length;for(n=!!n;s>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,s=j(e),a=[];if(s)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(a[a.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(a[a.length]=r);return f.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),x.isFunction(e)?(r=d.call(arguments,2),i=function(){return e.apply(t||this,r.concat(d.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):undefined},access:function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===x.type(n)){i=!0;for(a in n)x.access(e,t,a,n[a],!0,o,s)}else if(r!==undefined&&(i=!0,x.isFunction(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(x(e),n)})),t))for(;u>a;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},now:Date.now,swap:function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i}}),x.ready.promise=function(t){return n||(n=x.Deferred(),"complete"===o.readyState?setTimeout(x.ready):(o.addEventListener("DOMContentLoaded",S,!1),e.addEventListener("load",S,!1))),n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function j(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}t=x(o),function(e,undefined){var t,n,r,i,o,s,a,u,l,c,p,f,h,d,g,m,y,v="sizzle"+-new Date,b=e.document,w=0,T=0,C=st(),k=st(),N=st(),E=!1,S=function(e,t){return e===t?(E=!0,0):0},j=typeof undefined,D=1<<31,A={}.hasOwnProperty,L=[],q=L.pop,H=L.push,O=L.push,F=L.slice,P=L.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",W="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",$=W.replace("w","w#"),B="\\["+M+"*("+W+")"+M+"*(?:([*^$|!~]?=)"+M+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+$+")|)|)"+M+"*\\]",I=":("+W+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+B.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=RegExp("^"+M+"*,"+M+"*"),X=RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=RegExp(M+"*[+~]"),Y=RegExp("="+M+"*([^\\]'\"]*)"+M+"*\\]","g"),V=RegExp(I),G=RegExp("^"+$+"$"),J={ID:RegExp("^#("+W+")"),CLASS:RegExp("^\\.("+W+")"),TAG:RegExp("^("+W.replace("w","w*")+")"),ATTR:RegExp("^"+B),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:RegExp("^(?:"+R+")$","i"),needsContext:RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Q=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Z=/^(?:input|select|textarea|button)$/i,et=/^h\d$/i,tt=/'|\\/g,nt=RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),rt=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{O.apply(L=F.call(b.childNodes),b.childNodes),L[b.childNodes.length].nodeType}catch(it){O={apply:L.length?function(e,t){H.apply(e,F.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function ot(e,t,r,i){var o,s,a,u,l,f,g,m,x,w;if((t?t.ownerDocument||t:b)!==p&&c(t),t=t||p,r=r||[],!e||"string"!=typeof e)return r;if(1!==(u=t.nodeType)&&9!==u)return[];if(h&&!i){if(o=K.exec(e))if(a=o[1]){if(9===u){if(s=t.getElementById(a),!s||!s.parentNode)return r;if(s.id===a)return r.push(s),r}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(a))&&y(t,s)&&s.id===a)return r.push(s),r}else{if(o[2])return O.apply(r,t.getElementsByTagName(e)),r;if((a=o[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(r,t.getElementsByClassName(a)),r}if(n.qsa&&(!d||!d.test(e))){if(m=g=v,x=t,w=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){f=gt(e),(g=t.getAttribute("id"))?m=g.replace(tt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",l=f.length;while(l--)f[l]=m+mt(f[l]);x=U.test(e)&&t.parentNode||t,w=f.join(",")}if(w)try{return O.apply(r,x.querySelectorAll(w)),r}catch(T){}finally{g||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,r,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>i.cacheLength&&delete t[e.shift()],t[n]=r}return t}function at(e){return e[v]=!0,e}function ut(e){var t=p.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function lt(e,t){var n=e.split("|"),r=e.length;while(r--)i.attrHandle[n[r]]=t}function ct(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return at(function(t){return t=+t,at(function(n,r){var i,o=e([],n.length,t),s=o.length;while(s--)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}s=ot.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},n=ot.support={},c=ot.setDocument=function(e){var t=e?e.ownerDocument||e:b,r=t.defaultView;return t!==p&&9===t.nodeType&&t.documentElement?(p=t,f=t.documentElement,h=!s(t),r&&r.attachEvent&&r!==r.top&&r.attachEvent("onbeforeunload",function(){c()}),n.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ut(function(e){return e.appendChild(t.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=ut(function(e){return e.innerHTML="
").append(x.parseHTML(e)).find(r):e)}).complete(n&&function(e,t){s.each(n,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ut,type:"GET",isLocal:Kt.test(Xt[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":sn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?cn(cn(e,x.ajaxSettings),t):cn(x.ajaxSettings,e)},ajaxPrefilter:un(rn),ajaxTransport:un(on),ajax:function(e,t){"object"==typeof e&&(t=e,e=undefined),t=t||{};var n,r,i,o,s,a,u,l,c=x.ajaxSetup({},t),p=c.context||c,f=c.context&&(p.nodeType||p.jquery)?x(p):x.event,h=x.Deferred(),d=x.Callbacks("once memory"),g=c.statusCode||{},m={},y={},v=0,b="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===v){if(!o){o={};while(t=Qt.exec(i))o[t[1].toLowerCase()]=t[2]}t=o[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===v?i:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return v||(e=y[n]=y[n]||e,m[e]=t),this},overrideMimeType:function(e){return v||(c.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>v)for(t in e)g[t]=[g[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||b;return n&&n.abort(t),k(0,t),this}};if(h.promise(T).complete=d.add,T.success=T.done,T.error=T.fail,c.url=((e||c.url||Ut)+"").replace(Gt,"").replace(en,Xt[1]+"//"),c.type=t.method||t.type||c.method||c.type,c.dataTypes=x.trim(c.dataType||"*").toLowerCase().match(w)||[""],null==c.crossDomain&&(a=tn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===Xt[1]&&a[2]===Xt[2]&&(a[3]||("http:"===a[1]?"80":"443"))===(Xt[3]||("http:"===Xt[1]?"80":"443")))),c.data&&c.processData&&"string"!=typeof c.data&&(c.data=x.param(c.data,c.traditional)),ln(rn,c,t,T),2===v)return T;u=c.global,u&&0===x.active++&&x.event.trigger("ajaxStart"),c.type=c.type.toUpperCase(),c.hasContent=!Zt.test(c.type),r=c.url,c.hasContent||(c.data&&(r=c.url+=(Vt.test(r)?"&":"?")+c.data,delete c.data),c.cache===!1&&(c.url=Jt.test(r)?r.replace(Jt,"$1_="+Yt++):r+(Vt.test(r)?"&":"?")+"_="+Yt++)),c.ifModified&&(x.lastModified[r]&&T.setRequestHeader("If-Modified-Since",x.lastModified[r]),x.etag[r]&&T.setRequestHeader("If-None-Match",x.etag[r])),(c.data&&c.hasContent&&c.contentType!==!1||t.contentType)&&T.setRequestHeader("Content-Type",c.contentType),T.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+("*"!==c.dataTypes[0]?", "+sn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)T.setRequestHeader(l,c.headers[l]);if(c.beforeSend&&(c.beforeSend.call(p,T,c)===!1||2===v))return T.abort();b="abort";for(l in{success:1,error:1,complete:1})T[l](c[l]);if(n=ln(on,c,t,T)){T.readyState=1,u&&f.trigger("ajaxSend",[T,c]),c.async&&c.timeout>0&&(s=setTimeout(function(){T.abort("timeout")},c.timeout));try{v=1,n.send(m,k)}catch(C){if(!(2>v))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,t,o,a){var l,m,y,b,w,C=t;2!==v&&(v=2,s&&clearTimeout(s),n=undefined,i=a||"",T.readyState=e>0?4:0,l=e>=200&&300>e||304===e,o&&(b=pn(c,T,o)),b=fn(c,b,T,l),l?(c.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(x.lastModified[r]=w),w=T.getResponseHeader("etag"),w&&(x.etag[r]=w)),204===e||"HEAD"===c.type?C="nocontent":304===e?C="notmodified":(C=b.state,m=b.data,y=b.error,l=!y)):(y=C,(e||!C)&&(C="error",0>e&&(e=0))),T.status=e,T.statusText=(t||C)+"",l?h.resolveWith(p,[m,C,T]):h.rejectWith(p,[T,C,y]),T.statusCode(g),g=undefined,u&&f.trigger(l?"ajaxSuccess":"ajaxError",[T,c,l?m:y]),d.fireWith(p,[T,C]),u&&(f.trigger("ajaxComplete",[T,c]),--x.active||x.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,t){return x.get(e,undefined,t,"script")}}),x.each(["get","post"],function(e,t){x[t]=function(e,n,r,i){return x.isFunction(n)&&(i=i||r,r=n,n=undefined),x.ajax({url:e,type:t,dataType:i,data:n,success:r})}});function pn(e,t,n){var r,i,o,s,a=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),r===undefined&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}s||(s=i)}o=o||s}return o?(o!==u[0]&&u.unshift(o),n[o]):undefined}function fn(e,t,n,r){var i,o,s,a,u,l={},c=e.dataTypes.slice();if(c[1])for(s in e.converters)l[s.toLowerCase()]=e.converters[s];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(s=l[u+" "+o]||l["* "+o],!s)for(i in l)if(a=i.split(" "),a[1]===o&&(s=l[u+" "+a[0]]||l["* "+a[0]])){s===!0?s=l[i]:l[i]!==!0&&(o=a[0],c.unshift(a[1]));break}if(s!==!0)if(s&&e["throws"])t=s(t);else try{t=s(t)}catch(p){return{state:"parsererror",error:s?p:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===undefined&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),x.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=x("
+
+
+
+
+
+
diff --git a/app/Resources/views/baggy/_menu.twig b/app/Resources/views/baggy/_menu.twig
new file mode 100644
index 000000000..8b80f65d8
--- /dev/null
+++ b/app/Resources/views/baggy/_menu.twig
@@ -0,0 +1,17 @@
+
+
+
diff --git a/app/Resources/views/baggy/_pocheit-form.twig b/app/Resources/views/baggy/_pocheit-form.twig
new file mode 100755
index 000000000..bf2ae9037
--- /dev/null
+++ b/app/Resources/views/baggy/_pocheit-form.twig
@@ -0,0 +1,10 @@
+
diff --git a/app/Resources/views/baggy/_search-form.twig b/app/Resources/views/baggy/_search-form.twig
new file mode 100644
index 000000000..73f7951f8
--- /dev/null
+++ b/app/Resources/views/baggy/_search-form.twig
@@ -0,0 +1,9 @@
+
diff --git a/app/Resources/views/baggy/_top.twig b/app/Resources/views/baggy/_top.twig
new file mode 100755
index 000000000..a31c09259
--- /dev/null
+++ b/app/Resources/views/baggy/_top.twig
@@ -0,0 +1,7 @@
+
+
+ {% if view == 'home' %}{% block logo %} {% endblock %}
+ {% else %}{{ block('logo') }}
+ {% endif %}
+
+
diff --git a/app/Resources/views/baggy/about.twig b/app/Resources/views/baggy/about.twig
new file mode 100755
index 000000000..d18fe1567
--- /dev/null
+++ b/app/Resources/views/baggy/about.twig
@@ -0,0 +1,84 @@
+{% extends "layout.twig" %}
+
+{% block title %}{% trans "About" %}{% endblock %}
+{% block menu %}
+{% include '_menu.twig' %}
+{% endblock %}
+{% block content %}
+
{% trans "About wallabag" %}
+
+
+ {% trans "Project website" %}
+ https://www.wallabag.org
+
+ {% trans "Main developer" %}
+ Nicolas Lœuillet — {% trans "website" %}
+
+ {% trans "Contributors:" %}
+ {% trans "on Github" %}
+
+ {% trans "Bug reports" %}
+ {% trans "On our support website" %} {% trans "or" %} {% trans "on Github" %}
+
+ {% trans "License" %}
+ MIT
+
+ {% trans "Version" %}
+ {{ constant('WALLABAG') }}
+
+
+
{% trans "wallabag is a read-it-later application: you can save a web page by keeping only content. Elements like ads or menus are deleted." %}
+
+
{% trans "Getting help" %}
+
+
+ {% trans "Documentation" %}
+ Offline documentation and online documentation (up to date)
+
+ {% trans "Support" %}
+ http://support.wallabag.org/
+
+
+
{% trans "Helping wallabag" %}
+
+
{% trans "wallabag is free and opensource. You can help us:" %}
+
+
+ {% trans "via Paypal" %}
+
+ {% trans "via Flattr" %}
+
+
+
{% trans "Credits" %}
+
+ PHP Readability
+ https://bitbucket.org/fivefilters/php-readability
+
+ Full Text RSS
+ http://code.fivefilters.org/full-text-rss/src
+
+ logo by Maylis Agniel
+ https://github.com/wallabag/logo
+
+ icons
+ http://icomoon.io
+
+ PHP Simple HTML DOM Parser
+ http://simplehtmldom.sourceforge.net/
+
+ Session
+ https://github.com/tontof/kriss_feed/blob/master/src/class/Session.php
+
+ Twig
+ http://twig.sensiolabs.org
+
+ Flash messages
+ https://github.com/plasticbrain/PHP-Flash-Messages
+
+ Pagination
+ https://github.com/daveismyname/pagination
+
+ PHPePub
+ https://github.com/Grandt/PHPePub/
+
+{% endblock %}
diff --git a/app/Resources/views/baggy/config.twig b/app/Resources/views/baggy/config.twig
new file mode 100755
index 000000000..6031f489c
--- /dev/null
+++ b/app/Resources/views/baggy/config.twig
@@ -0,0 +1,187 @@
+{% extends "layout.twig" %}
+
+{% block title %}{% trans "config" %}{% endblock %}
+{% block menu %}
+{% include '_menu.twig' %}
+{% endblock %}
+{% block content %}
+
{% trans "Saving articles" %}
+
{% trans "There are several ways to save an article:" %} {% trans "(? )" %}
+
+
+
+
Browser Plugins
+
+
Mobile Apps
+
+
{% trans "Bookmarklet" %}
+
+ {% trans "Drag & drop this link to your bookmarks bar:" %} {% trans "bag it!" %}
+
+
+
{% trans "Feeds" %}
+ {% if token == '' %}
+
{% trans "Your feed token is currently empty and must first be generated to enable feeds. Click here to generate it ." %}
+ {% else %}
+
+
+ {% trans "Your token:" %} {{token}}
+ {% trans "Your user id:" %} {{user_id}}
+ {% trans "You can regenerate your token: generate! ." %}
+
+ {% endif %}
+
+
{% trans "Change your theme" %}
+
+
+
{% trans "Change your language" %}
+
+
+
{% trans "Import" %}
+
{% trans "You can import your Pocket, Readability, Instapaper, Wallabag or any data in appropriate json or html format." %}
+
{% trans "Please select export file on your computer and press \"Import\" button below. Wallabag will parse your file, insert all URLs and start fetching of articles if required." %}
+
+
{% trans "You can click here to fetch content for articles with no content." %}
+
{% trans "Fetching process is controlled by two constants in your config file: IMPORT_LIMIT (how many articles are fetched at once) and IMPORT_DELAY (delay between fetch of next batch of articles)." %}
+
+
{% trans "Export your wallabag data" %}
+
{% trans "Export JSON" %}
+ Data will be exported in a single JSON file.
+
+
{% trans "Fancy an E-Book ?" %}
+
{% trans "Click to get all your articles in one ebook :" %}
+
+
+
{% trans "This can take a while and can even fail if you have too many articles, depending on your server configuration." %}
+
+
{% trans "Cache" %}
+
{% trans "Delete Cache" %}
+ Deleting the cache may help with display or other problems.
+
+ {% if http_auth == 0 %}
+
{% trans "Change your password" %}
+
+ {% endif %}
+
+
{% trans 'Add user' %}
+
+
+
{% trans "Delete account" %}
+ {% if not only_user %}
+ {% else %}
{% trans "You are the only user, you cannot delete your own account." %}
+
{% trans "To completely remove wallabag, delete the wallabag folder on your web server (and eventual databases)." %}
{% endif %}
+
+
{% trans "Upgrading wallabag" %}
+
+ {% trans "Installed version" %}: {{ constant('WALLABAG') }}
+ {% trans "Latest stable version" %}: {{ prod }}. {% if compare_prod == -1 %}{% trans "A more recent stable version is available." %} {% else %}{% trans "You are up to date." %}{% endif %} ({% trans "Last check:" %} {{ check_time_prod }})
+ {% if constant('DEBUG_POCHE') == 1 %}{% trans "Latest dev version" %}: {{ dev }}. {% if compare_dev == -1 %}{% trans "A more recent development version is available." %} {% else %}{% trans "You are up to date." %}{% endif %} ({% trans "Last check:" %} {{ check_time_dev }}){% endif %}
+
+
{% trans "You can clear cache to check the latest release." %}
+
+{% endblock %}
diff --git a/app/Resources/views/baggy/edit-tags.twig b/app/Resources/views/baggy/edit-tags.twig
new file mode 100755
index 000000000..15f15560f
--- /dev/null
+++ b/app/Resources/views/baggy/edit-tags.twig
@@ -0,0 +1,29 @@
+{% extends "layout.twig" %}
+{% block title %}edit tags{% endblock %}
+{% block menu %}
+{% include '_menu.twig' %}
+{% endblock %}
+{% block content %}
+
+
+
+
+
+
+
{{ entry.title|raw }}21>
+
+{% if tags is empty %}
+
{% trans "no tags" %}
+{% endif %}
+
+{% for tag in tags %}{{ tag.value }} ✘ {% endfor %}
+
+
+
{% trans "return to article" %}
+{% endblock %}
diff --git a/app/Resources/views/baggy/home.twig b/app/Resources/views/baggy/home.twig
new file mode 100755
index 000000000..93515080d
--- /dev/null
+++ b/app/Resources/views/baggy/home.twig
@@ -0,0 +1,81 @@
+{% extends "layout.twig" %}
+{% block title %}
+{% if view == 'fav' %}
+{% trans "favorites" %}
+{% elseif view == 'archive' %}
+{% trans "archive" %}
+{% else %}
+{% trans "unread" %}
+{% endif %}
+{% endblock %}
+{% block menu %}
+{% include '_menu.twig' %}
+{% endblock %}
+{% block content %}
+ {% if tag %}
+
{% trans "Tag" %}: {{ tag.value }}
+ {% endif %}
+ {% if entries is empty %}
+
{% trans "No articles found." %}
+ {% else %}
+
+ {% include '_display-mode.twig' %}
+ {% include '_sorting.twig' %}
+
+ {% block pager %}
+ {% if nb_results > 1 %}
+
+
{{ nb_results }} {% trans "results" %}{% if search_term is defined %} {% trans %}found for « {{ search_term }} »{% endtrans %}{% endif %}
+ {{ page_links | raw }}
+
+ {% elseif nb_results == 1 %}
+ {% if search_term is defined %}
+
+
{% trans "Only one result found for " %} « {{ search_term }} »
+
+ {% endif %}
+ {% endif %}
+ {% endblock %}
+
+ {% for entry in entries %}
+
+
+ {% if entry.content| getReadingTime > 0 %}
+
{% trans "estimated reading time :" %} {{ entry.content| getReadingTime }} min
+ {% else %}
+
{% trans "estimated reading time :" %} < 1 min
+ {% endif %}
+
+
{{ entry.content|striptags|slice(0, 300) }}...
+
+
+ {% endfor %}
+
+ {{ block('pager') }}
+ {% if view == 'home' %}{% if nb_results > 1 %}
{% trans "Mark all the entries as read" %}
{% endif %}{% endif %}
+ {% if searchterm is defined %}
{% trans "Tag these results as" %} {{ searchterm }} {% endif %}
+
+ {% if searchterm is defined %}
{% trans "Delete results matching" %} {{ searchterm }} {% endif %}
+
+ {% if tag %}
{% trans "Mark all articles from this tag as read" %} {% endif %}
+
+ {% if tag %}
+ {% if constant('EPUB') == 1 %}
{% trans "Download as ePub3" %} {% endif %}
+ {% if constant('MOBI') == 1 %}
{% trans "Download as Mobi" %} {% endif %}
+ {% if constant('PDF') == 1 %}
{% trans "Download as PDF" %} {% endif %}
+ {% elseif searchterm is defined %}
+ {% if constant('EPUB') == 1 %}
{% trans "Download as ePub3" %} {% endif %}
+ {% if constant('MOBI') == 1 %}
{% trans "Download as Mobi" %} {% endif %}
+ {% if constant('PDF') == 1 %}
{% trans "Download as PDF" %} {% endif %}
+ {% else %}
+ {% if constant('EPUB') == 1 %}
{% trans "Download as ePub3" %} {% endif %}
+ {% if constant('MOBI') == 1 %}
{% trans "Download as Mobi" %} {% endif %}
+ {% if constant('PDF') == 1 %}
{% trans "Download as PDF" %} {% endif %}
+ {% endif %}
+{% endif %}
+{% endblock %}
diff --git a/app/Resources/views/baggy/layout-login.twig b/app/Resources/views/baggy/layout-login.twig
new file mode 100644
index 000000000..4078fbb08
--- /dev/null
+++ b/app/Resources/views/baggy/layout-login.twig
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
{% block title %}{% endblock %} - wallabag
+{% include '_head.twig' %}
+{% include '_bookmarklet.twig' %}
+
+
+ {% include '_top.twig' %}
+
+ {% block menu %}{% endblock %}
+ {% block precontent %}{% endblock %}
+ {% block messages %}
+ {% include '_messages.twig' %}
+ {% endblock %}
+
+ {% block content %}{% endblock %}
+
+
+{% include '_footer.twig' %}
+
+
\ No newline at end of file
diff --git a/app/Resources/views/baggy/layout.twig b/app/Resources/views/baggy/layout.twig
new file mode 100755
index 000000000..8de12749f
--- /dev/null
+++ b/app/Resources/views/baggy/layout.twig
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
{% block title %}{% endblock %} - wallabag
+{% include '_head.twig' %}
+{% include '_bookmarklet.twig' %}
+
+
+ {% include '_top.twig' %}
+
+ {% block menu %}{% endblock %}
+ {% block precontent %}{% endblock %}
+ {% block messages %}
+ {% include '_messages.twig' %}
+ {% if includeImport %}
+ {% include '_import.twig' %}
+ {% endif %}
+ {% endblock %}
+
+ {% block content %}{% endblock %}
+
+
+{% include '_footer.twig' %}
+
+
\ No newline at end of file
diff --git a/app/Resources/views/baggy/login.twig b/app/Resources/views/baggy/login.twig
new file mode 100644
index 000000000..58290e9c6
--- /dev/null
+++ b/app/Resources/views/baggy/login.twig
@@ -0,0 +1,34 @@
+{% extends "layout-login.twig" %}
+
+{% block title %}{% trans "login to your wallabag" %}{% endblock %}
+{% block content %}
+ {% if http_auth == 0 %}
+
+ {% endif %}
+{% endblock %}
diff --git a/app/Resources/views/baggy/public/css/font.css b/app/Resources/views/baggy/public/css/font.css
new file mode 100755
index 000000000..7c02a16fb
--- /dev/null
+++ b/app/Resources/views/baggy/public/css/font.css
@@ -0,0 +1,6 @@
+@font-face {
+ font-family: 'PT Sans';
+ font-style: normal;
+ font-weight: 700;
+ src: local('PT Sans Bold'), local('PTSans-Bold'), url(../fonts/ptsans.woff) format('woff');
+}
diff --git a/app/Resources/views/baggy/public/css/main.css b/app/Resources/views/baggy/public/css/main.css
new file mode 100755
index 000000000..1df829101
--- /dev/null
+++ b/app/Resources/views/baggy/public/css/main.css
@@ -0,0 +1,1071 @@
+/* ==========================================================================
+ Sommaire
+
+ 1 = Style Guide
+ 2 = Layout
+ 3 = Pictos
+ 4 = Messages
+ 5 = Article
+ 6 = Media queries
+
+ ========================================================================== */
+
+html {
+ min-height: 100%;
+}
+
+body {
+ background-color: #EEE;
+}
+
+.login {
+ background-color: #333;
+}
+
+.login #main {
+ padding: 0;
+ margin: 0;
+}
+
+.login form {
+ background-color: #FFF;
+ padding: 1.5em;
+ box-shadow: 0 1px 8px rgba(0,0,0,0.9);
+ width: 20em;
+ position: absolute;
+ top: 8em;
+ left: 50%;
+ margin-left: -10em;
+}
+
+.login .logo {
+ position: absolute;
+ top: 2em;
+ left: 50%;
+ margin-left: -55px;
+}
+
+/* ==========================================================================
+ 1 = Style Guide
+ ========================================================================== */
+
+::selection {
+ color: #FFF;
+ background-color: #000;
+}
+
+.desktopHide {
+ display: none;
+}
+
+.logo {
+ position: fixed;
+ z-index: 20;
+ top: 0.4em;
+ left: 0.6em;
+}
+
+h2, h3, h4 {
+ font-family: 'PT Sans', sans-serif;
+ text-transform: uppercase;
+}
+
+p, li, label {
+ color: #666;
+}
+
+a {
+ color: #000;
+ font-weight: bold;
+}
+
+a:hover, a:focus {
+ text-decoration: none;
+}
+
+form fieldset {
+ border:0;
+ padding: 0;
+ margin: 0;
+}
+
+form input[type="text"], select, form input[type="password"], form input[type="url"], form input[type="email"] {
+ border: 1px solid #999;
+ padding: 0.5em 1em;
+ min-width: 12em;
+ color: #666;
+}
+
+@media screen and (-webkit-min-device-pixel-ratio:0){
+ select{
+ -webkit-appearance: none;
+ border-radius: 0;
+ background: #FFF url(../img/bg-select.png) no-repeat right center;
+ }
+}
+
+.inline .row {
+ display: inline-block;
+ margin-right: 0.5em;
+}
+
+.inline label {
+ min-width: 6em;
+}
+
+fieldset label {
+ display: inline-block;
+ min-width: 12.5em;
+ color: #666;
+}
+
+label {
+ margin-right: 0.5em;
+}
+
+form .row {
+ margin-bottom: 0.5em;
+}
+
+form button, input[type="submit"] {
+ cursor:pointer;
+ background-color: #000;
+ color: #FFF;
+ border:0;
+ padding: 0.5em 1em;
+ display: inline-block;
+ border:1px solid #000;
+}
+
+ form button:hover, form button:focus, input[type="submit"]:hover, input[type="submit"]:focus {
+ background-color: #FFF;
+ color: #000;
+ -webkit-transition: all 0.5s ease;
+ -moz-transition: all 0.5s ease;
+ -ms-transition: all 0.5s ease;
+ -o-transition: all 0.5s ease;
+ transition: all 0.5s ease;
+ }
+
+#bookmarklet {
+ cursor: move;
+}
+
+h2:after {
+ content: "";
+ height: 4px;
+ width: 70px;
+ background-color: #000;
+ display: block;
+}
+
+.links {
+ padding: 0;
+ margin: 0;
+}
+ .links li {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ }
+
+
+#links {
+ position: fixed;
+ top: 0;
+ width: 10em;
+ left: 0;
+ text-align: right;
+ background-color: #333;
+ padding-top: 9.5em;
+ height: 100%;
+ box-shadow:inset -4px 0 20px rgba(0,0,0,0.6);
+ z-index: 15;
+}
+
+#main {
+ margin-left: 13em;
+ position: relative;
+ z-index: 10;
+ padding-right: 5%;
+ padding-bottom: 1em;
+}
+
+ #links > li > a {
+ display: block;
+ padding: 0.5em 2em 0.5em 1em;
+ color: #FFF;
+ position: relative;
+ text-transform: uppercase;
+ text-decoration: none;
+ font-weight: normal;
+ font-family: 'PT Sans', sans-serif;
+ -webkit-transition: all 0.5s ease;
+ -moz-transition: all 0.5s ease;
+ -ms-transition: all 0.5s ease;
+ -o-transition: all 0.5s ease;
+ transition: all 0.5s ease;
+ }
+
+ #links > li > a:hover, #links > li > a:focus {
+ background-color: #999;
+ color: #000;
+ }
+
+ #links .current:after {
+ content: "";
+ width: 0;
+ height: 0;
+ position: absolute;
+ border-style: solid;
+ border-width: 10px;
+ border-color: transparent #EEE transparent transparent;
+ right: 0;
+ top: 50%;
+ margin-top: -10px;
+ }
+
+ #links li:last-child {
+ position: fixed;
+ bottom: 1em;
+ width: 10em;
+ }
+
+ #links li:last-child a:before {
+ font-size: 1.2em;
+ position: relative;
+ top: 2px;
+ }
+
+
+#sort {
+ padding: 0;
+ list-style-type: none;
+ opacity: 0.5;
+ display: inline-block;
+}
+
+#sort li {
+ display: inline;
+ font-size: 0.9em;
+}
+
+#sort li + li {
+ margin-left: 10px;
+}
+
+#sort a {
+ padding: 2px 2px 0;
+ vertical-align: middle;
+}
+
+#sort img {
+ vertical-align: baseline;
+}
+#sort img:hover {
+ cursor: pointer;
+}
+
+#display-mode {
+ float: right;
+ vertical-align: middle;
+ margin-top: 10px;
+ margin-bottom: 10px;
+ opacity: 0.5;
+}
+#listmode {
+ width: 16px;
+ display: inline-block;
+ text-decoration: none;
+}
+#listmode a:hover {
+ opacity: 1;
+}
+#listmode.tablemode {
+ background-image: url("../img/baggy/table.png");
+ background-repeat: no-repeat;
+ background-position: bottom;
+}
+#listmode.listmode {
+ background-image: url("../img/baggy/list.png");
+ background-repeat: no-repeat;
+ background-position: bottom;
+}
+
+
+/* ==========================================================================
+ 2 = Layout
+ ========================================================================== */
+
+#content {
+ margin-top: 5em;
+ min-height: 30em;
+}
+
+footer {
+ text-align: right;
+ position: relative;
+ bottom: 0;
+ right: 5em;
+ color: #999;
+ font-size: 0.8em;
+ font-style: italic;
+ z-index: 20;
+}
+
+footer a {
+ color: #999;
+ font-weight: normal;
+}
+
+.list-entries {
+ letter-spacing:-5px;
+}
+
+.listmode .entrie {
+ width: 100%!important;
+ margin-left: 0!important;
+}
+
+.list-entries + .results {
+ margin-bottom: 2em;
+}
+
+.estimatedTime .reading-time {
+ color: #999;
+ font-style: italic;
+ font-weight: normal;
+ font-size: 0.9em;
+}
+
+.estimatedTime small {
+ position: relative;
+ top: -1px;
+}
+
+.entrie {
+ background-color: #FFF;
+ letter-spacing:normal;
+ box-shadow: 0 3px 7px rgba(0,0,0,0.3);
+ display: inline-block;
+ width: 32%;
+ margin-bottom: 1.5em;
+ vertical-align: top;
+ margin-left: 1.5%;
+ position: relative;
+ overflow: hidden;
+ padding: 1.5em 1.5em 3em 1.5em;
+
+ /* Removing CSS transitions because they make the switch from list view to
+ * table view jerky
+ */
+ /* -webkit-transition: all 0.5s ease; */
+ /* -moz-transition: all 0.5s ease; */
+ /* -ms-transition: all 0.5s ease; */
+ /* -o-transition: all 0.5s ease; */
+ /* transition: all 0.5s ease; */
+}
+
+.entrie:before {
+ content: "";
+ width: 0;
+ height: 0;
+ border-style:solid;
+ border-color: transparent transparent #000 transparent;
+ border-width: 10px;
+ position: absolute;
+ bottom: 0.3em;
+ z-index: 10;
+ right: 1.5em;
+ -webkit-transition: all 0.5s ease;
+ -moz-transition: all 0.5s ease;
+ -ms-transition: all 0.5s ease;
+ -o-transition: all 0.5s ease;
+ transition: all 0.5s ease;
+}
+
+.entrie:after {
+ content: "";
+ position: absolute;
+ height: 7px;
+ width: 100%;
+ bottom: 0;
+ left: 0;
+ background-color: #000;
+ -webkit-transition: all 0.5s ease;
+ -moz-transition: all 0.5s ease;
+ -ms-transition: all 0.5s ease;
+ -o-transition: all 0.5s ease;
+ transition: all 0.5s ease;
+}
+
+.entrie:hover {
+ box-shadow: 0 3px 10px rgba(0,0,0,1);
+}
+
+.entrie:hover:after {
+ height: 40px;
+}
+
+.entrie:hover:before {
+ bottom: 2.4em;
+}
+
+.entrie:hover h2 a {
+ color: #666;
+}
+
+.entrie h2 {
+ text-transform: none;
+ margin-bottom: 0;
+ line-height: 1.2;
+}
+
+ .entrie h2:after {
+ content: none;
+ }
+
+
+.entrie h2 a {
+ display: block;
+ text-decoration: none;
+ color: #000;
+ word-wrap: break-word;
+ -webkit-transition: all 0.5s ease;
+ -moz-transition: all 0.5s ease;
+ -ms-transition: all 0.5s ease;
+ -o-transition: all 0.5s ease;
+ transition: all 0.5s ease;
+}
+/*
+.entrie h2 a:after {
+ content: "";
+ position: absolute;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ left: 0;
+}
+*/
+
+.entrie p {
+ color: #666;
+ font-size: 0.9em;
+ line-height: 1.7;
+}
+
+ .entrie h2 a:first-letter {
+ text-transform: uppercase;
+ }
+
+.entrie:hover .tools {
+ bottom: 0;
+}
+
+.entrie .tools {
+ position: absolute;
+ bottom: -50px;
+ left: 0;
+ width: 100%;
+ z-index: 10;
+ padding-right: 0.5em;
+ text-align: right;
+ -webkit-transition: all 0.5s ease;
+ -moz-transition: all 0.5s ease;
+ -ms-transition: all 0.5s ease;
+ -o-transition: all 0.5s ease;
+ transition: all 0.5s ease;
+}
+
+ .entrie .tools a {
+ color: #666;
+ text-decoration: none;
+ display: block;
+ padding: 0.4em;
+ }
+
+ .entrie .tools a:hover {
+ color: #FFF;
+ }
+
+ .entrie .tools li {
+ display: inline-block;
+ }
+
+.entrie:nth-child(3n+1) {
+ margin-left: 0;
+}
+
+.results {
+ letter-spacing: -5px;
+ padding: 0 0 0.5em;
+}
+
+.results > * {
+ display: inline-block;
+ vertical-align: top;
+ letter-spacing: normal;
+ width: 50%;
+}
+
+.pagination {
+ text-align: right;
+ margin-bottom:50px;
+}
+
+.nb-results {
+ text-align: left;
+ font-style: italic;
+ color: #999;
+}
+
+.pagination > * {
+ display: inline-block;
+ margin-left: 0.5em;
+}
+
+.pagination a {
+ color: #999;
+ text-decoration: none;
+}
+
+ .pagination a:hover, .pagination a:focus {
+ text-decoration: underline;
+ }
+
+.pagination .disabled {
+ display: none;
+}
+
+/* ==========================================================================
+ 2.1 = "save a link" related styles
+ ========================================================================== */
+
+.popup-form {
+ background: rgba(0,0,0,0.5);
+ position: absolute;
+ top: 0;
+ left: 10em;
+ z-index: 20;
+ height: 100%;
+ width: 100%;
+ margin: 0;
+ margin-top: -30% !important; /* TODO: get rid of !important here; overridden by .messages selector */
+ padding: 2em;
+ display: none;
+ border-left: 1px #EEE solid;
+}
+
+ .popup-form form {
+ background-color: #FFF;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 20;
+ border: 10px solid #000;
+ width: 400px;
+ height: 200px;
+ padding: 2em;
+ }
+
+#bagit-form-form .addurl {
+ margin-left: 0;
+}
+
+.closeMessage,
+.close-button {
+ background-color: #000;
+ color: #FFF;
+ font-size: 1.2em;
+ line-height: 1.6;
+ width: 1.6em;
+ height: 1.6em;
+ text-align: center;
+ text-decoration: none;
+}
+ .closeMessage:hover,
+ .closeMessage:focus,
+ .close-button:hover,
+ .close-button:focus {
+ background-color: #999;
+ color: #000;
+ }
+
+.close-button--popup {
+ display: inline-block;
+ position: absolute;
+ top: 0;
+ right: 0;
+ font-size: 1.4em;
+}
+
+.active-current {
+ background-color: #999;
+}
+
+.active-current:after {
+ content: "";
+ width: 0;
+ height: 0;
+ position: absolute;
+ border-style: solid;
+ border-width: 10px;
+ border-color: transparent #EEE transparent transparent;
+ right: 0;
+ top: 50%;
+ margin-top: -10px;
+}
+
+.opacity03 {
+ opacity: 0.3;
+}
+
+.add-to-wallabag-link-after {
+ background-color: #000;
+ color: #fff;
+ padding: 0 3px 2px 3px;
+}
+
+a.add-to-wallabag-link-after {
+ visibility: hidden;
+ position: absolute;
+ opacity: 0;
+ transition-duration: 2s;
+ transition-timing-function: ease-out;
+}
+
+#article article a:hover + a.add-to-wallabag-link-after, a.add-to-wallabag-link-after:hover {
+ opacity: 1;
+ visibility: visible;
+ transition-duration: .3s;
+ transition-timing-function: ease-in;
+}
+
+a.add-to-wallabag-link-after:after {
+ content: "w";
+}
+
+#add-link-result {
+ font-weight: bold;
+ font-size: 0.9em;
+}
+
+/* ==========================================================================
+ 3 = Pictos
+ ========================================================================== */
+
+@font-face {
+ font-family: 'icomoon';
+ src:url('../fonts/icomoon.eot?-s0mcsx');
+ src:url('../fonts/icomoon.eot?#iefix-s0mcsx') format('embedded-opentype'),
+ url('../fonts/icomoon.woff?-s0mcsx') format('woff'),
+ url('../fonts/icomoon.ttf?-s0mcsx') format('truetype'),
+ url('../fonts/icomoon.svg?-s0mcsx#icomoon') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+.icon span,
+.icon-image span {
+ position: absolute;
+ top: -9999px;
+}
+
+[class^="icon-"]:before, [class*=" icon-"]:before {
+ font-family: 'icomoon';
+ speak: none;
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+
+ /* Better Font Rendering =========== */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-flattr:before {
+ content: "\e800";
+}
+.icon-mail:before {
+ content: "\e80a";
+}
+.icon-up-open:before {
+ content: "\e80b";
+}
+.icon-star:before {
+ content: "\e805";
+}
+.icon-check:before {
+ content: "\e804";
+}
+.icon-link:before {
+ content: "\e801";
+}
+.icon-reply:before {
+ content: "\e806";
+}
+.icon-menu:before {
+ content: "\e802";
+}
+.icon-clock:before {
+ content: "\e803";
+}
+.icon-twitter:before {
+ content: "\e807";
+}
+.icon-down-open:before {
+ content: "\e809";
+}
+.icon-trash:before {
+ content: "\e80c";
+}
+.icon-delete:before {
+ content: "\e600";
+}
+.icon-power:before {
+ content: "\e601";
+}
+.icon-arrow-up-thick:before {
+ content: "\e602";
+}
+.icon-rss:before {
+ content: "\e808";
+}
+.icon-print:before {
+ content: "\e80d";
+}
+
+
+/* .icon-image class, for image-based icons
+ ========================================================================== */
+
+.icon-image {
+ background-size: 16px 16px;
+ background-repeat: no-repeat;
+ background-position: center;
+ padding-right: 1em !important;
+ padding-left: 1em !important;
+}
+
+/* Carrot (http://carrot.org) */
+.icon-image--carrot {
+ background-image: url('../../_global/img/icons/carrot-icon--white.png');
+}
+
+/* Diaspora */
+.icon-image--diaspora {
+ background-image: url('../../_global/img/icons/diaspora-icon--black.png');
+}}
+
+/* ==========================================================================
+ Icon selected
+ ========================================================================== */
+
+.icon-star.fav:before {
+ color: #FFF;
+}
+
+.icon-check.archive:before {
+ color: #FFF;
+}
+
+/* ==========================================================================
+ 4 = Messages
+ ========================================================================== */
+
+.messages {
+ text-align: left;
+ margin-top: 1em;
+}
+
+.messages > * { display: inline-block;}
+
+.warning {
+ /* font-size: 3em;
+ color: #999;
+ font-style: italic;
+ position: absolute;
+ top: 50%;
+ left: 0;
+ width: 100%;
+ text-align: center;
+ padding-right: 5%;
+ margin-top: -2em;*/
+ font-weight: bold;
+ display: block;
+ width: 100%;
+}
+
+.more-info {
+ font-size: 0.85em;
+ line-height: 1.5;
+ color: #aaa;
+}
+
+ .more-info a {
+ color: #aaa;
+ }
+
+/* ==========================================================================
+ 5 = Article
+ ========================================================================== */
+
+#article {
+ width: 70%;
+ margin-bottom: 3em;
+ text-align: justify;
+}
+
+#article .tags {
+ margin-bottom: 1em;
+}
+
+#article i {
+ font-style: normal;
+}
+
+blockquote {
+ border:1px solid #999;
+ background-color: #FFF;
+ padding: 1em;
+ margin: 0;
+}
+
+#article h1 {
+ text-align: left;
+}
+
+#article h2, #article h3, #article h4 {
+ text-transform: none;
+}
+
+#article h2:after {
+ content: none;
+}
+
+.topPosF {
+ position: fixed;
+ right: 20%;
+ bottom: 2em;
+ font-size: 1.5em;
+}
+
+#article_toolbar {
+ margin-bottom: 1em;
+}
+
+#article_toolbar li {
+ display: inline-block;
+}
+
+#article_toolbar a {
+ background-color: #000;
+ padding: 0.3em 0.5em 0.2em;
+ color: #FFF;
+ text-decoration: none;
+}
+
+ #article_toolbar a:hover, #article_toolbar a:focus {
+ background-color: #999;
+ }
+
+.shaarli:before {
+ content: "*";
+}
+
+.return {
+ text-decoration: none;
+ margin-top: 1em;
+ display: block;
+}
+
+.return:before {
+ margin-right: 0.5em;
+}
+
+.notags {
+ font-style: italic;
+ color: #999;
+}
+
+.icon-rss {
+ background-color: #000;
+ color: #FFF;
+ padding: 0.2em 0.5em;
+}
+
+.icon-rss:before {
+ position: relative;
+ top: 2px;
+}
+
+.list-tags li {
+ margin-bottom: 0.5em;
+}
+
+.list-tags .icon-rss:hover, .list-tags .icon-rss:focus {
+ background-color: #FFF;
+ color: #000;
+ text-decoration: none;
+}
+
+.list-tags a {
+ text-decoration: none;
+}
+
+.list-tags a:hover, .list-tags a:focus {
+ text-decoration: underline;
+}
+
+pre code {
+ font-family: "Courier New", Courier, monospace;
+ border: 1px solid #ccc;
+ font-size: 0.96em;
+}
+
+
+/* ==========================================================================
+ 6 = Media Queries
+ ========================================================================== */
+
+@media screen and (max-width: 1050px) {
+ .entrie {
+ width: 49%;
+ }
+ .entrie:nth-child(3n+1) {
+ margin-left: 1.5%;
+ }
+ .entrie:nth-child(2n+1) {
+ margin-left: 0;
+ }
+}
+
+@media screen and (max-width: 900px) {
+ #article {
+ width: 80%;
+ }
+ .topPosF {
+ right: 2.5em;
+ }
+}
+
+@media screen and (max-width: 700px) {
+ .entrie {
+ width: 100%;
+ margin-left: 0;
+ }
+ #display-mode {
+ display: none;
+ }
+}
+
+@media screen and (max-width: 500px) {
+ .entrie {
+ width: 100%;
+ margin-left: 0;
+ }
+ body > header {
+ background-color: #333;
+ position: fixed;
+ top: 0;
+ width: 100%;
+ height: 3em;
+ z-index: 11;
+ }
+ #links li:last-child {
+ position: static;
+ width: auto;
+ }
+ #links li:last-child a:before {
+ content: none;
+ }
+ .logo {
+ width: 1.25em;
+ height: 1.25em;
+ left: 0;
+ top: 0;
+ }
+ .login > header {
+ position: static;
+ }
+ .login form {
+ width: 100%;
+ position: static;
+ margin-left: 0;
+ }
+ .login .logo {
+ width: auto;
+ height: auto;
+ top: 0.5em;
+ width: 75px;
+ height: 75px;
+ margin-left: -37.5px;
+ }
+ .desktopHide {
+ display: block;
+ position: fixed;
+ z-index: 20;
+ top: 0;
+ right: 0;
+ border:0;
+ width: 2.5em;
+ height: 2.5em;
+ cursor: pointer;
+ background-color: #999;
+ font-size: 1.2em;
+ }
+ .desktopHide:hover, .desktopHide:focus {
+ background-color: #FFF;
+ }
+ #links {
+ display: none;
+ width: 100%;
+ height: auto;
+ padding-top: 3em;
+ }
+ #links.menu--open {
+ display: block;
+ }
+ footer {
+ position: static;
+ margin-right: 3em;
+ }
+ #main {
+ margin-left: 1.5em;
+ padding-right: 1.5em;
+ position: static;
+ margin-top: 3em;
+ }
+ #article_toolbar .topPosF {
+ display: none;
+ }
+
+ #article {
+ width: 100%;
+ }
+
+ #article h1 {
+ font-size: 1.5em;
+ }
+ #article_toolbar a {
+ padding: 0.3em 0.4em 0.2em;
+ }
+
+ #display-mode {
+ display: none;
+ }
+
+ .popup-form, #bagit-form, #search-form {
+ left: 0;
+ width: 100%;
+ border-left: none;
+ }
+
+ .popup-form form,
+ #bagit-form form,
+ #search-form form {
+ width: 100%;
+ }
+}
diff --git a/app/Resources/views/baggy/public/css/messages.css b/app/Resources/views/baggy/public/css/messages.css
new file mode 100755
index 000000000..42da70b30
--- /dev/null
+++ b/app/Resources/views/baggy/public/css/messages.css
@@ -0,0 +1,19 @@
+.messages.error.install {
+ border: 1px solid #c42608;
+ color: #c00 !important;
+ background: #fff0ef;
+ text-align: left;
+}
+
+.messages.notice.install {
+ border: 1px solid #ebcd41;
+ color: #000;
+ background: #fffcd3;
+ text-align: left;
+}
+
+.messages.success.install {
+ border: 1px solid #6dc70c;
+ background: #e0fbcc !important;
+ text-align: left;
+}
\ No newline at end of file
diff --git a/app/Resources/views/baggy/public/css/print.css b/app/Resources/views/baggy/public/css/print.css
new file mode 100755
index 000000000..9dd6d295c
--- /dev/null
+++ b/app/Resources/views/baggy/public/css/print.css
@@ -0,0 +1,62 @@
+/* ### Layout ### */
+
+body {
+ font-family: Serif;
+ background-color: #fff;
+}
+
+@page {
+ margin: 1cm;
+}
+
+img {
+ max-width: 100% !important;
+}
+
+/* ### Content ### */
+
+/* Hide useless blocks */
+body > header,
+#article_toolbar,
+#links,
+#sort,
+body > footer,
+.top_link,
+div.tools,
+header div,
+.messages,
+.entrie + .results {
+ display: none !important;
+}
+
+article {
+ border: none !important;
+}
+
+/* Add URL after links */
+.vieworiginal a:after {
+ content: " (" attr(href) ")";
+}
+
+/* Add explanation after abbr */
+abbr[title]:after {
+ content: " (" attr(title) ")";
+}
+
+/* Change border on current pager item */
+.pagination span.current {
+ border-style: dashed;
+}
+
+#main {
+ width: 100%;
+ padding: 0;
+ margin: 0;
+ margin-left: 0;
+ padding-right: 0;
+ padding-bottom: 0;
+}
+
+#article {
+ width: 100%;
+}
diff --git a/app/Resources/views/baggy/public/css/ratatouille.css b/app/Resources/views/baggy/public/css/ratatouille.css
new file mode 100644
index 000000000..b203cbb89
--- /dev/null
+++ b/app/Resources/views/baggy/public/css/ratatouille.css
@@ -0,0 +1,211 @@
+/*
+ Ratatouille mini Framework css by Thomas LEBEAU
+ Base on KNACSS => www.KNACSS.com (2013-10) @author: Raphael Goetter, Alsacreations
+ and normalize.css
+*/
+
+* {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+html {
+ font-family: sans-serif; /* 1 */
+ -ms-text-size-adjust: 100%; /* 2 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+body {
+ font-size: 1em;
+ line-height:1.5;
+ margin: 0;
+}
+
+/* ==========================================================================
+ Mise en forme
+ ========================================================================== */
+
+h1:first-child,
+h2:first-child,
+h3:first-child,
+h4:first-child,
+h5:first-child,
+h6:first-child,
+p:first-child,
+ul:first-child,
+ol:first-child,
+dl:first-child{
+ margin-top: 0;
+}
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, serif;
+}
+
+pre {
+ white-space: pre-wrap;
+}
+
+
+.upper {
+ text-transform: uppercase;
+}
+
+.bold {
+ font-weight: bold;
+}
+
+.inner {
+ margin: 0 auto;
+ max-width: 61.25em;/*980px*/
+}
+
+table, img {
+ max-width: 100%;
+ height :auto;
+}
+
+iframe {
+ max-width: 100%;
+}
+
+.fl {
+ float: left;
+}
+
+.fr {
+ float: right;
+}
+
+table {
+ border-collapse: collapse;
+}
+
+figure {
+ margin: 0;
+}
+
+button,
+input,
+select,
+textarea {
+ font-family: inherit;
+ font-size: 100%;
+ margin: 0;
+}
+
+input[type="search"] {
+ -webkit-appearance: textfield;
+}
+
+/* ==========================================================================
+ Mise en page
+ ========================================================================== */
+
+.dib {
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.dnone {
+ display: none;
+}
+
+.dtable { display:table }
+
+ .dtable > * { display:table-row; }
+
+ .dtable > * > * { display:table-cell; }
+
+.element-invisible {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+}
+
+.small {
+ font-size:0.8em;
+}
+
+.big {
+ font-size: 1.2em;
+}
+
+/*Width*/
+
+.w100 { width:100%; }
+.w90 { width:90%; }
+.w80 { width:80%; }
+.w70 { width:70%; }
+.w60 { width:60%; }
+.w50 { width:50%; }
+.w40 { width:40%; }
+.w30 { width:30%; }
+.w20 { width:20%; }
+.w10 { width:10%; }
+
+
+/* ==========================================================================
+ Internet Explorer
+ ========================================================================== */
+
+/*IE8 and IE9*/
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+ display: block;
+}
+
+/*IE8 and IE9*/
+
+audio,
+canvas,
+video {
+ display: inline-block;
+}
+
+@media screen and (-webkit-min-device-pixel-ratio:0){
+ select{
+ -webkit-appearance: none;
+ border-radius: 0;
+ }
+}
+
+/* ==========================================================================
+ Medias Queries
+ ========================================================================== */
+
+/*Desktop 1080px*/
+
+@media screen and (max-width: 67.50em) {
+}
+
+/*Tablet 800px*/
+
+@media screen and (max-width: 50em) {
+}
+
+/*Mobile 640px*/
+
+@media screen and (max-width: 40em) {
+}
+
diff --git a/app/Resources/views/baggy/public/fonts/icomoon.eot b/app/Resources/views/baggy/public/fonts/icomoon.eot
new file mode 100644
index 000000000..563235166
Binary files /dev/null and b/app/Resources/views/baggy/public/fonts/icomoon.eot differ
diff --git a/app/Resources/views/baggy/public/fonts/icomoon.svg b/app/Resources/views/baggy/public/fonts/icomoon.svg
new file mode 100644
index 000000000..b45861363
--- /dev/null
+++ b/app/Resources/views/baggy/public/fonts/icomoon.svg
@@ -0,0 +1,41 @@
+
+
+
+
+
+{
+ "fontFamily": "icomoon",
+ "majorVersion": 1,
+ "minorVersion": 0,
+ "version": "Version 1.0",
+ "fontId": "icomoon",
+ "psName": "icomoon",
+ "subFamily": "Regular",
+ "fullName": "icomoon",
+ "description": "Generated by IcoMoon"
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/Resources/views/baggy/public/fonts/icomoon.ttf b/app/Resources/views/baggy/public/fonts/icomoon.ttf
new file mode 100644
index 000000000..bb1f21f88
Binary files /dev/null and b/app/Resources/views/baggy/public/fonts/icomoon.ttf differ
diff --git a/app/Resources/views/baggy/public/fonts/icomoon.woff b/app/Resources/views/baggy/public/fonts/icomoon.woff
new file mode 100644
index 000000000..bab137795
Binary files /dev/null and b/app/Resources/views/baggy/public/fonts/icomoon.woff differ
diff --git a/app/Resources/views/baggy/public/fonts/ptsans.woff b/app/Resources/views/baggy/public/fonts/ptsans.woff
new file mode 100644
index 000000000..cf7c62e10
Binary files /dev/null and b/app/Resources/views/baggy/public/fonts/ptsans.woff differ
diff --git a/app/Resources/views/baggy/public/img/baggy/blank.png b/app/Resources/views/baggy/public/img/baggy/blank.png
new file mode 100755
index 000000000..63e09844e
Binary files /dev/null and b/app/Resources/views/baggy/public/img/baggy/blank.png differ
diff --git a/app/Resources/views/baggy/public/img/baggy/down.png b/app/Resources/views/baggy/public/img/baggy/down.png
new file mode 100644
index 000000000..b9d536a7c
Binary files /dev/null and b/app/Resources/views/baggy/public/img/baggy/down.png differ
diff --git a/app/Resources/views/baggy/public/img/baggy/list.png b/app/Resources/views/baggy/public/img/baggy/list.png
new file mode 100755
index 000000000..bd5aff5ae
Binary files /dev/null and b/app/Resources/views/baggy/public/img/baggy/list.png differ
diff --git a/app/Resources/views/baggy/public/img/baggy/table.png b/app/Resources/views/baggy/public/img/baggy/table.png
new file mode 100755
index 000000000..859c4cd8f
Binary files /dev/null and b/app/Resources/views/baggy/public/img/baggy/table.png differ
diff --git a/app/Resources/views/baggy/public/img/baggy/top.png b/app/Resources/views/baggy/public/img/baggy/top.png
new file mode 100644
index 000000000..954a8c0ac
Binary files /dev/null and b/app/Resources/views/baggy/public/img/baggy/top.png differ
diff --git a/app/Resources/views/baggy/public/img/bg-select.png b/app/Resources/views/baggy/public/img/bg-select.png
new file mode 100644
index 000000000..951204412
Binary files /dev/null and b/app/Resources/views/baggy/public/img/bg-select.png differ
diff --git a/app/Resources/views/baggy/public/img/logo-other_themes.png b/app/Resources/views/baggy/public/img/logo-other_themes.png
new file mode 100755
index 000000000..32543a449
Binary files /dev/null and b/app/Resources/views/baggy/public/img/logo-other_themes.png differ
diff --git a/app/Resources/views/baggy/public/img/logo-w.png b/app/Resources/views/baggy/public/img/logo-w.png
new file mode 100755
index 000000000..65dc607b7
Binary files /dev/null and b/app/Resources/views/baggy/public/img/logo-w.png differ
diff --git a/app/Resources/views/baggy/public/img/logo-wallabag.svg b/app/Resources/views/baggy/public/img/logo-wallabag.svg
new file mode 100644
index 000000000..40193e1c5
--- /dev/null
+++ b/app/Resources/views/baggy/public/img/logo-wallabag.svg
@@ -0,0 +1,300 @@
+
+
+
+]>
+
+
+
+
+
+
diff --git a/app/Resources/views/baggy/public/img/logo.png b/app/Resources/views/baggy/public/img/logo.png
new file mode 100755
index 000000000..5305c77da
Binary files /dev/null and b/app/Resources/views/baggy/public/img/logo.png differ
diff --git a/app/Resources/views/baggy/public/img/logo.svg b/app/Resources/views/baggy/public/img/logo.svg
new file mode 100644
index 000000000..865da440d
--- /dev/null
+++ b/app/Resources/views/baggy/public/img/logo.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/app/Resources/views/baggy/public/js/closeMessage.js b/app/Resources/views/baggy/public/js/closeMessage.js
new file mode 100644
index 000000000..527719d5a
--- /dev/null
+++ b/app/Resources/views/baggy/public/js/closeMessage.js
@@ -0,0 +1,17 @@
+$(function(){
+ //---------------------------------------------------------------------------
+ // Show the close icon when the user hover over a message
+ //---------------------------------------------------------------------------
+ // $('.messages').on('mouseenter', function(){
+ // $(this).find('a.closeMessage').stop(true, true).show();
+ // }).on('mouseleave', function(){
+ // $(this).find('a.closeMessage').stop(true, true).hide();
+ // });
+ //---------------------------------------------------------------------------
+ // Close the message box when the user clicks the close icon
+ //---------------------------------------------------------------------------
+ $('a.closeMessage').on('click', function(){
+ $(this).parents('div.messages').slideUp(300, function(){ $(this).remove(); });
+ return false;
+ });
+});
\ No newline at end of file
diff --git a/app/Resources/views/baggy/public/js/init.js b/app/Resources/views/baggy/public/js/init.js
new file mode 100755
index 000000000..74cbae683
--- /dev/null
+++ b/app/Resources/views/baggy/public/js/init.js
@@ -0,0 +1,51 @@
+$.fn.ready(function() {
+
+ var $listmode = $('#listmode'),
+ $listentries = $("#list-entries");
+
+ /* ==========================================================================
+ Menu
+ ========================================================================== */
+
+ $("#menu").click(function(){
+ $("#links").toggleClass('menu--open');
+ if ($('#content').hasClass('opacity03')) {
+ $('#content').removeClass('opacity03');
+ }
+ });
+
+ /* ==========================================================================
+ List mode or Table Mode
+ ========================================================================== */
+
+ $listmode.click(function(){
+ if ( $.cookie("listmode") == 1 ) {
+ // Cookie
+ $.removeCookie("listmode");
+
+ $listentries.removeClass("listmode");
+ $listmode.removeClass("tablemode");
+ $listmode.addClass("listmode");
+ }
+ else {
+ // Cookie
+ $.cookie("listmode", 1, {expires: 365});
+
+ $listentries.addClass("listmode");
+ $listmode.removeClass("listmode");
+ $listmode.addClass("tablemode");
+ }
+
+ });
+
+ /* ==========================================================================
+ Cookie listmode
+ ========================================================================== */
+
+ if ( $.cookie("listmode") == 1 ) {
+ $listentries.addClass("listmode");
+ $listmode.removeClass("listmode");
+ $listmode.addClass("tablemode");
+ }
+
+});
diff --git a/app/Resources/views/baggy/public/js/jquery.cookie.js b/app/Resources/views/baggy/public/js/jquery.cookie.js
new file mode 100755
index 000000000..927190008
--- /dev/null
+++ b/app/Resources/views/baggy/public/js/jquery.cookie.js
@@ -0,0 +1,117 @@
+/*!
+ * jQuery Cookie Plugin v1.4.0
+ * https://github.com/carhartl/jquery-cookie
+ *
+ * Copyright 2013 Klaus Hartl
+ * Released under the MIT license
+ */
+(function (factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as anonymous module.
+ define(['jquery'], factory);
+ } else {
+ // Browser globals.
+ factory(jQuery);
+ }
+}(function ($) {
+
+ var pluses = /\+/g;
+
+ function encode(s) {
+ return config.raw ? s : encodeURIComponent(s);
+ }
+
+ function decode(s) {
+ return config.raw ? s : decodeURIComponent(s);
+ }
+
+ function stringifyCookieValue(value) {
+ return encode(config.json ? JSON.stringify(value) : String(value));
+ }
+
+ function parseCookieValue(s) {
+ if (s.indexOf('"') === 0) {
+ // This is a quoted cookie as according to RFC2068, unescape...
+ s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
+ }
+
+ try {
+ // Replace server-side written pluses with spaces.
+ // If we can't decode the cookie, ignore it, it's unusable.
+ s = decodeURIComponent(s.replace(pluses, ' '));
+ } catch(e) {
+ return;
+ }
+
+ try {
+ // If we can't parse the cookie, ignore it, it's unusable.
+ return config.json ? JSON.parse(s) : s;
+ } catch(e) {}
+ }
+
+ function read(s, converter) {
+ var value = config.raw ? s : parseCookieValue(s);
+ return $.isFunction(converter) ? converter(value) : value;
+ }
+
+ var config = $.cookie = function (key, value, options) {
+
+ // Write
+ if (value !== undefined && !$.isFunction(value)) {
+ options = $.extend({}, config.defaults, options);
+
+ if (typeof options.expires === 'number') {
+ var days = options.expires, t = options.expires = new Date();
+ t.setDate(t.getDate() + days);
+ }
+
+ return (document.cookie = [
+ encode(key), '=', stringifyCookieValue(value),
+ options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
+ options.path ? '; path=' + options.path : '',
+ options.domain ? '; domain=' + options.domain : '',
+ options.secure ? '; secure' : ''
+ ].join(''));
+ }
+
+ // Read
+
+ var result = key ? undefined : {};
+
+ // To prevent the for loop in the first place assign an empty array
+ // in case there are no cookies at all. Also prevents odd result when
+ // calling $.cookie().
+ var cookies = document.cookie ? document.cookie.split('; ') : [];
+
+ for (var i = 0, l = cookies.length; i < l; i++) {
+ var parts = cookies[i].split('=');
+ var name = decode(parts.shift());
+ var cookie = parts.join('=');
+
+ if (key && key === name) {
+ // If second argument (value) is a function it's a converter...
+ result = read(cookie, value);
+ break;
+ }
+
+ // Prevent storing a cookie that we couldn't decode.
+ if (!key && (cookie = read(cookie)) !== undefined) {
+ result[name] = cookie;
+ }
+ }
+
+ return result;
+ };
+
+ config.defaults = {};
+
+ $.removeCookie = function (key, options) {
+ if ($.cookie(key) !== undefined) {
+ // Must not alter options, thus extending a fresh object...
+ $.cookie(key, '', $.extend({}, options, { expires: -1 }));
+ return true;
+ }
+ return false;
+ };
+
+}));
diff --git a/app/Resources/views/baggy/public/js/restoreScroll.js b/app/Resources/views/baggy/public/js/restoreScroll.js
new file mode 100644
index 000000000..331c9e196
--- /dev/null
+++ b/app/Resources/views/baggy/public/js/restoreScroll.js
@@ -0,0 +1,25 @@
+function supportsLocalStorage() {
+ try {
+ return 'localStorage' in window && window['localStorage'] !== null;
+ } catch (e) {
+ return false;
+ }
+}
+
+function savePercent(id, percent) {
+ if (!supportsLocalStorage()) { return false; }
+ localStorage["poche.article." + id + ".percent"] = percent;
+ return true;
+}
+
+function retrievePercent(id) {
+ if (!supportsLocalStorage()) { return false; }
+
+ var bheight = $(document).height();
+ var percent = localStorage["poche.article." + id + ".percent"];
+ var scroll = bheight * percent;
+
+ $('html,body').animate({scrollTop: scroll}, 'fast');
+
+ return true;
+}
\ No newline at end of file
diff --git a/app/Resources/views/baggy/screenshot.jpg b/app/Resources/views/baggy/screenshot.jpg
new file mode 100755
index 000000000..19cd24bb3
Binary files /dev/null and b/app/Resources/views/baggy/screenshot.jpg differ
diff --git a/app/Resources/views/baggy/tags.twig b/app/Resources/views/baggy/tags.twig
new file mode 100755
index 000000000..65930eb25
--- /dev/null
+++ b/app/Resources/views/baggy/tags.twig
@@ -0,0 +1,13 @@
+{% extends "layout.twig" %}
+{% block title %}Tags{% endblock %}
+{% block menu %}
+{% include '_menu.twig' %}
+{% endblock %}
+{% block content %}
+
{% trans "Tags" %}
+
+{% endblock %}
diff --git a/app/Resources/views/baggy/theme.ini b/app/Resources/views/baggy/theme.ini
new file mode 100644
index 000000000..31665e18e
--- /dev/null
+++ b/app/Resources/views/baggy/theme.ini
@@ -0,0 +1,3 @@
+name = Baggy
+description = Responsive black and white theme especially adapted to smartphones.
+requirements[] = default
diff --git a/app/Resources/views/baggy/view.twig b/app/Resources/views/baggy/view.twig
new file mode 100755
index 000000000..1afd9df6a
--- /dev/null
+++ b/app/Resources/views/baggy/view.twig
@@ -0,0 +1,102 @@
+{% extends "layout.twig" %}
+{% block menu %}
+{% include '_menu.twig' %}
+{% endblock %}
+{% block title %}{{ entry.title|raw }} ({{ entry.url | e | getDomain }}){% endblock %}
+{% block content %}
+ {% include '_highlight.twig' %}
+
+
+
+ {{ entry.title|raw }}
+
+
+
+ {{ content | raw }}
+
+
+
+
+{% endblock %}
diff --git a/app/Resources/views/base.html.twig b/app/Resources/views/base.html.twig
new file mode 100644
index 000000000..bafd28d3b
--- /dev/null
+++ b/app/Resources/views/base.html.twig
@@ -0,0 +1,13 @@
+
+
+
+
+
{% block title %}Welcome!{% endblock %}
+ {% block stylesheets %}{% endblock %}
+
+
+
+ {% block body %}{% endblock %}
+ {% block javascripts %}{% endblock %}
+
+
diff --git a/app/Resources/views/dark/README.md b/app/Resources/views/dark/README.md
new file mode 100644
index 000000000..92077994a
--- /dev/null
+++ b/app/Resources/views/dark/README.md
@@ -0,0 +1,3 @@
+# dark theme
+
+theme created by Nicolas LÅ“uillet aka nico_somb
\ No newline at end of file
diff --git a/app/Resources/views/dark/public/css/style-dark.css b/app/Resources/views/dark/public/css/style-dark.css
new file mode 100644
index 000000000..41782c485
--- /dev/null
+++ b/app/Resources/views/dark/public/css/style-dark.css
@@ -0,0 +1,74 @@
+body {
+ color: #d4d4d4;
+ background-color: #262627;
+}
+
+a,
+a:hover,
+a:visited {
+ color: #d4d4d4;
+}
+
+a.back span {
+ background-image: url('../img/dark/left.png');
+}
+
+a.top span {
+ background-image: url('../img/dark/top.png');
+}
+
+a.fav span,
+a.fav-off span:hover {
+ background-image: url('../img/dark/star-on.png');
+}
+
+a.fav span:hover,
+a.fav-off span {
+ background-image: url('../img/dark/star-off.png');
+}
+
+a.archive span,
+a.archive-off span:hover {
+ background-image: url('../img/dark/checkmark-on.png');
+}
+
+a.archive span:hover,
+a.archive-off span {
+ background-image: url('../img/dark/checkmark-off.png');
+}
+
+a.twitter span {
+ background-image: url('../img/dark/twitter.png');
+}
+
+a.shaarli span {
+ background-image: url('../img/dark/shaarli.png');
+}
+
+a.flattr span {
+ background-image: url('../img/dark/flattr.png');
+}
+
+a.email span {
+ background-image: url('../img/dark/envelop.png');
+}
+
+a.delete span {
+ background-image: url('../img/dark/remove.png');
+}
+
+a.link span {
+ background-image: url('../img/dark/link.png');
+}
+
+a.bad-display span {
+ background-image: url('../img/dark/bad-display.png');
+}
+
+.pagination a {
+ color: #aaa;
+}
+
+#article_toolbar {
+ background: #262627;
+}
\ No newline at end of file
diff --git a/app/Resources/views/dark/public/img/dark/backtotop.png b/app/Resources/views/dark/public/img/dark/backtotop.png
new file mode 100644
index 000000000..c885086dc
Binary files /dev/null and b/app/Resources/views/dark/public/img/dark/backtotop.png differ
diff --git a/app/Resources/views/dark/public/img/dark/bad-display.png b/app/Resources/views/dark/public/img/dark/bad-display.png
new file mode 100644
index 000000000..66ea2e160
Binary files /dev/null and b/app/Resources/views/dark/public/img/dark/bad-display.png differ
diff --git a/app/Resources/views/dark/public/img/dark/checkmark-off.png b/app/Resources/views/dark/public/img/dark/checkmark-off.png
new file mode 100644
index 000000000..661ea997a
Binary files /dev/null and b/app/Resources/views/dark/public/img/dark/checkmark-off.png differ
diff --git a/app/Resources/views/dark/public/img/dark/checkmark-on.png b/app/Resources/views/dark/public/img/dark/checkmark-on.png
new file mode 100644
index 000000000..5ee8c8d30
Binary files /dev/null and b/app/Resources/views/dark/public/img/dark/checkmark-on.png differ
diff --git a/app/Resources/views/dark/public/img/dark/down.png b/app/Resources/views/dark/public/img/dark/down.png
new file mode 100644
index 000000000..4150e17cb
Binary files /dev/null and b/app/Resources/views/dark/public/img/dark/down.png differ
diff --git a/app/Resources/views/dark/public/img/dark/envelop.png b/app/Resources/views/dark/public/img/dark/envelop.png
new file mode 100644
index 000000000..73d9b0b96
Binary files /dev/null and b/app/Resources/views/dark/public/img/dark/envelop.png differ
diff --git a/app/Resources/views/dark/public/img/dark/flattr.png b/app/Resources/views/dark/public/img/dark/flattr.png
new file mode 100644
index 000000000..b457d080b
Binary files /dev/null and b/app/Resources/views/dark/public/img/dark/flattr.png differ
diff --git a/app/Resources/views/dark/public/img/dark/left.png b/app/Resources/views/dark/public/img/dark/left.png
new file mode 100644
index 000000000..c2f7a20ec
Binary files /dev/null and b/app/Resources/views/dark/public/img/dark/left.png differ
diff --git a/app/Resources/views/dark/public/img/dark/link.png b/app/Resources/views/dark/public/img/dark/link.png
new file mode 100644
index 000000000..a5b8d8d2b
Binary files /dev/null and b/app/Resources/views/dark/public/img/dark/link.png differ
diff --git a/app/Resources/views/dark/public/img/dark/remove.png b/app/Resources/views/dark/public/img/dark/remove.png
new file mode 100644
index 000000000..0c3dcfdff
Binary files /dev/null and b/app/Resources/views/dark/public/img/dark/remove.png differ
diff --git a/app/Resources/views/dark/public/img/dark/rss.png b/app/Resources/views/dark/public/img/dark/rss.png
new file mode 100644
index 000000000..21bad1a17
Binary files /dev/null and b/app/Resources/views/dark/public/img/dark/rss.png differ
diff --git a/app/Resources/views/dark/public/img/dark/shaarli.png b/app/Resources/views/dark/public/img/dark/shaarli.png
new file mode 100644
index 000000000..e68ac8b54
Binary files /dev/null and b/app/Resources/views/dark/public/img/dark/shaarli.png differ
diff --git a/app/Resources/views/dark/public/img/dark/star-off.png b/app/Resources/views/dark/public/img/dark/star-off.png
new file mode 100644
index 000000000..8194bc2dc
Binary files /dev/null and b/app/Resources/views/dark/public/img/dark/star-off.png differ
diff --git a/app/Resources/views/dark/public/img/dark/star-on.png b/app/Resources/views/dark/public/img/dark/star-on.png
new file mode 100644
index 000000000..109c3aec7
Binary files /dev/null and b/app/Resources/views/dark/public/img/dark/star-on.png differ
diff --git a/app/Resources/views/dark/public/img/dark/top.png b/app/Resources/views/dark/public/img/dark/top.png
new file mode 100644
index 000000000..d137bd240
Binary files /dev/null and b/app/Resources/views/dark/public/img/dark/top.png differ
diff --git a/app/Resources/views/dark/public/img/dark/twitter.png b/app/Resources/views/dark/public/img/dark/twitter.png
new file mode 100644
index 000000000..6ce8a4d96
Binary files /dev/null and b/app/Resources/views/dark/public/img/dark/twitter.png differ
diff --git a/app/Resources/views/dark/public/public b/app/Resources/views/dark/public/public
new file mode 120000
index 000000000..fd316b377
--- /dev/null
+++ b/app/Resources/views/dark/public/public
@@ -0,0 +1 @@
+../../themes/default/public
\ No newline at end of file
diff --git a/app/Resources/views/dark/screenshot.jpg b/app/Resources/views/dark/screenshot.jpg
new file mode 100644
index 000000000..daaad6c9e
Binary files /dev/null and b/app/Resources/views/dark/screenshot.jpg differ
diff --git a/app/Resources/views/dark/theme.ini b/app/Resources/views/dark/theme.ini
new file mode 100644
index 000000000..4b020d363
--- /dev/null
+++ b/app/Resources/views/dark/theme.ini
@@ -0,0 +1,2 @@
+name = Dark
+requirements[] = default
diff --git a/app/Resources/views/default/_bookmarklet.twig b/app/Resources/views/default/_bookmarklet.twig
new file mode 100644
index 000000000..619963539
--- /dev/null
+++ b/app/Resources/views/default/_bookmarklet.twig
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/app/Resources/views/default/_footer.twig b/app/Resources/views/default/_footer.twig
new file mode 100644
index 000000000..213a4acad
--- /dev/null
+++ b/app/Resources/views/default/_footer.twig
@@ -0,0 +1,4 @@
+
+ {% trans "powered by" %} wallabag
+ {% if constant('DEBUG_POCHE') == 1 %}{% trans "debug mode is on so cache is off." %} {% trans "your wallabag version:" %}{{constant('WALLABAG')}}. {% trans "storage:" %} {{constant('STORAGE')}}
{% endif %}
+
\ No newline at end of file
diff --git a/app/Resources/views/default/_head.twig b/app/Resources/views/default/_head.twig
new file mode 100755
index 000000000..277e38334
--- /dev/null
+++ b/app/Resources/views/default/_head.twig
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/Resources/views/default/_highlight.twig b/app/Resources/views/default/_highlight.twig
new file mode 100755
index 000000000..cdb7c6bf3
--- /dev/null
+++ b/app/Resources/views/default/_highlight.twig
@@ -0,0 +1,4 @@
+ {# include excelent highlight.js library for code highligting, see http://highlightjs.org/ #}
+
+
+
diff --git a/app/Resources/views/default/_import.twig b/app/Resources/views/default/_import.twig
new file mode 100755
index 000000000..c59b7a154
--- /dev/null
+++ b/app/Resources/views/default/_import.twig
@@ -0,0 +1,15 @@
+
+
+
{% trans "Download required for " %} {{ import.recordsDownloadRequired }} {% trans "records" %}.
+
{% trans "Downloading next " %} {{ import.recordsUnderDownload }} {% trans "articles, please wait" %}...
+
diff --git a/app/Resources/views/default/_menu.twig b/app/Resources/views/default/_menu.twig
new file mode 100644
index 000000000..eedf84f10
--- /dev/null
+++ b/app/Resources/views/default/_menu.twig
@@ -0,0 +1,14 @@
+
+ {% include '_pocheit-form.twig' %}
+ {% include '_search-form.twig' %}
+
diff --git a/app/Resources/views/default/_messages.twig b/app/Resources/views/default/_messages.twig
new file mode 100644
index 000000000..679aa0981
--- /dev/null
+++ b/app/Resources/views/default/_messages.twig
@@ -0,0 +1 @@
+ {{ messages | raw }}
\ No newline at end of file
diff --git a/app/Resources/views/default/_pocheit-form.twig b/app/Resources/views/default/_pocheit-form.twig
new file mode 100755
index 000000000..8c982db09
--- /dev/null
+++ b/app/Resources/views/default/_pocheit-form.twig
@@ -0,0 +1,8 @@
+
diff --git a/app/Resources/views/default/_search-form.twig b/app/Resources/views/default/_search-form.twig
new file mode 100755
index 000000000..0cf6097a5
--- /dev/null
+++ b/app/Resources/views/default/_search-form.twig
@@ -0,0 +1,9 @@
+
diff --git a/app/Resources/views/default/_sorting.twig b/app/Resources/views/default/_sorting.twig
new file mode 100755
index 000000000..3ce9b949f
--- /dev/null
+++ b/app/Resources/views/default/_sorting.twig
@@ -0,0 +1,6 @@
+{% if entries|length > 1 %}
+
+ {% trans "by date" %}
+ {% trans "by title" %}
+
+{% endif %}
diff --git a/app/Resources/views/default/_top.twig b/app/Resources/views/default/_top.twig
new file mode 100755
index 000000000..45806f01a
--- /dev/null
+++ b/app/Resources/views/default/_top.twig
@@ -0,0 +1,7 @@
+
+
+ {% if view == 'home' %}{% block logo %} {% endblock %}
+ {% else %}{{ block('logo') }}
+ {% endif %}
+
+
diff --git a/app/Resources/views/default/about.twig b/app/Resources/views/default/about.twig
new file mode 100755
index 000000000..50ffd8ef4
--- /dev/null
+++ b/app/Resources/views/default/about.twig
@@ -0,0 +1,74 @@
+{% extends "layout.twig" %}
+
+{% block title %}{% trans "About wallabag" %}{% endblock %}
+{% block menu %}
+{% include '_menu.twig' %}
+{% endblock %}
+{% block content %}
+
{% trans "About wallabag" %}
+
+
+ {% trans "Project website" %}
+ http://www.wallabag.org
+
+ {% trans "Main developer" %}
+ Nicolas Lœuillet — {% trans "website" %}
+
+ {% trans "Contributors:" %}
+ {% trans "on Github" %}
+
+ {% trans "Bug reports" %}
+ {% trans "On our support website" %} {% trans "or" %} {% trans "on Github" %}
+
+ {% trans "License" %}
+ MIT
+
+ {% trans "Version" %}
+ {{ constant('WALLABAG') }}
+
+
+
{% trans "wallabag is a read-it-later application: you can save a web page by keeping only content. Elements like ads or menus are deleted." %}
+
+
{% trans "Helping wallabag" %}
+
+
{% trans "wallabag is free and opensource. You can help us:" %}
+
+
+ {% trans "via Paypal" %}
+
+ {% trans "via Flattr" %}
+
+
+
{% trans "Credits" %}
+
+ PHP Readability
+ https://bitbucket.org/fivefilters/php-readability
+
+ Full Text RSS
+ http://code.fivefilters.org/full-text-rss/src
+
+ logo by Maylis Agniel
+ https://github.com/wallabag/logo
+
+ icons
+ http://icomoon.io
+
+ PHP Simple HTML DOM Parser
+ http://simplehtmldom.sourceforge.net/
+
+ Session
+ https://github.com/tontof/kriss_feed/blob/master/src/class/Session.php
+
+ Twig
+ http://twig.sensiolabs.org
+
+ Flash messages
+ https://github.com/plasticbrain/PHP-Flash-Messages
+
+ Pagination
+ https://github.com/daveismyname/pagination
+
+ PHPePub
+ https://github.com/Grandt/PHPePub/
+
+{% endblock %}
diff --git a/app/Resources/views/default/config.twig b/app/Resources/views/default/config.twig
new file mode 100755
index 000000000..b7d91937b
--- /dev/null
+++ b/app/Resources/views/default/config.twig
@@ -0,0 +1,188 @@
+{% extends "layout.twig" %}
+
+{% block title %}{% trans "config" %}{% endblock %}
+{% block menu %}
+{% include '_menu.twig' %}
+{% endblock %}
+{% block content %}
+
{% trans "Saving articles" %}
+
{% trans "There are several ways to save an article:" %} {% trans "(? )" %}
+
+
+
+
Browser Plugins
+
+
Mobile Apps
+
+
{% trans "Bookmarklet" %}
+
+ {% trans "Drag & drop this link to your bookmarks bar:" %} {% trans "bag it!" %}
+
+
+
{% trans "Feeds" %}
+ {% if token == '' %}
+
{% trans "Your feed token is currently empty and must first be generated to enable feeds. Click here to generate it ." %}
+ {% else %}
+
+
+ {% trans "Your token:" %} {{token}}
+ {% trans "Your user id:" %} {{user_id}}
+ {% trans "You can regenerate your token: generate! ." %}
+
+ {% endif %}
+
+
{% trans "Change your theme" %}
+
+
+
{% trans "Change your language" %}
+
+
+
{% trans "Import" %}
+
{% trans "You can import your Pocket, Readability, Instapaper, Wallabag or any data in appropriate json or html format." %}
+
{% trans "Please select export file on your computer and press \"Import\" button below. Wallabag will parse your file, insert all URLs and start fetching of articles if required." %}
+
+
{% trans "You can click here to fetch content for articles with no content." %}
+
{% trans "Fetching process is controlled by two constants in your config file: IMPORT_LIMIT (how many articles are fetched at once) and IMPORT_DELAY (delay between fetch of next batch of articles)." %}
+
+
{% trans "Export your wallabag data" %}
+
{% trans "Export JSON" %}
+ Data will be exported in a single JSON file.
+
+
{% trans "Fancy an E-Book ?" %}
+
{% trans "Click to get all your articles in one ebook :" %}
+
+
+
+
{% trans "This can take a while and can even fail if you have too many articles, depending on your server configuration." %}
+
+
{% trans "Cache" %}
+
{% trans "Delete Cache" %}
+ Deleting the cache may help with display or other problems.
+
+ {% if http_auth == 0 %}
+
{% trans "Change your password" %}
+
+ {% endif %}
+
+
{% trans 'Add user' %}
+
+
+
{% trans "Delete account" %}
+ {% if not only_user %}
+ {% else %}
{% trans "You are the only user, you cannot delete your own account." %}
+
{% trans "To completely remove wallabag, delete the wallabag folder on your web server (and eventual databases)." %}
{% endif %}
+
+
{% trans "Upgrading wallabag" %}
+
+ {% trans "Installed version" %}: {{ constant('WALLABAG') }}
+ {% trans "Latest stable version" %}: {{ prod }}. {% if compare_prod == -1 %}{% trans "A more recent stable version is available." %} {% else %}{% trans "You are up to date." %}{% endif %} ({% trans "Last check:" %} {{ check_time_prod }})
+ {% if constant('DEBUG_POCHE') == 1 %}{% trans "Latest dev version" %}: {{ dev }}. {% if compare_dev == -1 %}{% trans "A more recent development version is available." %} {% else %}{% trans "You are up to date." %}{% endif %} ({% trans "Last check:" %} {{ check_time_dev }}){% endif %}
+
+
{% trans "You can clear cache to check the latest release." %}
+
+{% endblock %}
diff --git a/app/Resources/views/default/edit-tags.twig b/app/Resources/views/default/edit-tags.twig
new file mode 100755
index 000000000..c29427e0a
--- /dev/null
+++ b/app/Resources/views/default/edit-tags.twig
@@ -0,0 +1,35 @@
+{% extends "layout.twig" %}
+{% block title %}edit tags{% endblock %}
+{% block menu %}
+{% include '_menu.twig' %}
+{% endblock %}
+{% block content %}
+
+
+
+
+
+
+
+ {{ entry.title|raw }}
+
+
+
+{% if tags is empty %}
+{% trans "no tags" %}
+{% endif %}
+
+{% for tag in tags %}{{ tag.value }} ✘ {% endfor %}
+
+
+
+
« {% trans "return to article" %}
+{% endblock %}
diff --git a/app/Resources/views/default/error.twig b/app/Resources/views/default/error.twig
new file mode 100644
index 000000000..528a09858
--- /dev/null
+++ b/app/Resources/views/default/error.twig
@@ -0,0 +1,14 @@
+{% extends "layout.twig" %}
+{% block title %}{% trans "plop" %}{% endblock %}
+{% block content %}
+
Errors
+
+ {% for message in msg %}
+ {{message}}
+ {% endfor %}
+
+
Don't forget the documentation .
+
+ {% trans "You can check your configuration here ." %}
+
+{% endblock %}
diff --git a/app/Resources/views/default/export.twig b/app/Resources/views/default/export.twig
new file mode 100644
index 000000000..4adb95402
--- /dev/null
+++ b/app/Resources/views/default/export.twig
@@ -0,0 +1 @@
+{{ export }}
\ No newline at end of file
diff --git a/app/Resources/views/default/home.twig b/app/Resources/views/default/home.twig
new file mode 100755
index 000000000..b90005598
--- /dev/null
+++ b/app/Resources/views/default/home.twig
@@ -0,0 +1,82 @@
+{% extends "layout.twig" %}
+{% block title %}
+{% if view == 'fav' %}
+{% trans "favoris" %}
+{% elseif view == 'archive' %}
+{% trans "archive" %}
+{% else %}
+{% trans "unread" %}
+{% endif %}
+{% endblock %}
+{% block menu %}
+{% include '_menu.twig' %}
+{% endblock %}
+{% block precontent %}
+
+{% include '_sorting.twig' %}
+{% endblock %}
+{% block content %}
+
+ {% if includeImport %}
+ {% include '_import.twig' %}
+ {% endif %}
+
+ {% if tag %}
+
{% trans "Tag" %}: {{ tag.value }}
+ {% endif %}
+
+ {% if entries is empty %}
+
{% trans "No articles found." %}
+ {% else %}
+ {% block pager %}
+ {% if nb_results > 1 %}
+
+
{{ nb_results }} {% trans "results" %}{% if searchterm is defined %}{% trans " found for « " %} {{ searchterm }} »{% endif %}
+ {{ page_links | raw }}
+
+ {% elseif nb_results == 1 %}
+ {% if searchterm is defined %}
+
+
{% trans "Only one result found for " %} « {{ searchterm }} »
+
+ {% endif %}
+ {% endif %}
+ {% endblock %}
+ {% for entry in entries %}
+
+
+
+
{{ entry.content|striptags|slice(0, 300) }}...
+
+ {% endfor %}
+
+ {{ block('pager') }}
+ {% if view == 'home' %}{% if nb_results > 1 %}
{% trans "Mark all the entries as read" %}
{% endif %}{% endif %}
+ {% if searchterm is defined %}
{% trans "Tag these results as" %} {{ searchterm }} {% endif %}
+
+ {% if searchterm is defined %}
{% trans "Delete results matching" %} {{ searchterm }} {% endif %}
+
+ {% if tag %}
{% trans "Mark all articles from this tag as read" %} {% endif %}
+
+ {% if tag %}
+ {% if constant('EPUB') == 1 %}
{% trans "Download as ePub3" %} {% endif %}
+ {% if constant('MOBI') == 1 %}
{% trans "Download as Mobi" %} {% endif %}
+ {% if constant('PDF') == 1 %}
{% trans "Download as PDF" %} {% endif %}
+ {% elseif searchterm is defined %}
+ {% if constant('EPUB') == 1 %}
{% trans "Download as ePub3" %} {% endif %}
+ {% if constant('MOBI') == 1 %}
{% trans "Download as Mobi" %} {% endif %}
+ {% if constant('PDF') == 1 %}
{% trans "Download as PDF" %} {% endif %}
+ {% else %}
+ {% if constant('EPUB') == 1 %}
{% trans "Download as ePub3" %} {% endif %}
+ {% if constant('MOBI') == 1 %}
{% trans "Download as Mobi" %} {% endif %}
+ {% if constant('PDF') == 1 %}
{% trans "Download as PDF" %} {% endif %}
+ {% endif %}
+
+ {% endif %}
+{% endblock %}
diff --git a/app/Resources/views/default/index.html.twig b/app/Resources/views/default/index.html.twig
new file mode 100644
index 000000000..ed261498c
--- /dev/null
+++ b/app/Resources/views/default/index.html.twig
@@ -0,0 +1,5 @@
+{% extends 'base.html.twig' %}
+
+{% block body %}
+ Homepage.
+{% endblock %}
diff --git a/app/Resources/views/default/install.twig b/app/Resources/views/default/install.twig
new file mode 100644
index 000000000..c89c7e47e
--- /dev/null
+++ b/app/Resources/views/default/install.twig
@@ -0,0 +1,28 @@
+{% extends "layout.twig" %}
+{% block title %}{% trans "installation" %}{% endblock %}
+{% block content %}
+
+{% endblock %}
diff --git a/app/Resources/views/default/layout.twig b/app/Resources/views/default/layout.twig
new file mode 100644
index 000000000..dfebc3eac
--- /dev/null
+++ b/app/Resources/views/default/layout.twig
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
{% block title %}{% endblock %} - wallabag
+{% include '_head.twig' %}
+{% include '_bookmarklet.twig' %}
+
+
+ {% include '_top.twig' %}
+
+ {% block menu %}{% endblock %}
+ {% block precontent %}{% endblock %}
+ {% block messages %}
+ {% include '_messages.twig' %}
+ {% endblock %}
+
+ {% block content %}{% endblock %}
+
+
+{% include '_footer.twig' %}
+
+
\ No newline at end of file
diff --git a/app/Resources/views/default/login.twig b/app/Resources/views/default/login.twig
new file mode 100644
index 000000000..b9f8b497c
--- /dev/null
+++ b/app/Resources/views/default/login.twig
@@ -0,0 +1,34 @@
+{% extends "layout.twig" %}
+
+{% block title %}{% trans "login to your wallabag" %}{% endblock %}
+{% block content %}
+ {% if http_auth == 0 %}
+
+ {% endif %}
+{% endblock %}
diff --git a/app/Resources/views/default/public/css/images/animated-overlay.gif b/app/Resources/views/default/public/css/images/animated-overlay.gif
new file mode 100644
index 000000000..d441f75eb
Binary files /dev/null and b/app/Resources/views/default/public/css/images/animated-overlay.gif differ
diff --git a/app/Resources/views/default/public/css/images/ui-bg_flat_0_aaaaaa_40x100.png b/app/Resources/views/default/public/css/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644
index 000000000..9f10cb65d
Binary files /dev/null and b/app/Resources/views/default/public/css/images/ui-bg_flat_0_aaaaaa_40x100.png differ
diff --git a/app/Resources/views/default/public/css/images/ui-bg_flat_75_ffffff_40x100.png b/app/Resources/views/default/public/css/images/ui-bg_flat_75_ffffff_40x100.png
new file mode 100644
index 000000000..b89b914b9
Binary files /dev/null and b/app/Resources/views/default/public/css/images/ui-bg_flat_75_ffffff_40x100.png differ
diff --git a/app/Resources/views/default/public/css/images/ui-bg_glass_55_fbf9ee_1x400.png b/app/Resources/views/default/public/css/images/ui-bg_glass_55_fbf9ee_1x400.png
new file mode 100644
index 000000000..780d3ffdc
Binary files /dev/null and b/app/Resources/views/default/public/css/images/ui-bg_glass_55_fbf9ee_1x400.png differ
diff --git a/app/Resources/views/default/public/css/images/ui-bg_glass_65_ffffff_1x400.png b/app/Resources/views/default/public/css/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100644
index 000000000..da53255b3
Binary files /dev/null and b/app/Resources/views/default/public/css/images/ui-bg_glass_65_ffffff_1x400.png differ
diff --git a/app/Resources/views/default/public/css/images/ui-bg_glass_75_dadada_1x400.png b/app/Resources/views/default/public/css/images/ui-bg_glass_75_dadada_1x400.png
new file mode 100644
index 000000000..f6306608b
Binary files /dev/null and b/app/Resources/views/default/public/css/images/ui-bg_glass_75_dadada_1x400.png differ
diff --git a/app/Resources/views/default/public/css/images/ui-bg_glass_75_e6e6e6_1x400.png b/app/Resources/views/default/public/css/images/ui-bg_glass_75_e6e6e6_1x400.png
new file mode 100644
index 000000000..7d3470653
Binary files /dev/null and b/app/Resources/views/default/public/css/images/ui-bg_glass_75_e6e6e6_1x400.png differ
diff --git a/app/Resources/views/default/public/css/images/ui-bg_glass_95_fef1ec_1x400.png b/app/Resources/views/default/public/css/images/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100644
index 000000000..533c49006
Binary files /dev/null and b/app/Resources/views/default/public/css/images/ui-bg_glass_95_fef1ec_1x400.png differ
diff --git a/app/Resources/views/default/public/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/app/Resources/views/default/public/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png
new file mode 100644
index 000000000..bf3a9481a
Binary files /dev/null and b/app/Resources/views/default/public/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ
diff --git a/app/Resources/views/default/public/css/images/ui-icons_222222_256x240.png b/app/Resources/views/default/public/css/images/ui-icons_222222_256x240.png
new file mode 100644
index 000000000..c1cb1170c
Binary files /dev/null and b/app/Resources/views/default/public/css/images/ui-icons_222222_256x240.png differ
diff --git a/app/Resources/views/default/public/css/images/ui-icons_2e83ff_256x240.png b/app/Resources/views/default/public/css/images/ui-icons_2e83ff_256x240.png
new file mode 100644
index 000000000..84b601bf0
Binary files /dev/null and b/app/Resources/views/default/public/css/images/ui-icons_2e83ff_256x240.png differ
diff --git a/app/Resources/views/default/public/css/images/ui-icons_454545_256x240.png b/app/Resources/views/default/public/css/images/ui-icons_454545_256x240.png
new file mode 100644
index 000000000..b6db1acdd
Binary files /dev/null and b/app/Resources/views/default/public/css/images/ui-icons_454545_256x240.png differ
diff --git a/app/Resources/views/default/public/css/images/ui-icons_888888_256x240.png b/app/Resources/views/default/public/css/images/ui-icons_888888_256x240.png
new file mode 100644
index 000000000..feea0e202
Binary files /dev/null and b/app/Resources/views/default/public/css/images/ui-icons_888888_256x240.png differ
diff --git a/app/Resources/views/default/public/css/images/ui-icons_cd0a0a_256x240.png b/app/Resources/views/default/public/css/images/ui-icons_cd0a0a_256x240.png
new file mode 100644
index 000000000..ed5b6b093
Binary files /dev/null and b/app/Resources/views/default/public/css/images/ui-icons_cd0a0a_256x240.png differ
diff --git a/app/Resources/views/default/public/css/knacss.css b/app/Resources/views/default/public/css/knacss.css
new file mode 100644
index 000000000..ca0696b7a
--- /dev/null
+++ b/app/Resources/views/default/public/css/knacss.css
@@ -0,0 +1 @@
+html{font-size:62.5%}body{font-family:"Century Gothic",helvetica,arial,sans-serif;font-size:1.4em;line-height:1.5;color:#000;background-color:#FFF}p,ul,ol,dl,blockquote,pre,td,th,label,textarea,caption,details,figure,hgroup{margin:.75em 0 0;font-size:1em;line-height:1.5}h1,.h1-like{margin:.8077em 0 0 0;font-size:1.8571em;font-weight:normal;line-height:1.6154em}h2,.h2-like{margin:.875em 0 0 0;font-size:1.7143em;font-weight:normal;line-height:1.75em}h3,.h3-like{margin:.9545em 0 0 0;font-size:1.5714em;font-weight:normal;line-height:1.909em}h4,.h4-like{margin:1.05em 0 0 0;font-size:1.4286em;font-weight:normal;line-height:1.05em}h5,.h5-like{margin:1.1667em 0 0 0;font-size:1.2857em;font-weight:normal;line-height:1.1667em}h6,.h6-like{margin:1.3125em 0 0 0;font-size:1.1429em;font-weight:normal;line-height:1.3125em}.smaller{font-size:.7143em}.small{font-size:.8571em}.big{font-size:1.1429em}.bigger{font-size:1.2857em}.biggest{font-size:1.4286em}html,body,textarea,figure,label{margin:0;padding:0}ul,ol{padding-left:2em}code,pre,samp,kbd{font-family:consolas,'DejaVu Sans Mono',courier,monospace;line-height:1em;white-space:pre-wrap}code,kbd,mark{border-radius:2px}em{font-style:italic}strong{font-weight:bold}kbd{padding:0 2px;border:1px solid #999}code{padding:2px 4px;color:#B11;background:rgba(0,0,0,.04)}mark{padding:2px 4px;background:#FF0}table{margin-bottom:1.5em}p:first-child,ul:first-child,ol:first-child,dl:first-child,blockquote:first-child,pre:first-child,h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}li p,li ul,li ol{margin-top:0;margin-bottom:0}img,table,td,blockquote,code,pre,textarea,input,video{max-width:100%}div,textarea,table,td,th,code,pre,samp{word-wrap:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;-o-hyphens:auto;hyphens:auto}img{height:auto;vertical-align:middle}#map_canvas img,.gmnoprint img{max-width:none}a img{border:0}body > script{display:none !important}.skip-links{position:absolute}.skip-links a{position:absolute;left:-7000px;padding:.5em;text-decoration:none;color:#FFF;background:#000}.skip-links a:focus{position:static}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mod,.item{overflow:hidden}.row{display:table;width:100%;table-layout:fixed}.row > *,.col{display:table-cell;vertical-align:top}.clear,.line,.row{clear:both}.clearfix:after,.line:after,.mod:after{content:"";display:table;clear:both}.left{float:left}img.left{margin-right:1em}.right{float:right}img.right{margin-left:1em}img.left,img.right{margin-bottom:5px}.center{margin-right:auto;margin-left:auto}.txtleft{text-align:left}.txtright{text-align:right}.txtcenter{text-align:center}.inbl{display:inline-block;margin-right:-.25em;vertical-align:top}.w10{width:10%}.w20{width:20%}.w25{width:25%}.w30{width:30%}.w33{width:33.333%}.w40{width:40%}.w50{width:50%}.w60{width:60%}.w66{width:66.666%}.w70{width:70%}.w75{width:75%}.w80{width:80%}.w90{width:90%}.w100{width:100%}.w50p{width:50px}.w100p{width:100px}.w150p{width:150px}.w200p{width:200px}.w300p{width:300px}.w400p{width:400px}.w500p{width:500px}.w600p{width:600px}.w700p{width:700px}.w800p{width:800px}.w960p{width:960px}.mw960p{max-width:960px}.m-reset,.ma0{margin:0 !important}.p-reset,.pa0{padding:0 !important}.ma1,.mas{margin:10px !important}.ma2,.mam{margin:20px !important}.ma3,.mal{margin:30px !important}.pa1,.pas{padding:10px}.pa2,.pam{padding:20px}.pa3,.pal{padding:30px}.mt0,.mtn{margin-top:0 !important}.mt1,.mts{margin-top:10px !important}.mt2,.mtm{margin-top:20px !important}.mt3,.mtl{margin-top:30px !important}.mr0,.mrn{margin-right:0}.mr1,.mrs{margin-right:10px}.mr2,.mrm{margin-right:20px}.mr3,.mrl{margin-right:30px}.mb0,.mbn{margin-bottom:0 !important}.mb1,.mbs{margin-bottom:10px !important}.mb2,.mbm{margin-bottom:20px !important}.mb3,.mbl{margin-bottom:30px !important}.ml0,.mln{margin-left:0}.ml1,.mls{margin-left:10px}.ml2,.mlm{margin-left:20px}.ml3,.mll{margin-left:30px}.pt0,.ptn{padding-top:0}.pt1,.pts{padding-top:10px}.pt2,.ptm{padding-top:20px}.pt3,.ptl{padding-top:30px}.pr0,.prn{padding-right:0}.pr1,.prs{padding-right:10px}.pr2,.prm{padding-right:20px}.pr3,.prl{padding-right:30px}.pb0,.pbn{padding-bottom:0}.pb1,.pbs{padding-bottom:10px}.pb2,.pbm{padding-bottom:20px}.pb3,.pbl{padding-bottom:30px}.pl0,.pln{padding-left:0}.pl1,.pls{padding-left:10px}.pl2,.plm{padding-left:20px}.pl3,.pll{padding-left:30px}.visually-hidden{position:absolute;left:-7000px;overflow:hidden}[dir=rtl] .visually-hidden{right:-7000px;left:auto}.desktop-hidden{display:none}form,fieldset{border:none}input,button,select,label,.btn{font-family:inherit;vertical-align:middle}textarea{font-family:inherit;resize:vertical}.ie67 .clearfix,.ie67 .line,.ie67 .mod,.ie67 .row,.ie67 .col{zoom:1}.ie67 .btn,.ie67 .col,.ie67 .inbl{display:inline;zoom:1}.ie8 img{width:auto}@media print{p,blockquote{orphans:2;widows:2}blockquote,ul,ol{page-break-inside:avoid}h1,h2,h3,caption{page-break-after:avoid}}@media(orientation:landscape)and(max-device-width:768px){html,body{-webkit-text-size-adjust:100%}}[class*=grid] > *{float:left}[class*=grid] > * + *{margin-left:2%}.grid2 > *{width:49%}.grid3 > *{width:32%}.grid4 > *{width:23.5%}.grid5 > *{width:18.4%}.grid6 > *{width:15%}.grid2-1 > *:first-child,.grid1-2 > * + *{width:66%}.grid1-2 > *:first-child,.grid2-1 > * + *{width:32%}.grid1-3 > *:first-child,.grid3-1 > * + *{width:23.5%}.grid3-1 > *:first-child,.grid1-3 > * + *{width:74.5%}table,.table{max-width:100%;border-collapse:collapse;table-layout:fixed;vertical-align:top}table{width:100%}.table{display:table}caption{padding:10px;font-style:italic;color:#555}table{border:1px solid #CCC}tr > * + *{border-left:1px solid #CCC}th,td{padding:.3em .8em;border-bottom:1px solid #CCC;text-align:left}td{color:#333}.alternate{border:0}.alternate tbody{border:1px solid #CCC}.alternate thead tr > * + *{border-left:0}.alternate tbody tr > * + *{border-left:1px solid #CCC}.alternate-vert{border:0;border-right:1px solid #CCC}.alternate-vert tr >:first-child{border-bottom:0}.alternate-vert tr > * + *{border-top:1px solid #CCC}.striped tbody tr:nth-child(odd){background:#EEE;background:rgba(0,0,0,.05)}.striped-vert tr >:first-child{background:#EEE;background:rgba(0,0,0,.05)}.btn{display:inline-block}label{display:inline-block;vertical-align:middle;cursor:pointer}legend{border:0;white-space:normal}button,input,select{margin:0;font-family:"Century Gothic",helvetica,arial,sans-serif;font-size:100%;vertical-align:middle}textarea{min-height:5em;overflow:auto;font-size:1.75em;vertical-align:top;resize:vertical}}ol.styled{counter-reset:styled}ol.styled > li{counter-increment:styled;margin-bottom:.3em;list-style-type:none}ol.styled > li:before{content:counter(styled);display:inline-block;width:1em;height:1em;margin-right:.4em;padding:2px;border-radius:50%;text-align:center;text-indent:-.1em;font-size:.9em;line-height:1;vertical-align:middle;color:#FFF;background:rgba(0,0,0,.5)}@media(min-width:1280px){.large-hidden,.tablet-hidden{display:none !important}.large-visible{display:block !important}.large-no-float{float:none}.large-inbl{display:inline-block;float:none;vertical-align:top}.large-row{display:table;width:100% !important;table-layout:fixed}.large-col{display:table-cell;vertical-align:top}.large-w25{width:25% !important}.large-w33{width:33.3333% !important}.large-w50{width:50% !important}.large-w66{width:66.6666% !important}.large-w75{width:75% !important}.large-w100{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.large-ma0,.large-man{margin:0 !important}}@media(max-width:768px){.w60,.w66,.w70,.w75,.w80,.w90,.w100,.w600p,.w700p,.w800p,.w960p,.mw960p,.medium-wauto{width:auto}.medium-hidden,.tablet-hidden{display:none !important}.medium-visible{display:block !important}.medium-no-float{float:none}.medium-inbl{display:inline-block;float:none;vertical-align:top}.medium-row{display:table;width:100% !important;table-layout:fixed}.medium-col{display:table-cell;vertical-align:top}.medium-w25{width:25% !important}.medium-w33{width:33.3333% !important}.medium-w50{width:50% !important}.medium-w66{width:66.6666% !important}.medium-w75{width:75% !important}.medium-w100{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.medium-ma0,.medium-man{margin:0 !important}.grid4 > *{width:49% !important}.grid4 >:first-child + * + *{margin-left:0 !important}.grid6 > *{width:32% !important}.grid6 >:first-child + * + * + *{margin-left:0 !important}}@media(max-width:640px){.mod,.item,.col,fieldset{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.w30,.w33,.w40,.w50,.w300p,.w400p,.w500p{width:auto}.row{display:block !important;width:100% !important}.tiny-hidden,.phone-hidden{display:none !important}.tiny-visible{display:block !important}.tiny-no-float{float:none}.tiny-inbl{display:inline-block;float:none;vertical-align:top}.tiny-row{display:table;width:100% !important;table-layout:fixed}.tiny-col{display:table-cell;vertical-align:top}th,td{display:block !important;width:auto !important;text-align:left !important}thead{display:none}.tiny-w25{width:25% !important}.tiny-w33{width:33.3333% !important}.tiny-w50{width:50% !important}.tiny-w66{width:66.6666% !important}.tiny-w75{width:75% !important}.tiny-w100{display:block !important;float:none !important;clear:none !important;width:auto !important;margin-right:0 !important;margin-left:0 !important;border:0}.tiny-ma0,.tiny-man{margin:0 !important}}
\ No newline at end of file
diff --git a/app/Resources/views/default/public/css/messages.css b/app/Resources/views/default/public/css/messages.css
new file mode 100644
index 000000000..46b547956
--- /dev/null
+++ b/app/Resources/views/default/public/css/messages.css
@@ -0,0 +1,75 @@
+.messages {
+ display: block;
+ clear: both;
+ width: 400px;
+ margin: 10px auto 10px;
+ padding: 10px 0;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.messages a.closeMessage {
+ display: none;
+ float: right;
+ width: 16px;
+ height: 16px;
+ margin: -14px -8px 0 0;
+ background: url(../img/messages/close.png) no-repeat;
+}
+
+/*.messages:hover a.closeMessage { visibility:visible; }*/
+
+.messages p {
+ margin: 3px 0 3px 10px !important;
+ padding: 0 10px 0 23px !important;
+ font-size: 14px;
+ line-height: 16px;
+}
+
+.messages.error {
+ border: 1px solid #c42608;
+ color: #c00 !important;
+ background: #fff0ef;
+}
+
+.messages.error p {
+ color: #c00 !important;
+ background: url(../img/messages/cross.png) no-repeat 0 50%;
+}
+
+.messages.success {
+ border: 1px solid #6dc70c;
+ background: #e0fbcc;
+}
+
+.messages.success p {
+ color: #2b6301 !important;
+ background: url(../img/messages/tick.png) no-repeat 0 50%;
+}
+
+.messages.warning {
+ border: 1px solid #ebcd41;
+ color: #000;
+ background: #fffcd3;
+}
+
+.messages.warning p {
+ color: #5f4e01;
+ background: url(../img/messages/warning.png) no-repeat 0 50%;
+}
+
+.messages.information,
+.messages.info {
+ border: 1px solid #82aee7;
+ background: #dfebfb;
+}
+
+.messages.information p,
+.messages.info p {
+ color: #064393;
+ background: url(../img/messages/help.png) no-repeat 0 50%;
+}
+
+.messages.information a {
+ text-decoration: underline;
+}
diff --git a/app/Resources/views/default/public/css/print.css b/app/Resources/views/default/public/css/print.css
new file mode 100644
index 000000000..625478e19
--- /dev/null
+++ b/app/Resources/views/default/public/css/print.css
@@ -0,0 +1,53 @@
+/* ### Layout ### */
+
+body {
+ font-family: Serif;
+ background-color: #fff;
+}
+
+@page {
+ margin: 1cm;
+}
+
+img {
+ max-width: 100% !important;
+}
+
+/* ### Content ### */
+
+/* Hide useless blocks */
+body > header,
+#links,
+#sort,
+body > footer,
+.top_link,
+div.tools,
+header div,
+.messages,
+.entrie + .results,
+#article_toolbar {
+ display: none !important;
+}
+
+article {
+ border: none !important;
+}
+
+pre code {
+ line-height: 1.6em;
+}
+
+/* Add URL after links */
+.vieworiginal a:after {
+ content: " (" attr(href) ")";
+}
+
+/* Add explanation after abbr */
+abbr[title]:after {
+ content: " (" attr(title) ")";
+}
+
+/* Change border on current pager item */
+.pagination span.current {
+ border-style: dashed;
+}
diff --git a/app/Resources/views/default/public/css/style-default.css b/app/Resources/views/default/public/css/style-default.css
new file mode 100755
index 000000000..4406d48f4
--- /dev/null
+++ b/app/Resources/views/default/public/css/style-default.css
@@ -0,0 +1,69 @@
+a.back span {
+ background-image: url('../img/default/left.png');
+}
+
+a.top span {
+ background-image: url('../img/default/top.png');
+}
+
+a.fav span,
+a.fav-off span:hover {
+ background-image: url('../img/default/star-on.png');
+}
+
+a.fav span:hover,
+a.fav-off span {
+ background-image: url('../img/default/star-off.png');
+}
+
+a.archive span,
+a.archive-off span:hover {
+ background-image: url('../img/default/checkmark-on.png');
+}
+
+a.archive span:hover,
+a.archive-off span {
+ background-image: url('../img/default/checkmark-off.png');
+}
+
+a.twitter span {
+ background-image: url('../img/default/twitter.png');
+}
+
+a.shaarli span {
+ background-image: url('../img/default/shaarli.png');
+}
+
+a.flattr span {
+ background-image: url('../img/default/flattr.png');
+}
+
+a.carrot span {
+ background-image: url('../../_global/img/icons/carrot-icon--black.png');
+ background-size: 16px 16px;
+}
+
+a.diaspora span {
+ background-image: url('../../_global/img/icons/diaspora-icon--black.png');
+ background-size: 16px 16px;
+}
+
+a.email span {
+ background-image: url('../img/default/envelop.png');
+}
+
+a.delete span {
+ background-image: url('../img/default/remove.png');
+}
+
+a.link span {
+ background-image: url('../img/default/link.png');
+}
+
+a.bad-display span {
+ background-image: url('../img/default/bad-display.png');
+}
+
+a.print span {
+ background-image: url('../img/default/print.png');
+}
diff --git a/app/Resources/views/default/public/css/style.css b/app/Resources/views/default/public/css/style.css
new file mode 100755
index 000000000..b25373d6c
--- /dev/null
+++ b/app/Resources/views/default/public/css/style.css
@@ -0,0 +1,447 @@
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Roboto Regular'), local('Roboto-Regular'), url(../fonts/Roboto.woff) format('woff');
+}
+
+
+
+body {
+ margin: 10px;
+ font-family: 'Roboto',Verdana,Geneva,sans-serif;
+ font-size: 16px;
+ color: #000;
+}
+
+header {
+ text-align: center;
+}
+
+header h1 {
+ font-size: 1.3em;
+}
+
+a,
+a:hover,
+a:visited {
+ color: #000;
+}
+
+.bouton {
+ border: none;
+ border-radius: 2px;
+ color: #fff;
+ background-color: #000;
+}
+
+.bouton:hover {
+ color: #f1f1f1;
+ background-color: #222;
+ cursor: pointer;
+}
+
+#main {
+ margin: 0 auto;
+}
+
+#main #links {
+ padding: 0;
+ text-align: center;
+ font-size: 0.9em;
+ list-style-type: none;
+}
+
+#main #links li {
+ display: inline;
+}
+
+#main #links li .current {
+ -webkit-border-radius: 2px;
+ border-radius: 2px;
+ color: #fff;
+ background-color: #000;
+}
+
+#main #sort {
+ padding: 0;
+ text-align: center;
+ list-style-type: none;
+ opacity: 0.5;
+}
+
+#main #sort li {
+ display: inline;
+ font-size: 0.9em;
+}
+
+#main #sort li + li {
+ margin-left: 10px;
+}
+
+#main #sort a {
+ padding: 2px 2px 0;
+ vertical-align: middle;
+}
+
+#main #sort img {
+ vertical-align: baseline;
+}
+#main #sort img:hover {
+ cursor: pointer;
+}
+
+#links a {
+ padding: 5px 10px;
+ text-decoration: none;
+}
+
+#links a:hover {
+ -webkit-border-radius: 2px;
+ border-radius: 2px;
+ color: #f1f1f1;
+ background-color: #040707;
+}
+
+/*** ***/
+
+/*** LINKS DISPLAY ***/
+
+#main .tool {
+ text-decoration: none;
+ cursor: pointer;
+}
+
+#main #content {
+ margin-top: 20px;
+}
+
+#main #content h2 {
+ text-decoration: none;
+ font-size: 1.3em;
+}
+
+#main #content .entrie {
+ margin-top: 15px;
+ padding-bottom: 15px;
+ border-bottom: 1px dashed #222;
+ overflow: hidden;
+}
+
+/* First entry */
+#main #content .results + .entrie {
+ clear: both;
+ margin-top: 0;
+}
+
+#main .entrie .tools {
+ float: right;
+ text-align: right;
+ list-style-type: none;
+ opacity: 0.5;
+}
+
+#main .entrie .tools .tool span {
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ /* Hide textual content */
+ overflow: hidden;
+ text-align: left;
+ text-indent: -9999px;
+}
+
+/*** ***/
+
+/*** ARTICLE PAGE ***/
+
+#article {
+ margin: 0 auto;
+}
+
+#article header {
+ border-bottom: 1px solid #222;
+}
+
+#article header {
+ text-align: left;
+}
+
+#article header h1 small {
+ float: right;
+ font-size: 0.6em;
+}
+
+#article header a {
+ text-decoration: none;
+}
+
+#article .tags {
+ font-size: 0.8em;
+ color: #888;
+ padding-bottom: 5px;
+}
+
+.backhome {
+ display: inline;
+}
+
+.results {
+ padding: 15px 0;
+ overflow: hidden;
+}
+
+.nb-results {
+ float: left;
+ font-size: 0.9em;
+ line-height: 24px;
+ vertical-align: middle;
+}
+
+#article_toolbar {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ min-height: 50px;
+ padding-top: 17px;
+ text-align: center;
+ color: #fff;
+ opacity: 0.8;
+ background: #fff;
+}
+
+#article_toolbar li {
+ display: inline;
+ padding-right: 30px;
+}
+
+#article_toolbar .tool {
+ padding: 0 2px;
+}
+
+#article_toolbar .tool span {
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ /* Hide textual content */
+ overflow: hidden;
+ text-align: left;
+ text-indent: -9999px;
+}
+
+/*** ***/
+
+/*** PAGINATION ***/
+
+.pagination {
+ float: right;
+ text-align: right;
+}
+
+.pagination a {
+ height: 25px;
+ margin: 2px;
+ padding: 4px 8px;
+ border: 1px solid #d5d5d5;
+ text-decoration: none;
+ font-size: 11px;
+ font-weight: bold;
+ color: #333;
+}
+
+.pagination a:hover,
+.pagination a:active {
+ background-color: #efefef;
+}
+
+.pagination .current {
+ height: 25px;
+ margin: 2px;
+ padding: 4px 8px;
+ border: 1px solid #d5d5d5;
+ text-decoration: none;
+ font-size: 11px;
+ font-weight: bold;
+ color: #000;
+ background-color: #ccc;
+}
+
+.pagination .disabled {
+ display: none;
+}
+
+#bookmarklet {
+ padding: 5px;
+ border: 1px dashed #808080;
+ background: #fff;
+ cursor: move;
+}
+
+.top_link {
+ display: none;
+ z-index: 2000;
+ position: fixed;
+ right: 15px;
+ bottom: 15px;
+ padding: 20px;
+ -webkit-border-radius: 40px;
+ -moz-border-radius: 40px;
+ border-radius: 40px;
+ opacity: 0.9;
+ background: #ccc;
+}
+
+footer {
+ clear: both;
+}
+
+.reading-time {
+ font-size: 0.8em;
+}
+
+#inputform {
+ display: none;
+ margin-top: 5px;
+ margin-right: auto;
+ margin-left: auto;
+ padding-bottom: 5px;
+ max-width: 300px;
+ border-radius: 3px;
+ text-align: center;
+ color: #fff;
+ opacity: 0.8;
+ background-color: rgba(0,0,0,0.9);
+}
+
+a.back span,
+a.top span,
+a.fav span,
+a.fav span:hover,
+a.fav-off span,
+a.fav-off span:hover,
+a.archive span,
+a.archive span:hover,
+a.archive-off span,
+a.archive-off span:hover,
+a.twitter span,
+a.shaarli span,
+a.flattr span,
+a.email span,
+a.delete span,
+a.link span,
+a.bad-display span,
+a.reading-time span,
+a.print span {
+ background-repeat: no-repeat;
+}
+
+.arrow-down {
+ width: 0px;
+ height: 0px;
+ border-style: solid;
+ border-width: 10px 10px 0 10px;
+ border-color: #000 transparent transparent transparent;
+
+ position: absolute;
+ margin-top: 1.5em;
+ margin-left: -30px;
+}
+
+.two-column {
+ display: block;
+ width: 50%;
+ paddig-right: 20px;
+ float: left;
+ vertical-align: top;
+}
+
+
+/* ==========================================================================
+ "save a link" popup div related styles
+ ========================================================================== */
+
+#bagit-form {
+ display: none;
+ padding-left: 30px;
+ width: 450px;
+
+}
+
+a#bagit-form-close {
+ color: #FFF;
+ display: inline-block;
+ float: right;
+ background: url("../img/messages/close.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
+ height: 16px;
+ margin: -14px -8px 0 0;
+ width: 16px;
+ text-decoration: none;
+}
+
+
+.add-to-wallabag-link-after {
+ background-color: #000;
+ color: #fff;
+ padding: 0 4px 1px 3px;
+ font-weight: bold;
+ font-size: 0.7em;
+ border-radius: 4px;
+}
+.add-to-wallabag-link-after:hover, .add-to-wallabag-link-after:active {
+ color: #fff;
+}
+.add-to-wallabag-link-after:visited {
+ color: #999;
+}
+a.add-to-wallabag-link-after {
+ visibility: hidden;
+ position: absolute;
+ opacity: 0;
+ transition-duration: 2s;
+ transition-timing-function: ease-out;
+}
+#article article a:hover + a.add-to-wallabag-link-after, a.add-to-wallabag-link-after:hover {
+ opacity: 1;
+ visibility: visible;
+ transition-duration: .3s;
+ transition-timing-function: ease-in;
+}
+a.add-to-wallabag-link-after:after {
+ content: "w";
+}
+
+
+#add-link-result {
+ display: inline;
+ padding-left: 10px;
+}
+
+/* ==========================================================================
+ "Search" popup div related styles
+ ========================================================================== */
+
+/* Search form message needs a little more width, depending on translations */
+#search-form {
+ width: 420px;
+}
+
+.opacity03 {
+ /*opacity: 0.3;*/
+}
+
+#readLeftPercent {
+ display: inline-block;
+ /* Show textual content */
+ overflow: visible;
+ text-align: left;
+ text-indent: 0;
+ color: black;
+ width: 50px;
+}
+
+pre code {
+ font-family: "Courier New", Courier, monospace;
+ border: 1px solid #ddd;
+ font-size: 0.96em;
+}
diff --git a/app/Resources/views/default/public/fonts/Roboto.woff b/app/Resources/views/default/public/fonts/Roboto.woff
new file mode 100644
index 000000000..1440b1be6
Binary files /dev/null and b/app/Resources/views/default/public/fonts/Roboto.woff differ
diff --git a/app/Resources/views/default/public/highlightjs/highlight.pack.js b/app/Resources/views/default/public/highlightjs/highlight.pack.js
new file mode 100644
index 000000000..10a21c34b
--- /dev/null
+++ b/app/Resources/views/default/public/highlightjs/highlight.pack.js
@@ -0,0 +1 @@
+var hljs=new function(){function j(v){return v.replace(/&/gm,"&").replace(//gm,">")}function t(v){return v.nodeName.toLowerCase()}function h(w,x){var v=w&&w.exec(x);return v&&v.index==0}function r(w){var v=(w.className+" "+(w.parentNode?w.parentNode.className:"")).split(/\s+/);v=v.map(function(x){return x.replace(/^lang(uage)?-/,"")});return v.filter(function(x){return i(x)||x=="no-highlight"})[0]}function o(x,y){var v={};for(var w in x){v[w]=x[w]}if(y){for(var w in y){v[w]=y[w]}}return v}function u(x){var v=[];(function w(y,z){for(var A=y.firstChild;A;A=A.nextSibling){if(A.nodeType==3){z+=A.nodeValue.length}else{if(t(A)=="br"){z+=1}else{if(A.nodeType==1){v.push({event:"start",offset:z,node:A});z=w(A,z);v.push({event:"stop",offset:z,node:A})}}}}return z})(x,0);return v}function q(w,y,C){var x=0;var F="";var z=[];function B(){if(!w.length||!y.length){return w.length?w:y}if(w[0].offset!=y[0].offset){return(w[0].offset
"}function E(G){F+=""+t(G)+">"}function v(G){(G.event=="start"?A:E)(G.node)}while(w.length||y.length){var D=B();F+=j(C.substr(x,D[0].offset-x));x=D[0].offset;if(D==w){z.reverse().forEach(E);do{v(D.splice(0,1)[0]);D=B()}while(D==w&&D.length&&D[0].offset==x);z.reverse().forEach(A)}else{if(D[0].event=="start"){z.push(D[0].node)}else{z.pop()}v(D.splice(0,1)[0])}}return F+j(C.substr(x))}function m(y){function v(z){return(z&&z.source)||z}function w(A,z){return RegExp(v(A),"m"+(y.cI?"i":"")+(z?"g":""))}function x(D,C){if(D.compiled){return}D.compiled=true;D.k=D.k||D.bK;if(D.k){var z={};var E=function(G,F){if(y.cI){F=F.toLowerCase()}F.split(" ").forEach(function(H){var I=H.split("|");z[I[0]]=[G,I[1]?Number(I[1]):1]})};if(typeof D.k=="string"){E("keyword",D.k)}else{Object.keys(D.k).forEach(function(F){E(F,D.k[F])})}D.k=z}D.lR=w(D.l||/\b[A-Za-z0-9_]+\b/,true);if(C){if(D.bK){D.b="\\b("+D.bK.split(" ").join("|")+")\\b"}if(!D.b){D.b=/\B|\b/}D.bR=w(D.b);if(!D.e&&!D.eW){D.e=/\B|\b/}if(D.e){D.eR=w(D.e)}D.tE=v(D.e)||"";if(D.eW&&C.tE){D.tE+=(D.e?"|":"")+C.tE}}if(D.i){D.iR=w(D.i)}if(D.r===undefined){D.r=1}if(!D.c){D.c=[]}var B=[];D.c.forEach(function(F){if(F.v){F.v.forEach(function(G){B.push(o(F,G))})}else{B.push(F=="self"?D:F)}});D.c=B;D.c.forEach(function(F){x(F,D)});if(D.starts){x(D.starts,C)}var A=D.c.map(function(F){return F.bK?"\\.?("+F.b+")\\.?":F.b}).concat([D.tE,D.i]).map(v).filter(Boolean);D.t=A.length?w(A.join("|"),true):{exec:function(F){return null}};D.continuation={}}x(y)}function c(S,L,J,R){function v(U,V){for(var T=0;T";U+=Z+'">';return U+X+Y}function N(){if(!I.k){return j(C)}var T="";var W=0;I.lR.lastIndex=0;var U=I.lR.exec(C);while(U){T+=j(C.substr(W,U.index-W));var V=E(I,U);if(V){H+=V[1];T+=w(V[0],j(U[0]))}else{T+=j(U[0])}W=I.lR.lastIndex;U=I.lR.exec(C)}return T+j(C.substr(W))}function F(){if(I.sL&&!f[I.sL]){return j(C)}var T=I.sL?c(I.sL,C,true,I.continuation.top):e(C);if(I.r>0){H+=T.r}if(I.subLanguageMode=="continuous"){I.continuation.top=T.top}return w(T.language,T.value,false,true)}function Q(){return I.sL!==undefined?F():N()}function P(V,U){var T=V.cN?w(V.cN,"",true):"";if(V.rB){D+=T;C=""}else{if(V.eB){D+=j(U)+T;C=""}else{D+=T;C=U}}I=Object.create(V,{parent:{value:I}})}function G(T,X){C+=T;if(X===undefined){D+=Q();return 0}var V=v(X,I);if(V){D+=Q();P(V,X);return V.rB?0:X.length}var W=z(I,X);if(W){var U=I;if(!(U.rE||U.eE)){C+=X}D+=Q();do{if(I.cN){D+=""}H+=I.r;I=I.parent}while(I!=W.parent);if(U.eE){D+=j(X)}C="";if(W.starts){P(W.starts,"")}return U.rE?0:X.length}if(A(X,I)){throw new Error('Illegal lexeme "'+X+'" for mode "'+(I.cN||"")+'"')}C+=X;return X.length||1}var M=i(S);if(!M){throw new Error('Unknown language: "'+S+'"')}m(M);var I=R||M;var D="";for(var K=I;K!=M;K=K.parent){if(K.cN){D+=w(K.cN,D,true)}}var C="";var H=0;try{var B,y,x=0;while(true){I.t.lastIndex=x;B=I.t.exec(L);if(!B){break}y=G(L.substr(x,B.index-x),B[0]);x=B.index+y}G(L.substr(x));for(var K=I;K.parent;K=K.parent){if(K.cN){D+=""}}return{r:H,value:D,language:S,top:I}}catch(O){if(O.message.indexOf("Illegal")!=-1){return{r:0,value:j(L)}}else{throw O}}}function e(y,x){x=x||b.languages||Object.keys(f);var v={r:0,value:j(y)};var w=v;x.forEach(function(z){if(!i(z)){return}var A=c(z,y,false);A.language=z;if(A.r>w.r){w=A}if(A.r>v.r){w=v;v=A}});if(w.language){v.second_best=w}return v}function g(v){if(b.tabReplace){v=v.replace(/^((<[^>]+>|\t)+)/gm,function(w,z,y,x){return z.replace(/\t/g,b.tabReplace)})}if(b.useBR){v=v.replace(/\n/g," ")}return v}function p(z){var y=b.useBR?z.innerHTML.replace(/\n/g,"").replace(/ | ]*>/g,"\n").replace(/<[^>]*>/g,""):z.textContent;var A=r(z);if(A=="no-highlight"){return}var v=A?c(A,y,true):e(y);var w=u(z);if(w.length){var x=document.createElementNS("http://www.w3.org/1999/xhtml","pre");x.innerHTML=v.value;v.value=q(w,u(x),y)}v.value=g(v.value);z.innerHTML=v.value;z.className+=" hljs "+(!A&&v.language||"");z.result={language:v.language,re:v.r};if(v.second_best){z.second_best={language:v.second_best.language,re:v.second_best.r}}}var b={classPrefix:"hljs-",tabReplace:null,useBR:false,languages:undefined};function s(v){b=o(b,v)}function l(){if(l.called){return}l.called=true;var v=document.querySelectorAll("pre code");Array.prototype.forEach.call(v,p)}function a(){addEventListener("DOMContentLoaded",l,false);addEventListener("load",l,false)}var f={};var n={};function d(v,x){var w=f[v]=x(this);if(w.aliases){w.aliases.forEach(function(y){n[y]=v})}}function k(){return Object.keys(f)}function i(v){return f[v]||f[n[v]]}this.highlight=c;this.highlightAuto=e;this.fixMarkup=g;this.highlightBlock=p;this.configure=s;this.initHighlighting=l;this.initHighlightingOnLoad=a;this.registerLanguage=d;this.listLanguages=k;this.getLanguage=i;this.inherit=o;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE]};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE]};this.PWM={b:/\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\b/};this.CLCM={cN:"comment",b:"//",e:"$",c:[this.PWM]};this.CBCM={cN:"comment",b:"/\\*",e:"\\*/",c:[this.PWM]};this.HCM={cN:"comment",b:"#",e:"$",c:[this.PWM]};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.CSSNM={cN:"number",b:this.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0};this.RM={cN:"regexp",b:/\//,e:/\/[gim]*/,i:/\n/,c:[this.BE,{b:/\[/,e:/\]/,r:0,c:[this.BE]}]};this.TM={cN:"title",b:this.IR,r:0};this.UTM={cN:"title",b:this.UIR,r:0}}();hljs.registerLanguage("bash",function(b){var a={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)\}/}]};var d={cN:"string",b:/"/,e:/"/,c:[b.BE,a,{cN:"variable",b:/\$\(/,e:/\)/,c:[b.BE]}]};var c={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\.]+/,k:{keyword:"if then else elif fi for break continue while in do done exit return set declare case esac export exec",literal:"true false",built_in:"printf echo read cd pwd pushd popd dirs let eval unset typeset readonly getopts source shopt caller type hash bind help sudo",operator:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"shebang",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:true,c:[b.inherit(b.TM,{b:/\w[\w\d_]*/})],r:0},b.HCM,b.NM,d,c,a]}});hljs.registerLanguage("cs",function(b){var a="abstract as base bool break byte case catch char checked const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async await ascending descending from get group into join let orderby partial select set value var where yield";return{aliases:["csharp"],k:a,i:/::/,c:[{cN:"comment",b:"///",e:"$",rB:true,c:[{cN:"xmlDocTag",v:[{b:"///",r:0},{b:""},{b:"?",e:">"}]}]},b.CLCM,b.CBCM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line region endregion pragma checksum"},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},b.ASM,b.QSM,b.CNM,{bK:"protected public private internal",e:/[{;=]/,k:a,c:[{bK:"class namespace interface",starts:{c:[b.TM]}},{b:b.IR+"\\s*\\(",rB:true,c:[b.TM]}]}]}});hljs.registerLanguage("ruby",function(f){var j="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?";var i="and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor";var b={cN:"yardoctag",b:"@[A-Za-z]+"};var c={cN:"value",b:"#<",e:">"};var k={cN:"comment",v:[{b:"#",e:"$",c:[b]},{b:"^\\=begin",e:"^\\=end",c:[b],r:10},{b:"^__END__",e:"\\n$"}]};var d={cN:"subst",b:"#\\{",e:"}",k:i};var e={cN:"string",c:[f.BE,d],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:"%[qw]?\\(",e:"\\)"},{b:"%[qw]?\\[",e:"\\]"},{b:"%[qw]?{",e:"}"},{b:"%[qw]?<",e:">"},{b:"%[qw]?/",e:"/"},{b:"%[qw]?%",e:"%"},{b:"%[qw]?-",e:"-"},{b:"%[qw]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/}]};var a={cN:"params",b:"\\(",e:"\\)",k:i};var h=[e,c,k,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[f.inherit(f.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+f.IR+"::)?"+f.IR}]},k]},{cN:"function",bK:"def",e:" |$|;",r:0,c:[f.inherit(f.TM,{b:j}),a,k]},{cN:"constant",b:"(::)?(\\b[A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:":",c:[e,{b:j}],r:0},{cN:"symbol",b:f.UIR+"(\\!|\\?)?:",r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+f.RSR+")\\s*",c:[c,k,{cN:"regexp",c:[f.BE,d],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}],r:0}];d.c=h;a.c=h;var g=[{r:1,cN:"output",b:"^\\s*=> ",e:"$",rB:true,c:[{cN:"status",b:"^\\s*=>"},{b:" ",e:"$",c:h}]},{r:1,cN:"input",b:"^[^ ][^=>]*>+ ",e:"$",rB:true,c:[{cN:"prompt",b:"^[^ ][^=>]*>+"},{b:" ",e:"$",c:h}]}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:i,c:g.concat(h)}});hljs.registerLanguage("diff",function(a){return{aliases:["patch"],c:[{cN:"chunk",r:10,v:[{b:/^\@\@ +\-\d+,\d+ +\+\d+,\d+ +\@\@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"header",v:[{b:/Index: /,e:/$/},{b:/=====/,e:/=====$/},{b:/^\-\-\-/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+\+\+/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"change",b:"^\\!",e:"$"}]}});hljs.registerLanguage("javascript",function(a){return{aliases:["js"],k:{keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document"},c:[{cN:"pi",b:/^\s*('|")use strict('|")/,r:10},a.ASM,a.QSM,a.CLCM,a.CBCM,a.CNM,{b:"("+a.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[a.CLCM,a.CBCM,a.RM,{b:/,e:/>;/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,eE:true,c:[a.inherit(a.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,c:[a.CLCM,a.CBCM],i:/["'\(]/}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+a.IR,r:0}]}});hljs.registerLanguage("xml",function(a){var c="[A-Za-z0-9\\._:-]+";var d={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php",subLanguageMode:"continuous"};var b={eW:true,i:/,r:0,c:[d,{cN:"attribute",b:c,r:0},{b:"=",r:0,c:[{cN:"value",v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s\/>]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xsl","plist"],cI:true,c:[{cN:"doctype",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"",rE:true,sL:"css"}},{cN:"tag",b:"
+
+{% endblock %}
diff --git a/app/Resources/views/dmagenta/README.md b/app/Resources/views/dmagenta/README.md
new file mode 100644
index 000000000..6abc37e37
--- /dev/null
+++ b/app/Resources/views/dmagenta/README.md
@@ -0,0 +1,3 @@
+# dmagenta (dark magenta) theme
+
+theme created by Nicolas LÅ“uillet aka nico_somb
\ No newline at end of file
diff --git a/app/Resources/views/dmagenta/public/css/style-dmagenta.css b/app/Resources/views/dmagenta/public/css/style-dmagenta.css
new file mode 100644
index 000000000..4dc592d21
--- /dev/null
+++ b/app/Resources/views/dmagenta/public/css/style-dmagenta.css
@@ -0,0 +1,78 @@
+body {
+ color: #d4d4d4;
+ background-color: #372d37;
+}
+
+a,
+a:hover,
+a:visited {
+ color: #8d748d;
+}
+
+a.back span {
+ background-image: url('../img/dmagenta/left.png');
+}
+
+a.top span {
+ background-image: url('../img/dmagenta/top.png');
+}
+
+a.fav span,
+a.fav-off span:hover {
+ background-image: url('../img/dmagenta/star-on.png');
+}
+
+a.fav span:hover,
+a.fav-off span {
+ background-image: url('../img/dmagenta/star-off.png');
+}
+
+a.archive span,
+a.archive-off span:hover {
+ background-image: url('../img/dmagenta/checkmark-on.png');
+}
+
+a.archive span:hover,
+a.archive-off span {
+ background-image: url('../img/dmagenta/checkmark-off.png');
+}
+
+a.twitter span {
+ background-image: url('../img/dmagenta/twitter.png');
+}
+
+a.flattr span {
+ background-image: url('../img/dmagenta/flattr.png');
+}
+
+a.shaarli span {
+ background-image: url('../img/dmagenta/shaarli.png');
+}
+
+a.email span {
+ background-image: url('../img/dmagenta/envelop.png');
+}
+
+a.delete span {
+ background-image: url('../img/dmagenta/remove.png');
+}
+
+a.link span {
+ background-image: url('../img/dmagenta/link.png');
+}
+
+a.bad-display span {
+ background-image: url('../img/dmagenta/bad-display.png');
+}
+
+.pagination a {
+ color: #aaa;
+}
+
+#main #links li .current {
+ background-color: #2d372d;
+}
+
+#article_toolbar {
+ background: #372d37;
+}
\ No newline at end of file
diff --git a/app/Resources/views/dmagenta/public/img/dmagenta/backtotop.png b/app/Resources/views/dmagenta/public/img/dmagenta/backtotop.png
new file mode 100755
index 000000000..051238ef9
Binary files /dev/null and b/app/Resources/views/dmagenta/public/img/dmagenta/backtotop.png differ
diff --git a/app/Resources/views/dmagenta/public/img/dmagenta/bad-display.png b/app/Resources/views/dmagenta/public/img/dmagenta/bad-display.png
new file mode 100755
index 000000000..6866799fc
Binary files /dev/null and b/app/Resources/views/dmagenta/public/img/dmagenta/bad-display.png differ
diff --git a/app/Resources/views/dmagenta/public/img/dmagenta/checkmark-off.png b/app/Resources/views/dmagenta/public/img/dmagenta/checkmark-off.png
new file mode 100644
index 000000000..3db5a06dc
Binary files /dev/null and b/app/Resources/views/dmagenta/public/img/dmagenta/checkmark-off.png differ
diff --git a/app/Resources/views/dmagenta/public/img/dmagenta/checkmark-on.png b/app/Resources/views/dmagenta/public/img/dmagenta/checkmark-on.png
new file mode 100644
index 000000000..cd3abb2c0
Binary files /dev/null and b/app/Resources/views/dmagenta/public/img/dmagenta/checkmark-on.png differ
diff --git a/app/Resources/views/dmagenta/public/img/dmagenta/down.png b/app/Resources/views/dmagenta/public/img/dmagenta/down.png
new file mode 100644
index 000000000..b9d536a7c
Binary files /dev/null and b/app/Resources/views/dmagenta/public/img/dmagenta/down.png differ
diff --git a/app/Resources/views/dmagenta/public/img/dmagenta/envelop.png b/app/Resources/views/dmagenta/public/img/dmagenta/envelop.png
new file mode 100644
index 000000000..6be1c8864
Binary files /dev/null and b/app/Resources/views/dmagenta/public/img/dmagenta/envelop.png differ
diff --git a/app/Resources/views/dmagenta/public/img/dmagenta/flattr.png b/app/Resources/views/dmagenta/public/img/dmagenta/flattr.png
new file mode 100755
index 000000000..0404aaeaf
Binary files /dev/null and b/app/Resources/views/dmagenta/public/img/dmagenta/flattr.png differ
diff --git a/app/Resources/views/dmagenta/public/img/dmagenta/left.png b/app/Resources/views/dmagenta/public/img/dmagenta/left.png
new file mode 100644
index 000000000..a0a53631e
Binary files /dev/null and b/app/Resources/views/dmagenta/public/img/dmagenta/left.png differ
diff --git a/app/Resources/views/dmagenta/public/img/dmagenta/link.png b/app/Resources/views/dmagenta/public/img/dmagenta/link.png
new file mode 100755
index 000000000..db62819d5
Binary files /dev/null and b/app/Resources/views/dmagenta/public/img/dmagenta/link.png differ
diff --git a/app/Resources/views/dmagenta/public/img/dmagenta/remove.png b/app/Resources/views/dmagenta/public/img/dmagenta/remove.png
new file mode 100644
index 000000000..f8ad56a3e
Binary files /dev/null and b/app/Resources/views/dmagenta/public/img/dmagenta/remove.png differ
diff --git a/app/Resources/views/dmagenta/public/img/dmagenta/rss.png b/app/Resources/views/dmagenta/public/img/dmagenta/rss.png
new file mode 100644
index 000000000..21bad1a17
Binary files /dev/null and b/app/Resources/views/dmagenta/public/img/dmagenta/rss.png differ
diff --git a/app/Resources/views/dmagenta/public/img/dmagenta/shaarli.png b/app/Resources/views/dmagenta/public/img/dmagenta/shaarli.png
new file mode 100644
index 000000000..1eb30f60b
Binary files /dev/null and b/app/Resources/views/dmagenta/public/img/dmagenta/shaarli.png differ
diff --git a/app/Resources/views/dmagenta/public/img/dmagenta/star-off.png b/app/Resources/views/dmagenta/public/img/dmagenta/star-off.png
new file mode 100644
index 000000000..6a0133a79
Binary files /dev/null and b/app/Resources/views/dmagenta/public/img/dmagenta/star-off.png differ
diff --git a/app/Resources/views/dmagenta/public/img/dmagenta/star-on.png b/app/Resources/views/dmagenta/public/img/dmagenta/star-on.png
new file mode 100644
index 000000000..a9f96eaac
Binary files /dev/null and b/app/Resources/views/dmagenta/public/img/dmagenta/star-on.png differ
diff --git a/app/Resources/views/dmagenta/public/img/dmagenta/top.png b/app/Resources/views/dmagenta/public/img/dmagenta/top.png
new file mode 100644
index 000000000..954a8c0ac
Binary files /dev/null and b/app/Resources/views/dmagenta/public/img/dmagenta/top.png differ
diff --git a/app/Resources/views/dmagenta/public/img/dmagenta/twitter.png b/app/Resources/views/dmagenta/public/img/dmagenta/twitter.png
new file mode 100644
index 000000000..cfcfe4195
Binary files /dev/null and b/app/Resources/views/dmagenta/public/img/dmagenta/twitter.png differ
diff --git a/app/Resources/views/dmagenta/screenshot.jpg b/app/Resources/views/dmagenta/screenshot.jpg
new file mode 100644
index 000000000..ab8f1ec22
Binary files /dev/null and b/app/Resources/views/dmagenta/screenshot.jpg differ
diff --git a/app/Resources/views/dmagenta/theme.ini b/app/Resources/views/dmagenta/theme.ini
new file mode 100644
index 000000000..78fa3a9c9
--- /dev/null
+++ b/app/Resources/views/dmagenta/theme.ini
@@ -0,0 +1,2 @@
+name = Dmagenta
+requirements[] = default
diff --git a/app/Resources/views/solarized-dark/README.md b/app/Resources/views/solarized-dark/README.md
new file mode 100644
index 000000000..81be1f8cd
--- /dev/null
+++ b/app/Resources/views/solarized-dark/README.md
@@ -0,0 +1,6 @@
+# solarized-dark (Solarized Dark) theme
+
+
+Theme created by NumEricR
+
+http://github.com/NumEricR/poche-themes
diff --git a/app/Resources/views/solarized-dark/Solarized-LICENSE.txt b/app/Resources/views/solarized-dark/Solarized-LICENSE.txt
new file mode 100644
index 000000000..a842f6638
--- /dev/null
+++ b/app/Resources/views/solarized-dark/Solarized-LICENSE.txt
@@ -0,0 +1,19 @@
+Copyright (c) 2011 Ethan Schoonover
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE
diff --git a/app/Resources/views/solarized-dark/public/css/style-solarized-dark.css b/app/Resources/views/solarized-dark/public/css/style-solarized-dark.css
new file mode 100644
index 000000000..77a97d382
--- /dev/null
+++ b/app/Resources/views/solarized-dark/public/css/style-solarized-dark.css
@@ -0,0 +1,232 @@
+/*
+ * Solarized Dark - by NumEricR
+ * http://github.com/NumEricR/poche-themes
+ * ==================================================
+ *
+ * Based on Solarized's palette - (c) 2011 Ethan Schoonover
+ * See http://ethanschoonover.com/solarized#usage-development
+ * See http://ethanschoonover.com/solarized#the-values
+ *
+ * Background: #002b36 base 03
+ * Highlight: #073642 base 02
+ * Primary content: #839496 base 0
+ * Intermediate: #657b83 base 00
+ * Emphasized content: #93a1a1 base 1
+ * Secondary content: #586e75 base 01
+ * Green: #859900
+ * Orange: #cb4b16
+ * Red: #dc322f
+ * Blue: #268bd2
+ *
+ * ================================================== */
+
+/* Background */
+
+body,
+#article_toolbar {
+ background-color: #002b36;
+}
+
+/* Highlight */
+/* 2 different selectors for selection pseudo-elmt */
+/* See https://developer.mozilla.org/en-US/docs/Web/CSS/::selection */
+::-moz-selection {
+ background-color: #073642;
+}
+::selection {
+ background-color: #073642;
+}
+
+/* Primary content */
+
+body,
+a,
+a:hover,
+a:visited,
+td {
+ color: #839496;
+}
+
+/* Secondary content */
+
+.tools p,
+.vieworiginal a,
+.vieworiginal a:hover,
+.vieworiginal a:visited {
+ color: #586e75;
+}
+
+#main #content .entrie,
+#article header,
+#article article {
+ border-bottom-color: #586e75;
+}
+
+/* Emphasized content */
+
+.entrie h2 a:hover,
+footer,
+footer a {
+ color: #93a1a1;
+}
+
+/* Colored content */
+
+#main .messages.success,
+#main .messages.warning,
+#main .messages.error,
+#main .messages.information,
+#main .messages.info {
+ background-color: #073642;
+}
+
+#main .messages.success {
+ border-color: #859900;
+}
+
+#main .messages.success p {
+ color: #859900 !important; /* Overwrites !important used on messages.css */
+}
+
+#main .messages.warning {
+ border-color: #cb4b16;
+}
+
+#main .messages.warning p {
+ color: #cb4b16;
+}
+
+#main .messages.error {
+ border-color: #dc322f;
+}
+
+#main .messages.error p {
+ color: #dc322f !important; /* Overwrites !important used on messages.css */
+}
+
+#main .messages.information,
+#main .messages.info {
+ border-color: #268bd2;
+}
+
+#main .messages.information p,
+#main .messages.info p {
+ color: #268bd2;
+}
+
+/* Miscellaneous */
+
+.bouton,
+.bouton:hover,
+#main #links li a.current,
+#links a:hover,
+.pagination span.current,
+.pagination a:hover,
+.pagination a:active {
+ color: #002b36;
+ background-color: #586e75;
+}
+
+.bouton:hover {
+ background-color: #657b83;
+}
+
+#login,
+#password,
+#password_repeat,
+#bookmarklet,
+.top_link {
+ background-color: #073642;
+}
+
+#login,
+#password,
+#password_repeat,
+#bookmarklet {
+ padding: 5px;
+ border: 1px solid #586e75;
+ color: #839496;
+}
+
+#bookmarklet {
+ border-style: dashed;
+}
+
+.pagination a {
+ border-color: #586e75;
+ color: #586e75;
+}
+
+.pagination span.current {
+ border-color: #073642;
+}
+
+/* Images */
+
+a.back span {
+ background-image: url('../img/solarized-dark/left.png');
+}
+
+a.top span {
+ background-image: url('../img/solarized-dark/top.png');
+}
+
+a.fav span,
+a.fav-off span:hover {
+ background-image: url('../img/solarized-dark/star-on.png');
+}
+
+a.fav span:hover,
+a.fav-off span {
+ background-image: url('../img/solarized-dark/star-off.png');
+}
+
+a.archive span,
+a.archive-off span:hover {
+ background-image: url('../img/solarized-dark/checkmark-on.png');
+}
+
+a.archive span:hover,
+a.archive-off span {
+ background-image: url('../img/solarized-dark/checkmark-off.png');
+}
+
+a.twitter span {
+ background-image: url('../img/solarized-dark/twitter.png');
+}
+
+a.flattr span {
+ background-image: url('../img/solarized-dark/flattr.png');
+}
+
+a.shaarli span {
+ background-image: url('../img/solarized-dark/shaarli.png');
+}
+
+a.email span {
+ background-image: url('../img/solarized-dark/envelop.png');
+}
+
+a.delete span {
+ background-image: url('../img/solarized-dark/remove.png');
+}
+
+a.link span {
+ background-image: url('../img/solarized-dark/link.png');
+}
+
+a.bad-display span {
+ background-image: url('../img/solarized-dark/bad-display.png');
+}
+
+.arrow-down {
+ width: 0px;
+ height: 0px;
+ border-style: solid;
+ border-width: 10px 10px 0 10px;
+ border-color: #586E75 transparent transparent transparent;
+
+ position: absolute;
+ margin-top: 1.5em;
+ margin-left: -30px;
+}
\ No newline at end of file
diff --git a/app/Resources/views/solarized-dark/public/img/solarized-dark/backtotop.png b/app/Resources/views/solarized-dark/public/img/solarized-dark/backtotop.png
new file mode 100644
index 000000000..1501c2a5d
Binary files /dev/null and b/app/Resources/views/solarized-dark/public/img/solarized-dark/backtotop.png differ
diff --git a/app/Resources/views/solarized-dark/public/img/solarized-dark/bad-display.png b/app/Resources/views/solarized-dark/public/img/solarized-dark/bad-display.png
new file mode 100644
index 000000000..b2c3ca173
Binary files /dev/null and b/app/Resources/views/solarized-dark/public/img/solarized-dark/bad-display.png differ
diff --git a/app/Resources/views/solarized-dark/public/img/solarized-dark/checkmark-off.png b/app/Resources/views/solarized-dark/public/img/solarized-dark/checkmark-off.png
new file mode 100644
index 000000000..fd7d92fa9
Binary files /dev/null and b/app/Resources/views/solarized-dark/public/img/solarized-dark/checkmark-off.png differ
diff --git a/app/Resources/views/solarized-dark/public/img/solarized-dark/checkmark-on.png b/app/Resources/views/solarized-dark/public/img/solarized-dark/checkmark-on.png
new file mode 100644
index 000000000..592965dd4
Binary files /dev/null and b/app/Resources/views/solarized-dark/public/img/solarized-dark/checkmark-on.png differ
diff --git a/app/Resources/views/solarized-dark/public/img/solarized-dark/down.png b/app/Resources/views/solarized-dark/public/img/solarized-dark/down.png
new file mode 100644
index 000000000..5de303157
Binary files /dev/null and b/app/Resources/views/solarized-dark/public/img/solarized-dark/down.png differ
diff --git a/app/Resources/views/solarized-dark/public/img/solarized-dark/envelop.png b/app/Resources/views/solarized-dark/public/img/solarized-dark/envelop.png
new file mode 100644
index 000000000..d34688859
Binary files /dev/null and b/app/Resources/views/solarized-dark/public/img/solarized-dark/envelop.png differ
diff --git a/app/Resources/views/solarized-dark/public/img/solarized-dark/flattr.png b/app/Resources/views/solarized-dark/public/img/solarized-dark/flattr.png
new file mode 100644
index 000000000..73e3f4218
Binary files /dev/null and b/app/Resources/views/solarized-dark/public/img/solarized-dark/flattr.png differ
diff --git a/app/Resources/views/solarized-dark/public/img/solarized-dark/left.png b/app/Resources/views/solarized-dark/public/img/solarized-dark/left.png
new file mode 100644
index 000000000..a953d831d
Binary files /dev/null and b/app/Resources/views/solarized-dark/public/img/solarized-dark/left.png differ
diff --git a/app/Resources/views/solarized-dark/public/img/solarized-dark/link.png b/app/Resources/views/solarized-dark/public/img/solarized-dark/link.png
new file mode 100644
index 000000000..5e859a0e3
Binary files /dev/null and b/app/Resources/views/solarized-dark/public/img/solarized-dark/link.png differ
diff --git a/app/Resources/views/solarized-dark/public/img/solarized-dark/remove.png b/app/Resources/views/solarized-dark/public/img/solarized-dark/remove.png
new file mode 100644
index 000000000..66a5c1ab4
Binary files /dev/null and b/app/Resources/views/solarized-dark/public/img/solarized-dark/remove.png differ
diff --git a/app/Resources/views/solarized-dark/public/img/solarized-dark/rss.png b/app/Resources/views/solarized-dark/public/img/solarized-dark/rss.png
new file mode 100644
index 000000000..21bad1a17
Binary files /dev/null and b/app/Resources/views/solarized-dark/public/img/solarized-dark/rss.png differ
diff --git a/app/Resources/views/solarized-dark/public/img/solarized-dark/shaarli.png b/app/Resources/views/solarized-dark/public/img/solarized-dark/shaarli.png
new file mode 100644
index 000000000..1eb30f60b
Binary files /dev/null and b/app/Resources/views/solarized-dark/public/img/solarized-dark/shaarli.png differ
diff --git a/app/Resources/views/solarized-dark/public/img/solarized-dark/star-off.png b/app/Resources/views/solarized-dark/public/img/solarized-dark/star-off.png
new file mode 100644
index 000000000..1c603ecca
Binary files /dev/null and b/app/Resources/views/solarized-dark/public/img/solarized-dark/star-off.png differ
diff --git a/app/Resources/views/solarized-dark/public/img/solarized-dark/star-on.png b/app/Resources/views/solarized-dark/public/img/solarized-dark/star-on.png
new file mode 100644
index 000000000..bc37772a5
Binary files /dev/null and b/app/Resources/views/solarized-dark/public/img/solarized-dark/star-on.png differ
diff --git a/app/Resources/views/solarized-dark/public/img/solarized-dark/top.png b/app/Resources/views/solarized-dark/public/img/solarized-dark/top.png
new file mode 100644
index 000000000..b3f44f31d
Binary files /dev/null and b/app/Resources/views/solarized-dark/public/img/solarized-dark/top.png differ
diff --git a/app/Resources/views/solarized-dark/public/img/solarized-dark/twitter.png b/app/Resources/views/solarized-dark/public/img/solarized-dark/twitter.png
new file mode 100644
index 000000000..c4a253341
Binary files /dev/null and b/app/Resources/views/solarized-dark/public/img/solarized-dark/twitter.png differ
diff --git a/app/Resources/views/solarized-dark/screenshot.jpg b/app/Resources/views/solarized-dark/screenshot.jpg
new file mode 100644
index 000000000..2ad879435
Binary files /dev/null and b/app/Resources/views/solarized-dark/screenshot.jpg differ
diff --git a/app/Resources/views/solarized-dark/theme.ini b/app/Resources/views/solarized-dark/theme.ini
new file mode 100644
index 000000000..c99481464
--- /dev/null
+++ b/app/Resources/views/solarized-dark/theme.ini
@@ -0,0 +1,2 @@
+name = Solarized Dark
+requirements[] = default
diff --git a/app/Resources/views/solarized/README.md b/app/Resources/views/solarized/README.md
new file mode 100644
index 000000000..255e3cddf
--- /dev/null
+++ b/app/Resources/views/solarized/README.md
@@ -0,0 +1,6 @@
+# solarized (Solarized) theme
+
+
+Theme created by NumEricR
+
+http://github.com/NumEricR/poche-themes
diff --git a/app/Resources/views/solarized/Solarized-LICENSE.txt b/app/Resources/views/solarized/Solarized-LICENSE.txt
new file mode 100644
index 000000000..a842f6638
--- /dev/null
+++ b/app/Resources/views/solarized/Solarized-LICENSE.txt
@@ -0,0 +1,19 @@
+Copyright (c) 2011 Ethan Schoonover
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE
diff --git a/app/Resources/views/solarized/public/css/style-solarized.css b/app/Resources/views/solarized/public/css/style-solarized.css
new file mode 100644
index 000000000..cf16338f4
--- /dev/null
+++ b/app/Resources/views/solarized/public/css/style-solarized.css
@@ -0,0 +1,232 @@
+/*
+ * Solarized - by NumEricR
+ * http://github.com/NumEricR/poche-themes
+ * ==================================================
+ *
+ * Based on Solarized's palette - (c) 2011 Ethan Schoonover
+ * See http://ethanschoonover.com/solarized#usage-development
+ * See http://ethanschoonover.com/solarized#the-values
+ *
+ * Background: #fdf6e3 base 3
+ * Highlight: #eee8d5 base 2
+ * Primary content: #657b83 base 00
+ * Intermediate: #839496 base 0
+ * Emphasized content: #586e75 base 01
+ * Secondary content: #93a1a1 base 1
+ * Green: #859900
+ * Orange: #cb4b16
+ * Red: #dc322f
+ * Blue: #268bd2
+ *
+ * ================================================== */
+
+/* Background */
+
+body,
+#article_toolbar {
+ background-color: #fdf6e3;
+}
+
+/* Highlight */
+/* 2 different selectors for selection pseudo-elmt */
+/* See https://developer.mozilla.org/en-US/docs/Web/CSS/::selection */
+::-moz-selection {
+ background-color: #eee8d5;
+}
+::selection {
+ background-color: #eee8d5;
+}
+
+/* Primary content */
+
+body,
+a,
+a:hover,
+a:visited,
+td {
+ color: #657b83;
+}
+
+/* Secondary content */
+
+.tools p,
+.vieworiginal a,
+.vieworiginal a:hover,
+.vieworiginal a:visited {
+ color: #93a1a1;
+}
+
+#main #content .entrie,
+#article header,
+#article article {
+ border-bottom-color: #93a1a1;
+}
+
+/* Emphasized content */
+
+.entrie h2 a:hover,
+footer,
+footer a {
+ color: #586e75;
+}
+
+/* Colored content */
+
+#main .messages.success,
+#main .messages.warning,
+#main .messages.error,
+#main .messages.information,
+#main .messages.info {
+ background-color: #eee8d5;
+}
+
+#main .messages.success {
+ border-color: #859900;
+}
+
+#main .messages.success p {
+ color: #859900 !important; /* Overwrites !important used on messages.css */
+}
+
+#main .messages.warning {
+ border-color: #cb4b16;
+}
+
+#main .messages.warning p {
+ color: #cb4b16;
+}
+
+#main .messages.error {
+ border-color: #dc322f;
+}
+
+#main .messages.error p {
+ color: #dc322f !important; /* Overwrites !important used on messages.css */
+}
+
+#main .messages.information,
+#main .messages.info {
+ border-color: #268bd2;
+}
+
+#main .messages.information p,
+#main .messages.info p {
+ color: #268bd2;
+}
+
+/* Miscellaneous */
+
+.bouton,
+.bouton:hover,
+#main #links li a.current,
+#links a:hover,
+.pagination span.current,
+.pagination a:hover,
+.pagination a:active {
+ color: #fdf6e3;
+ background-color: #93a1a1;
+}
+
+.bouton:hover {
+ background-color: #657b83;
+}
+
+#login,
+#password,
+#password_repeat,
+#bookmarklet,
+.top_link {
+ background-color: #eee8d5;
+}
+
+#login,
+#password,
+#password_repeat,
+#bookmarklet {
+ padding: 5px;
+ border: 1px solid #93a1a1;
+ color: #657b83;
+}
+
+#bookmarklet {
+ border-style: dashed;
+}
+
+.pagination a {
+ border-color: #93a1a1;
+ color: #93a1a1;
+}
+
+.pagination span.current {
+ border-color: #eee8d5;
+}
+
+/* Images */
+
+a.back span {
+ background-image: url('../img/solarized/left.png');
+}
+
+a.top span {
+ background-image: url('../img/solarized/top.png');
+}
+
+a.fav span,
+a.fav-off span:hover {
+ background-image: url('../img/solarized/star-on.png');
+}
+
+a.fav span:hover,
+a.fav-off span {
+ background-image: url('../img/solarized/star-off.png');
+}
+
+a.archive span,
+a.archive-off span:hover {
+ background-image: url('../img/solarized/checkmark-on.png');
+}
+
+a.archive span:hover,
+a.archive-off span {
+ background-image: url('../img/solarized/checkmark-off.png');
+}
+
+a.twitter span {
+ background-image: url('../img/solarized/twitter.png');
+}
+
+a.shaarli span {
+ background-image: url('../img/solarized/shaarli.png');
+}
+
+a.flattr span {
+ background-image: url('../img/solarized/flattr.png');
+}
+
+a.email span {
+ background-image: url('../img/solarized/envelop.png');
+}
+
+a.delete span {
+ background-image: url('../img/solarized/remove.png');
+}
+
+a.link span {
+ background-image: url('../img/solarized/link.png');
+}
+
+a.bad-display span {
+ background-image: url('../img/solarized/bad-display.png');
+}
+
+.arrow-down {
+ width: 0px;
+ height: 0px;
+ border-style: solid;
+ border-width: 10px 10px 0 10px;
+ border-color: #93A1A1 transparent transparent transparent;
+
+ position: absolute;
+ margin-top: 1.5em;
+ margin-left: -30px;
+}
\ No newline at end of file
diff --git a/app/Resources/views/solarized/public/img/solarized/backtotop.png b/app/Resources/views/solarized/public/img/solarized/backtotop.png
new file mode 100644
index 000000000..a3e523187
Binary files /dev/null and b/app/Resources/views/solarized/public/img/solarized/backtotop.png differ
diff --git a/app/Resources/views/solarized/public/img/solarized/bad-display.png b/app/Resources/views/solarized/public/img/solarized/bad-display.png
new file mode 100644
index 000000000..ae99ab378
Binary files /dev/null and b/app/Resources/views/solarized/public/img/solarized/bad-display.png differ
diff --git a/app/Resources/views/solarized/public/img/solarized/checkmark-off.png b/app/Resources/views/solarized/public/img/solarized/checkmark-off.png
new file mode 100644
index 000000000..20cd26b3e
Binary files /dev/null and b/app/Resources/views/solarized/public/img/solarized/checkmark-off.png differ
diff --git a/app/Resources/views/solarized/public/img/solarized/checkmark-on.png b/app/Resources/views/solarized/public/img/solarized/checkmark-on.png
new file mode 100644
index 000000000..87a2b799e
Binary files /dev/null and b/app/Resources/views/solarized/public/img/solarized/checkmark-on.png differ
diff --git a/app/Resources/views/solarized/public/img/solarized/down.png b/app/Resources/views/solarized/public/img/solarized/down.png
new file mode 100644
index 000000000..622ff87b5
Binary files /dev/null and b/app/Resources/views/solarized/public/img/solarized/down.png differ
diff --git a/app/Resources/views/solarized/public/img/solarized/envelop.png b/app/Resources/views/solarized/public/img/solarized/envelop.png
new file mode 100644
index 000000000..1caf7d435
Binary files /dev/null and b/app/Resources/views/solarized/public/img/solarized/envelop.png differ
diff --git a/app/Resources/views/solarized/public/img/solarized/flattr.png b/app/Resources/views/solarized/public/img/solarized/flattr.png
new file mode 100644
index 000000000..18e00f86c
Binary files /dev/null and b/app/Resources/views/solarized/public/img/solarized/flattr.png differ
diff --git a/app/Resources/views/solarized/public/img/solarized/left.png b/app/Resources/views/solarized/public/img/solarized/left.png
new file mode 100644
index 000000000..9780faeec
Binary files /dev/null and b/app/Resources/views/solarized/public/img/solarized/left.png differ
diff --git a/app/Resources/views/solarized/public/img/solarized/link.png b/app/Resources/views/solarized/public/img/solarized/link.png
new file mode 100644
index 000000000..d0e12862d
Binary files /dev/null and b/app/Resources/views/solarized/public/img/solarized/link.png differ
diff --git a/app/Resources/views/solarized/public/img/solarized/remove.png b/app/Resources/views/solarized/public/img/solarized/remove.png
new file mode 100644
index 000000000..d5113d176
Binary files /dev/null and b/app/Resources/views/solarized/public/img/solarized/remove.png differ
diff --git a/app/Resources/views/solarized/public/img/solarized/rss.png b/app/Resources/views/solarized/public/img/solarized/rss.png
new file mode 100644
index 000000000..21bad1a17
Binary files /dev/null and b/app/Resources/views/solarized/public/img/solarized/rss.png differ
diff --git a/app/Resources/views/solarized/public/img/solarized/shaarli.png b/app/Resources/views/solarized/public/img/solarized/shaarli.png
new file mode 100644
index 000000000..1eb30f60b
Binary files /dev/null and b/app/Resources/views/solarized/public/img/solarized/shaarli.png differ
diff --git a/app/Resources/views/solarized/public/img/solarized/star-off.png b/app/Resources/views/solarized/public/img/solarized/star-off.png
new file mode 100644
index 000000000..afd7d80c8
Binary files /dev/null and b/app/Resources/views/solarized/public/img/solarized/star-off.png differ
diff --git a/app/Resources/views/solarized/public/img/solarized/star-on.png b/app/Resources/views/solarized/public/img/solarized/star-on.png
new file mode 100644
index 000000000..3a7725123
Binary files /dev/null and b/app/Resources/views/solarized/public/img/solarized/star-on.png differ
diff --git a/app/Resources/views/solarized/public/img/solarized/top.png b/app/Resources/views/solarized/public/img/solarized/top.png
new file mode 100644
index 000000000..d20001a49
Binary files /dev/null and b/app/Resources/views/solarized/public/img/solarized/top.png differ
diff --git a/app/Resources/views/solarized/public/img/solarized/twitter.png b/app/Resources/views/solarized/public/img/solarized/twitter.png
new file mode 100644
index 000000000..109d71516
Binary files /dev/null and b/app/Resources/views/solarized/public/img/solarized/twitter.png differ
diff --git a/app/Resources/views/solarized/screenshot.jpg b/app/Resources/views/solarized/screenshot.jpg
new file mode 100644
index 000000000..07d402e38
Binary files /dev/null and b/app/Resources/views/solarized/screenshot.jpg differ
diff --git a/app/Resources/views/solarized/theme.ini b/app/Resources/views/solarized/theme.ini
new file mode 100644
index 000000000..703997b9e
--- /dev/null
+++ b/app/Resources/views/solarized/theme.ini
@@ -0,0 +1,2 @@
+name = Solarized
+requirements[] = default
diff --git a/app/autoload.php b/app/autoload.php
new file mode 100644
index 000000000..70526bb5e
--- /dev/null
+++ b/app/autoload.php
@@ -0,0 +1,13 @@
+
+ * @copyright 2013
+ * @license http://opensource.org/licenses/MIT see COPYING file
+ */
+
+@define ('SALT', 'ThisTokenIsNotSoSecretChangeIt'); # put a strong string here
+@define ('LANG', 'en_EN.utf8');
+
+@define ('STORAGE', 'sqlite'); # postgres, mysql or sqlite
+
+@define ('STORAGE_SQLITE', ROOT . '/data/db/poche.sqlite'); # if you are using sqlite, where me database file is located
+
+# only for postgres & mysql
+@define ('STORAGE_SERVER', 'localhost');
+@define ('STORAGE_DB', 'poche');
+@define ('STORAGE_USER', 'poche');
+@define ('STORAGE_PASSWORD', 'poche');
+
+#################################################################################
+# Do not trespass unless you know what you are doing
+#################################################################################
+// Change this if http is running on nonstandard port - i.e is behind cache proxy
+@define ('HTTP_PORT', 80);
+
+// Change this if not using the standart port for SSL - i.e you server is behind sslh
+@define ('SSL_PORT', 443);
+
+@define ('MODE_DEMO', FALSE);
+@define ('DEBUG_POCHE', FALSE);
+
+//default level of error reporting in application. Developers should override it in their config.inc.php: set to E_ALL.
+@define ('ERROR_REPORTING', E_ALL & ~E_NOTICE);
+
+@define ('DOWNLOAD_PICTURES', FALSE); # This can slow down the process of adding articles
+@define ('REGENERATE_PICTURES_QUALITY', 75);
+@define ('CONVERT_LINKS_FOOTNOTES', FALSE);
+@define ('REVERT_FORCED_PARAGRAPH_ELEMENTS', FALSE);
+@define ('SHARE_TWITTER', TRUE);
+@define ('SHARE_MAIL', TRUE);
+@define ('SHARE_SHAARLI', FALSE);
+@define ('SHAARLI_URL', 'http://myshaarliurl.com');
+@define ('SHARE_DIASPORA', FALSE);
+@define ('DIASPORA_URL', 'http://diasporapod.com'); # Don't add a / at the end
+@define ('FLATTR', TRUE);
+@define ('FLATTR_API', 'https://api.flattr.com/rest/v2/things/lookup/?url=');
+@define ('NOT_FLATTRABLE', '0');
+@define ('FLATTRABLE', '1');
+@define ('FLATTRED', '2');
+@define ('CARROT', FALSE);
+
+// ebook
+@define ('EPUB', TRUE);
+@define ('MOBI', FALSE);
+@define ('PDF', FALSE);
+
+// display or not print link in article view
+@define ('SHOW_PRINTLINK', '1');
+// display or not percent of read in article view. Affects only default theme.
+@define ('SHOW_READPERCENT', '1');
+@define ('ABS_PATH', ROOT . '/data/assets/');
+
+@define ('DEFAULT_THEME', 'baggy');
+
+@define ('THEME', ROOT . '/src/Wallabag/Wallabag/Resources/views');
+@define ('LOCALE', ROOT . '/src/Wallabag/Wallabag/Resources/translations');
+@define ('CACHE', ROOT . '/app/cache');
+
+@define ('PAGINATION', '12');
+
+//limit for download of articles during import
+@define ('IMPORT_LIMIT', 5);
+//delay between downloads (in sec)
+@define ('IMPORT_DELAY', 5);
diff --git a/app/config/config.yml b/app/config/config.yml
new file mode 100644
index 000000000..25f664719
--- /dev/null
+++ b/app/config/config.yml
@@ -0,0 +1,73 @@
+imports:
+ - { resource: parameters.yml }
+ - { resource: security.yml }
+ - { resource: services.yml }
+
+framework:
+ #esi: ~
+ #translator: { fallback: "%locale%" }
+ secret: "%secret%"
+ router:
+ resource: "%kernel.root_dir%/config/routing.yml"
+ strict_requirements: ~
+ form: ~
+ csrf_protection: ~
+ validation: { enable_annotations: true }
+ templating:
+ engines: ['twig']
+ #assets_version: SomeVersionScheme
+ default_locale: "%locale%"
+ trusted_hosts: ~
+ trusted_proxies: ~
+ session:
+ # handler_id set to null will use default session handler from php.ini
+ handler_id: ~
+ fragments: ~
+ http_method_override: true
+
+# Twig Configuration
+twig:
+ debug: "%kernel.debug%"
+ strict_variables: "%kernel.debug%"
+
+# Assetic Configuration
+assetic:
+ debug: "%kernel.debug%"
+ use_controller: false
+ bundles: [ ]
+ #java: /usr/bin/java
+ filters:
+ cssrewrite: ~
+ #closure:
+ # jar: "%kernel.root_dir%/Resources/java/compiler.jar"
+ #yui_css:
+ # jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar"
+
+# Doctrine Configuration
+doctrine:
+ dbal:
+ driver: "%database_driver%"
+ host: "%database_host%"
+ port: "%database_port%"
+ dbname: "%database_name%"
+ user: "%database_user%"
+ password: "%database_password%"
+ charset: UTF8
+ # if using pdo_sqlite as your database driver:
+ # 1. add the path in parameters.yml
+ # e.g. database_path: "%kernel.root_dir%/data/data.db3"
+ # 2. Uncomment database_path in parameters.yml.dist
+ # 3. Uncomment next line:
+ # path: "%database_path%"
+
+ orm:
+ auto_generate_proxy_classes: "%kernel.debug%"
+ auto_mapping: true
+
+# Swiftmailer Configuration
+swiftmailer:
+ transport: "%mailer_transport%"
+ host: "%mailer_host%"
+ username: "%mailer_user%"
+ password: "%mailer_password%"
+ spool: { type: memory }
diff --git a/app/config/config_dev.yml b/app/config/config_dev.yml
new file mode 100644
index 000000000..efaf396e9
--- /dev/null
+++ b/app/config/config_dev.yml
@@ -0,0 +1,48 @@
+imports:
+ - { resource: config.yml }
+
+framework:
+ router:
+ resource: "%kernel.root_dir%/config/routing_dev.yml"
+ strict_requirements: true
+ profiler: { only_exceptions: false }
+
+web_profiler:
+ toolbar: true
+ intercept_redirects: false
+
+monolog:
+ handlers:
+ main:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.log"
+ level: debug
+ console:
+ type: console
+ bubble: false
+ verbosity_levels:
+ VERBOSITY_VERBOSE: INFO
+ VERBOSITY_VERY_VERBOSE: DEBUG
+ channels: ["!doctrine"]
+ console_very_verbose:
+ type: console
+ bubble: false
+ verbosity_levels:
+ VERBOSITY_VERBOSE: NOTICE
+ VERBOSITY_VERY_VERBOSE: NOTICE
+ VERBOSITY_DEBUG: DEBUG
+ channels: ["doctrine"]
+ # uncomment to get logging in your browser
+ # you may have to allow bigger header sizes in your Web server configuration
+ #firephp:
+ # type: firephp
+ # level: info
+ #chromephp:
+ # type: chromephp
+ # level: info
+
+assetic:
+ use_controller: true
+
+#swiftmailer:
+# delivery_address: me@example.com
diff --git a/app/config/config_prod.yml b/app/config/config_prod.yml
new file mode 100644
index 000000000..342837a03
--- /dev/null
+++ b/app/config/config_prod.yml
@@ -0,0 +1,25 @@
+imports:
+ - { resource: config.yml }
+
+#framework:
+# validation:
+# cache: apc
+
+#doctrine:
+# orm:
+# metadata_cache_driver: apc
+# result_cache_driver: apc
+# query_cache_driver: apc
+
+monolog:
+ handlers:
+ main:
+ type: fingers_crossed
+ action_level: error
+ handler: nested
+ nested:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.log"
+ level: debug
+ console:
+ type: console
diff --git a/app/config/config_test.yml b/app/config/config_test.yml
new file mode 100644
index 000000000..2f6d92503
--- /dev/null
+++ b/app/config/config_test.yml
@@ -0,0 +1,16 @@
+imports:
+ - { resource: config_dev.yml }
+
+framework:
+ test: ~
+ session:
+ storage_id: session.storage.mock_file
+ profiler:
+ collect: false
+
+web_profiler:
+ toolbar: false
+ intercept_redirects: false
+
+swiftmailer:
+ disable_delivery: true
diff --git a/app/config/global.inc.php b/app/config/global.inc.php
index 59db5aa12..8e62818ba 100755
--- a/app/config/global.inc.php
+++ b/app/config/global.inc.php
@@ -22,4 +22,4 @@ if (!ini_get('date.timezone') || !@date_default_timezone_set(ini_get('date.timez
if (defined('ERROR_REPORTING')) {
error_reporting(ERROR_REPORTING);
-}
\ No newline at end of file
+}
diff --git a/app/config/parameters.yml.dist b/app/config/parameters.yml.dist
new file mode 100644
index 000000000..1da778f41
--- /dev/null
+++ b/app/config/parameters.yml.dist
@@ -0,0 +1,20 @@
+# This file is a "template" of what your parameters.yml file should look like
+parameters:
+ database_driver: pdo_mysql
+ database_host: 127.0.0.1
+ database_port: ~
+ database_name: symfony
+ database_user: root
+ database_password: ~
+ # You should uncomment this if you want use pdo_sqlite
+ # database_path: "%kernel.root_dir%/data.db3"
+
+ mailer_transport: smtp
+ mailer_host: 127.0.0.1
+ mailer_user: ~
+ mailer_password: ~
+
+ locale: en
+
+ # A secret key that's used to generate certain security-related tokens
+ secret: ThisTokenIsNotSoSecretChangeIt
diff --git a/app/config/routing.yml b/app/config/routing.yml
new file mode 100644
index 000000000..a748d532f
--- /dev/null
+++ b/app/config/routing.yml
@@ -0,0 +1,3 @@
+app:
+ resource: @WallabagBundle/Controller/
+ type: annotation
diff --git a/app/config/routing_dev.yml b/app/config/routing_dev.yml
new file mode 100644
index 000000000..991300586
--- /dev/null
+++ b/app/config/routing_dev.yml
@@ -0,0 +1,22 @@
+_wdt:
+ resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml"
+ prefix: /_wdt
+
+_profiler:
+ resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml"
+ prefix: /_profiler
+
+_configurator:
+ resource: "@SensioDistributionBundle/Resources/config/routing/webconfigurator.xml"
+ prefix: /_configurator
+
+_errors:
+ resource: "@TwigBundle/Resources/config/routing/errors.xml"
+ prefix: /_error
+
+_main:
+ resource: routing.yml
+
+# AcmeDemoBundle routes (to be removed)
+_acme_demo:
+ resource: "@AcmeDemoBundle/Resources/config/routing.yml"
\ No newline at end of file
diff --git a/app/config/security.yml b/app/config/security.yml
new file mode 100644
index 000000000..a28b1db99
--- /dev/null
+++ b/app/config/security.yml
@@ -0,0 +1,52 @@
+# you can read more about security in the related section of the documentation
+# http://symfony.com/doc/current/book/security.html
+security:
+ # http://symfony.com/doc/current/book/security.html#encoding-the-user-s-password
+ encoders:
+ Symfony\Component\Security\Core\User\User: plaintext
+
+ # http://symfony.com/doc/current/book/security.html#hierarchical-roles
+ role_hierarchy:
+ ROLE_ADMIN: ROLE_USER
+ ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
+
+ # http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
+ providers:
+ in_memory:
+ memory:
+ users:
+ user: { password: userpass, roles: [ 'ROLE_USER' ] }
+ admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
+
+ # the main part of the security, where you can set up firewalls
+ # for specific sections of your app
+ firewalls:
+ # disables authentication for assets and the profiler, adapt it according to your needs
+ dev:
+ pattern: ^/(_(profiler|wdt)|css|images|js)/
+ security: false
+ # the login page has to be accessible for everybody
+ demo_login:
+ pattern: ^/demo/secured/login$
+ security: false
+
+ # secures part of the application
+ demo_secured_area:
+ pattern: ^/demo/secured/
+ # it's important to notice that in this case _demo_security_check and _demo_login
+ # are route names and that they are specified in the AcmeDemoBundle
+ form_login:
+ check_path: _demo_security_check
+ login_path: _demo_login
+ logout:
+ path: _demo_logout
+ target: _demo
+ #anonymous: ~
+ #http_basic:
+ # realm: "Secured Demo Area"
+
+ # with these settings you can restrict or allow access for different parts
+ # of your application based on roles, ip, host or methods
+ # http://symfony.com/doc/current/cookbook/security/access_control.html
+ access_control:
+ #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
\ No newline at end of file
diff --git a/app/config/services.yml b/app/config/services.yml
new file mode 100644
index 000000000..5c76fc598
--- /dev/null
+++ b/app/config/services.yml
@@ -0,0 +1,9 @@
+# Learn more about services, parameters and containers at
+# http://symfony.com/doc/current/book/service_container.html
+parameters:
+# parameter_name: value
+
+services:
+# service_name:
+# class: AppBundle\Directory\ClassName
+# arguments: ["@another_service_name", "plain_value", "%parameter_name%"]
diff --git a/app/console b/app/console
new file mode 100755
index 000000000..fa6a36e24
--- /dev/null
+++ b/app/console
@@ -0,0 +1,27 @@
+#!/usr/bin/env php
+getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev');
+$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod';
+
+if ($debug) {
+ Debug::enable();
+}
+
+$kernel = new AppKernel($env, $debug);
+$application = new Application($kernel);
+$application->run($input);
diff --git a/app/db/.gitignore b/app/db/.gitignore
deleted file mode 100644
index e69de29bb..000000000
diff --git a/app/cache/.gitignore b/app/logs/.gitkeep
similarity index 100%
rename from app/cache/.gitignore
rename to app/logs/.gitkeep
diff --git a/app/phpunit.xml.dist b/app/phpunit.xml.dist
new file mode 100644
index 000000000..2b41503b7
--- /dev/null
+++ b/app/phpunit.xml.dist
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ ../src/*/*Bundle/Tests
+ ../src/*/Bundle/*Bundle/Tests
+ ../src/*Bundle/Tests
+
+
+
+
+
+
+
+ ../src
+
+ ../src/*Bundle/Resources
+ ../src/*Bundle/Tests
+ ../src/*/*Bundle/Resources
+ ../src/*/*Bundle/Tests
+ ../src/*/Bundle/*Bundle/Resources
+ ../src/*/Bundle/*Bundle/Tests
+
+
+
+
diff --git a/bin/compatibility.php b/bin/compatibility.php
deleted file mode 100644
index 61a8e99f0..000000000
--- a/bin/compatibility.php
+++ /dev/null
@@ -1,427 +0,0 @@
-
- * @copyright 2013
- * @license http://opensource.org/licenses/MIT see COPYING file
- */
-
-$app_name = 'wallabag';
-
-$php_ok = (function_exists('version_compare') && version_compare(phpversion(), '5.3.3', '>='));
-$pcre_ok = extension_loaded('pcre');
-$zlib_ok = extension_loaded('zlib');
-$mbstring_ok = extension_loaded('mbstring');
-$dom_ok = extension_loaded('DOM');
-$iconv_ok = extension_loaded('iconv');
-$tidy_ok = function_exists('tidy_parse_string');
-$curl_ok = function_exists('curl_exec');
-$parse_ini_ok = function_exists('parse_ini_file');
-$parallel_ok = ((extension_loaded('http') && class_exists('HttpRequestPool')) || ($curl_ok && function_exists('curl_multi_init')));
-$allow_url_fopen_ok = (bool)ini_get('allow_url_fopen');
-$filter_ok = extension_loaded('filter');
-$gettext_ok = function_exists("gettext");
-$gd_ok = extension_loaded('gd');
-
-
-if (extension_loaded('xmlreader')) {
- $xml_ok = true;
-} elseif (extension_loaded('xml')) {
- $parser_check = xml_parser_create();
- xml_parse_into_struct($parser_check, '& ', $values);
- xml_parser_free($parser_check);
- $xml_ok = isset($values[0]['value']);
-} else {
- $xml_ok = false;
-}
-
-header('Content-type: text/html; charset=UTF-8');
-
-?>
-
-
-
-: Server Compatibility Test
-
-
-
-
-
-
-
-
-
-
-
-
: Compatibility Test
-
-
-
- Test
- Should Be
- What You Have
-
-
-
-
- PHP
- 5.3.3 or higher
-
-
-
- XML
- Enabled
- Enabled, and sane' : 'Disabled, or broken'; ?>
-
-
- PCRE
- Enabled
- Enabled' : 'Disabled'; ?>
-
-
-
-
-
- DOM / XML extension
- Enabled
- Enabled' : 'Disabled'; ?>
-
-
- Data filtering
- Enabled
- Enabled' : 'Disabled'; ?>
-
-
- GD
- Enabled
- Enabled' : 'Disabled'; ?>
-
-
- Tidy
- Enabled
- Enabled' : 'Disabled'; ?>
-
-
- cURL
- Enabled
- Enabled' : 'Disabled'; ?>
-
-
- Parse ini file
- Enabled
- Enabled' : 'Disabled'; ?>
-
-
- Parallel URL fetching
- Enabled
- Enabled' : 'Disabled'; ?>
-
-
- allow_url_fopen
- Enabled
- Enabled' : 'Disabled'; ?>
-
-
- gettext
- Enabled
- Enabled' : 'Disabled'; ?>
-
-
-
-
-
-
-
What does this mean?
-
-
-
- You have everything you need to run properly! Congratulations!
-
-
- PHP: You are running a supported version of PHP. No problems here.
-
- XML: You have XMLReader support or a version of XML support that isn't broken installed. No problems here.
-
- PCRE: You have PCRE support installed. No problems here.
-
-
- allow_url_fopen: You have allow_url_fopen enabled. No problems here.
-
-
- Gettext: You have gettext
enabled. No problems here.
-
-
- Parse ini: You can parse ini files. No problems here.
-
-
- DOM/XML: You can parse ini files. No problems here.
-
-
- Data filtering: You can use the PHP build-in DOM to operate on XML documents. No problems here.
-
-
- Zlib: You have Zlib
enabled. This allows SimplePie to support GZIP-encoded feeds. No problems here.
-
- Zlib: The Zlib
extension is not available. SimplePie will ignore any GZIP-encoding, and instead handle feeds as uncompressed text.
-
-
-
- mbstring and iconv: You have both mbstring
and iconv
installed! This will allow to handle the greatest number of languages. No problems here.
-
- mbstring: mbstring
is installed, but iconv
is not.
-
- iconv: iconv
is installed, but mbstring
is not.
-
- mbstring and iconv: You do not have either of the extensions installed. This will significantly impair your ability to read non-English feeds, as well as even some English ones.
-
-
-
- GD: You have GD
support installed. No problems here.
-
- GD: The GD
extension is not available. will not be able to download pictures locally on your server.
-
-
-
- Tidy: You have Tidy
support installed. No problems here.
-
- Tidy: The Tidy
extension is not available. should still work with most feeds, but you may experience problems with some. You can install it with sudo apt-get install php5-tidy
and then reload Apache sudo service apache2 reload
.
-
-
-
- cURL: You have cURL
support installed. No problems here.
-
- cURL: The cURL
extension is not available. SimplePie will use fsockopen()
instead.
-
-
-
- Parallel URL fetching: You have HttpRequestPool
or curl_multi
support installed. No problems here.
-
- Parallel URL fetching: HttpRequestPool
or curl_multi
support is not available. will use file_get_contents()
instead to fetch URLs sequentially rather than in parallel.
-
-
-
- Data filtering: Your PHP configuration has the filter extension disabled. will not work here.
-
-
-
- DOM/XML: Your PHP configuration isn't standard, you're missing PHP-DOM. You may try to install a package or recompile PHP. will not work here.
-
-
-
- Parse ini files function : Bad luck : your webhost has decided to block the use of the parse_ini_file function. will not work here.
-
-
-
- GetText: The gettext
extension is not available. The system we use to display wallabag in various languages is not available. will not work here.
-
-
-
- allow_url_fopen: Your PHP configuration has allow_url_fopen disabled. will not work here.
-
-
-
- PCRE: Your PHP installation doesn't support Perl-Compatible Regular Expressions. will not work here.
-
-
- XML: Your PHP installation doesn't support XML parsing. will not work here.
-
-
- PHP: You are running an unsupported version of PHP. will not work here.
-
-
-
-
-
-
-
-
-
Bottom Line: Yes, you can!
-
Your webhost has its act together!
-
-
You can download the latest version of from wallabag.org .
-
If you already have done that, you should access the index.php file of your installation to configure and/or start using wallabag
-
-
You can now return to the installation section .
-
-
Note : Passing this test does not guarantee that will run on your webhost — it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.
-
-
-
Bottom Line: Yes, you can!
-
For most feeds, it'll run with no problems. There are certain languages that you might have a hard time with though.
-
-
You can download the latest version of from wallabag.org .
-
If you already have done that, you should access the index.php file of your installation to configure and/or start using wallabag
-
-
You can now return to the installation section .
-
-
Note : Passing this test does not guarantee that will run on your webhost — it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.
-
-
Bottom Line: We're sorry…
-
Your webhost does not support the minimum requirements for . It may be a good idea to contact your webhost and point them to the results of this test. They may be able to enable/install the required components.
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/bin/install b/bin/install
index be4371b12..5b93e46e3 100755
--- a/bin/install
+++ b/bin/install
@@ -1,14 +1,14 @@
#!/usr/bin/php
=5.3.3",
+ "symfony/symfony": "2.6.*",
+ "doctrine/orm": "~2.2,>=2.2.3",
+ "doctrine/doctrine-bundle": "~1.2",
+ "twig/extensions": "~1.0",
+ "symfony/assetic-bundle": "~2.3",
+ "symfony/swiftmailer-bundle": "~2.3",
+ "symfony/monolog-bundle": "~2.4",
+ "sensio/distribution-bundle": "~3.0.12",
+ "sensio/framework-extra-bundle": "~3.0",
+ "incenteev/composer-parameter-handler": "~2.0",
"umpirsky/twig-gettext-extractor": "1.1.*",
- "fabpot/goutte": "2.0.*@dev",
"ezyang/htmlpurifier": "dev-master",
"mgargano/simplehtmldom": "dev-master",
"robmorgan/phinx": "*",
@@ -72,15 +80,44 @@
"wallabag/Fivefilters_Libraries": "dev-master"
},
"require-dev": {
+ "sensio/generator-bundle": "~2.3",
"phpunit/phpunit": "~3.7"
},
"scripts": {
+ "post-root-package-install": [
+ "SymfonyStandard\\Composer::hookRootPackageInstall"
+ ],
"post-install-cmd": [
+ "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles",
"bin/install"
+ ],
+ "post-update-cmd": [
+ "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::removeSymfonyStandardFiles"
]
},
+ "extra": {
+ "symfony-app-dir": "app",
+ "symfony-web-dir": "web",
+ "symfony-assets-install": "relative",
+ "incenteev-parameters": {
+ "file": "app/config/parameters.yml"
+ },
+ "branch-alias": {
+ "dev-master": "2.6-dev"
+ }
+ },
"autoload": {
- "psr-4": { "Wallabag\\": "src/Wallabag" }
+ "psr-0": { "": "src/", "SymfonyStandard": "app/" }
},
"config": {
"bin-dir": "bin"
diff --git a/composer.lock b/composer.lock
index f2c174810..51e438266 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,720 @@
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "6fa216371c9d7577a117526db6f07407",
+ "hash": "0d10cf7cb89589054d7b855026a7bdf5",
"packages": [
+ {
+ "name": "doctrine/annotations",
+ "version": "v1.2.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/annotations.git",
+ "reference": "eeda578cbe24a170331a1cfdf78be723412df7a4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/eeda578cbe24a170331a1cfdf78be723412df7a4",
+ "reference": "eeda578cbe24a170331a1cfdf78be723412df7a4",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/lexer": "1.*",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "doctrine/cache": "1.*",
+ "phpunit/phpunit": "4.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Annotations\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Docblock Annotations Parser",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "parser"
+ ],
+ "time": "2014-12-20 20:49:38"
+ },
+ {
+ "name": "doctrine/cache",
+ "version": "v1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/cache.git",
+ "reference": "2346085d2b027b233ae1d5de59b07440b9f288c8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/2346085d2b027b233ae1d5de59b07440b9f288c8",
+ "reference": "2346085d2b027b233ae1d5de59b07440b9f288c8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "conflict": {
+ "doctrine/common": ">2.2,<2.4"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=3.7",
+ "predis/predis": "~0.8",
+ "satooshi/php-coveralls": "~0.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Cache\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Caching library offering an object-oriented API for many cache backends",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "cache",
+ "caching"
+ ],
+ "time": "2015-01-15 20:38:55"
+ },
+ {
+ "name": "doctrine/collections",
+ "version": "v1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/collections.git",
+ "reference": "b99c5c46c87126201899afe88ec490a25eedd6a2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/collections/zipball/b99c5c46c87126201899afe88ec490a25eedd6a2",
+ "reference": "b99c5c46c87126201899afe88ec490a25eedd6a2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Collections\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com",
+ "homepage": "http://www.jwage.com/",
+ "role": "Creator"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com",
+ "homepage": "http://www.instaclick.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com",
+ "homepage": "https://github.com/schmittjoh",
+ "role": "Developer of wrapped JMSSerializerBundle"
+ }
+ ],
+ "description": "Collections Abstraction library",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "array",
+ "collections",
+ "iterator"
+ ],
+ "time": "2014-02-03 23:07:43"
+ },
+ {
+ "name": "doctrine/common",
+ "version": "v2.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/common.git",
+ "reference": "5db6ab40e4c531f14dad4ca96a394dfce5d4255b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/common/zipball/5db6ab40e4c531f14dad4ca96a394dfce5d4255b",
+ "reference": "5db6ab40e4c531f14dad4ca96a394dfce5d4255b",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "1.*",
+ "doctrine/cache": "1.*",
+ "doctrine/collections": "1.*",
+ "doctrine/inflector": "1.*",
+ "doctrine/lexer": "1.*",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~3.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com",
+ "homepage": "http://www.jwage.com/",
+ "role": "Creator"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com",
+ "homepage": "http://www.instaclick.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com",
+ "homepage": "https://github.com/schmittjoh",
+ "role": "Developer of wrapped JMSSerializerBundle"
+ }
+ ],
+ "description": "Common Library for Doctrine projects",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "annotations",
+ "collections",
+ "eventmanager",
+ "persistence",
+ "spl"
+ ],
+ "time": "2014-05-21 19:28:51"
+ },
+ {
+ "name": "doctrine/dbal",
+ "version": "v2.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/dbal.git",
+ "reference": "628c2256b646ae2417d44e063bce8aec5199d48d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/628c2256b646ae2417d44e063bce8aec5199d48d",
+ "reference": "628c2256b646ae2417d44e063bce8aec5199d48d",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": ">=2.4,<2.6-dev",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*",
+ "symfony/console": "2.*"
+ },
+ "suggest": {
+ "symfony/console": "For helpful console commands such as SQL execution and import of files."
+ },
+ "bin": [
+ "bin/doctrine-dbal"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\DBAL\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ }
+ ],
+ "description": "Database Abstraction Layer",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "dbal",
+ "persistence",
+ "queryobject"
+ ],
+ "time": "2015-01-12 21:52:47"
+ },
+ {
+ "name": "doctrine/doctrine-bundle",
+ "version": "v1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/DoctrineBundle.git",
+ "reference": "3beb3a780485ab01f86941f4892cd23ef8c39c6b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/3beb3a780485ab01f86941f4892cd23ef8c39c6b",
+ "reference": "3beb3a780485ab01f86941f4892cd23ef8c39c6b",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/dbal": "~2.3",
+ "doctrine/doctrine-cache-bundle": "~1.0",
+ "jdorn/sql-formatter": "~1.1",
+ "php": ">=5.3.2",
+ "symfony/doctrine-bridge": "~2.2",
+ "symfony/framework-bundle": "~2.2"
+ },
+ "require-dev": {
+ "doctrine/orm": "~2.3",
+ "phpunit/php-code-coverage": "~1.2",
+ "phpunit/phpunit": "~3.7",
+ "phpunit/phpunit-mock-objects": "~1.2",
+ "satooshi/php-coveralls": "~0.6.1",
+ "symfony/validator": "~2.2",
+ "symfony/yaml": "~2.2",
+ "twig/twig": "~1"
+ },
+ "suggest": {
+ "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
+ "symfony/web-profiler-bundle": "to use the data collector"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Bundle\\DoctrineBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Doctrine Project",
+ "homepage": "http://www.doctrine-project.org/"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony DoctrineBundle",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "dbal",
+ "orm",
+ "persistence"
+ ],
+ "time": "2014-11-28 08:32:03"
+ },
+ {
+ "name": "doctrine/doctrine-cache-bundle",
+ "version": "v1.0.1",
+ "target-dir": "Doctrine/Bundle/DoctrineCacheBundle",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/DoctrineCacheBundle.git",
+ "reference": "e4b6f810aa047f9cbfe41c3d6a3d7e83d7477a9d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/e4b6f810aa047f9cbfe41c3d6a3d7e83d7477a9d",
+ "reference": "e4b6f810aa047f9cbfe41c3d6a3d7e83d7477a9d",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/cache": "~1.3",
+ "doctrine/inflector": "~1.0",
+ "php": ">=5.3.2",
+ "symfony/doctrine-bridge": "~2.2",
+ "symfony/framework-bundle": "~2.2",
+ "symfony/security": "~2.2"
+ },
+ "require-dev": {
+ "instaclick/coding-standard": "~1.1",
+ "instaclick/object-calisthenics-sniffs": "dev-master",
+ "instaclick/symfony2-coding-standard": "dev-remaster",
+ "phpunit/phpunit": "~3.7",
+ "satooshi/php-coveralls": "~0.6.1",
+ "squizlabs/php_codesniffer": "dev-master",
+ "symfony/console": "~2.2",
+ "symfony/finder": "~2.2",
+ "symfony/validator": "~2.2",
+ "symfony/yaml": "~2.2"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Bundle\\DoctrineCacheBundle": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Fabio B. Silva",
+ "email": "fabio.bat.silva@gmail.com"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@hotmail.com"
+ },
+ {
+ "name": "Doctrine Project",
+ "homepage": "http://www.doctrine-project.org/"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony2 Bundle for Doctrine Cache",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "cache",
+ "caching"
+ ],
+ "time": "2014-11-28 09:43:36"
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "v1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/0bcb2e79d8571787f18b7eb036ed3d004908e604",
+ "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Inflector\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Common String Manipulations with regard to casing and singular/plural rules.",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "inflection",
+ "pluralize",
+ "singularize",
+ "string"
+ ],
+ "time": "2014-12-20 21:24:13"
+ },
+ {
+ "name": "doctrine/lexer",
+ "version": "v1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
+ "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Lexer\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "lexer",
+ "parser"
+ ],
+ "time": "2014-09-09 13:34:57"
+ },
+ {
+ "name": "doctrine/orm",
+ "version": "v2.4.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/doctrine2.git",
+ "reference": "2bc4ff3cab2ae297bcd05f2e619d42e6a7ca9e68"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/2bc4ff3cab2ae297bcd05f2e619d42e6a7ca9e68",
+ "reference": "2bc4ff3cab2ae297bcd05f2e619d42e6a7ca9e68",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/collections": "~1.1",
+ "doctrine/dbal": "~2.4",
+ "ext-pdo": "*",
+ "php": ">=5.3.2",
+ "symfony/console": "~2.0"
+ },
+ "require-dev": {
+ "satooshi/php-coveralls": "dev-master",
+ "symfony/yaml": "~2.1"
+ },
+ "suggest": {
+ "symfony/yaml": "If you want to use YAML Metadata Mapping Driver"
+ },
+ "bin": [
+ "bin/doctrine",
+ "bin/doctrine.php"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\ORM\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ }
+ ],
+ "description": "Object-Relational-Mapper for PHP",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "orm"
+ ],
+ "time": "2014-12-16 13:45:01"
+ },
{
"name": "ezyang/htmlpurifier",
"version": "dev-master",
@@ -50,213 +762,6 @@
],
"time": "2014-12-09 02:30:54"
},
- {
- "name": "fabpot/goutte",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/FriendsOfPHP/Goutte.git",
- "reference": "65ab61eae03d670b93a9044ad2328eb81aa1bde5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/65ab61eae03d670b93a9044ad2328eb81aa1bde5",
- "reference": "65ab61eae03d670b93a9044ad2328eb81aa1bde5",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/guzzle": ">=4,<6",
- "php": ">=5.4.0",
- "symfony/browser-kit": "~2.1",
- "symfony/css-selector": "~2.1",
- "symfony/dom-crawler": "~2.1"
- },
- "type": "application",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Goutte\\": "Goutte"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "A simple PHP Web Scraper",
- "homepage": "https://github.com/FriendsOfPHP/Goutte",
- "keywords": [
- "scraper"
- ],
- "time": "2014-11-28 09:48:17"
- },
- {
- "name": "guzzlehttp/guzzle",
- "version": "5.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/guzzle.git",
- "reference": "f1085bb4e023766a66b7b051914ec73bdf7202b5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f1085bb4e023766a66b7b051914ec73bdf7202b5",
- "reference": "f1085bb4e023766a66b7b051914ec73bdf7202b5",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/ringphp": "~1.0",
- "php": ">=5.4.0"
- },
- "require-dev": {
- "ext-curl": "*",
- "phpunit/phpunit": "~4.0",
- "psr/log": "~1.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
- "homepage": "http://guzzlephp.org/",
- "keywords": [
- "client",
- "curl",
- "framework",
- "http",
- "http client",
- "rest",
- "web service"
- ],
- "time": "2014-12-19 20:27:15"
- },
- {
- "name": "guzzlehttp/ringphp",
- "version": "1.0.5",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/RingPHP.git",
- "reference": "a903f51b692427318bc813217c0e6505287e79a4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/a903f51b692427318bc813217c0e6505287e79a4",
- "reference": "a903f51b692427318bc813217c0e6505287e79a4",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/streams": "~3.0",
- "php": ">=5.4.0",
- "react/promise": "~2.0"
- },
- "require-dev": {
- "ext-curl": "*",
- "phpunit/phpunit": "~4.0"
- },
- "suggest": {
- "ext-curl": "Guzzle will use specific adapters if cURL is present"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Ring\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "time": "2014-12-11 05:50:32"
- },
- {
- "name": "guzzlehttp/streams",
- "version": "3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/streams.git",
- "reference": "47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/streams/zipball/47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5",
- "reference": "47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Stream\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- }
- ],
- "description": "Provides a simple abstraction over streams of data",
- "homepage": "http://guzzlephp.org/",
- "keywords": [
- "Guzzle",
- "stream"
- ],
- "time": "2014-10-12 19:18:40"
- },
{
"name": "htmlawed/htmlawed",
"version": "dev-master",
@@ -296,6 +801,182 @@
],
"time": "2014-01-05 13:06:52"
},
+ {
+ "name": "incenteev/composer-parameter-handler",
+ "version": "v2.1.0",
+ "target-dir": "Incenteev/ParameterHandler",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Incenteev/ParameterHandler.git",
+ "reference": "143272a0a09c62616a3c8011fc165a10c6b35241"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/143272a0a09c62616a3c8011fc165a10c6b35241",
+ "reference": "143272a0a09c62616a3c8011fc165a10c6b35241",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/yaml": "~2.0"
+ },
+ "require-dev": {
+ "composer/composer": "1.0.*@dev",
+ "phpspec/prophecy-phpunit": "~1.0",
+ "symfony/filesystem": "~2.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Incenteev\\ParameterHandler": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christophe Coevoet",
+ "email": "stof@notk.org"
+ }
+ ],
+ "description": "Composer script handling your ignored parameter file",
+ "homepage": "https://github.com/Incenteev/ParameterHandler",
+ "keywords": [
+ "parameters management"
+ ],
+ "time": "2013-12-07 10:10:39"
+ },
+ {
+ "name": "jdorn/sql-formatter",
+ "version": "v1.2.17",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/jdorn/sql-formatter.git",
+ "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc",
+ "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.4"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "3.7.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "lib"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jeremy Dorn",
+ "email": "jeremy@jeremydorn.com",
+ "homepage": "http://jeremydorn.com/"
+ }
+ ],
+ "description": "a PHP SQL highlighting library",
+ "homepage": "https://github.com/jdorn/sql-formatter/",
+ "keywords": [
+ "highlight",
+ "sql"
+ ],
+ "time": "2014-01-12 16:20:24"
+ },
+ {
+ "name": "kriswallsmith/assetic",
+ "version": "v1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/kriswallsmith/assetic.git",
+ "reference": "b20efe38845d20458702f97f3ff625d80805897b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/b20efe38845d20458702f97f3ff625d80805897b",
+ "reference": "b20efe38845d20458702f97f3ff625d80805897b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.1",
+ "symfony/process": "~2.1"
+ },
+ "require-dev": {
+ "cssmin/cssmin": "*",
+ "joliclic/javascript-packer": "*",
+ "kamicane/packager": "*",
+ "leafo/lessphp": "*",
+ "leafo/scssphp": "*",
+ "leafo/scssphp-compass": "*",
+ "mrclay/minify": "*",
+ "patchwork/jsqueeze": "~1.0",
+ "phpunit/phpunit": "~4",
+ "psr/log": "~1.0",
+ "ptachoire/cssembed": "*",
+ "twig/twig": "~1.6"
+ },
+ "suggest": {
+ "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler",
+ "leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler",
+ "leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin",
+ "patchwork/jsqueeze": "Assetic provides the integration with the JSqueeze JavaScript compressor",
+ "ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris",
+ "twig/twig": "Assetic provides the integration with the Twig templating engine"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Assetic": "src/"
+ },
+ "files": [
+ "src/functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Kris Wallsmith",
+ "email": "kris.wallsmith@gmail.com",
+ "homepage": "http://kriswallsmith.net/"
+ }
+ ],
+ "description": "Asset Management for PHP",
+ "homepage": "https://github.com/kriswallsmith/assetic",
+ "keywords": [
+ "assets",
+ "compression",
+ "minification"
+ ],
+ "time": "2014-12-12 05:04:05"
+ },
{
"name": "mgargano/simplehtmldom",
"version": "dev-master",
@@ -344,35 +1025,56 @@
"time": "2014-01-05 18:17:34"
},
{
- "name": "react/promise",
- "version": "v2.2.0",
+ "name": "monolog/monolog",
+ "version": "1.12.0",
"source": {
"type": "git",
- "url": "https://github.com/reactphp/promise.git",
- "reference": "365fcee430dfa4ace1fbc75737ca60ceea7eeeef"
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "1fbe8c2641f2b163addf49cc5e18f144bec6b19f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/reactphp/promise/zipball/365fcee430dfa4ace1fbc75737ca60ceea7eeeef",
- "reference": "365fcee430dfa4ace1fbc75737ca60ceea7eeeef",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1fbe8c2641f2b163addf49cc5e18f144bec6b19f",
+ "reference": "1fbe8c2641f2b163addf49cc5e18f144bec6b19f",
"shasum": ""
},
"require": {
- "php": ">=5.4.0"
+ "php": ">=5.3.0",
+ "psr/log": "~1.0"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "~2.4, >2.4.8",
+ "doctrine/couchdb": "~1.0@dev",
+ "graylog2/gelf-php": "~1.0",
+ "phpunit/phpunit": "~4.0",
+ "raven/raven": "~0.5",
+ "ruflin/elastica": "0.90.*",
+ "videlalvaro/php-amqplib": "~2.4"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-mongo": "Allow sending log messages to a MongoDB server",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "raven/raven": "Allow sending log messages to a Sentry server",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
+ "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-master": "1.12.x-dev"
}
},
"autoload": {
"psr-4": {
- "React\\Promise\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
+ "Monolog\\": "src/Monolog"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -380,12 +1082,57 @@
],
"authors": [
{
- "name": "Jan Sorgalla",
- "email": "jsorgalla@googlemail.com"
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
}
],
- "description": "A lightweight implementation of CommonJS Promises/A for PHP",
- "time": "2014-12-30 13:32:42"
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "http://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "time": "2014-12-29 21:29:35"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
+ "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Psr\\Log\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2012-12-21 11:40:51"
},
{
"name": "robmorgan/phinx",
@@ -444,6 +1191,159 @@
],
"time": "2014-12-23 06:06:14"
},
+ {
+ "name": "sensio/distribution-bundle",
+ "version": "v3.0.15",
+ "target-dir": "Sensio/Bundle/DistributionBundle",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioDistributionBundle.git",
+ "reference": "0692cd6a8fcf645abce8ea45f7cbbd1942e2b23c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/0692cd6a8fcf645abce8ea45f7cbbd1942e2b23c",
+ "reference": "0692cd6a8fcf645abce8ea45f7cbbd1942e2b23c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "sensiolabs/security-checker": "~2.0",
+ "symfony/class-loader": "~2.2",
+ "symfony/form": "~2.2",
+ "symfony/framework-bundle": "~2.3",
+ "symfony/process": "~2.2",
+ "symfony/validator": "~2.2",
+ "symfony/yaml": "~2.2"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Sensio\\Bundle\\DistributionBundle": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Base bundle for Symfony Distributions",
+ "keywords": [
+ "configuration",
+ "distribution"
+ ],
+ "time": "2015-01-07 07:13:43"
+ },
+ {
+ "name": "sensio/framework-extra-bundle",
+ "version": "v3.0.4",
+ "target-dir": "Sensio/Bundle/FrameworkExtraBundle",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
+ "reference": "b3bc3e67c8b6b68b18d727012183520d35ee762a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/b3bc3e67c8b6b68b18d727012183520d35ee762a",
+ "reference": "b3bc3e67c8b6b68b18d727012183520d35ee762a",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": "~2.2",
+ "symfony/framework-bundle": "~2.3"
+ },
+ "require-dev": {
+ "symfony/expression-language": "~2.4",
+ "symfony/security-bundle": "~2.4"
+ },
+ "suggest": {
+ "symfony/expression-language": "",
+ "symfony/security-bundle": ""
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Sensio\\Bundle\\FrameworkExtraBundle": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "This bundle provides a way to configure your controllers with annotations",
+ "keywords": [
+ "annotations",
+ "controllers"
+ ],
+ "time": "2014-12-02 09:52:52"
+ },
+ {
+ "name": "sensiolabs/security-checker",
+ "version": "v2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/security-checker.git",
+ "reference": "5b4eb4743ebe68276c911c84101ecdf4a9ae76ee"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/5b4eb4743ebe68276c911c84101ecdf4a9ae76ee",
+ "reference": "5b4eb4743ebe68276c911c84101ecdf4a9ae76ee",
+ "shasum": ""
+ },
+ "require": {
+ "ext-curl": "*",
+ "symfony/console": "~2.0"
+ },
+ "bin": [
+ "security-checker"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "SensioLabs\\Security": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien.potencier@gmail.com"
+ }
+ ],
+ "description": "A security checker for your composer.lock",
+ "time": "2014-07-19 10:52:35"
+ },
{
"name": "simplepie/simplepie",
"version": "dev-master",
@@ -499,40 +1399,99 @@
"time": "2014-04-28 12:50:39"
},
{
- "name": "symfony/browser-kit",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/BrowserKit",
+ "name": "swiftmailer/swiftmailer",
+ "version": "v5.3.1",
"source": {
"type": "git",
- "url": "https://github.com/symfony/BrowserKit.git",
- "reference": "2ecec44ed5047020c65dd6e4a4b2f3cf13ae3c04"
+ "url": "https://github.com/swiftmailer/swiftmailer.git",
+ "reference": "c5f963e7f9d6f6438fda4f22d5cc2db296ec621a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/BrowserKit/zipball/2ecec44ed5047020c65dd6e4a4b2f3cf13ae3c04",
- "reference": "2ecec44ed5047020c65dd6e4a4b2f3cf13ae3c04",
+ "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/c5f963e7f9d6f6438fda4f22d5cc2db296ec621a",
+ "reference": "c5f963e7f9d6f6438fda4f22d5cc2db296ec621a",
"shasum": ""
},
"require": {
- "php": ">=5.3.3",
- "symfony/dom-crawler": "~2.0,>=2.0.5"
+ "php": ">=5.3.3"
},
"require-dev": {
- "symfony/css-selector": "~2.0,>=2.0.5",
- "symfony/process": "~2.0,>=2.0.5"
+ "mockery/mockery": "~0.9.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.3-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/swift_required.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Chris Corbyn"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Swiftmailer, free feature-rich PHP mailer",
+ "homepage": "http://swiftmailer.org",
+ "keywords": [
+ "mail",
+ "mailer"
+ ],
+ "time": "2014-12-05 14:17:14"
+ },
+ {
+ "name": "symfony/assetic-bundle",
+ "version": "v2.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/AsseticBundle.git",
+ "reference": "90ea7fb66d6d5245fd4afc16e4c8070214254fec"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/AsseticBundle/zipball/90ea7fb66d6d5245fd4afc16e4c8070214254fec",
+ "reference": "90ea7fb66d6d5245fd4afc16e4c8070214254fec",
+ "shasum": ""
+ },
+ "require": {
+ "kriswallsmith/assetic": "~1.2",
+ "php": ">=5.3.0",
+ "symfony/console": "~2.1",
+ "symfony/framework-bundle": "~2.1",
+ "symfony/yaml": "~2.1"
+ },
+ "require-dev": {
+ "kriswallsmith/spork": "~0.2",
+ "patchwork/jsqueeze": "~1.0",
+ "symfony/class-loader": "~2.1",
+ "symfony/css-selector": "~2.1",
+ "symfony/dom-crawler": "~2.1",
+ "symfony/twig-bundle": "~2.1"
},
"suggest": {
- "symfony/process": ""
+ "kriswallsmith/spork": "to be able to dump assets in parallel",
+ "symfony/twig-bundle": "to use the Twig integration"
},
- "type": "library",
+ "type": "symfony-bundle",
"extra": {
"branch-alias": {
- "dev-master": "2.6-dev"
+ "dev-master": "2.5-dev"
}
},
"autoload": {
- "psr-0": {
- "Symfony\\Component\\BrowserKit\\": ""
+ "psr-4": {
+ "Symfony\\Bundle\\AsseticBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -541,48 +1500,55 @@
],
"authors": [
{
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Kris Wallsmith",
+ "email": "kris.wallsmith@gmail.com",
+ "homepage": "http://kriswallsmith.net/"
}
],
- "description": "Symfony BrowserKit Component",
- "homepage": "http://symfony.com",
- "time": "2015-01-03 08:01:59"
+ "description": "Integrates Assetic into Symfony2",
+ "homepage": "https://github.com/symfony/AsseticBundle",
+ "keywords": [
+ "assets",
+ "compression",
+ "minification"
+ ],
+ "time": "2014-10-15 12:03:38"
},
{
- "name": "symfony/class-loader",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/ClassLoader",
+ "name": "symfony/monolog-bundle",
+ "version": "v2.7.1",
"source": {
"type": "git",
- "url": "https://github.com/symfony/ClassLoader.git",
- "reference": "deac802f76910708ab50d039806cfd1866895b52"
+ "url": "https://github.com/symfony/MonologBundle.git",
+ "reference": "9320b6863404c70ebe111e9040dab96f251de7ac"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/ClassLoader/zipball/deac802f76910708ab50d039806cfd1866895b52",
- "reference": "deac802f76910708ab50d039806cfd1866895b52",
+ "url": "https://api.github.com/repos/symfony/MonologBundle/zipball/9320b6863404c70ebe111e9040dab96f251de7ac",
+ "reference": "9320b6863404c70ebe111e9040dab96f251de7ac",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "monolog/monolog": "~1.8",
+ "php": ">=5.3.2",
+ "symfony/config": "~2.3",
+ "symfony/dependency-injection": "~2.3",
+ "symfony/http-kernel": "~2.3",
+ "symfony/monolog-bridge": "~2.3"
},
"require-dev": {
- "symfony/finder": "~2.0,>=2.0.5"
+ "symfony/console": "~2.3",
+ "symfony/yaml": "~2.3"
},
- "type": "library",
+ "type": "symfony-bundle",
"extra": {
"branch-alias": {
- "dev-master": "2.6-dev"
+ "dev-master": "2.7.x-dev"
}
},
"autoload": {
- "psr-0": {
- "Symfony\\Component\\ClassLoader\\": ""
+ "psr-4": {
+ "Symfony\\Bundle\\MonologBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -599,189 +1565,147 @@
"email": "fabien@symfony.com"
}
],
- "description": "Symfony ClassLoader Component",
+ "description": "Symfony MonologBundle",
"homepage": "http://symfony.com",
- "time": "2015-01-05 14:28:40"
+ "keywords": [
+ "log",
+ "logging"
+ ],
+ "time": "2015-01-04 20:21:17"
},
{
- "name": "symfony/config",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/Config",
+ "name": "symfony/swiftmailer-bundle",
+ "version": "v2.3.8",
"source": {
"type": "git",
- "url": "https://github.com/symfony/Config.git",
- "reference": "d94f222eff99a22ce313555b78642b4873418d56"
+ "url": "https://github.com/symfony/SwiftmailerBundle.git",
+ "reference": "970b13d01871207e81d17b17ddda025e7e21e797"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/Config/zipball/d94f222eff99a22ce313555b78642b4873418d56",
- "reference": "d94f222eff99a22ce313555b78642b4873418d56",
+ "url": "https://api.github.com/repos/symfony/SwiftmailerBundle/zipball/970b13d01871207e81d17b17ddda025e7e21e797",
+ "reference": "970b13d01871207e81d17b17ddda025e7e21e797",
"shasum": ""
},
"require": {
+ "php": ">=5.3.2",
+ "swiftmailer/swiftmailer": ">=4.2.0,~5.0",
+ "symfony/swiftmailer-bridge": "~2.1"
+ },
+ "require-dev": {
+ "symfony/config": "~2.1",
+ "symfony/dependency-injection": "~2.1",
+ "symfony/http-kernel": "~2.1",
+ "symfony/yaml": "~2.1"
+ },
+ "suggest": {
+ "psr/log": "Allows logging"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\SwiftmailerBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony SwiftmailerBundle",
+ "homepage": "http://symfony.com",
+ "time": "2014-12-01 17:44:50"
+ },
+ {
+ "name": "symfony/symfony",
+ "version": "v2.6.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/symfony.git",
+ "reference": "c34ef418015793a4653f2670afb69dd167ebf578"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/symfony/zipball/c34ef418015793a4653f2670afb69dd167ebf578",
+ "reference": "c34ef418015793a4653f2670afb69dd167ebf578",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": "~2.3",
"php": ">=5.3.3",
- "symfony/filesystem": "~2.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Config\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony Config Component",
- "homepage": "http://symfony.com",
- "time": "2015-01-03 08:01:59"
- },
- {
- "name": "symfony/console",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/Console",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Console.git",
- "reference": "6ac6491ff60c0e5a941db3ccdc75a07adbb61476"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Console/zipball/6ac6491ff60c0e5a941db3ccdc75a07adbb61476",
- "reference": "6ac6491ff60c0e5a941db3ccdc75a07adbb61476",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
"psr/log": "~1.0",
- "symfony/event-dispatcher": "~2.1",
- "symfony/process": "~2.1"
+ "twig/twig": "~1.12,>=1.12.3"
},
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Console\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony Console Component",
- "homepage": "http://symfony.com",
- "time": "2015-01-06 17:50:02"
- },
- {
- "name": "symfony/css-selector",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/CssSelector",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/CssSelector.git",
- "reference": "3f80ecc614fec68d5b4a84a0703db3fdf5ce8584"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/CssSelector/zipball/3f80ecc614fec68d5b4a84a0703db3fdf5ce8584",
- "reference": "3f80ecc614fec68d5b4a84a0703db3fdf5ce8584",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\CssSelector\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Jean-François Simon",
- "email": "jeanfrancois.simon@sensiolabs.com"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony CssSelector Component",
- "homepage": "http://symfony.com",
- "time": "2015-01-03 08:01:59"
- },
- {
- "name": "symfony/dom-crawler",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/DomCrawler",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/DomCrawler.git",
- "reference": "26a9eb302decd828990e1015afaa11b78b016073"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/DomCrawler/zipball/26a9eb302decd828990e1015afaa11b78b016073",
- "reference": "26a9eb302decd828990e1015afaa11b78b016073",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
+ "replace": {
+ "symfony/browser-kit": "self.version",
+ "symfony/class-loader": "self.version",
+ "symfony/config": "self.version",
+ "symfony/console": "self.version",
+ "symfony/css-selector": "self.version",
+ "symfony/debug": "self.version",
+ "symfony/debug-bundle": "self.version",
+ "symfony/dependency-injection": "self.version",
+ "symfony/doctrine-bridge": "self.version",
+ "symfony/dom-crawler": "self.version",
+ "symfony/event-dispatcher": "self.version",
+ "symfony/expression-language": "self.version",
+ "symfony/filesystem": "self.version",
+ "symfony/finder": "self.version",
+ "symfony/form": "self.version",
+ "symfony/framework-bundle": "self.version",
+ "symfony/http-foundation": "self.version",
+ "symfony/http-kernel": "self.version",
+ "symfony/intl": "self.version",
+ "symfony/locale": "self.version",
+ "symfony/monolog-bridge": "self.version",
+ "symfony/options-resolver": "self.version",
+ "symfony/process": "self.version",
+ "symfony/propel1-bridge": "self.version",
+ "symfony/property-access": "self.version",
+ "symfony/proxy-manager-bridge": "self.version",
+ "symfony/routing": "self.version",
+ "symfony/security": "self.version",
+ "symfony/security-acl": "self.version",
+ "symfony/security-bundle": "self.version",
+ "symfony/security-core": "self.version",
+ "symfony/security-csrf": "self.version",
+ "symfony/security-http": "self.version",
+ "symfony/serializer": "self.version",
+ "symfony/stopwatch": "self.version",
+ "symfony/swiftmailer-bridge": "self.version",
+ "symfony/templating": "self.version",
+ "symfony/translation": "self.version",
+ "symfony/twig-bridge": "self.version",
+ "symfony/twig-bundle": "self.version",
+ "symfony/validator": "self.version",
+ "symfony/var-dumper": "self.version",
+ "symfony/web-profiler-bundle": "self.version",
+ "symfony/yaml": "self.version"
},
"require-dev": {
- "symfony/css-selector": "~2.3"
- },
- "suggest": {
- "symfony/css-selector": ""
+ "doctrine/data-fixtures": "1.0.*",
+ "doctrine/dbal": "~2.2",
+ "doctrine/doctrine-bundle": "~1.2",
+ "doctrine/orm": "~2.2,>=2.2.3",
+ "egulias/email-validator": "~1.2",
+ "ircmaxell/password-compat": "~1.0",
+ "monolog/monolog": "~1.11",
+ "ocramius/proxy-manager": "~0.4|~1.0",
+ "propel/propel1": "~1.6"
},
"type": "library",
"extra": {
@@ -791,236 +1715,14 @@
},
"autoload": {
"psr-0": {
- "Symfony\\Component\\DomCrawler\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony DomCrawler Component",
- "homepage": "http://symfony.com",
- "time": "2015-01-03 08:01:59"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/EventDispatcher",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/EventDispatcher.git",
- "reference": "40ff70cadea3785d83cac1c8309514b36113064e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/40ff70cadea3785d83cac1c8309514b36113064e",
- "reference": "40ff70cadea3785d83cac1c8309514b36113064e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~2.0,>=2.0.5",
- "symfony/dependency-injection": "~2.6",
- "symfony/expression-language": "~2.6",
- "symfony/stopwatch": "~2.3"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\EventDispatcher\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony EventDispatcher Component",
- "homepage": "http://symfony.com",
- "time": "2015-01-05 14:28:40"
- },
- {
- "name": "symfony/filesystem",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/Filesystem",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Filesystem.git",
- "reference": "a1f566d1f92e142fa1593f4555d6d89e3044a9b7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Filesystem/zipball/a1f566d1f92e142fa1593f4555d6d89e3044a9b7",
- "reference": "a1f566d1f92e142fa1593f4555d6d89e3044a9b7",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Filesystem\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony Filesystem Component",
- "homepage": "http://symfony.com",
- "time": "2015-01-03 21:13:09"
- },
- {
- "name": "symfony/form",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/Form",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Form.git",
- "reference": "bfe4011e6b77e85ccf4df33dd361fa09dfa50303"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Form/zipball/bfe4011e6b77e85ccf4df33dd361fa09dfa50303",
- "reference": "bfe4011e6b77e85ccf4df33dd361fa09dfa50303",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "symfony/event-dispatcher": "~2.1",
- "symfony/intl": "~2.3",
- "symfony/options-resolver": "~2.6",
- "symfony/property-access": "~2.3"
- },
- "require-dev": {
- "doctrine/collections": "~1.0",
- "symfony/http-foundation": "~2.2",
- "symfony/http-kernel": "~2.4",
- "symfony/security-csrf": "~2.4",
- "symfony/translation": "~2.0,>=2.0.5",
- "symfony/validator": "~2.6"
- },
- "suggest": {
- "symfony/framework-bundle": "For templating with PHP.",
- "symfony/security-csrf": "For protecting forms against CSRF attacks.",
- "symfony/twig-bridge": "For templating with Twig.",
- "symfony/validator": "For form validation."
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Form\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony Form Component",
- "homepage": "http://symfony.com",
- "time": "2015-01-07 14:31:37"
- },
- {
- "name": "symfony/intl",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/Intl",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Intl.git",
- "reference": "5e7494e1e6aed4309f43121b3141d6e0273dcaee"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Intl/zipball/5e7494e1e6aed4309f43121b3141d6e0273dcaee",
- "reference": "5e7494e1e6aed4309f43121b3141d6e0273dcaee",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "symfony/filesystem": ">=2.1"
- },
- "suggest": {
- "ext-intl": "to use the component with locales other than \"en\""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Intl\\": ""
+ "Symfony\\": "src/"
},
"classmap": [
- "Symfony/Component/Intl/Resources/stubs"
+ "src/Symfony/Component/HttpFoundation/Resources/stubs",
+ "src/Symfony/Component/Intl/Resources/stubs"
],
"files": [
- "Symfony/Component/Intl/Resources/stubs/functions.php"
+ "src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -1033,506 +1735,16 @@
"homepage": "http://symfony.com/contributors"
},
{
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
- },
- {
- "name": "Eriksen Costa",
- "email": "eriksen.costa@infranology.com.br"
- },
- {
- "name": "Igor Wiedler",
- "email": "igor@wiedler.ch"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
}
],
- "description": "A PHP replacement layer for the C intl extension that includes additional data from the ICU library.",
+ "description": "The Symfony PHP framework",
"homepage": "http://symfony.com",
"keywords": [
- "i18n",
- "icu",
- "internationalization",
- "intl",
- "l10n",
- "localization"
+ "framework"
],
- "time": "2015-01-03 08:01:59"
- },
- {
- "name": "symfony/options-resolver",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/OptionsResolver",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/OptionsResolver.git",
- "reference": "23aed23820c9c2273c405b43deee3de6c0668acd"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/OptionsResolver/zipball/23aed23820c9c2273c405b43deee3de6c0668acd",
- "reference": "23aed23820c9c2273c405b43deee3de6c0668acd",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\OptionsResolver\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony OptionsResolver Component",
- "homepage": "http://symfony.com",
- "keywords": [
- "config",
- "configuration",
- "options"
- ],
- "time": "2015-01-05 17:41:06"
- },
- {
- "name": "symfony/property-access",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/PropertyAccess",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/PropertyAccess.git",
- "reference": "b5055bdf4365638065d2a268e213a57b771d2f74"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/PropertyAccess/zipball/b5055bdf4365638065d2a268e213a57b771d2f74",
- "reference": "b5055bdf4365638065d2a268e213a57b771d2f74",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\PropertyAccess\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony PropertyAccess Component",
- "homepage": "http://symfony.com",
- "keywords": [
- "access",
- "array",
- "extraction",
- "index",
- "injection",
- "object",
- "property",
- "property path",
- "reflection"
- ],
- "time": "2015-01-03 15:33:07"
- },
- {
- "name": "symfony/routing",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/Routing",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Routing.git",
- "reference": "28382c6806780ddc657c136a5ca4415dd3252f41"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Routing/zipball/28382c6806780ddc657c136a5ca4415dd3252f41",
- "reference": "28382c6806780ddc657c136a5ca4415dd3252f41",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "doctrine/annotations": "~1.0",
- "doctrine/common": "~2.2",
- "psr/log": "~1.0",
- "symfony/config": "~2.2",
- "symfony/expression-language": "~2.4",
- "symfony/http-foundation": "~2.3",
- "symfony/yaml": "~2.0,>=2.0.5"
- },
- "suggest": {
- "doctrine/annotations": "For using the annotation loader",
- "symfony/config": "For using the all-in-one router or any loader",
- "symfony/expression-language": "For using expression matching",
- "symfony/yaml": "For using the YAML loader"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Routing\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony Routing Component",
- "homepage": "http://symfony.com",
- "keywords": [
- "router",
- "routing",
- "uri",
- "url"
- ],
- "time": "2015-01-05 14:28:40"
- },
- {
- "name": "symfony/security-core",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/Security/Core",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/security-core.git",
- "reference": "db8c6964f9d69496b9ef21788c4afc4306113242"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/security-core/zipball/db8c6964f9d69496b9ef21788c4afc4306113242",
- "reference": "db8c6964f9d69496b9ef21788c4afc4306113242",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "ircmaxell/password-compat": "1.0.*",
- "psr/log": "~1.0",
- "symfony/event-dispatcher": "~2.1",
- "symfony/expression-language": "~2.6",
- "symfony/http-foundation": "~2.4",
- "symfony/translation": "~2.0,>=2.0.5",
- "symfony/validator": "~2.5,>=2.5.5"
- },
- "suggest": {
- "ircmaxell/password-compat": "For using the BCrypt password encoder in PHP <5.5",
- "symfony/event-dispatcher": "",
- "symfony/expression-language": "For using the expression voter",
- "symfony/http-foundation": "",
- "symfony/validator": "For using the user password constraint"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Security\\Core\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony Security Component - Core Library",
- "homepage": "http://symfony.com",
- "time": "2015-01-05 20:59:13"
- },
- {
- "name": "symfony/security-csrf",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/Security/Csrf",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/security-csrf.git",
- "reference": "c532081e1c9295b69dac2e3faea87112543504fc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/security-csrf/zipball/c532081e1c9295b69dac2e3faea87112543504fc",
- "reference": "c532081e1c9295b69dac2e3faea87112543504fc",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "symfony/security-core": "~2.4"
- },
- "require-dev": {
- "symfony/http-foundation": "~2.1"
- },
- "suggest": {
- "symfony/http-foundation": "For using the class SessionTokenStorage."
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Security\\Csrf\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony Security Component - CSRF Library",
- "homepage": "http://symfony.com",
- "time": "2015-01-03 08:01:59"
- },
- {
- "name": "symfony/translation",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/Translation",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Translation.git",
- "reference": "f289cdf8179d32058c1e1cbac723106a5ff6fa39"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Translation/zipball/f289cdf8179d32058c1e1cbac723106a5ff6fa39",
- "reference": "f289cdf8179d32058c1e1cbac723106a5ff6fa39",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~2.3,>=2.3.12",
- "symfony/intl": "~2.3",
- "symfony/yaml": "~2.2"
- },
- "suggest": {
- "psr/log": "To use logging capability in translator",
- "symfony/config": "",
- "symfony/yaml": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Translation\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony Translation Component",
- "homepage": "http://symfony.com",
- "time": "2015-01-03 15:33:07"
- },
- {
- "name": "symfony/twig-bridge",
- "version": "v2.6.3",
- "target-dir": "Symfony/Bridge/Twig",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/TwigBridge.git",
- "reference": "72c911dd02f5d8e68accab7120fc0fd1a0b84ba1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/TwigBridge/zipball/72c911dd02f5d8e68accab7120fc0fd1a0b84ba1",
- "reference": "72c911dd02f5d8e68accab7120fc0fd1a0b84ba1",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "symfony/security-csrf": "~2.4",
- "twig/twig": "~1.13,>=1.13.1"
- },
- "require-dev": {
- "symfony/console": "~2.4",
- "symfony/expression-language": "~2.4",
- "symfony/finder": "~2.3",
- "symfony/form": "~2.6",
- "symfony/http-kernel": "~2.3",
- "symfony/intl": "~2.3",
- "symfony/routing": "~2.2",
- "symfony/security": "~2.4",
- "symfony/stopwatch": "~2.2",
- "symfony/templating": "~2.1",
- "symfony/translation": "~2.2",
- "symfony/var-dumper": "~2.6",
- "symfony/yaml": "~2.0,>=2.0.5"
- },
- "suggest": {
- "symfony/expression-language": "For using the ExpressionExtension",
- "symfony/finder": "",
- "symfony/form": "For using the FormExtension",
- "symfony/http-kernel": "For using the HttpKernelExtension",
- "symfony/routing": "For using the RoutingExtension",
- "symfony/security": "For using the SecurityExtension",
- "symfony/stopwatch": "For using the StopwatchExtension",
- "symfony/templating": "For using the TwigEngine",
- "symfony/translation": "For using the TranslationExtension",
- "symfony/var-dumper": "For using the DumpExtension",
- "symfony/yaml": "For using the YamlExtension"
- },
- "type": "symfony-bridge",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Bridge\\Twig\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony Twig Bridge",
- "homepage": "http://symfony.com",
- "time": "2015-01-05 14:28:40"
- },
- {
- "name": "symfony/yaml",
- "version": "v2.6.3",
- "target-dir": "Symfony/Component/Yaml",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/Yaml.git",
- "reference": "82462a90848a52c2533aa6b598b107d68076b018"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/Yaml/zipball/82462a90848a52c2533aa6b598b107d68076b018",
- "reference": "82462a90848a52c2533aa6b598b107d68076b018",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.6-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Symfony\\Component\\Yaml\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Symfony Yaml Component",
- "homepage": "http://symfony.com",
- "time": "2015-01-03 15:33:07"
+ "time": "2015-01-07 14:47:29"
},
{
"name": "tecnick.com/tcpdf",
@@ -2404,12 +2616,59 @@
"xunit"
],
"time": "2013-01-13 10:24:48"
+ },
+ {
+ "name": "sensio/generator-bundle",
+ "version": "v2.5.1",
+ "target-dir": "Sensio/Bundle/GeneratorBundle",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git",
+ "reference": "9e23fc3de265ae013690d84aab98e7a84f46edcd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/9e23fc3de265ae013690d84aab98e7a84f46edcd",
+ "reference": "9e23fc3de265ae013690d84aab98e7a84f46edcd",
+ "shasum": ""
+ },
+ "require": {
+ "symfony/console": "~2.5",
+ "symfony/framework-bundle": "~2.2"
+ },
+ "require-dev": {
+ "doctrine/orm": "~2.2,>=2.2.3",
+ "symfony/doctrine-bridge": "~2.2",
+ "twig/twig": "~1.11"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Sensio\\Bundle\\GeneratorBundle": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "This bundle generates code for you",
+ "time": "2015-01-13 07:33:46"
}
],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
- "fabpot/goutte": 20,
"ezyang/htmlpurifier": 20,
"mgargano/simplehtmldom": 20,
"tecnick.com/tcpdf": 20,
@@ -2425,6 +2684,8 @@
},
"prefer-stable": false,
"prefer-lowest": false,
- "platform": [],
+ "platform": {
+ "php": ">=5.3.3"
+ },
"platform-dev": []
}
diff --git a/src/Acme/DemoBundle/AcmeDemoBundle.php b/src/Acme/DemoBundle/AcmeDemoBundle.php
new file mode 100644
index 000000000..269fc1e06
--- /dev/null
+++ b/src/Acme/DemoBundle/AcmeDemoBundle.php
@@ -0,0 +1,9 @@
+getContainer().
+ *
+ * @author Tobias Schultze
+ */
+class HelloWorldCommand extends Command
+{
+ /**
+ * {@inheritdoc}
+ */
+ protected function configure()
+ {
+ $this
+ ->setName('acme:hello')
+ ->setDescription('Hello World example command')
+ ->addArgument('who', InputArgument::OPTIONAL, 'Who to greet.', 'World')
+ ->setHelp(<<%command.name% command greets somebody or everybody:
+
+php %command.full_name%
+
+The optional argument specifies who to greet:
+
+php %command.full_name% Fabien
+EOF
+ );
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function execute(InputInterface $input, OutputInterface $output)
+ {
+ $output->writeln(sprintf('Hello %s !', $input->getArgument('who')));
+ }
+}
diff --git a/src/Acme/DemoBundle/Controller/DemoController.php b/src/Acme/DemoBundle/Controller/DemoController.php
new file mode 100644
index 000000000..a99de891a
--- /dev/null
+++ b/src/Acme/DemoBundle/Controller/DemoController.php
@@ -0,0 +1,56 @@
+ $name);
+ }
+
+ /**
+ * @Route("/contact", name="_demo_contact")
+ * @Template()
+ */
+ public function contactAction(Request $request)
+ {
+ $form = $this->createForm(new ContactType());
+ $form->handleRequest($request);
+
+ if ($form->isValid()) {
+ $mailer = $this->get('mailer');
+
+ // .. setup a message and send it
+ // http://symfony.com/doc/current/cookbook/email.html
+
+ $request->getSession()->getFlashBag()->set('notice', 'Message sent!');
+
+ return new RedirectResponse($this->generateUrl('_demo'));
+ }
+
+ return array('form' => $form->createView());
+ }
+}
diff --git a/src/Acme/DemoBundle/Controller/SecuredController.php b/src/Acme/DemoBundle/Controller/SecuredController.php
new file mode 100644
index 000000000..d1499e39e
--- /dev/null
+++ b/src/Acme/DemoBundle/Controller/SecuredController.php
@@ -0,0 +1,70 @@
+attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
+ $error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
+ } else {
+ $error = $request->getSession()->get(SecurityContext::AUTHENTICATION_ERROR);
+ }
+
+ return array(
+ 'last_username' => $request->getSession()->get(SecurityContext::LAST_USERNAME),
+ 'error' => $error,
+ );
+ }
+
+ /**
+ * @Route("/login_check", name="_demo_security_check")
+ */
+ public function securityCheckAction()
+ {
+ // The security layer will intercept this request
+ }
+
+ /**
+ * @Route("/logout", name="_demo_logout")
+ */
+ public function logoutAction()
+ {
+ // The security layer will intercept this request
+ }
+
+ /**
+ * @Route("/hello", defaults={"name"="World"}),
+ * @Route("/hello/{name}", name="_demo_secured_hello")
+ * @Template()
+ */
+ public function helloAction($name)
+ {
+ return array('name' => $name);
+ }
+
+ /**
+ * @Route("/hello/admin/{name}", name="_demo_secured_hello_admin")
+ * @Security("is_granted('ROLE_ADMIN')")
+ * @Template()
+ */
+ public function helloadminAction($name)
+ {
+ return array('name' => $name);
+ }
+}
diff --git a/src/Acme/DemoBundle/Controller/WelcomeController.php b/src/Acme/DemoBundle/Controller/WelcomeController.php
new file mode 100644
index 000000000..884f95bb5
--- /dev/null
+++ b/src/Acme/DemoBundle/Controller/WelcomeController.php
@@ -0,0 +1,19 @@
+render('AcmeDemoBundle:Welcome:index.html.twig');
+ }
+}
diff --git a/src/Acme/DemoBundle/DependencyInjection/AcmeDemoExtension.php b/src/Acme/DemoBundle/DependencyInjection/AcmeDemoExtension.php
new file mode 100644
index 000000000..6dfcc8229
--- /dev/null
+++ b/src/Acme/DemoBundle/DependencyInjection/AcmeDemoExtension.php
@@ -0,0 +1,22 @@
+load('services.xml');
+ }
+
+ public function getAlias()
+ {
+ return 'acme_demo';
+ }
+}
diff --git a/src/Acme/DemoBundle/EventListener/ControllerListener.php b/src/Acme/DemoBundle/EventListener/ControllerListener.php
new file mode 100644
index 000000000..aa117d742
--- /dev/null
+++ b/src/Acme/DemoBundle/EventListener/ControllerListener.php
@@ -0,0 +1,24 @@
+extension = $extension;
+ }
+
+ public function onKernelController(FilterControllerEvent $event)
+ {
+ if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) {
+ $this->extension->setController($event->getController());
+ }
+ }
+}
diff --git a/src/Acme/DemoBundle/Form/ContactType.php b/src/Acme/DemoBundle/Form/ContactType.php
new file mode 100644
index 000000000..2c76cdb27
--- /dev/null
+++ b/src/Acme/DemoBundle/Form/ContactType.php
@@ -0,0 +1,20 @@
+add('email', 'email');
+ $builder->add('message', 'textarea');
+ }
+
+ public function getName()
+ {
+ return 'contact';
+ }
+}
diff --git a/src/Acme/DemoBundle/Resources/config/routing.yml b/src/Acme/DemoBundle/Resources/config/routing.yml
new file mode 100644
index 000000000..06291a230
--- /dev/null
+++ b/src/Acme/DemoBundle/Resources/config/routing.yml
@@ -0,0 +1,12 @@
+_welcome:
+ path: /
+ defaults: { _controller: AcmeDemoBundle:Welcome:index }
+
+_demo_secured:
+ resource: "@AcmeDemoBundle/Controller/SecuredController.php"
+ type: annotation
+
+_demo:
+ resource: "@AcmeDemoBundle/Controller/DemoController.php"
+ type: annotation
+ prefix: /demo
diff --git a/src/Acme/DemoBundle/Resources/config/services.xml b/src/Acme/DemoBundle/Resources/config/services.xml
new file mode 100644
index 000000000..d6274ce90
--- /dev/null
+++ b/src/Acme/DemoBundle/Resources/config/services.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Acme/DemoBundle/Resources/public/css/demo.css b/src/Acme/DemoBundle/Resources/public/css/demo.css
new file mode 100644
index 000000000..4dd2f16c2
--- /dev/null
+++ b/src/Acme/DemoBundle/Resources/public/css/demo.css
@@ -0,0 +1,101 @@
+body {
+ font-size: 14px;
+ font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
+}
+h1.title {
+ font-size: 45px;
+ padding-bottom: 30px;
+}
+.sf-reset h2 {
+ font-weight: bold;
+ color: #FFFFFF;
+ /* Font is duplicated of body (sans-serif) */
+ font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
+
+ margin-bottom: 10px;
+ background-color: #aacd4e;
+ padding: 2px 4px;
+ display: inline-block;
+ text-transform: uppercase;
+
+}
+p {
+ line-height: 20px;
+ padding-bottom: 20px;
+}
+ul#demo-list a {
+ background: url(../images/blue-arrow.png) no-repeat right 6px;
+ padding-right: 10px;
+ margin-right: 30px;
+}
+#symfony-header {
+ position: relative;
+ padding: 30px 30px 20px 30px;
+}
+.sf-reset .symfony-blocks-welcome {
+ overflow: hidden;
+}
+.sf-reset .symfony-blocks-welcome > div {
+ background-color: whitesmoke;
+ float: left;
+ width: 240px;
+ margin-right: 14px;
+ text-align: center;
+ padding: 26px 20px;
+}
+.sf-reset .symfony-blocks-welcome > div.block-demo {
+ margin-right: 0;
+}
+.sf-reset .symfony-blocks-welcome .illustration {
+ padding-bottom: 20px;
+}
+.sf-reset .symfony-blocks-help {
+ overflow: hidden;
+}
+.sf-reset .symfony-blocks-help {
+ margin-top: 30px;
+ padding: 18px;
+ border: 1px solid #E6E6E6;
+}
+.sf-reset .symfony-blocks-help > div {
+ width: 254px;
+ float: left;
+}
+.flash-message {
+ padding: 10px;
+ margin: 5px;
+ margin-top: 15px;
+ background-color: #ffe;
+}
+.sf-reset .error {
+ color: red;
+}
+#login label, #contact_form label {
+ display: block;
+ float: left;
+ width: 90px;
+}
+.sf-reset ul#menu {
+ float: right;
+ margin-bottom: 20px;
+ padding-left: 0;
+}
+.sf-reset #menu li {
+ padding-left: 0;
+ margin-right: 10px;
+ display: inline;
+}
+.sf-reset a,
+.sf-reset li a {
+ color: #08C;
+ text-decoration: none;
+}
+.sf-reset a:hover,
+.sf-reset li a:hover {
+ color: #08C;
+ text-decoration: underline;
+}
+.sf-reset .symfony-content pre {
+ white-space: pre;
+ font-family: monospace;
+}
diff --git a/src/Acme/DemoBundle/Resources/public/images/blue-arrow.png b/src/Acme/DemoBundle/Resources/public/images/blue-arrow.png
new file mode 100644
index 000000000..fa82d4b4f
Binary files /dev/null and b/src/Acme/DemoBundle/Resources/public/images/blue-arrow.png differ
diff --git a/src/Acme/DemoBundle/Resources/public/images/field-background.gif b/src/Acme/DemoBundle/Resources/public/images/field-background.gif
new file mode 100644
index 000000000..7c0efc108
Binary files /dev/null and b/src/Acme/DemoBundle/Resources/public/images/field-background.gif differ
diff --git a/src/Acme/DemoBundle/Resources/public/images/logo.gif b/src/Acme/DemoBundle/Resources/public/images/logo.gif
new file mode 100644
index 000000000..703cf45fc
Binary files /dev/null and b/src/Acme/DemoBundle/Resources/public/images/logo.gif differ
diff --git a/src/Acme/DemoBundle/Resources/public/images/search.png b/src/Acme/DemoBundle/Resources/public/images/search.png
new file mode 100644
index 000000000..3c88b6a42
Binary files /dev/null and b/src/Acme/DemoBundle/Resources/public/images/search.png differ
diff --git a/src/Acme/DemoBundle/Resources/public/images/welcome-configure.gif b/src/Acme/DemoBundle/Resources/public/images/welcome-configure.gif
new file mode 100644
index 000000000..931179a7c
Binary files /dev/null and b/src/Acme/DemoBundle/Resources/public/images/welcome-configure.gif differ
diff --git a/src/Acme/DemoBundle/Resources/public/images/welcome-demo.gif b/src/Acme/DemoBundle/Resources/public/images/welcome-demo.gif
new file mode 100644
index 000000000..0623de54c
Binary files /dev/null and b/src/Acme/DemoBundle/Resources/public/images/welcome-demo.gif differ
diff --git a/src/Acme/DemoBundle/Resources/public/images/welcome-quick-tour.gif b/src/Acme/DemoBundle/Resources/public/images/welcome-quick-tour.gif
new file mode 100644
index 000000000..b9018b11d
Binary files /dev/null and b/src/Acme/DemoBundle/Resources/public/images/welcome-quick-tour.gif differ
diff --git a/src/Acme/DemoBundle/Resources/views/Demo/contact.html.twig b/src/Acme/DemoBundle/Resources/views/Demo/contact.html.twig
new file mode 100644
index 000000000..e5b7523ba
--- /dev/null
+++ b/src/Acme/DemoBundle/Resources/views/Demo/contact.html.twig
@@ -0,0 +1,15 @@
+{% extends "AcmeDemoBundle::layout.html.twig" %}
+
+{% block title "Symfony - Contact form" %}
+
+{% block content %}
+
+{% endblock %}
diff --git a/src/Acme/DemoBundle/Resources/views/Demo/hello.html.twig b/src/Acme/DemoBundle/Resources/views/Demo/hello.html.twig
new file mode 100644
index 000000000..3997ff606
--- /dev/null
+++ b/src/Acme/DemoBundle/Resources/views/Demo/hello.html.twig
@@ -0,0 +1,9 @@
+{% extends "AcmeDemoBundle::layout.html.twig" %}
+
+{% block title "Hello " ~ name %}
+
+{% block content %}
+ Hello {{ name }}!
+{% endblock %}
+
+{% set code = code(_self) %}
diff --git a/src/Acme/DemoBundle/Resources/views/Demo/index.html.twig b/src/Acme/DemoBundle/Resources/views/Demo/index.html.twig
new file mode 100644
index 000000000..454a3203e
--- /dev/null
+++ b/src/Acme/DemoBundle/Resources/views/Demo/index.html.twig
@@ -0,0 +1,14 @@
+{% extends "AcmeDemoBundle::layout.html.twig" %}
+
+{% block title "Symfony - Demos" %}
+
+{% block content_header '' %}
+
+{% block content %}
+ Available demos
+
+{% endblock %}
diff --git a/src/Acme/DemoBundle/Resources/views/Secured/hello.html.twig b/src/Acme/DemoBundle/Resources/views/Secured/hello.html.twig
new file mode 100644
index 000000000..faf95cf8c
--- /dev/null
+++ b/src/Acme/DemoBundle/Resources/views/Secured/hello.html.twig
@@ -0,0 +1,11 @@
+{% extends "AcmeDemoBundle:Secured:layout.html.twig" %}
+
+{% block title "Hello " ~ name %}
+
+{% block content %}
+ Hello {{ name }}!
+
+ Hello resource secured for admin only.
+{% endblock %}
+
+{% set code = code(_self) %}
diff --git a/src/Acme/DemoBundle/Resources/views/Secured/helloadmin.html.twig b/src/Acme/DemoBundle/Resources/views/Secured/helloadmin.html.twig
new file mode 100644
index 000000000..4e3649f77
--- /dev/null
+++ b/src/Acme/DemoBundle/Resources/views/Secured/helloadmin.html.twig
@@ -0,0 +1,9 @@
+{% extends "AcmeDemoBundle:Secured:layout.html.twig" %}
+
+{% block title "Hello " ~ name %}
+
+{% block content %}
+ Hello {{ name }} secured for Admins only!
+{% endblock %}
+
+{% set code = code(_self) %}
diff --git a/src/Acme/DemoBundle/Resources/views/Secured/layout.html.twig b/src/Acme/DemoBundle/Resources/views/Secured/layout.html.twig
new file mode 100644
index 000000000..aeea55c5c
--- /dev/null
+++ b/src/Acme/DemoBundle/Resources/views/Secured/layout.html.twig
@@ -0,0 +1,6 @@
+{% extends "AcmeDemoBundle::layout.html.twig" %}
+
+{% block content_header_more %}
+ {{ parent() }}
+ logged in as {{ app.user ? app.user.username : 'Anonymous' }} - Logout
+{% endblock %}
diff --git a/src/Acme/DemoBundle/Resources/views/Secured/login.html.twig b/src/Acme/DemoBundle/Resources/views/Secured/login.html.twig
new file mode 100644
index 000000000..3e76d1df7
--- /dev/null
+++ b/src/Acme/DemoBundle/Resources/views/Secured/login.html.twig
@@ -0,0 +1,35 @@
+{% extends 'AcmeDemoBundle::layout.html.twig' %}
+
+{% block content %}
+ Login
+
+
+ Choose between two default users: user/userpass (ROLE_USER) or admin/adminpass (ROLE_ADMIN)
+
+
+ {% if error %}
+ {{ error.message }}
+ {% endif %}
+
+
+{% endblock %}
+
+{% set code = code(_self) %}
diff --git a/src/Acme/DemoBundle/Resources/views/Welcome/index.html.twig b/src/Acme/DemoBundle/Resources/views/Welcome/index.html.twig
new file mode 100644
index 000000000..ea3a7299b
--- /dev/null
+++ b/src/Acme/DemoBundle/Resources/views/Welcome/index.html.twig
@@ -0,0 +1,83 @@
+{% extends 'AcmeDemoBundle::layout.html.twig' %}
+
+{% block title %}Symfony - Welcome{% endblock %}
+
+{% block content_header '' %}
+
+{% block content %}
+ {% set version = constant('Symfony\\Component\\HttpKernel\\Kernel::MAJOR_VERSION') ~ '.' ~ constant('Symfony\\Component\\HttpKernel\\Kernel::MINOR_VERSION')%}
+
+ Welcome!
+
+ Congratulations! You have successfully installed a new Symfony application.
+
+
+
+ {% if app.environment == 'dev' %}
+
+ {% endif %}
+
+
+
+
+{% endblock %}
diff --git a/src/Acme/DemoBundle/Resources/views/layout.html.twig b/src/Acme/DemoBundle/Resources/views/layout.html.twig
new file mode 100644
index 000000000..d7e97d563
--- /dev/null
+++ b/src/Acme/DemoBundle/Resources/views/layout.html.twig
@@ -0,0 +1,37 @@
+{% extends "TwigBundle::layout.html.twig" %}
+
+{% block head %}
+
+
+{% endblock %}
+
+{% block title 'Demo Bundle' %}
+
+{% block body %}
+ {% for flashMessage in app.session.flashbag.get('notice') %}
+
+ Notice : {{ flashMessage }}
+
+ {% endfor %}
+
+ {% block content_header %}
+
+
+
+ {% endblock %}
+
+
+ {% block content %}{% endblock %}
+
+
+ {% if code is defined %}
+ Code behind this page
+
+ {% endif %}
+{% endblock %}
diff --git a/src/Acme/DemoBundle/Tests/Controller/DemoControllerTest.php b/src/Acme/DemoBundle/Tests/Controller/DemoControllerTest.php
new file mode 100644
index 000000000..d21768975
--- /dev/null
+++ b/src/Acme/DemoBundle/Tests/Controller/DemoControllerTest.php
@@ -0,0 +1,45 @@
+request('GET', '/demo/hello/Fabien');
+
+ $this->assertGreaterThan(0, $crawler->filter('html:contains("Hello Fabien")')->count());
+ }
+
+ public function testSecureSection()
+ {
+ $client = static::createClient();
+
+ // goes to the secure page
+ $crawler = $client->request('GET', '/demo/secured/hello/World');
+
+ // redirects to the login page
+ $crawler = $client->followRedirect();
+
+ // submits the login form
+ $form = $crawler->selectButton('Login')->form(array('_username' => 'admin', '_password' => 'adminpass'));
+ $client->submit($form);
+
+ // redirect to the original page (but now authenticated)
+ $crawler = $client->followRedirect();
+
+ // check that the page is the right one
+ $this->assertCount(1, $crawler->filter('h1.title:contains("Hello World!")'));
+
+ // click on the secure link
+ $link = $crawler->selectLink('Hello resource secured')->link();
+ $crawler = $client->click($link);
+
+ // check that the page is the right one
+ $this->assertCount(1, $crawler->filter('h1.title:contains("secured for Admins only!")'));
+ }
+}
diff --git a/src/Acme/DemoBundle/Twig/Extension/DemoExtension.php b/src/Acme/DemoBundle/Twig/Extension/DemoExtension.php
new file mode 100644
index 000000000..e6ce94f60
--- /dev/null
+++ b/src/Acme/DemoBundle/Twig/Extension/DemoExtension.php
@@ -0,0 +1,81 @@
+loader = $loader;
+ }
+
+ public function setController($controller)
+ {
+ $this->controller = $controller;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getFunctions()
+ {
+ return array(
+ new \Twig_SimpleFunction('code', array($this, 'getCode'), array('is_safe' => array('html'))),
+ );
+ }
+
+ public function getCode($template)
+ {
+ // highlight_string highlights php code only if 'getControllerCode(), true);
+ $controller = str_replace('<?php ', ' ', $controller);
+
+ $template = htmlspecialchars($this->getTemplateCode($template), ENT_QUOTES, 'UTF-8');
+
+ // remove the code block
+ $template = str_replace('{% set code = code(_self) %}', '', $template);
+
+ return <<Controller Code
+$controller
+
+Template Code
+$template
+EOF;
+ }
+
+ protected function getControllerCode()
+ {
+ $class = get_class($this->controller[0]);
+ if (class_exists('CG\Core\ClassUtils')) {
+ $class = ClassUtils::getUserClass($class);
+ }
+
+ $r = new \ReflectionClass($class);
+ $m = $r->getMethod($this->controller[1]);
+
+ $code = file($r->getFilename());
+
+ return ' '.$m->getDocComment()."\n".implode('', array_slice($code, $m->getStartline() - 1, $m->getEndLine() - $m->getStartline() + 1));
+ }
+
+ protected function getTemplateCode($template)
+ {
+ return $this->loader->getSource($template->getTemplateName());
+ }
+
+ /**
+ * Returns the name of the extension.
+ *
+ * @return string The extension name
+ */
+ public function getName()
+ {
+ return 'demo';
+ }
+}
diff --git a/src/AppBundle/AppBundle.php b/src/AppBundle/AppBundle.php
new file mode 100644
index 000000000..05123b678
--- /dev/null
+++ b/src/AppBundle/AppBundle.php
@@ -0,0 +1,9 @@
+render('default/index.html.twig');
+ }
+}
diff --git a/src/AppBundle/Tests/Controller/DefaultControllerTest.php b/src/AppBundle/Tests/Controller/DefaultControllerTest.php
new file mode 100644
index 000000000..f35af7522
--- /dev/null
+++ b/src/AppBundle/Tests/Controller/DefaultControllerTest.php
@@ -0,0 +1,18 @@
+request('GET', '/app/example');
+
+ $this->assertEquals(200, $client->getResponse()->getStatusCode());
+ $this->assertTrue($crawler->filter('html:contains("Homepage")')->count() > 0);
+ }
+}
diff --git a/src/WallabagBundle/Controller/DefaultController.php b/src/WallabagBundle/Controller/DefaultController.php
new file mode 100644
index 000000000..1030b7a68
--- /dev/null
+++ b/src/WallabagBundle/Controller/DefaultController.php
@@ -0,0 +1,17 @@
+render('default/index.html.twig');
+ }
+}
diff --git a/src/WallabagBundle/Tests/Controller/DefaultControllerTest.php b/src/WallabagBundle/Tests/Controller/DefaultControllerTest.php
new file mode 100644
index 000000000..e90224389
--- /dev/null
+++ b/src/WallabagBundle/Tests/Controller/DefaultControllerTest.php
@@ -0,0 +1,18 @@
+request('GET', '/app/index');
+
+ $this->assertEquals(200, $client->getResponse()->getStatusCode());
+ $this->assertTrue($crawler->filter('html:contains("Homepage")')->count() > 0);
+ }
+}
diff --git a/src/WallabagBundle/WallabagBundle.php b/src/WallabagBundle/WallabagBundle.php
new file mode 100644
index 000000000..ddfb13f95
--- /dev/null
+++ b/src/WallabagBundle/WallabagBundle.php
@@ -0,0 +1,9 @@
+unregister();
+$apcLoader->register(true);
+*/
+
+require_once __DIR__.'/../app/AppKernel.php';
+//require_once __DIR__.'/../app/AppCache.php';
+
+$kernel = new AppKernel('prod', false);
+$kernel->loadClassCache();
+//$kernel = new AppCache($kernel);
+
+// When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter
+//Request::enableHttpMethodParameterOverride();
+$request = Request::createFromGlobals();
+$response = $kernel->handle($request);
+$response->send();
+$kernel->terminate($request, $response);
diff --git a/web/app_dev.php b/web/app_dev.php
new file mode 100644
index 000000000..e0279c2ae
--- /dev/null
+++ b/web/app_dev.php
@@ -0,0 +1,30 @@
+loadClassCache();
+$request = Request::createFromGlobals();
+$response = $kernel->handle($request);
+$response->send();
+$kernel->terminate($request, $response);
diff --git a/web/bundles/acmedemo b/web/bundles/acmedemo
new file mode 120000
index 000000000..d07485dea
--- /dev/null
+++ b/web/bundles/acmedemo
@@ -0,0 +1 @@
+../../src/Acme/DemoBundle/Resources/public/
\ No newline at end of file
diff --git a/web/bundles/framework b/web/bundles/framework
new file mode 120000
index 000000000..b828f069c
--- /dev/null
+++ b/web/bundles/framework
@@ -0,0 +1 @@
+../../vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/public/
\ No newline at end of file
diff --git a/web/bundles/sensiodistribution b/web/bundles/sensiodistribution
new file mode 120000
index 000000000..2886899eb
--- /dev/null
+++ b/web/bundles/sensiodistribution
@@ -0,0 +1 @@
+../../vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Resources/public/
\ No newline at end of file