aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNicolas Lœuillet <nicolas@loeuillet.org>2015-09-13 21:07:27 +0200
committerNicolas Lœuillet <nicolas@loeuillet.org>2015-09-13 21:07:27 +0200
commitb004a236ba0cc96bf530801a55cdddf9ec809d13 (patch)
tree9cd57b48d5a4c5ec7952ba02736c8209f1c95c69
parent4d5fd9be812825c480589cdcfcec281ffb5aa66a (diff)
parent1a5f7e2d88284419654057fda71e2b0be9b5439a (diff)
downloadwallabag-b004a236ba0cc96bf530801a55cdddf9ec809d13.tar.gz
wallabag-b004a236ba0cc96bf530801a55cdddf9ec809d13.tar.zst
wallabag-b004a236ba0cc96bf530801a55cdddf9ec809d13.zip
Merge pull request #1401 from wallabag/v2-baggy-themes
Cleanup baggy
-rw-r--r--composer.lock107
-rw-r--r--src/Wallabag/CoreBundle/Filter/EntryFilterType.php2
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/Entry/entries.html.twig48
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/base.html.twig56
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/_global/public/css/jquery-ui-1.10.4.custom.css560
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/_global/public/css/jquery-ui-1.10.4.custom.min.css7
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/_global/public/css/knacss.css1
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/_global/public/css/style.css447
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/jquery-ui-1.10.4.custom.js2519
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/jquery-ui-1.10.4.custom.min.js6
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig (renamed from src/Wallabag/CoreBundle/Resources/views/Config/index.html.twig)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/edit.html.twig (renamed from src/Wallabag/CoreBundle/Resources/views/Entry/edit.html.twig)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig120
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig (renamed from src/Wallabag/CoreBundle/Resources/views/Entry/entries.xml.twig)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig (renamed from src/Wallabag/CoreBundle/Resources/views/Entry/entry.html.twig)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new.html.twig (renamed from src/Wallabag/CoreBundle/Resources/views/Entry/new.html.twig)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new_form.html.twig (renamed from src/Wallabag/CoreBundle/Resources/views/Entry/new_form.html.twig)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Mail/forgotPassword.txt.twig (renamed from src/Wallabag/CoreBundle/Resources/views/Mail/forgotPassword.txt.twig)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Security/checkEmail.html.twig (renamed from src/Wallabag/CoreBundle/Resources/views/Security/checkEmail.html.twig)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Security/forgotPassword.html.twig (renamed from src/Wallabag/CoreBundle/Resources/views/Security/forgotPassword.html.twig)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Security/login.html.twig (renamed from src/Wallabag/CoreBundle/Resources/views/Security/login.html.twig)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Security/reset.html.twig (renamed from src/Wallabag/CoreBundle/Resources/views/Security/reset.html.twig)0
-rwxr-xr-xsrc/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig (renamed from src/Wallabag/CoreBundle/Resources/views/Static/about.html.twig)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig (renamed from src/Wallabag/CoreBundle/Resources/views/Static/howto.html.twig)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/new_form.html.twig (renamed from src/Wallabag/CoreBundle/Resources/views/Tag/new_form.html.twig)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig (renamed from src/Wallabag/CoreBundle/Resources/views/Tag/tags.html.twig)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig55
-rwxr-xr-xsrc/Wallabag/CoreBundle/Resources/views/themes/baggy/public/css/main.css28
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/js/autoClose.js (renamed from src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/autoClose.js)0
-rwxr-xr-xsrc/Wallabag/CoreBundle/Resources/views/themes/baggy/public/js/autoCompleteTags.js (renamed from src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/autoCompleteTags.js)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/js/closeMessage.js (renamed from src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/closeMessage.js)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/js/popupForm.js (renamed from src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/popupForm.js)23
-rwxr-xr-xsrc/Wallabag/CoreBundle/Resources/views/themes/baggy/public/js/saveLink.js (renamed from src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/saveLink.js)0
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig34
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Mail/forgotPassword.txt.twig6
35 files changed, 322 insertions, 3697 deletions
diff --git a/composer.lock b/composer.lock
index 7dbb3cd8..d8c55fda 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1,7 +1,7 @@
1{ 1{
2 "_readme": [ 2 "_readme": [
3 "This file locks the dependencies of your project to a known state", 3 "This file locks the dependencies of your project to a known state",
4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", 4 "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5 "This file is @generated automatically" 5 "This file is @generated automatically"
6 ], 6 ],
7 "hash": "d457fa385420eb29a177ac38eac977c3", 7 "hash": "d457fa385420eb29a177ac38eac977c3",
@@ -693,16 +693,16 @@
693 }, 693 },
694 { 694 {
695 "name": "doctrine/orm", 695 "name": "doctrine/orm",
696 "version": "v2.5.0", 696 "version": "v2.5.1",
697 "source": { 697 "source": {
698 "type": "git", 698 "type": "git",
699 "url": "https://github.com/doctrine/doctrine2.git", 699 "url": "https://github.com/doctrine/doctrine2.git",
700 "reference": "aa80c7d2c55a372f5f9f825f5c66dbda53a6e3fe" 700 "reference": "e6a83bedbe67579cb0bfb688e982e617943a2945"
701 }, 701 },
702 "dist": { 702 "dist": {
703 "type": "zip", 703 "type": "zip",
704 "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/aa80c7d2c55a372f5f9f825f5c66dbda53a6e3fe", 704 "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/e6a83bedbe67579cb0bfb688e982e617943a2945",
705 "reference": "aa80c7d2c55a372f5f9f825f5c66dbda53a6e3fe", 705 "reference": "e6a83bedbe67579cb0bfb688e982e617943a2945",
706 "shasum": "" 706 "shasum": ""
707 }, 707 },
708 "require": { 708 "require": {
@@ -766,7 +766,7 @@
766 "database", 766 "database",
767 "orm" 767 "orm"
768 ], 768 ],
769 "time": "2015-04-02 20:40:18" 769 "time": "2015-08-31 12:59:39"
770 }, 770 },
771 { 771 {
772 "name": "ezyang/htmlpurifier", 772 "name": "ezyang/htmlpurifier",
@@ -948,16 +948,16 @@
948 "source": { 948 "source": {
949 "type": "git", 949 "type": "git",
950 "url": "https://github.com/FriendsOfSymfony/FOSUserBundle.git", 950 "url": "https://github.com/FriendsOfSymfony/FOSUserBundle.git",
951 "reference": "336d9cd8ba0c5a462b3e70be144a7bef5377b219" 951 "reference": "6b7bb04c6d507bb5356bf70b2d1bc30ce64ffc60"
952 }, 952 },
953 "dist": { 953 "dist": {
954 "type": "zip", 954 "type": "zip",
955 "url": "https://api.github.com/repos/FriendsOfSymfony/FOSUserBundle/zipball/336d9cd8ba0c5a462b3e70be144a7bef5377b219", 955 "url": "https://api.github.com/repos/FriendsOfSymfony/FOSUserBundle/zipball/6b7bb04c6d507bb5356bf70b2d1bc30ce64ffc60",
956 "reference": "336d9cd8ba0c5a462b3e70be144a7bef5377b219", 956 "reference": "6b7bb04c6d507bb5356bf70b2d1bc30ce64ffc60",
957 "shasum": "" 957 "shasum": ""
958 }, 958 },
959 "require": { 959 "require": {
960 "php": ">=5.3.2", 960 "php": ">=5.3.9",
961 "symfony/form": "~2.3", 961 "symfony/form": "~2.3",
962 "symfony/framework-bundle": "~2.3", 962 "symfony/framework-bundle": "~2.3",
963 "symfony/security-bundle": "~2.3", 963 "symfony/security-bundle": "~2.3",
@@ -1007,7 +1007,7 @@
1007 "keywords": [ 1007 "keywords": [
1008 "User management" 1008 "User management"
1009 ], 1009 ],
1010 "time": "2015-08-14 09:45:59" 1010 "time": "2015-09-07 08:53:52"
1011 }, 1011 },
1012 { 1012 {
1013 "name": "guzzlehttp/guzzle", 1013 "name": "guzzlehttp/guzzle",
@@ -1267,23 +1267,23 @@
1267 }, 1267 },
1268 { 1268 {
1269 "name": "j0k3r/graby", 1269 "name": "j0k3r/graby",
1270 "version": "1.0.0-alpha.0", 1270 "version": "1.0.0-alpha.1",
1271 "source": { 1271 "source": {
1272 "type": "git", 1272 "type": "git",
1273 "url": "https://github.com/j0k3r/graby.git", 1273 "url": "https://github.com/j0k3r/graby.git",
1274 "reference": "553a5ddd35e89f37fce2275e1423cc4451c40dbf" 1274 "reference": "9d4f62aa83a7cd563fe3ca9fcc4b176d7e1d264c"
1275 }, 1275 },
1276 "dist": { 1276 "dist": {
1277 "type": "zip", 1277 "type": "zip",
1278 "url": "https://api.github.com/repos/j0k3r/graby/zipball/553a5ddd35e89f37fce2275e1423cc4451c40dbf", 1278 "url": "https://api.github.com/repos/j0k3r/graby/zipball/9d4f62aa83a7cd563fe3ca9fcc4b176d7e1d264c",
1279 "reference": "553a5ddd35e89f37fce2275e1423cc4451c40dbf", 1279 "reference": "9d4f62aa83a7cd563fe3ca9fcc4b176d7e1d264c",
1280 "shasum": "" 1280 "shasum": ""
1281 }, 1281 },
1282 "require": { 1282 "require": {
1283 "fin1te/safecurl": "~1.1", 1283 "fin1te/safecurl": "~1.1",
1284 "guzzlehttp/guzzle": "^5.2.0", 1284 "guzzlehttp/guzzle": "^5.2.0",
1285 "htmlawed/htmlawed": "^1.1.19", 1285 "htmlawed/htmlawed": "^1.1.19",
1286 "j0k3r/graby-site-config": "dev-master", 1286 "j0k3r/graby-site-config": "^1.0.0",
1287 "j0k3r/php-readability": "^1.0", 1287 "j0k3r/php-readability": "^1.0",
1288 "monolog/monolog": "^1.13.1", 1288 "monolog/monolog": "^1.13.1",
1289 "neitanod/forceutf8": "^1.4", 1289 "neitanod/forceutf8": "^1.4",
@@ -1314,20 +1314,20 @@
1314 } 1314 }
1315 ], 1315 ],
1316 "description": "Graby helps you extract article content from web pages", 1316 "description": "Graby helps you extract article content from web pages",
1317 "time": "2015-08-29 10:16:47" 1317 "time": "2015-09-13 10:07:45"
1318 }, 1318 },
1319 { 1319 {
1320 "name": "j0k3r/graby-site-config", 1320 "name": "j0k3r/graby-site-config",
1321 "version": "dev-master", 1321 "version": "1.0.2",
1322 "source": { 1322 "source": {
1323 "type": "git", 1323 "type": "git",
1324 "url": "https://github.com/j0k3r/graby-site-config.git", 1324 "url": "https://github.com/j0k3r/graby-site-config.git",
1325 "reference": "a5b3add9fcd716c86b8c4220bdbdfbc7e79dd182" 1325 "reference": "9ad65e69bb21397dfededd420e1d4ab22006993c"
1326 }, 1326 },
1327 "dist": { 1327 "dist": {
1328 "type": "zip", 1328 "type": "zip",
1329 "url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/a5b3add9fcd716c86b8c4220bdbdfbc7e79dd182", 1329 "url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/9ad65e69bb21397dfededd420e1d4ab22006993c",
1330 "reference": "a5b3add9fcd716c86b8c4220bdbdfbc7e79dd182", 1330 "reference": "9ad65e69bb21397dfededd420e1d4ab22006993c",
1331 "shasum": "" 1331 "shasum": ""
1332 }, 1332 },
1333 "require": { 1333 "require": {
@@ -1336,7 +1336,7 @@
1336 "type": "library", 1336 "type": "library",
1337 "autoload": { 1337 "autoload": {
1338 "psr-4": { 1338 "psr-4": {
1339 "GrabySiteConfig\\SiteConfig\\": "/" 1339 "GrabySiteConfig\\SiteConfig\\": "src/"
1340 } 1340 }
1341 }, 1341 },
1342 "notification-url": "https://packagist.org/downloads/", 1342 "notification-url": "https://packagist.org/downloads/",
@@ -1350,7 +1350,7 @@
1350 } 1350 }
1351 ], 1351 ],
1352 "description": "Graby site config files", 1352 "description": "Graby site config files",
1353 "time": "2015-09-10 12:13:05" 1353 "time": "2015-09-13 10:26:25"
1354 }, 1354 },
1355 { 1355 {
1356 "name": "j0k3r/php-readability", 1356 "name": "j0k3r/php-readability",
@@ -2740,32 +2740,37 @@
2740 }, 2740 },
2741 { 2741 {
2742 "name": "symfony/assetic-bundle", 2742 "name": "symfony/assetic-bundle",
2743 "version": "v2.6.1", 2743 "version": "v2.7.0",
2744 "source": { 2744 "source": {
2745 "type": "git", 2745 "type": "git",
2746 "url": "https://github.com/symfony/AsseticBundle.git", 2746 "url": "https://github.com/symfony/AsseticBundle.git",
2747 "reference": "422b0add2110f0cf9bc7a873a386ea053f4a89f0" 2747 "reference": "3ae5c8ca3079b6e0033cc9fbfb6500e2bc964da5"
2748 }, 2748 },
2749 "dist": { 2749 "dist": {
2750 "type": "zip", 2750 "type": "zip",
2751 "url": "https://api.github.com/repos/symfony/AsseticBundle/zipball/422b0add2110f0cf9bc7a873a386ea053f4a89f0", 2751 "url": "https://api.github.com/repos/symfony/AsseticBundle/zipball/3ae5c8ca3079b6e0033cc9fbfb6500e2bc964da5",
2752 "reference": "422b0add2110f0cf9bc7a873a386ea053f4a89f0", 2752 "reference": "3ae5c8ca3079b6e0033cc9fbfb6500e2bc964da5",
2753 "shasum": "" 2753 "shasum": ""
2754 }, 2754 },
2755 "require": { 2755 "require": {
2756 "kriswallsmith/assetic": "~1.2", 2756 "kriswallsmith/assetic": "~1.3",
2757 "php": ">=5.3.0", 2757 "php": ">=5.3.0",
2758 "symfony/console": "~2.3", 2758 "symfony/console": "~2.3",
2759 "symfony/dependency-injection": "~2.3", 2759 "symfony/dependency-injection": "~2.3",
2760 "symfony/framework-bundle": "~2.3", 2760 "symfony/framework-bundle": "~2.3",
2761 "symfony/yaml": "~2.3" 2761 "symfony/yaml": "~2.3"
2762 }, 2762 },
2763 "conflict": {
2764 "kriswallsmith/spork": "<=0.2",
2765 "twig/twig": "<1.20"
2766 },
2763 "require-dev": { 2767 "require-dev": {
2764 "kriswallsmith/spork": "~0.2", 2768 "kriswallsmith/spork": "~0.3",
2765 "patchwork/jsqueeze": "~1.0", 2769 "patchwork/jsqueeze": "~1.0",
2766 "symfony/class-loader": "~2.3", 2770 "symfony/class-loader": "~2.3",
2767 "symfony/css-selector": "~2.3", 2771 "symfony/css-selector": "~2.3",
2768 "symfony/dom-crawler": "~2.3", 2772 "symfony/dom-crawler": "~2.3",
2773 "symfony/phpunit-bridge": "~2.7",
2769 "symfony/twig-bundle": "~2.3" 2774 "symfony/twig-bundle": "~2.3"
2770 }, 2775 },
2771 "suggest": { 2776 "suggest": {
@@ -2775,7 +2780,7 @@
2775 "type": "symfony-bundle", 2780 "type": "symfony-bundle",
2776 "extra": { 2781 "extra": {
2777 "branch-alias": { 2782 "branch-alias": {
2778 "dev-master": "2.5-dev" 2783 "dev-master": "2.7-dev"
2779 } 2784 }
2780 }, 2785 },
2781 "autoload": { 2786 "autoload": {
@@ -2801,7 +2806,7 @@
2801 "compression", 2806 "compression",
2802 "minification" 2807 "minification"
2803 ], 2808 ],
2804 "time": "2015-01-27 12:45:16" 2809 "time": "2015-09-01 00:05:29"
2805 }, 2810 },
2806 { 2811 {
2807 "name": "symfony/monolog-bundle", 2812 "name": "symfony/monolog-bundle",
@@ -2921,23 +2926,23 @@
2921 }, 2926 },
2922 { 2927 {
2923 "name": "symfony/symfony", 2928 "name": "symfony/symfony",
2924 "version": "v2.7.3", 2929 "version": "v2.7.4",
2925 "source": { 2930 "source": {
2926 "type": "git", 2931 "type": "git",
2927 "url": "https://github.com/symfony/symfony.git", 2932 "url": "https://github.com/symfony/symfony.git",
2928 "reference": "a9af4708b4bb650c4897e9b8dfbfbdb2ea5f0486" 2933 "reference": "1fdf23fe28876844b887b0e1935c9adda43ee645"
2929 }, 2934 },
2930 "dist": { 2935 "dist": {
2931 "type": "zip", 2936 "type": "zip",
2932 "url": "https://api.github.com/repos/symfony/symfony/zipball/a9af4708b4bb650c4897e9b8dfbfbdb2ea5f0486", 2937 "url": "https://api.github.com/repos/symfony/symfony/zipball/1fdf23fe28876844b887b0e1935c9adda43ee645",
2933 "reference": "a9af4708b4bb650c4897e9b8dfbfbdb2ea5f0486", 2938 "reference": "1fdf23fe28876844b887b0e1935c9adda43ee645",
2934 "shasum": "" 2939 "shasum": ""
2935 }, 2940 },
2936 "require": { 2941 "require": {
2937 "doctrine/common": "~2.3", 2942 "doctrine/common": "~2.3",
2938 "php": ">=5.3.9", 2943 "php": ">=5.3.9",
2939 "psr/log": "~1.0", 2944 "psr/log": "~1.0",
2940 "twig/twig": "~1.18" 2945 "twig/twig": "~1.20|~2.0"
2941 }, 2946 },
2942 "replace": { 2947 "replace": {
2943 "symfony/asset": "self.version", 2948 "symfony/asset": "self.version",
@@ -3039,7 +3044,7 @@
3039 "keywords": [ 3044 "keywords": [
3040 "framework" 3045 "framework"
3041 ], 3046 ],
3042 "time": "2015-07-31 13:24:45" 3047 "time": "2015-09-08 14:26:39"
3043 }, 3048 },
3044 { 3049 {
3045 "name": "tecnick.com/tcpdf", 3050 "name": "tecnick.com/tcpdf",
@@ -3106,20 +3111,20 @@
3106 }, 3111 },
3107 { 3112 {
3108 "name": "twig/extensions", 3113 "name": "twig/extensions",
3109 "version": "v1.2.0", 3114 "version": "v1.3.0",
3110 "source": { 3115 "source": {
3111 "type": "git", 3116 "type": "git",
3112 "url": "https://github.com/twigphp/Twig-extensions.git", 3117 "url": "https://github.com/twigphp/Twig-extensions.git",
3113 "reference": "8cf4b9fe04077bd54fc73f4fde83347040c3b8cd" 3118 "reference": "449e3c8a9ffad7c2479c7864557275a32b037499"
3114 }, 3119 },
3115 "dist": { 3120 "dist": {
3116 "type": "zip", 3121 "type": "zip",
3117 "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/8cf4b9fe04077bd54fc73f4fde83347040c3b8cd", 3122 "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/449e3c8a9ffad7c2479c7864557275a32b037499",
3118 "reference": "8cf4b9fe04077bd54fc73f4fde83347040c3b8cd", 3123 "reference": "449e3c8a9ffad7c2479c7864557275a32b037499",
3119 "shasum": "" 3124 "shasum": ""
3120 }, 3125 },
3121 "require": { 3126 "require": {
3122 "twig/twig": "~1.12" 3127 "twig/twig": "~1.20|~2.0"
3123 }, 3128 },
3124 "require-dev": { 3129 "require-dev": {
3125 "symfony/translation": "~2.3" 3130 "symfony/translation": "~2.3"
@@ -3130,7 +3135,7 @@
3130 "type": "library", 3135 "type": "library",
3131 "extra": { 3136 "extra": {
3132 "branch-alias": { 3137 "branch-alias": {
3133 "dev-master": "1.2.x-dev" 3138 "dev-master": "1.3-dev"
3134 } 3139 }
3135 }, 3140 },
3136 "autoload": { 3141 "autoload": {
@@ -3154,7 +3159,7 @@
3154 "i18n", 3159 "i18n",
3155 "text" 3160 "text"
3156 ], 3161 ],
3157 "time": "2014-10-30 14:30:03" 3162 "time": "2015-08-22 16:38:35"
3158 }, 3163 },
3159 { 3164 {
3160 "name": "twig/twig", 3165 "name": "twig/twig",
@@ -3323,7 +3328,7 @@
3323 ], 3328 ],
3324 "authors": [ 3329 "authors": [
3325 { 3330 {
3326 "name": "William Durand", 3331 "name": "William DURAND",
3327 "email": "william.durand1@gmail.com" 3332 "email": "william.durand1@gmail.com"
3328 } 3333 }
3329 ], 3334 ],
@@ -3408,7 +3413,7 @@
3408 ], 3413 ],
3409 "authors": [ 3414 "authors": [
3410 { 3415 {
3411 "name": "William Durand", 3416 "name": "William DURAND",
3412 "email": "william.durand1@gmail.com" 3417 "email": "william.durand1@gmail.com"
3413 } 3418 }
3414 ], 3419 ],
@@ -3890,16 +3895,16 @@
3890 }, 3895 },
3891 { 3896 {
3892 "name": "phpunit/phpunit", 3897 "name": "phpunit/phpunit",
3893 "version": "4.8.5", 3898 "version": "4.8.6",
3894 "source": { 3899 "source": {
3895 "type": "git", 3900 "type": "git",
3896 "url": "https://github.com/sebastianbergmann/phpunit.git", 3901 "url": "https://github.com/sebastianbergmann/phpunit.git",
3897 "reference": "9b7417edaf28059ea63d86be941e6004dbfcc0cc" 3902 "reference": "2246830f4a1a551c67933e4171bf2126dc29d357"
3898 }, 3903 },
3899 "dist": { 3904 "dist": {
3900 "type": "zip", 3905 "type": "zip",
3901 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9b7417edaf28059ea63d86be941e6004dbfcc0cc", 3906 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2246830f4a1a551c67933e4171bf2126dc29d357",
3902 "reference": "9b7417edaf28059ea63d86be941e6004dbfcc0cc", 3907 "reference": "2246830f4a1a551c67933e4171bf2126dc29d357",
3903 "shasum": "" 3908 "shasum": ""
3904 }, 3909 },
3905 "require": { 3910 "require": {
@@ -3958,7 +3963,7 @@
3958 "testing", 3963 "testing",
3959 "xunit" 3964 "xunit"
3960 ], 3965 ],
3961 "time": "2015-08-19 09:20:57" 3966 "time": "2015-08-24 04:09:38"
3962 }, 3967 },
3963 { 3968 {
3964 "name": "phpunit/phpunit-mock-objects", 3969 "name": "phpunit/phpunit-mock-objects",
diff --git a/src/Wallabag/CoreBundle/Filter/EntryFilterType.php b/src/Wallabag/CoreBundle/Filter/EntryFilterType.php
index de95eed9..024486e6 100644
--- a/src/Wallabag/CoreBundle/Filter/EntryFilterType.php
+++ b/src/Wallabag/CoreBundle/Filter/EntryFilterType.php
@@ -33,7 +33,7 @@ class EntryFilterType extends AbstractType
33 ->add('domainName', 'filter_text', array( 33 ->add('domainName', 'filter_text', array(
34 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) { 34 'apply_filter' => function (QueryInterface $filterQuery, $field, $values) {
35 $value = $values['value']; 35 $value = $values['value'];
36 if (strlen($value) <= 3 || empty($value)) { 36 if (strlen($value) <= 2 || empty($value)) {
37 return; 37 return;
38 } 38 }
39 $expression = $filterQuery->getExpr()->like($field, $filterQuery->getExpr()->literal('%'.$value.'%')); 39 $expression = $filterQuery->getExpr()->like($field, $filterQuery->getExpr()->literal('%'.$value.'%'));
diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/entries.html.twig b/src/Wallabag/CoreBundle/Resources/views/Entry/entries.html.twig
deleted file mode 100644
index 0d295431..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/Entry/entries.html.twig
+++ /dev/null
@@ -1,48 +0,0 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title "Unread" %}
4
5{% block content %}
6 {% block pager %}
7 {% if entries is not empty %}
8 <div class="results">
9 <div class="nb-results">{{ entries.count }} {% trans %}entries{% endtrans %}</div>
10 <div class="pagination">
11 {% for p in range(1, entries.nbPages) if entries.nbPages > 1 %}
12 <li>
13 <a href="{{ path(app.request.attributes.get('_route'), app.request.query.all|merge({'page': p})) }}" class="{{ currentPage == p ? 'current':''}}" >{{ p }}</a>
14 </li>
15 {% endfor %}
16 </div>
17 </div>
18 {% endif %}
19 {% endblock %}
20
21 {% if entries is empty %}
22 <div class="messages warning"><p>{% trans %}No articles found.{% endtrans %}</p></div>
23 {% else %}
24 <div><form action="{{ path('all') }}">{{ form_rest(form) }}<button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">Filter</button></form></div>
25 {% for entry in entries %}
26 <div id="entry-{{ entry.id|e }}" class="entry">
27 <h2><a href="{{ path('view', { 'id': entry.id }) }}">{{ entry.title|raw }}</a></h2>
28 {% if entry.readingTime > 0 %}
29 <div class="estimatedTime"><span class="tool reading-time">{% trans %}estimated reading time :{% endtrans %} {{ entry.readingTime }} min</span></div>
30 {% else %}
31 <div class="estimatedTime"><span class="tool reading-time">{% trans %}estimated reading time :{% endtrans %} <small class="inferieur">&lt;</small> 1 min</span></div>
32 {% endif %}
33
34 <ul class="tools links">
35 <li><a title="{% trans %}Toggle mark as read{% endtrans %}" class="tool icon-check icon {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{% trans %}Toggle mark as read{% endtrans %}</span></a></li>
36 <li><a title="{% trans %}toggle favorite{% endtrans %}" class="tool icon-star icon {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{% trans %}toggle favorite{% endtrans %}</span></a></li>
37 <li><a title="{% trans %}delete{% endtrans %}" class="tool delete icon-trash icon" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{% trans %}delete{% endtrans %}</span></a></li>
38 <li><a href="{{ entry.url|e }}" target="_blank" title="{% trans %}original{% endtrans %} : {{ entry.title|e }}" class="tool link icon-link icon"><span>{{ entry.domainName }}</span></a></li>
39 </ul>
40 {% if entry.previewPicture is null %}
41 <p>{{ entry.content|striptags|slice(0, 300) }}&hellip;</p>
42 {% else %}
43 <img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" />
44 {% endif %}
45 </div>
46 {% endfor %}
47 {% endif %}
48{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/base.html.twig b/src/Wallabag/CoreBundle/Resources/views/base.html.twig
index 3ad776b9..152c5c28 100644
--- a/src/Wallabag/CoreBundle/Resources/views/base.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/base.html.twig
@@ -41,12 +41,8 @@
41 {% block css %}{% endblock %} 41 {% block css %}{% endblock %}
42 {% block scripts %} 42 {% block scripts %}
43 <script src="{{ asset('themes/_global/js/jquery-2.0.3.min.js') }}"></script> 43 <script src="{{ asset('themes/_global/js/jquery-2.0.3.min.js') }}"></script>
44 <script src="{{ asset('themes/_global/js/autoClose.js') }}"></script>
45 <script src="{{ asset('themes/_global/js/saveLink.js') }}"></script>
46 <script src="{{ asset('themes/_global/js/popupForm.js') }}"></script>
47 <script src="{{ asset('themes/_global/js/jquery.cookie.js') }}"></script> 44 <script src="{{ asset('themes/_global/js/jquery.cookie.js') }}"></script>
48 <script src="{{ asset('themes/_global/js/bookmarklet.js') }}"></script> 45 <script src="{{ asset('themes/_global/js/bookmarklet.js') }}"></script>
49 <script src="{{ asset('themes/_global/js/closeMessage.js') }}"></script>
50 {% endblock %} 46 {% endblock %}
51 47
52 <title>{% block title %}{% endblock %} - wallabag</title> 48 <title>{% block title %}{% endblock %} - wallabag</title>
@@ -54,54 +50,15 @@
54 </head> 50 </head>
55 51
56 <body class="{% block body_class %}{% endblock %}"> 52 <body class="{% block body_class %}{% endblock %}">
57 {% block header %} 53 {% block header %}{% endblock %}
58 <header class="w600p center mbm">
59 <h1 class="logo">
60 {% block logo %}
61 <img width="100" height="100" src="{{ asset('themes/baggy/img/logo-w.png') }}" alt="wallabag logo" />
62 {% endblock %}
63 </h1>
64 </header>
65 {% endblock %}
66 54
67 <div id="main"> 55 <div id="main">
68 {% block menu %} 56 {% block menu %}{% endblock %}
69 <button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button>
70 <ul id="links" class="links">
71 <li><a href="{{ path('unread') }}">{% trans %}unread{% endtrans %}</a></li>
72 <li><a href="{{ path('starred') }}">{% trans %}favorites{% endtrans %}</a></li>
73 <li><a href="{{ path('archive') }}"}>{% trans %}archive{% endtrans %}</a></li>
74 <li><a href="{{ path('all') }}"}>{% trans %}all{% endtrans %}</a></li>
75 <li><a href="{{ path ('tag') }}">{% trans %}tags{% endtrans %}</a></li>
76 <li><a href="{{ path('new') }}">{% trans %}save a link{% endtrans %}</a></li>
77 <li style="position: relative;"><a href="javascript: void(null);" id="search">{% trans %}search{% endtrans %}</a>
78 <div id="search-form" class="messages info popup-form">
79 <form method="get" action="index.php">
80 <h2>{% trans %}Search{% endtrans %}</h2>
81 <a href="javascript: void(null);" id="search-form-close" class="close-button--popup close-button">&times;</a>
82 <input type="hidden" name="view" value="search"></input>
83 <input required placeholder="{% trans %}Enter your search here{% endtrans %}" type="text" name="search" id="searchfield"><br>
84 <input id="submit-search" type="submit" value="{% trans %}Search{% endtrans %}"></input>
85 </form>
86 </div>
87 </li>
88 <li><a href="{{ path('config') }}">{% trans %}config{% endtrans %}</a></li>
89 <li><a href="{{ path('about') }}">{% trans %}about{% endtrans %}</a></li>
90 <li><a class="icon icon-power" href="{{ path('logout') }}" title="{% trans %}logout{% endtrans %}">{% trans %}logout{% endtrans %}</a></li>
91 </ul>
92 {% endblock %}
93 57
94 <main> 58 <main>
95 {% block precontent %}{% endblock %} 59 {% block precontent %}{% endblock %}
96 60
97 {% block messages %} 61 {% block messages %}{% endblock %}
98 {% for flashMessage in app.session.flashbag.get('notice') %}
99 <div class="messages success">
100 <a href="#" class="closeMessage">×</a>
101 <p>{{ flashMessage }}</p>
102 </div>
103 {% endfor %}
104 {% endblock %}
105 62
106 <div id="content" class="w600p"> 63 <div id="content" class="w600p">
107 {% block content %}{% endblock %} 64 {% block content %}{% endblock %}
@@ -109,11 +66,8 @@
109 </main> 66 </main>
110 </div> 67 </div>
111 68
112 {% block footer %} 69 {% block footer %}{% endblock %}
113 <footer class="w600p center mt3 mb3 smaller txtright"> 70
114 <p>{% trans %}powered by{% endtrans %} <a href="http://wallabag.org">wallabag</a></p>
115 </footer>
116 {% endblock %}
117 {% if warning_message %} 71 {% if warning_message %}
118 <div id="warning_message"> 72 <div id="warning_message">
119 {{ warning_message | raw }} 73 {{ warning_message | raw }}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/css/jquery-ui-1.10.4.custom.css b/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/css/jquery-ui-1.10.4.custom.css
deleted file mode 100644
index 5690172f..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/css/jquery-ui-1.10.4.custom.css
+++ /dev/null
@@ -1,560 +0,0 @@
1/*! jQuery UI - v1.10.4 - 2014-03-09
2* http://jqueryui.com
3* Includes: jquery.ui.core.css, jquery.ui.autocomplete.css, jquery.ui.menu.css, jquery.ui.theme.css
4* 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
5* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
6
7/* Layout helpers
8----------------------------------*/
9.ui-helper-hidden {
10 display: none;
11}
12.ui-helper-hidden-accessible {
13 border: 0;
14 clip: rect(0 0 0 0);
15 height: 1px;
16 margin: -1px;
17 overflow: hidden;
18 padding: 0;
19 position: absolute;
20 width: 1px;
21}
22.ui-helper-reset {
23 margin: 0;
24 padding: 0;
25 border: 0;
26 outline: 0;
27 line-height: 1.3;
28 text-decoration: none;
29 font-size: 100%;
30 list-style: none;
31}
32.ui-helper-clearfix:before,
33.ui-helper-clearfix:after {
34 content: "";
35 display: table;
36 border-collapse: collapse;
37}
38.ui-helper-clearfix:after {
39 clear: both;
40}
41.ui-helper-clearfix {
42 min-height: 0; /* support: IE7 */
43}
44.ui-helper-zfix {
45 width: 100%;
46 height: 100%;
47 top: 0;
48 left: 0;
49 position: absolute;
50 opacity: 0;
51 filter:Alpha(Opacity=0);
52}
53
54.ui-front {
55 z-index: 100;
56}
57
58
59/* Interaction Cues
60----------------------------------*/
61.ui-state-disabled {
62 cursor: default !important;
63}
64
65
66/* Icons
67----------------------------------*/
68
69/* states and images */
70.ui-icon {
71 display: block;
72 text-indent: -99999px;
73 overflow: hidden;
74 background-repeat: no-repeat;
75}
76
77
78/* Misc visuals
79----------------------------------*/
80
81/* Overlays */
82.ui-widget-overlay {
83 position: fixed;
84 top: 0;
85 left: 0;
86 width: 100%;
87 height: 100%;
88}
89.ui-autocomplete {
90 position: absolute;
91 top: 0;
92 left: 0;
93 cursor: default;
94}
95.ui-menu {
96 list-style: none;
97 padding: 2px;
98 margin: 0;
99 display: block;
100 outline: none;
101}
102.ui-menu .ui-menu {
103 margin-top: -3px;
104 position: absolute;
105}
106.ui-menu .ui-menu-item {
107 margin: 0;
108 padding: 0;
109 width: 100%;
110 /* support: IE10, see #8844 */
111 list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
112}
113.ui-menu .ui-menu-divider {
114 margin: 5px -2px 5px -2px;
115 height: 0;
116 font-size: 0;
117 line-height: 0;
118 border-width: 1px 0 0 0;
119}
120.ui-menu .ui-menu-item a {
121 text-decoration: none;
122 display: block;
123 padding: 2px .4em;
124 line-height: 1.5;
125 min-height: 0; /* support: IE7 */
126 font-weight: normal;
127}
128.ui-menu .ui-menu-item a.ui-state-focus,
129.ui-menu .ui-menu-item a.ui-state-active {
130 font-weight: normal;
131 margin: -1px;
132}
133
134.ui-menu .ui-state-disabled {
135 font-weight: normal;
136 margin: .4em 0 .2em;
137 line-height: 1.5;
138}
139.ui-menu .ui-state-disabled a {
140 cursor: default;
141}
142
143/* icon support */
144.ui-menu-icons {
145 position: relative;
146}
147.ui-menu-icons .ui-menu-item a {
148 position: relative;
149 padding-left: 2em;
150}
151
152/* left-aligned */
153.ui-menu .ui-icon {
154 position: absolute;
155 top: .2em;
156 left: .2em;
157}
158
159/* right-aligned */
160.ui-menu .ui-menu-icon {
161 position: static;
162 float: right;
163}
164
165/* Component containers
166----------------------------------*/
167.ui-widget {
168 font-family: Verdana,Arial,sans-serif;
169 font-size: 1.1em;
170}
171.ui-widget .ui-widget {
172 font-size: 1em;
173}
174.ui-widget input,
175.ui-widget select,
176.ui-widget textarea,
177.ui-widget button {
178 font-family: Verdana,Arial,sans-serif;
179 font-size: 1em;
180}
181.ui-widget-content {
182 border: 1px solid #aaaaaa;
183 background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;
184 color: #222222;
185}
186.ui-widget-content a {
187 color: #222222;
188}
189.ui-widget-header {
190 border: 1px solid #aaaaaa;
191 background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;
192 color: #222222;
193 font-weight: bold;
194}
195.ui-widget-header a {
196 color: #222222;
197}
198
199/* Interaction states
200----------------------------------*/
201.ui-state-default,
202.ui-widget-content .ui-state-default,
203.ui-widget-header .ui-state-default {
204 border: 1px solid #d3d3d3;
205 background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
206 font-weight: normal;
207 color: #555555;
208}
209.ui-state-default a,
210.ui-state-default a:link,
211.ui-state-default a:visited {
212 color: #555555;
213 text-decoration: none;
214}
215.ui-state-hover,
216.ui-widget-content .ui-state-hover,
217.ui-widget-header .ui-state-hover,
218.ui-state-focus,
219.ui-widget-content .ui-state-focus,
220.ui-widget-header .ui-state-focus {
221 border: 1px solid #999999;
222 background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;
223 font-weight: normal;
224 color: #212121;
225}
226.ui-state-hover a,
227.ui-state-hover a:hover,
228.ui-state-hover a:link,
229.ui-state-hover a:visited,
230.ui-state-focus a,
231.ui-state-focus a:hover,
232.ui-state-focus a:link,
233.ui-state-focus a:visited {
234 color: #212121;
235 text-decoration: none;
236}
237.ui-state-active,
238.ui-widget-content .ui-state-active,
239.ui-widget-header .ui-state-active {
240 border: 1px solid #aaaaaa;
241 background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
242 font-weight: normal;
243 color: #212121;
244}
245.ui-state-active a,
246.ui-state-active a:link,
247.ui-state-active a:visited {
248 color: #212121;
249 text-decoration: none;
250}
251
252/* Interaction Cues
253----------------------------------*/
254.ui-state-highlight,
255.ui-widget-content .ui-state-highlight,
256.ui-widget-header .ui-state-highlight {
257 border: 1px solid #fcefa1;
258 background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;
259 color: #363636;
260}
261.ui-state-highlight a,
262.ui-widget-content .ui-state-highlight a,
263.ui-widget-header .ui-state-highlight a {
264 color: #363636;
265}
266.ui-state-error,
267.ui-widget-content .ui-state-error,
268.ui-widget-header .ui-state-error {
269 border: 1px solid #cd0a0a;
270 background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;
271 color: #cd0a0a;
272}
273.ui-state-error a,
274.ui-widget-content .ui-state-error a,
275.ui-widget-header .ui-state-error a {
276 color: #cd0a0a;
277}
278.ui-state-error-text,
279.ui-widget-content .ui-state-error-text,
280.ui-widget-header .ui-state-error-text {
281 color: #cd0a0a;
282}
283.ui-priority-primary,
284.ui-widget-content .ui-priority-primary,
285.ui-widget-header .ui-priority-primary {
286 font-weight: bold;
287}
288.ui-priority-secondary,
289.ui-widget-content .ui-priority-secondary,
290.ui-widget-header .ui-priority-secondary {
291 opacity: .7;
292 filter:Alpha(Opacity=70);
293 font-weight: normal;
294}
295.ui-state-disabled,
296.ui-widget-content .ui-state-disabled,
297.ui-widget-header .ui-state-disabled {
298 opacity: .35;
299 filter:Alpha(Opacity=35);
300 background-image: none;
301}
302.ui-state-disabled .ui-icon {
303 filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
304}
305
306/* Icons
307----------------------------------*/
308
309/* states and images */
310.ui-icon {
311 width: 16px;
312 height: 16px;
313}
314.ui-icon,
315.ui-widget-content .ui-icon {
316 background-image: url(images/ui-icons_222222_256x240.png);
317}
318.ui-widget-header .ui-icon {
319 background-image: url(images/ui-icons_222222_256x240.png);
320}
321.ui-state-default .ui-icon {
322 background-image: url(images/ui-icons_888888_256x240.png);
323}
324.ui-state-hover .ui-icon,
325.ui-state-focus .ui-icon {
326 background-image: url(images/ui-icons_454545_256x240.png);
327}
328.ui-state-active .ui-icon {
329 background-image: url(images/ui-icons_454545_256x240.png);
330}
331.ui-state-highlight .ui-icon {
332 background-image: url(images/ui-icons_2e83ff_256x240.png);
333}
334.ui-state-error .ui-icon,
335.ui-state-error-text .ui-icon {
336 background-image: url(images/ui-icons_cd0a0a_256x240.png);
337}
338
339/* positioning */
340.ui-icon-blank { background-position: 16px 16px; }
341.ui-icon-carat-1-n { background-position: 0 0; }
342.ui-icon-carat-1-ne { background-position: -16px 0; }
343.ui-icon-carat-1-e { background-position: -32px 0; }
344.ui-icon-carat-1-se { background-position: -48px 0; }
345.ui-icon-carat-1-s { background-position: -64px 0; }
346.ui-icon-carat-1-sw { background-position: -80px 0; }
347.ui-icon-carat-1-w { background-position: -96px 0; }
348.ui-icon-carat-1-nw { background-position: -112px 0; }
349.ui-icon-carat-2-n-s { background-position: -128px 0; }
350.ui-icon-carat-2-e-w { background-position: -144px 0; }
351.ui-icon-triangle-1-n { background-position: 0 -16px; }
352.ui-icon-triangle-1-ne { background-position: -16px -16px; }
353.ui-icon-triangle-1-e { background-position: -32px -16px; }
354.ui-icon-triangle-1-se { background-position: -48px -16px; }
355.ui-icon-triangle-1-s { background-position: -64px -16px; }
356.ui-icon-triangle-1-sw { background-position: -80px -16px; }
357.ui-icon-triangle-1-w { background-position: -96px -16px; }
358.ui-icon-triangle-1-nw { background-position: -112px -16px; }
359.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
360.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
361.ui-icon-arrow-1-n { background-position: 0 -32px; }
362.ui-icon-arrow-1-ne { background-position: -16px -32px; }
363.ui-icon-arrow-1-e { background-position: -32px -32px; }
364.ui-icon-arrow-1-se { background-position: -48px -32px; }
365.ui-icon-arrow-1-s { background-position: -64px -32px; }
366.ui-icon-arrow-1-sw { background-position: -80px -32px; }
367.ui-icon-arrow-1-w { background-position: -96px -32px; }
368.ui-icon-arrow-1-nw { background-position: -112px -32px; }
369.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
370.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
371.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
372.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
373.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
374.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
375.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
376.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
377.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
378.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
379.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
380.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
381.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
382.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
383.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
384.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
385.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
386.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
387.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
388.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
389.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
390.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
391.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
392.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
393.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
394.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
395.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
396.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
397.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
398.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
399.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
400.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
401.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
402.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
403.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
404.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
405.ui-icon-arrow-4 { background-position: 0 -80px; }
406.ui-icon-arrow-4-diag { background-position: -16px -80px; }
407.ui-icon-extlink { background-position: -32px -80px; }
408.ui-icon-newwin { background-position: -48px -80px; }
409.ui-icon-refresh { background-position: -64px -80px; }
410.ui-icon-shuffle { background-position: -80px -80px; }
411.ui-icon-transfer-e-w { background-position: -96px -80px; }
412.ui-icon-transferthick-e-w { background-position: -112px -80px; }
413.ui-icon-folder-collapsed { background-position: 0 -96px; }
414.ui-icon-folder-open { background-position: -16px -96px; }
415.ui-icon-document { background-position: -32px -96px; }
416.ui-icon-document-b { background-position: -48px -96px; }
417.ui-icon-note { background-position: -64px -96px; }
418.ui-icon-mail-closed { background-position: -80px -96px; }
419.ui-icon-mail-open { background-position: -96px -96px; }
420.ui-icon-suitcase { background-position: -112px -96px; }
421.ui-icon-comment { background-position: -128px -96px; }
422.ui-icon-person { background-position: -144px -96px; }
423.ui-icon-print { background-position: -160px -96px; }
424.ui-icon-trash { background-position: -176px -96px; }
425.ui-icon-locked { background-position: -192px -96px; }
426.ui-icon-unlocked { background-position: -208px -96px; }
427.ui-icon-bookmark { background-position: -224px -96px; }
428.ui-icon-tag { background-position: -240px -96px; }
429.ui-icon-home { background-position: 0 -112px; }
430.ui-icon-flag { background-position: -16px -112px; }
431.ui-icon-calendar { background-position: -32px -112px; }
432.ui-icon-cart { background-position: -48px -112px; }
433.ui-icon-pencil { background-position: -64px -112px; }
434.ui-icon-clock { background-position: -80px -112px; }
435.ui-icon-disk { background-position: -96px -112px; }
436.ui-icon-calculator { background-position: -112px -112px; }
437.ui-icon-zoomin { background-position: -128px -112px; }
438.ui-icon-zoomout { background-position: -144px -112px; }
439.ui-icon-search { background-position: -160px -112px; }
440.ui-icon-wrench { background-position: -176px -112px; }
441.ui-icon-gear { background-position: -192px -112px; }
442.ui-icon-heart { background-position: -208px -112px; }
443.ui-icon-star { background-position: -224px -112px; }
444.ui-icon-link { background-position: -240px -112px; }
445.ui-icon-cancel { background-position: 0 -128px; }
446.ui-icon-plus { background-position: -16px -128px; }
447.ui-icon-plusthick { background-position: -32px -128px; }
448.ui-icon-minus { background-position: -48px -128px; }
449.ui-icon-minusthick { background-position: -64px -128px; }
450.ui-icon-close { background-position: -80px -128px; }
451.ui-icon-closethick { background-position: -96px -128px; }
452.ui-icon-key { background-position: -112px -128px; }
453.ui-icon-lightbulb { background-position: -128px -128px; }
454.ui-icon-scissors { background-position: -144px -128px; }
455.ui-icon-clipboard { background-position: -160px -128px; }
456.ui-icon-copy { background-position: -176px -128px; }
457.ui-icon-contact { background-position: -192px -128px; }
458.ui-icon-image { background-position: -208px -128px; }
459.ui-icon-video { background-position: -224px -128px; }
460.ui-icon-script { background-position: -240px -128px; }
461.ui-icon-alert { background-position: 0 -144px; }
462.ui-icon-info { background-position: -16px -144px; }
463.ui-icon-notice { background-position: -32px -144px; }
464.ui-icon-help { background-position: -48px -144px; }
465.ui-icon-check { background-position: -64px -144px; }
466.ui-icon-bullet { background-position: -80px -144px; }
467.ui-icon-radio-on { background-position: -96px -144px; }
468.ui-icon-radio-off { background-position: -112px -144px; }
469.ui-icon-pin-w { background-position: -128px -144px; }
470.ui-icon-pin-s { background-position: -144px -144px; }
471.ui-icon-play { background-position: 0 -160px; }
472.ui-icon-pause { background-position: -16px -160px; }
473.ui-icon-seek-next { background-position: -32px -160px; }
474.ui-icon-seek-prev { background-position: -48px -160px; }
475.ui-icon-seek-end { background-position: -64px -160px; }
476.ui-icon-seek-start { background-position: -80px -160px; }
477/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
478.ui-icon-seek-first { background-position: -80px -160px; }
479.ui-icon-stop { background-position: -96px -160px; }
480.ui-icon-eject { background-position: -112px -160px; }
481.ui-icon-volume-off { background-position: -128px -160px; }
482.ui-icon-volume-on { background-position: -144px -160px; }
483.ui-icon-power { background-position: 0 -176px; }
484.ui-icon-signal-diag { background-position: -16px -176px; }
485.ui-icon-signal { background-position: -32px -176px; }
486.ui-icon-battery-0 { background-position: -48px -176px; }
487.ui-icon-battery-1 { background-position: -64px -176px; }
488.ui-icon-battery-2 { background-position: -80px -176px; }
489.ui-icon-battery-3 { background-position: -96px -176px; }
490.ui-icon-circle-plus { background-position: 0 -192px; }
491.ui-icon-circle-minus { background-position: -16px -192px; }
492.ui-icon-circle-close { background-position: -32px -192px; }
493.ui-icon-circle-triangle-e { background-position: -48px -192px; }
494.ui-icon-circle-triangle-s { background-position: -64px -192px; }
495.ui-icon-circle-triangle-w { background-position: -80px -192px; }
496.ui-icon-circle-triangle-n { background-position: -96px -192px; }
497.ui-icon-circle-arrow-e { background-position: -112px -192px; }
498.ui-icon-circle-arrow-s { background-position: -128px -192px; }
499.ui-icon-circle-arrow-w { background-position: -144px -192px; }
500.ui-icon-circle-arrow-n { background-position: -160px -192px; }
501.ui-icon-circle-zoomin { background-position: -176px -192px; }
502.ui-icon-circle-zoomout { background-position: -192px -192px; }
503.ui-icon-circle-check { background-position: -208px -192px; }
504.ui-icon-circlesmall-plus { background-position: 0 -208px; }
505.ui-icon-circlesmall-minus { background-position: -16px -208px; }
506.ui-icon-circlesmall-close { background-position: -32px -208px; }
507.ui-icon-squaresmall-plus { background-position: -48px -208px; }
508.ui-icon-squaresmall-minus { background-position: -64px -208px; }
509.ui-icon-squaresmall-close { background-position: -80px -208px; }
510.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
511.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
512.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
513.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
514.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
515.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
516
517
518/* Misc visuals
519----------------------------------*/
520
521/* Corner radius */
522.ui-corner-all,
523.ui-corner-top,
524.ui-corner-left,
525.ui-corner-tl {
526 border-top-left-radius: 4px;
527}
528.ui-corner-all,
529.ui-corner-top,
530.ui-corner-right,
531.ui-corner-tr {
532 border-top-right-radius: 4px;
533}
534.ui-corner-all,
535.ui-corner-bottom,
536.ui-corner-left,
537.ui-corner-bl {
538 border-bottom-left-radius: 4px;
539}
540.ui-corner-all,
541.ui-corner-bottom,
542.ui-corner-right,
543.ui-corner-br {
544 border-bottom-right-radius: 4px;
545}
546
547/* Overlays */
548.ui-widget-overlay {
549 background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
550 opacity: .3;
551 filter: Alpha(Opacity=30);
552}
553.ui-widget-shadow {
554 margin: -8px 0 0 -8px;
555 padding: 8px;
556 background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
557 opacity: .3;
558 filter: Alpha(Opacity=30);
559 border-radius: 8px;
560}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/css/jquery-ui-1.10.4.custom.min.css b/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/css/jquery-ui-1.10.4.custom.min.css
deleted file mode 100644
index 4dba92a8..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/css/jquery-ui-1.10.4.custom.min.css
+++ /dev/null
@@ -1,7 +0,0 @@
1/*! jQuery UI - v1.10.4 - 2014-03-09
2* http://jqueryui.com
3* Includes: jquery.ui.core.css, jquery.ui.autocomplete.css, jquery.ui.menu.css, jquery.ui.theme.css
4* 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
5* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
6
7.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/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/css/knacss.css b/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/css/knacss.css
deleted file mode 100644
index 9e68300a..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/css/knacss.css
+++ /dev/null
@@ -1 +0,0 @@
1html{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}}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/css/style.css b/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/css/style.css
deleted file mode 100644
index ffd9d022..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/css/style.css
+++ /dev/null
@@ -1,447 +0,0 @@
1@font-face {
2 font-family: 'Roboto';
3 font-style: normal;
4 font-weight: 400;
5 src: local('Roboto Regular'), local('Roboto-Regular'), url(../fonts/Roboto.woff) format('woff');
6}
7
8
9
10body {
11 margin: 10px;
12 font-family: 'Roboto',Verdana,Geneva,sans-serif;
13 font-size: 16px;
14 color: #000;
15}
16
17header {
18 text-align: center;
19}
20
21header h1 {
22 font-size: 1.3em;
23}
24
25a,
26a:hover,
27a:visited {
28 color: #000;
29}
30
31.bouton {
32 border: none;
33 border-radius: 2px;
34 color: #fff;
35 background-color: #000;
36}
37
38.bouton:hover {
39 color: #f1f1f1;
40 background-color: #222;
41 cursor: pointer;
42}
43
44#main {
45 margin: 0 auto;
46}
47
48#main #links {
49 padding: 0;
50 text-align: center;
51 font-size: 0.9em;
52 list-style-type: none;
53}
54
55#main #links li {
56 display: inline;
57}
58
59#main #links li .current {
60 -webkit-border-radius: 2px;
61 border-radius: 2px;
62 color: #fff;
63 background-color: #000;
64}
65
66#main #sort {
67 padding: 0;
68 text-align: center;
69 list-style-type: none;
70 opacity: 0.5;
71}
72
73#main #sort li {
74 display: inline;
75 font-size: 0.9em;
76}
77
78#main #sort li + li {
79 margin-left: 10px;
80}
81
82#main #sort a {
83 padding: 2px 2px 0;
84 vertical-align: middle;
85}
86
87#main #sort img {
88 vertical-align: baseline;
89}
90#main #sort img:hover {
91 cursor: pointer;
92}
93
94#links a {
95 padding: 5px 10px;
96 text-decoration: none;
97}
98
99#links a:hover {
100 -webkit-border-radius: 2px;
101 border-radius: 2px;
102 color: #f1f1f1;
103 background-color: #040707;
104}
105
106/*** ***/
107
108/*** LINKS DISPLAY ***/
109
110#main .tool {
111 text-decoration: none;
112 cursor: pointer;
113}
114
115#main #content {
116 margin-top: 20px;
117}
118
119#main #content h2 {
120 text-decoration: none;
121 font-size: 1.3em;
122}
123
124#main #content .entry {
125 margin-top: 15px;
126 padding-bottom: 15px;
127 border-bottom: 1px dashed #222;
128 overflow: hidden;
129}
130
131/* First entry */
132#main #content .results + .entry {
133 clear: both;
134 margin-top: 0;
135}
136
137#main .entry .tools {
138 float: right;
139 text-align: right;
140 list-style-type: none;
141 opacity: 0.5;
142}
143
144#main .entry .tools .tool span {
145 display: inline-block;
146 width: 16px;
147 height: 16px;
148 /* Hide textual content */
149 overflow: hidden;
150 text-align: left;
151 text-indent: -9999px;
152}
153
154/*** ***/
155
156/*** ARTICLE PAGE ***/
157
158#article {
159 margin: 0 auto;
160}
161
162#article header {
163 border-bottom: 1px solid #222;
164}
165
166#article header {
167 text-align: left;
168}
169
170#article header h1 small {
171 float: right;
172 font-size: 0.6em;
173}
174
175#article header a {
176 text-decoration: none;
177}
178
179#article .tags {
180 font-size: 0.8em;
181 color: #888;
182 padding-bottom: 5px;
183}
184
185.backhome {
186 display: inline;
187}
188
189.results {
190 padding: 15px 0;
191 overflow: hidden;
192}
193
194.nb-results {
195 float: left;
196 font-size: 0.9em;
197 line-height: 24px;
198 vertical-align: middle;
199}
200
201#article_toolbar {
202 position: fixed;
203 bottom: 0;
204 left: 0;
205 width: 100%;
206 min-height: 50px;
207 padding-top: 17px;
208 text-align: center;
209 color: #fff;
210 opacity: 0.8;
211 background: #fff;
212}
213
214#article_toolbar li {
215 display: inline;
216 padding-right: 30px;
217}
218
219#article_toolbar .tool {
220 padding: 0 2px;
221}
222
223#article_toolbar .tool span {
224 display: inline-block;
225 width: 16px;
226 height: 16px;
227 /* Hide textual content */
228 overflow: hidden;
229 text-align: left;
230 text-indent: -9999px;
231}
232
233/*** ***/
234
235/*** PAGINATION ***/
236
237.pagination {
238 float: right;
239 text-align: right;
240}
241
242.pagination a {
243 height: 25px;
244 margin: 2px;
245 padding: 4px 8px;
246 border: 1px solid #d5d5d5;
247 text-decoration: none;
248 font-size: 11px;
249 font-weight: bold;
250 color: #333;
251}
252
253.pagination a:hover,
254.pagination a:active {
255 background-color: #efefef;
256}
257
258.pagination .current {
259 height: 25px;
260 margin: 2px;
261 padding: 4px 8px;
262 border: 1px solid #d5d5d5;
263 text-decoration: none;
264 font-size: 11px;
265 font-weight: bold;
266 color: #000;
267 background-color: #ccc;
268}
269
270.pagination .disabled {
271 display: none;
272}
273
274#bookmarklet {
275 padding: 5px;
276 border: 1px dashed #808080;
277 background: #fff;
278 cursor: move;
279}
280
281.top_link {
282 display: none;
283 z-index: 2000;
284 position: fixed;
285 right: 15px;
286 bottom: 15px;
287 padding: 20px;
288 -webkit-border-radius: 40px;
289 -moz-border-radius: 40px;
290 border-radius: 40px;
291 opacity: 0.9;
292 background: #ccc;
293}
294
295footer {
296 clear: both;
297}
298
299.reading-time {
300 font-size: 0.8em;
301}
302
303#inputform {
304 display: none;
305 margin-top: 5px;
306 margin-right: auto;
307 margin-left: auto;
308 padding-bottom: 5px;
309 max-width: 300px;
310 border-radius: 3px;
311 text-align: center;
312 color: #fff;
313 opacity: 0.8;
314 background-color: rgba(0,0,0,0.9);
315}
316
317a.back span,
318a.top span,
319a.fav span,
320a.fav span:hover,
321a.fav-off span,
322a.fav-off span:hover,
323a.archive span,
324a.archive span:hover,
325a.archive-off span,
326a.archive-off span:hover,
327a.twitter span,
328a.shaarli span,
329a.flattr span,
330a.email span,
331a.delete span,
332a.link span,
333a.bad-display span,
334a.reading-time span,
335a.print span {
336 background-repeat: no-repeat;
337}
338
339.arrow-down {
340 width: 0px;
341 height: 0px;
342 border-style: solid;
343 border-width: 10px 10px 0 10px;
344 border-color: #000 transparent transparent transparent;
345
346 position: absolute;
347 margin-top: 1.5em;
348 margin-left: -30px;
349}
350
351.two-column {
352 display: block;
353 width: 50%;
354 paddig-right: 20px;
355 float: left;
356 vertical-align: top;
357}
358
359
360/* ==========================================================================
361 "save a link" popup div related styles
362 ========================================================================== */
363
364#bagit-form {
365 display: none;
366 padding-left: 30px;
367 width: 450px;
368
369}
370
371a#bagit-form-close {
372 color: #FFF;
373 display: inline-block;
374 float: right;
375 background: url("../img/messages/close.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
376 height: 16px;
377 margin: -14px -8px 0 0;
378 width: 16px;
379 text-decoration: none;
380}
381
382
383.add-to-wallabag-link-after {
384 background-color: #000;
385 color: #fff;
386 padding: 0 4px 1px 3px;
387 font-weight: bold;
388 font-size: 0.7em;
389 border-radius: 4px;
390}
391.add-to-wallabag-link-after:hover, .add-to-wallabag-link-after:active {
392 color: #fff;
393}
394.add-to-wallabag-link-after:visited {
395 color: #999;
396}
397a.add-to-wallabag-link-after {
398 visibility: hidden;
399 position: absolute;
400 opacity: 0;
401 transition-duration: 2s;
402 transition-timing-function: ease-out;
403}
404#article article a:hover + a.add-to-wallabag-link-after, a.add-to-wallabag-link-after:hover {
405 opacity: 1;
406 visibility: visible;
407 transition-duration: .3s;
408 transition-timing-function: ease-in;
409}
410a.add-to-wallabag-link-after:after {
411 content: "w";
412}
413
414
415#add-link-result {
416 display: inline;
417 padding-left: 10px;
418}
419
420/* ==========================================================================
421 "Search" popup div related styles
422 ========================================================================== */
423
424/* Search form message needs a little more width, depending on translations */
425#search-form {
426 width: 420px;
427}
428
429.opacity03 {
430 /*opacity: 0.3;*/
431}
432
433#readLeftPercent {
434 display: inline-block;
435 /* Show textual content */
436 overflow: visible;
437 text-align: left;
438 text-indent: 0;
439 color: black;
440 width: 50px;
441}
442
443pre code {
444 font-family: "Courier New", Courier, monospace;
445 border: 1px solid #ddd;
446 font-size: 0.96em;
447}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/jquery-ui-1.10.4.custom.js b/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/jquery-ui-1.10.4.custom.js
deleted file mode 100644
index 6f599fca..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/jquery-ui-1.10.4.custom.js
+++ /dev/null
@@ -1,2519 +0,0 @@
1/*! jQuery UI - v1.10.4 - 2014-03-08
2* http://jqueryui.com
3* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.position.js, jquery.ui.autocomplete.js, jquery.ui.menu.js
4* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
5
6(function( $, undefined ) {
7
8var uuid = 0,
9 runiqueId = /^ui-id-\d+$/;
10
11// $.ui might exist from components with no dependencies, e.g., $.ui.position
12$.ui = $.ui || {};
13
14$.extend( $.ui, {
15 version: "1.10.4",
16
17 keyCode: {
18 BACKSPACE: 8,
19 COMMA: 188,
20 DELETE: 46,
21 DOWN: 40,
22 END: 35,
23 ENTER: 13,
24 ESCAPE: 27,
25 HOME: 36,
26 LEFT: 37,
27 NUMPAD_ADD: 107,
28 NUMPAD_DECIMAL: 110,
29 NUMPAD_DIVIDE: 111,
30 NUMPAD_ENTER: 108,
31 NUMPAD_MULTIPLY: 106,
32 NUMPAD_SUBTRACT: 109,
33 PAGE_DOWN: 34,
34 PAGE_UP: 33,
35 PERIOD: 190,
36 RIGHT: 39,
37 SPACE: 32,
38 TAB: 9,
39 UP: 38
40 }
41});
42
43// plugins
44$.fn.extend({
45 focus: (function( orig ) {
46 return function( delay, fn ) {
47 return typeof delay === "number" ?
48 this.each(function() {
49 var elem = this;
50 setTimeout(function() {
51 $( elem ).focus();
52 if ( fn ) {
53 fn.call( elem );
54 }
55 }, delay );
56 }) :
57 orig.apply( this, arguments );
58 };
59 })( $.fn.focus ),
60
61 scrollParent: function() {
62 var scrollParent;
63 if (($.ui.ie && (/(static|relative)/).test(this.css("position"))) || (/absolute/).test(this.css("position"))) {
64 scrollParent = this.parents().filter(function() {
65 return (/(relative|absolute|fixed)/).test($.css(this,"position")) && (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
66 }).eq(0);
67 } else {
68 scrollParent = this.parents().filter(function() {
69 return (/(auto|scroll)/).test($.css(this,"overflow")+$.css(this,"overflow-y")+$.css(this,"overflow-x"));
70 }).eq(0);
71 }
72
73 return (/fixed/).test(this.css("position")) || !scrollParent.length ? $(document) : scrollParent;
74 },
75
76 zIndex: function( zIndex ) {
77 if ( zIndex !== undefined ) {
78 return this.css( "zIndex", zIndex );
79 }
80
81 if ( this.length ) {
82 var elem = $( this[ 0 ] ), position, value;
83 while ( elem.length && elem[ 0 ] !== document ) {
84 // Ignore z-index if position is set to a value where z-index is ignored by the browser
85 // This makes behavior of this function consistent across browsers
86 // WebKit always returns auto if the element is positioned
87 position = elem.css( "position" );
88 if ( position === "absolute" || position === "relative" || position === "fixed" ) {
89 // IE returns 0 when zIndex is not specified
90 // other browsers return a string
91 // we ignore the case of nested elements with an explicit value of 0
92 // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
93 value = parseInt( elem.css( "zIndex" ), 10 );
94 if ( !isNaN( value ) && value !== 0 ) {
95 return value;
96 }
97 }
98 elem = elem.parent();
99 }
100 }
101
102 return 0;
103 },
104
105 uniqueId: function() {
106 return this.each(function() {
107 if ( !this.id ) {
108 this.id = "ui-id-" + (++uuid);
109 }
110 });
111 },
112
113 removeUniqueId: function() {
114 return this.each(function() {
115 if ( runiqueId.test( this.id ) ) {
116 $( this ).removeAttr( "id" );
117 }
118 });
119 }
120});
121
122// selectors
123function focusable( element, isTabIndexNotNaN ) {
124 var map, mapName, img,
125 nodeName = element.nodeName.toLowerCase();
126 if ( "area" === nodeName ) {
127 map = element.parentNode;
128 mapName = map.name;
129 if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
130 return false;
131 }
132 img = $( "img[usemap=#" + mapName + "]" )[0];
133 return !!img && visible( img );
134 }
135 return ( /input|select|textarea|button|object/.test( nodeName ) ?
136 !element.disabled :
137 "a" === nodeName ?
138 element.href || isTabIndexNotNaN :
139 isTabIndexNotNaN) &&
140 // the element and all of its ancestors must be visible
141 visible( element );
142}
143
144function visible( element ) {
145 return $.expr.filters.visible( element ) &&
146 !$( element ).parents().addBack().filter(function() {
147 return $.css( this, "visibility" ) === "hidden";
148 }).length;
149}
150
151$.extend( $.expr[ ":" ], {
152 data: $.expr.createPseudo ?
153 $.expr.createPseudo(function( dataName ) {
154 return function( elem ) {
155 return !!$.data( elem, dataName );
156 };
157 }) :
158 // support: jQuery <1.8
159 function( elem, i, match ) {
160 return !!$.data( elem, match[ 3 ] );
161 },
162
163 focusable: function( element ) {
164 return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
165 },
166
167 tabbable: function( element ) {
168 var tabIndex = $.attr( element, "tabindex" ),
169 isTabIndexNaN = isNaN( tabIndex );
170 return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
171 }
172});
173
174// support: jQuery <1.8
175if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {
176 $.each( [ "Width", "Height" ], function( i, name ) {
177 var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
178 type = name.toLowerCase(),
179 orig = {
180 innerWidth: $.fn.innerWidth,
181 innerHeight: $.fn.innerHeight,
182 outerWidth: $.fn.outerWidth,
183 outerHeight: $.fn.outerHeight
184 };
185
186 function reduce( elem, size, border, margin ) {
187 $.each( side, function() {
188 size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
189 if ( border ) {
190 size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
191 }
192 if ( margin ) {
193 size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
194 }
195 });
196 return size;
197 }
198
199 $.fn[ "inner" + name ] = function( size ) {
200 if ( size === undefined ) {
201 return orig[ "inner" + name ].call( this );
202 }
203
204 return this.each(function() {
205 $( this ).css( type, reduce( this, size ) + "px" );
206 });
207 };
208
209 $.fn[ "outer" + name] = function( size, margin ) {
210 if ( typeof size !== "number" ) {
211 return orig[ "outer" + name ].call( this, size );
212 }
213
214 return this.each(function() {
215 $( this).css( type, reduce( this, size, true, margin ) + "px" );
216 });
217 };
218 });
219}
220
221// support: jQuery <1.8
222if ( !$.fn.addBack ) {
223 $.fn.addBack = function( selector ) {
224 return this.add( selector == null ?
225 this.prevObject : this.prevObject.filter( selector )
226 );
227 };
228}
229
230// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)
231if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {
232 $.fn.removeData = (function( removeData ) {
233 return function( key ) {
234 if ( arguments.length ) {
235 return removeData.call( this, $.camelCase( key ) );
236 } else {
237 return removeData.call( this );
238 }
239 };
240 })( $.fn.removeData );
241}
242
243
244
245
246
247// deprecated
248$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
249
250$.support.selectstart = "onselectstart" in document.createElement( "div" );
251$.fn.extend({
252 disableSelection: function() {
253 return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
254 ".ui-disableSelection", function( event ) {
255 event.preventDefault();
256 });
257 },
258
259 enableSelection: function() {
260 return this.unbind( ".ui-disableSelection" );
261 }
262});
263
264$.extend( $.ui, {
265 // $.ui.plugin is deprecated. Use $.widget() extensions instead.
266 plugin: {
267 add: function( module, option, set ) {
268 var i,
269 proto = $.ui[ module ].prototype;
270 for ( i in set ) {
271 proto.plugins[ i ] = proto.plugins[ i ] || [];
272 proto.plugins[ i ].push( [ option, set[ i ] ] );
273 }
274 },
275 call: function( instance, name, args ) {
276 var i,
277 set = instance.plugins[ name ];
278 if ( !set || !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) {
279 return;
280 }
281
282 for ( i = 0; i < set.length; i++ ) {
283 if ( instance.options[ set[ i ][ 0 ] ] ) {
284 set[ i ][ 1 ].apply( instance.element, args );
285 }
286 }
287 }
288 },
289
290 // only used by resizable
291 hasScroll: function( el, a ) {
292
293 //If overflow is hidden, the element might have extra content, but the user wants to hide it
294 if ( $( el ).css( "overflow" ) === "hidden") {
295 return false;
296 }
297
298 var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
299 has = false;
300
301 if ( el[ scroll ] > 0 ) {
302 return true;
303 }
304
305 // TODO: determine which cases actually cause this to happen
306 // if the element doesn't have the scroll set, see if it's possible to
307 // set the scroll
308 el[ scroll ] = 1;
309 has = ( el[ scroll ] > 0 );
310 el[ scroll ] = 0;
311 return has;
312 }
313});
314
315})( jQuery );
316(function( $, undefined ) {
317
318var uuid = 0,
319 slice = Array.prototype.slice,
320 _cleanData = $.cleanData;
321$.cleanData = function( elems ) {
322 for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
323 try {
324 $( elem ).triggerHandler( "remove" );
325 // http://bugs.jquery.com/ticket/8235
326 } catch( e ) {}
327 }
328 _cleanData( elems );
329};
330
331$.widget = function( name, base, prototype ) {
332 var fullName, existingConstructor, constructor, basePrototype,
333 // proxiedPrototype allows the provided prototype to remain unmodified
334 // so that it can be used as a mixin for multiple widgets (#8876)
335 proxiedPrototype = {},
336 namespace = name.split( "." )[ 0 ];
337
338 name = name.split( "." )[ 1 ];
339 fullName = namespace + "-" + name;
340
341 if ( !prototype ) {
342 prototype = base;
343 base = $.Widget;
344 }
345
346 // create selector for plugin
347 $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
348 return !!$.data( elem, fullName );
349 };
350
351 $[ namespace ] = $[ namespace ] || {};
352 existingConstructor = $[ namespace ][ name ];
353 constructor = $[ namespace ][ name ] = function( options, element ) {
354 // allow instantiation without "new" keyword
355 if ( !this._createWidget ) {
356 return new constructor( options, element );
357 }
358
359 // allow instantiation without initializing for simple inheritance
360 // must use "new" keyword (the code above always passes args)
361 if ( arguments.length ) {
362 this._createWidget( options, element );
363 }
364 };
365 // extend with the existing constructor to carry over any static properties
366 $.extend( constructor, existingConstructor, {
367 version: prototype.version,
368 // copy the object used to create the prototype in case we need to
369 // redefine the widget later
370 _proto: $.extend( {}, prototype ),
371 // track widgets that inherit from this widget in case this widget is
372 // redefined after a widget inherits from it
373 _childConstructors: []
374 });
375
376 basePrototype = new base();
377 // we need to make the options hash a property directly on the new instance
378 // otherwise we'll modify the options hash on the prototype that we're
379 // inheriting from
380 basePrototype.options = $.widget.extend( {}, basePrototype.options );
381 $.each( prototype, function( prop, value ) {
382 if ( !$.isFunction( value ) ) {
383 proxiedPrototype[ prop ] = value;
384 return;
385 }
386 proxiedPrototype[ prop ] = (function() {
387 var _super = function() {
388 return base.prototype[ prop ].apply( this, arguments );
389 },
390 _superApply = function( args ) {
391 return base.prototype[ prop ].apply( this, args );
392 };
393 return function() {
394 var __super = this._super,
395 __superApply = this._superApply,
396 returnValue;
397
398 this._super = _super;
399 this._superApply = _superApply;
400
401 returnValue = value.apply( this, arguments );
402
403 this._super = __super;
404 this._superApply = __superApply;
405
406 return returnValue;
407 };
408 })();
409 });
410 constructor.prototype = $.widget.extend( basePrototype, {
411 // TODO: remove support for widgetEventPrefix
412 // always use the name + a colon as the prefix, e.g., draggable:start
413 // don't prefix for widgets that aren't DOM-based
414 widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name
415 }, proxiedPrototype, {
416 constructor: constructor,
417 namespace: namespace,
418 widgetName: name,
419 widgetFullName: fullName
420 });
421
422 // If this widget is being redefined then we need to find all widgets that
423 // are inheriting from it and redefine all of them so that they inherit from
424 // the new version of this widget. We're essentially trying to replace one
425 // level in the prototype chain.
426 if ( existingConstructor ) {
427 $.each( existingConstructor._childConstructors, function( i, child ) {
428 var childPrototype = child.prototype;
429
430 // redefine the child widget using the same prototype that was
431 // originally used, but inherit from the new version of the base
432 $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );
433 });
434 // remove the list of existing child constructors from the old constructor
435 // so the old child constructors can be garbage collected
436 delete existingConstructor._childConstructors;
437 } else {
438 base._childConstructors.push( constructor );
439 }
440
441 $.widget.bridge( name, constructor );
442};
443
444$.widget.extend = function( target ) {
445 var input = slice.call( arguments, 1 ),
446 inputIndex = 0,
447 inputLength = input.length,
448 key,
449 value;
450 for ( ; inputIndex < inputLength; inputIndex++ ) {
451 for ( key in input[ inputIndex ] ) {
452 value = input[ inputIndex ][ key ];
453 if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
454 // Clone objects
455 if ( $.isPlainObject( value ) ) {
456 target[ key ] = $.isPlainObject( target[ key ] ) ?
457 $.widget.extend( {}, target[ key ], value ) :
458 // Don't extend strings, arrays, etc. with objects
459 $.widget.extend( {}, value );
460 // Copy everything else by reference
461 } else {
462 target[ key ] = value;
463 }
464 }
465 }
466 }
467 return target;
468};
469
470$.widget.bridge = function( name, object ) {
471 var fullName = object.prototype.widgetFullName || name;
472 $.fn[ name ] = function( options ) {
473 var isMethodCall = typeof options === "string",
474 args = slice.call( arguments, 1 ),
475 returnValue = this;
476
477 // allow multiple hashes to be passed on init
478 options = !isMethodCall && args.length ?
479 $.widget.extend.apply( null, [ options ].concat(args) ) :
480 options;
481
482 if ( isMethodCall ) {
483 this.each(function() {
484 var methodValue,
485 instance = $.data( this, fullName );
486 if ( !instance ) {
487 return $.error( "cannot call methods on " + name + " prior to initialization; " +
488 "attempted to call method '" + options + "'" );
489 }
490 if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {
491 return $.error( "no such method '" + options + "' for " + name + " widget instance" );
492 }
493 methodValue = instance[ options ].apply( instance, args );
494 if ( methodValue !== instance && methodValue !== undefined ) {
495 returnValue = methodValue && methodValue.jquery ?
496 returnValue.pushStack( methodValue.get() ) :
497 methodValue;
498 return false;
499 }
500 });
501 } else {
502 this.each(function() {
503 var instance = $.data( this, fullName );
504 if ( instance ) {
505 instance.option( options || {} )._init();
506 } else {
507 $.data( this, fullName, new object( options, this ) );
508 }
509 });
510 }
511
512 return returnValue;
513 };
514};
515
516$.Widget = function( /* options, element */ ) {};
517$.Widget._childConstructors = [];
518
519$.Widget.prototype = {
520 widgetName: "widget",
521 widgetEventPrefix: "",
522 defaultElement: "<div>",
523 options: {
524 disabled: false,
525
526 // callbacks
527 create: null
528 },
529 _createWidget: function( options, element ) {
530 element = $( element || this.defaultElement || this )[ 0 ];
531 this.element = $( element );
532 this.uuid = uuid++;
533 this.eventNamespace = "." + this.widgetName + this.uuid;
534 this.options = $.widget.extend( {},
535 this.options,
536 this._getCreateOptions(),
537 options );
538
539 this.bindings = $();
540 this.hoverable = $();
541 this.focusable = $();
542
543 if ( element !== this ) {
544 $.data( element, this.widgetFullName, this );
545 this._on( true, this.element, {
546 remove: function( event ) {
547 if ( event.target === element ) {
548 this.destroy();
549 }
550 }
551 });
552 this.document = $( element.style ?
553 // element within the document
554 element.ownerDocument :
555 // element is window or document
556 element.document || element );
557 this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
558 }
559
560 this._create();
561 this._trigger( "create", null, this._getCreateEventData() );
562 this._init();
563 },
564 _getCreateOptions: $.noop,
565 _getCreateEventData: $.noop,
566 _create: $.noop,
567 _init: $.noop,
568
569 destroy: function() {
570 this._destroy();
571 // we can probably remove the unbind calls in 2.0
572 // all event bindings should go through this._on()
573 this.element
574 .unbind( this.eventNamespace )
575 // 1.9 BC for #7810
576 // TODO remove dual storage
577 .removeData( this.widgetName )
578 .removeData( this.widgetFullName )
579 // support: jquery <1.6.3
580 // http://bugs.jquery.com/ticket/9413
581 .removeData( $.camelCase( this.widgetFullName ) );
582 this.widget()
583 .unbind( this.eventNamespace )
584 .removeAttr( "aria-disabled" )
585 .removeClass(
586 this.widgetFullName + "-disabled " +
587 "ui-state-disabled" );
588
589 // clean up events and states
590 this.bindings.unbind( this.eventNamespace );
591 this.hoverable.removeClass( "ui-state-hover" );
592 this.focusable.removeClass( "ui-state-focus" );
593 },
594 _destroy: $.noop,
595
596 widget: function() {
597 return this.element;
598 },
599
600 option: function( key, value ) {
601 var options = key,
602 parts,
603 curOption,
604 i;
605
606 if ( arguments.length === 0 ) {
607 // don't return a reference to the internal hash
608 return $.widget.extend( {}, this.options );
609 }
610
611 if ( typeof key === "string" ) {
612 // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
613 options = {};
614 parts = key.split( "." );
615 key = parts.shift();
616 if ( parts.length ) {
617 curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
618 for ( i = 0; i < parts.length - 1; i++ ) {
619 curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
620 curOption = curOption[ parts[ i ] ];
621 }
622 key = parts.pop();
623 if ( arguments.length === 1 ) {
624 return curOption[ key ] === undefined ? null : curOption[ key ];
625 }
626 curOption[ key ] = value;
627 } else {
628 if ( arguments.length === 1 ) {
629 return this.options[ key ] === undefined ? null : this.options[ key ];
630 }
631 options[ key ] = value;
632 }
633 }
634
635 this._setOptions( options );
636
637 return this;
638 },
639 _setOptions: function( options ) {
640 var key;
641
642 for ( key in options ) {
643 this._setOption( key, options[ key ] );
644 }
645
646 return this;
647 },
648 _setOption: function( key, value ) {
649 this.options[ key ] = value;
650
651 if ( key === "disabled" ) {
652 this.widget()
653 .toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value )
654 .attr( "aria-disabled", value );
655 this.hoverable.removeClass( "ui-state-hover" );
656 this.focusable.removeClass( "ui-state-focus" );
657 }
658
659 return this;
660 },
661
662 enable: function() {
663 return this._setOption( "disabled", false );
664 },
665 disable: function() {
666 return this._setOption( "disabled", true );
667 },
668
669 _on: function( suppressDisabledCheck, element, handlers ) {
670 var delegateElement,
671 instance = this;
672
673 // no suppressDisabledCheck flag, shuffle arguments
674 if ( typeof suppressDisabledCheck !== "boolean" ) {
675 handlers = element;
676 element = suppressDisabledCheck;
677 suppressDisabledCheck = false;
678 }
679
680 // no element argument, shuffle and use this.element
681 if ( !handlers ) {
682 handlers = element;
683 element = this.element;
684 delegateElement = this.widget();
685 } else {
686 // accept selectors, DOM elements
687 element = delegateElement = $( element );
688 this.bindings = this.bindings.add( element );
689 }
690
691 $.each( handlers, function( event, handler ) {
692 function handlerProxy() {
693 // allow widgets to customize the disabled handling
694 // - disabled as an array instead of boolean
695 // - disabled class as method for disabling individual parts
696 if ( !suppressDisabledCheck &&
697 ( instance.options.disabled === true ||
698 $( this ).hasClass( "ui-state-disabled" ) ) ) {
699 return;
700 }
701 return ( typeof handler === "string" ? instance[ handler ] : handler )
702 .apply( instance, arguments );
703 }
704
705 // copy the guid so direct unbinding works
706 if ( typeof handler !== "string" ) {
707 handlerProxy.guid = handler.guid =
708 handler.guid || handlerProxy.guid || $.guid++;
709 }
710
711 var match = event.match( /^(\w+)\s*(.*)$/ ),
712 eventName = match[1] + instance.eventNamespace,
713 selector = match[2];
714 if ( selector ) {
715 delegateElement.delegate( selector, eventName, handlerProxy );
716 } else {
717 element.bind( eventName, handlerProxy );
718 }
719 });
720 },
721
722 _off: function( element, eventName ) {
723 eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace;
724 element.unbind( eventName ).undelegate( eventName );
725 },
726
727 _delay: function( handler, delay ) {
728 function handlerProxy() {
729 return ( typeof handler === "string" ? instance[ handler ] : handler )
730 .apply( instance, arguments );
731 }
732 var instance = this;
733 return setTimeout( handlerProxy, delay || 0 );
734 },
735
736 _hoverable: function( element ) {
737 this.hoverable = this.hoverable.add( element );
738 this._on( element, {
739 mouseenter: function( event ) {
740 $( event.currentTarget ).addClass( "ui-state-hover" );
741 },
742 mouseleave: function( event ) {
743 $( event.currentTarget ).removeClass( "ui-state-hover" );
744 }
745 });
746 },
747
748 _focusable: function( element ) {
749 this.focusable = this.focusable.add( element );
750 this._on( element, {
751 focusin: function( event ) {
752 $( event.currentTarget ).addClass( "ui-state-focus" );
753 },
754 focusout: function( event ) {
755 $( event.currentTarget ).removeClass( "ui-state-focus" );
756 }
757 });
758 },
759
760 _trigger: function( type, event, data ) {
761 var prop, orig,
762 callback = this.options[ type ];
763
764 data = data || {};
765 event = $.Event( event );
766 event.type = ( type === this.widgetEventPrefix ?
767 type :
768 this.widgetEventPrefix + type ).toLowerCase();
769 // the original event may come from any element
770 // so we need to reset the target on the new event
771 event.target = this.element[ 0 ];
772
773 // copy original event properties over to the new event
774 orig = event.originalEvent;
775 if ( orig ) {
776 for ( prop in orig ) {
777 if ( !( prop in event ) ) {
778 event[ prop ] = orig[ prop ];
779 }
780 }
781 }
782
783 this.element.trigger( event, data );
784 return !( $.isFunction( callback ) &&
785 callback.apply( this.element[0], [ event ].concat( data ) ) === false ||
786 event.isDefaultPrevented() );
787 }
788};
789
790$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
791 $.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
792 if ( typeof options === "string" ) {
793 options = { effect: options };
794 }
795 var hasOptions,
796 effectName = !options ?
797 method :
798 options === true || typeof options === "number" ?
799 defaultEffect :
800 options.effect || defaultEffect;
801 options = options || {};
802 if ( typeof options === "number" ) {
803 options = { duration: options };
804 }
805 hasOptions = !$.isEmptyObject( options );
806 options.complete = callback;
807 if ( options.delay ) {
808 element.delay( options.delay );
809 }
810 if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
811 element[ method ]( options );
812 } else if ( effectName !== method && element[ effectName ] ) {
813 element[ effectName ]( options.duration, options.easing, callback );
814 } else {
815 element.queue(function( next ) {
816 $( this )[ method ]();
817 if ( callback ) {
818 callback.call( element[ 0 ] );
819 }
820 next();
821 });
822 }
823 };
824});
825
826})( jQuery );
827(function( $, undefined ) {
828
829$.ui = $.ui || {};
830
831var cachedScrollbarWidth,
832 max = Math.max,
833 abs = Math.abs,
834 round = Math.round,
835 rhorizontal = /left|center|right/,
836 rvertical = /top|center|bottom/,
837 roffset = /[\+\-]\d+(\.[\d]+)?%?/,
838 rposition = /^\w+/,
839 rpercent = /%$/,
840 _position = $.fn.position;
841
842function getOffsets( offsets, width, height ) {
843 return [
844 parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
845 parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
846 ];
847}
848
849function parseCss( element, property ) {
850 return parseInt( $.css( element, property ), 10 ) || 0;
851}
852
853function getDimensions( elem ) {
854 var raw = elem[0];
855 if ( raw.nodeType === 9 ) {
856 return {
857 width: elem.width(),
858 height: elem.height(),
859 offset: { top: 0, left: 0 }
860 };
861 }
862 if ( $.isWindow( raw ) ) {
863 return {
864 width: elem.width(),
865 height: elem.height(),
866 offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
867 };
868 }
869 if ( raw.preventDefault ) {
870 return {
871 width: 0,
872 height: 0,
873 offset: { top: raw.pageY, left: raw.pageX }
874 };
875 }
876 return {
877 width: elem.outerWidth(),
878 height: elem.outerHeight(),
879 offset: elem.offset()
880 };
881}
882
883$.position = {
884 scrollbarWidth: function() {
885 if ( cachedScrollbarWidth !== undefined ) {
886 return cachedScrollbarWidth;
887 }
888 var w1, w2,
889 div = $( "<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ),
890 innerDiv = div.children()[0];
891
892 $( "body" ).append( div );
893 w1 = innerDiv.offsetWidth;
894 div.css( "overflow", "scroll" );
895
896 w2 = innerDiv.offsetWidth;
897
898 if ( w1 === w2 ) {
899 w2 = div[0].clientWidth;
900 }
901
902 div.remove();
903
904 return (cachedScrollbarWidth = w1 - w2);
905 },
906 getScrollInfo: function( within ) {
907 var overflowX = within.isWindow || within.isDocument ? "" :
908 within.element.css( "overflow-x" ),
909 overflowY = within.isWindow || within.isDocument ? "" :
910 within.element.css( "overflow-y" ),
911 hasOverflowX = overflowX === "scroll" ||
912 ( overflowX === "auto" && within.width < within.element[0].scrollWidth ),
913 hasOverflowY = overflowY === "scroll" ||
914 ( overflowY === "auto" && within.height < within.element[0].scrollHeight );
915 return {
916 width: hasOverflowY ? $.position.scrollbarWidth() : 0,
917 height: hasOverflowX ? $.position.scrollbarWidth() : 0
918 };
919 },
920 getWithinInfo: function( element ) {
921 var withinElement = $( element || window ),
922 isWindow = $.isWindow( withinElement[0] ),
923 isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9;
924 return {
925 element: withinElement,
926 isWindow: isWindow,
927 isDocument: isDocument,
928 offset: withinElement.offset() || { left: 0, top: 0 },
929 scrollLeft: withinElement.scrollLeft(),
930 scrollTop: withinElement.scrollTop(),
931 width: isWindow ? withinElement.width() : withinElement.outerWidth(),
932 height: isWindow ? withinElement.height() : withinElement.outerHeight()
933 };
934 }
935};
936
937$.fn.position = function( options ) {
938 if ( !options || !options.of ) {
939 return _position.apply( this, arguments );
940 }
941
942 // make a copy, we don't want to modify arguments
943 options = $.extend( {}, options );
944
945 var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
946 target = $( options.of ),
947 within = $.position.getWithinInfo( options.within ),
948 scrollInfo = $.position.getScrollInfo( within ),
949 collision = ( options.collision || "flip" ).split( " " ),
950 offsets = {};
951
952 dimensions = getDimensions( target );
953 if ( target[0].preventDefault ) {
954 // force left top to allow flipping
955 options.at = "left top";
956 }
957 targetWidth = dimensions.width;
958 targetHeight = dimensions.height;
959 targetOffset = dimensions.offset;
960 // clone to reuse original targetOffset later
961 basePosition = $.extend( {}, targetOffset );
962
963 // force my and at to have valid horizontal and vertical positions
964 // if a value is missing or invalid, it will be converted to center
965 $.each( [ "my", "at" ], function() {
966 var pos = ( options[ this ] || "" ).split( " " ),
967 horizontalOffset,
968 verticalOffset;
969
970 if ( pos.length === 1) {
971 pos = rhorizontal.test( pos[ 0 ] ) ?
972 pos.concat( [ "center" ] ) :
973 rvertical.test( pos[ 0 ] ) ?
974 [ "center" ].concat( pos ) :
975 [ "center", "center" ];
976 }
977 pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
978 pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
979
980 // calculate offsets
981 horizontalOffset = roffset.exec( pos[ 0 ] );
982 verticalOffset = roffset.exec( pos[ 1 ] );
983 offsets[ this ] = [
984 horizontalOffset ? horizontalOffset[ 0 ] : 0,
985 verticalOffset ? verticalOffset[ 0 ] : 0
986 ];
987
988 // reduce to just the positions without the offsets
989 options[ this ] = [
990 rposition.exec( pos[ 0 ] )[ 0 ],
991 rposition.exec( pos[ 1 ] )[ 0 ]
992 ];
993 });
994
995 // normalize collision option
996 if ( collision.length === 1 ) {
997 collision[ 1 ] = collision[ 0 ];
998 }
999
1000 if ( options.at[ 0 ] === "right" ) {
1001 basePosition.left += targetWidth;
1002 } else if ( options.at[ 0 ] === "center" ) {
1003 basePosition.left += targetWidth / 2;
1004 }
1005
1006 if ( options.at[ 1 ] === "bottom" ) {
1007 basePosition.top += targetHeight;
1008 } else if ( options.at[ 1 ] === "center" ) {
1009 basePosition.top += targetHeight / 2;
1010 }
1011
1012 atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
1013 basePosition.left += atOffset[ 0 ];
1014 basePosition.top += atOffset[ 1 ];
1015
1016 return this.each(function() {
1017 var collisionPosition, using,
1018 elem = $( this ),
1019 elemWidth = elem.outerWidth(),
1020 elemHeight = elem.outerHeight(),
1021 marginLeft = parseCss( this, "marginLeft" ),
1022 marginTop = parseCss( this, "marginTop" ),
1023 collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width,
1024 collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height,
1025 position = $.extend( {}, basePosition ),
1026 myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
1027
1028 if ( options.my[ 0 ] === "right" ) {
1029 position.left -= elemWidth;
1030 } else if ( options.my[ 0 ] === "center" ) {
1031 position.left -= elemWidth / 2;
1032 }
1033
1034 if ( options.my[ 1 ] === "bottom" ) {
1035 position.top -= elemHeight;
1036 } else if ( options.my[ 1 ] === "center" ) {
1037 position.top -= elemHeight / 2;
1038 }
1039
1040 position.left += myOffset[ 0 ];
1041 position.top += myOffset[ 1 ];
1042
1043 // if the browser doesn't support fractions, then round for consistent results
1044 if ( !$.support.offsetFractions ) {
1045 position.left = round( position.left );
1046 position.top = round( position.top );
1047 }
1048
1049 collisionPosition = {
1050 marginLeft: marginLeft,
1051 marginTop: marginTop
1052 };
1053
1054 $.each( [ "left", "top" ], function( i, dir ) {
1055 if ( $.ui.position[ collision[ i ] ] ) {
1056 $.ui.position[ collision[ i ] ][ dir ]( position, {
1057 targetWidth: targetWidth,
1058 targetHeight: targetHeight,
1059 elemWidth: elemWidth,
1060 elemHeight: elemHeight,
1061 collisionPosition: collisionPosition,
1062 collisionWidth: collisionWidth,
1063 collisionHeight: collisionHeight,
1064 offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
1065 my: options.my,
1066 at: options.at,
1067 within: within,
1068 elem : elem
1069 });
1070 }
1071 });
1072
1073 if ( options.using ) {
1074 // adds feedback as second argument to using callback, if present
1075 using = function( props ) {
1076 var left = targetOffset.left - position.left,
1077 right = left + targetWidth - elemWidth,
1078 top = targetOffset.top - position.top,
1079 bottom = top + targetHeight - elemHeight,
1080 feedback = {
1081 target: {
1082 element: target,
1083 left: targetOffset.left,
1084 top: targetOffset.top,
1085 width: targetWidth,
1086 height: targetHeight
1087 },
1088 element: {
1089 element: elem,
1090 left: position.left,
1091 top: position.top,
1092 width: elemWidth,
1093 height: elemHeight
1094 },
1095 horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
1096 vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
1097 };
1098 if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
1099 feedback.horizontal = "center";
1100 }
1101 if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
1102 feedback.vertical = "middle";
1103 }
1104 if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
1105 feedback.important = "horizontal";
1106 } else {
1107 feedback.important = "vertical";
1108 }
1109 options.using.call( this, props, feedback );
1110 };
1111 }
1112
1113 elem.offset( $.extend( position, { using: using } ) );
1114 });
1115};
1116
1117$.ui.position = {
1118 fit: {
1119 left: function( position, data ) {
1120 var within = data.within,
1121 withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
1122 outerWidth = within.width,
1123 collisionPosLeft = position.left - data.collisionPosition.marginLeft,
1124 overLeft = withinOffset - collisionPosLeft,
1125 overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
1126 newOverRight;
1127
1128 // element is wider than within
1129 if ( data.collisionWidth > outerWidth ) {
1130 // element is initially over the left side of within
1131 if ( overLeft > 0 && overRight <= 0 ) {
1132 newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;
1133 position.left += overLeft - newOverRight;
1134 // element is initially over right side of within
1135 } else if ( overRight > 0 && overLeft <= 0 ) {
1136 position.left = withinOffset;
1137 // element is initially over both left and right sides of within
1138 } else {
1139 if ( overLeft > overRight ) {
1140 position.left = withinOffset + outerWidth - data.collisionWidth;
1141 } else {
1142 position.left = withinOffset;
1143 }
1144 }
1145 // too far left -> align with left edge
1146 } else if ( overLeft > 0 ) {
1147 position.left += overLeft;
1148 // too far right -> align with right edge
1149 } else if ( overRight > 0 ) {
1150 position.left -= overRight;
1151 // adjust based on position and margin
1152 } else {
1153 position.left = max( position.left - collisionPosLeft, position.left );
1154 }
1155 },
1156 top: function( position, data ) {
1157 var within = data.within,
1158 withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
1159 outerHeight = data.within.height,
1160 collisionPosTop = position.top - data.collisionPosition.marginTop,
1161 overTop = withinOffset - collisionPosTop,
1162 overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
1163 newOverBottom;
1164
1165 // element is taller than within
1166 if ( data.collisionHeight > outerHeight ) {
1167 // element is initially over the top of within
1168 if ( overTop > 0 && overBottom <= 0 ) {
1169 newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;
1170 position.top += overTop - newOverBottom;
1171 // element is initially over bottom of within
1172 } else if ( overBottom > 0 && overTop <= 0 ) {
1173 position.top = withinOffset;
1174 // element is initially over both top and bottom of within
1175 } else {
1176 if ( overTop > overBottom ) {
1177 position.top = withinOffset + outerHeight - data.collisionHeight;
1178 } else {
1179 position.top = withinOffset;
1180 }
1181 }
1182 // too far up -> align with top
1183 } else if ( overTop > 0 ) {
1184 position.top += overTop;
1185 // too far down -> align with bottom edge
1186 } else if ( overBottom > 0 ) {
1187 position.top -= overBottom;
1188 // adjust based on position and margin
1189 } else {
1190 position.top = max( position.top - collisionPosTop, position.top );
1191 }
1192 }
1193 },
1194 flip: {
1195 left: function( position, data ) {
1196 var within = data.within,
1197 withinOffset = within.offset.left + within.scrollLeft,
1198 outerWidth = within.width,
1199 offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
1200 collisionPosLeft = position.left - data.collisionPosition.marginLeft,
1201 overLeft = collisionPosLeft - offsetLeft,
1202 overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
1203 myOffset = data.my[ 0 ] === "left" ?
1204 -data.elemWidth :
1205 data.my[ 0 ] === "right" ?
1206 data.elemWidth :
1207 0,
1208 atOffset = data.at[ 0 ] === "left" ?
1209 data.targetWidth :
1210 data.at[ 0 ] === "right" ?
1211 -data.targetWidth :
1212 0,
1213 offset = -2 * data.offset[ 0 ],
1214 newOverRight,
1215 newOverLeft;
1216
1217 if ( overLeft < 0 ) {
1218 newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;
1219 if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
1220 position.left += myOffset + atOffset + offset;
1221 }
1222 }
1223 else if ( overRight > 0 ) {
1224 newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;
1225 if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
1226 position.left += myOffset + atOffset + offset;
1227 }
1228 }
1229 },
1230 top: function( position, data ) {
1231 var within = data.within,
1232 withinOffset = within.offset.top + within.scrollTop,
1233 outerHeight = within.height,
1234 offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
1235 collisionPosTop = position.top - data.collisionPosition.marginTop,
1236 overTop = collisionPosTop - offsetTop,
1237 overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
1238 top = data.my[ 1 ] === "top",
1239 myOffset = top ?
1240 -data.elemHeight :
1241 data.my[ 1 ] === "bottom" ?
1242 data.elemHeight :
1243 0,
1244 atOffset = data.at[ 1 ] === "top" ?
1245 data.targetHeight :
1246 data.at[ 1 ] === "bottom" ?
1247 -data.targetHeight :
1248 0,
1249 offset = -2 * data.offset[ 1 ],
1250 newOverTop,
1251 newOverBottom;
1252 if ( overTop < 0 ) {
1253 newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;
1254 if ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {
1255 position.top += myOffset + atOffset + offset;
1256 }
1257 }
1258 else if ( overBottom > 0 ) {
1259 newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;
1260 if ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {
1261 position.top += myOffset + atOffset + offset;
1262 }
1263 }
1264 }
1265 },
1266 flipfit: {
1267 left: function() {
1268 $.ui.position.flip.left.apply( this, arguments );
1269 $.ui.position.fit.left.apply( this, arguments );
1270 },
1271 top: function() {
1272 $.ui.position.flip.top.apply( this, arguments );
1273 $.ui.position.fit.top.apply( this, arguments );
1274 }
1275 }
1276};
1277
1278// fraction support test
1279(function () {
1280 var testElement, testElementParent, testElementStyle, offsetLeft, i,
1281 body = document.getElementsByTagName( "body" )[ 0 ],
1282 div = document.createElement( "div" );
1283
1284 //Create a "fake body" for testing based on method used in jQuery.support
1285 testElement = document.createElement( body ? "div" : "body" );
1286 testElementStyle = {
1287 visibility: "hidden",
1288 width: 0,
1289 height: 0,
1290 border: 0,
1291 margin: 0,
1292 background: "none"
1293 };
1294 if ( body ) {
1295 $.extend( testElementStyle, {
1296 position: "absolute",
1297 left: "-1000px",
1298 top: "-1000px"
1299 });
1300 }
1301 for ( i in testElementStyle ) {
1302 testElement.style[ i ] = testElementStyle[ i ];
1303 }
1304 testElement.appendChild( div );
1305 testElementParent = body || document.documentElement;
1306 testElementParent.insertBefore( testElement, testElementParent.firstChild );
1307
1308 div.style.cssText = "position: absolute; left: 10.7432222px;";
1309
1310 offsetLeft = $( div ).offset().left;
1311 $.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11;
1312
1313 testElement.innerHTML = "";
1314 testElementParent.removeChild( testElement );
1315})();
1316
1317}( jQuery ) );
1318(function( $, undefined ) {
1319
1320$.widget( "ui.autocomplete", {
1321 version: "1.10.4",
1322 defaultElement: "<input>",
1323 options: {
1324 appendTo: null,
1325 autoFocus: false,
1326 delay: 300,
1327 minLength: 1,
1328 position: {
1329 my: "left top",
1330 at: "left bottom",
1331 collision: "none"
1332 },
1333 source: null,
1334
1335 // callbacks
1336 change: null,
1337 close: null,
1338 focus: null,
1339 open: null,
1340 response: null,
1341 search: null,
1342 select: null
1343 },
1344
1345 requestIndex: 0,
1346 pending: 0,
1347
1348 _create: function() {
1349 // Some browsers only repeat keydown events, not keypress events,
1350 // so we use the suppressKeyPress flag to determine if we've already
1351 // handled the keydown event. #7269
1352 // Unfortunately the code for & in keypress is the same as the up arrow,
1353 // so we use the suppressKeyPressRepeat flag to avoid handling keypress
1354 // events when we know the keydown event was used to modify the
1355 // search term. #7799
1356 var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
1357 nodeName = this.element[0].nodeName.toLowerCase(),
1358 isTextarea = nodeName === "textarea",
1359 isInput = nodeName === "input";
1360
1361 this.isMultiLine =
1362 // Textareas are always multi-line
1363 isTextarea ? true :
1364 // Inputs are always single-line, even if inside a contentEditable element
1365 // IE also treats inputs as contentEditable
1366 isInput ? false :
1367 // All other element types are determined by whether or not they're contentEditable
1368 this.element.prop( "isContentEditable" );
1369
1370 this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
1371 this.isNewMenu = true;
1372
1373 this.element
1374 .addClass( "ui-autocomplete-input" )
1375 .attr( "autocomplete", "off" );
1376
1377 this._on( this.element, {
1378 keydown: function( event ) {
1379 if ( this.element.prop( "readOnly" ) ) {
1380 suppressKeyPress = true;
1381 suppressInput = true;
1382 suppressKeyPressRepeat = true;
1383 return;
1384 }
1385
1386 suppressKeyPress = false;
1387 suppressInput = false;
1388 suppressKeyPressRepeat = false;
1389 var keyCode = $.ui.keyCode;
1390 switch( event.keyCode ) {
1391 case keyCode.PAGE_UP:
1392 suppressKeyPress = true;
1393 this._move( "previousPage", event );
1394 break;
1395 case keyCode.PAGE_DOWN:
1396 suppressKeyPress = true;
1397 this._move( "nextPage", event );
1398 break;
1399 case keyCode.UP:
1400 suppressKeyPress = true;
1401 this._keyEvent( "previous", event );
1402 break;
1403 case keyCode.DOWN:
1404 suppressKeyPress = true;
1405 this._keyEvent( "next", event );
1406 break;
1407 case keyCode.ENTER:
1408 case keyCode.NUMPAD_ENTER:
1409 // when menu is open and has focus
1410 if ( this.menu.active ) {
1411 // #6055 - Opera still allows the keypress to occur
1412 // which causes forms to submit
1413 suppressKeyPress = true;
1414 event.preventDefault();
1415 this.menu.select( event );
1416 }
1417 break;
1418 case keyCode.TAB:
1419 if ( this.menu.active ) {
1420 this.menu.select( event );
1421 }
1422 break;
1423 case keyCode.ESCAPE:
1424 if ( this.menu.element.is( ":visible" ) ) {
1425 this._value( this.term );
1426 this.close( event );
1427 // Different browsers have different default behavior for escape
1428 // Single press can mean undo or clear
1429 // Double press in IE means clear the whole form
1430 event.preventDefault();
1431 }
1432 break;
1433 default:
1434 suppressKeyPressRepeat = true;
1435 // search timeout should be triggered before the input value is changed
1436 this._searchTimeout( event );
1437 break;
1438 }
1439 },
1440 keypress: function( event ) {
1441 if ( suppressKeyPress ) {
1442 suppressKeyPress = false;
1443 if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
1444 event.preventDefault();
1445 }
1446 return;
1447 }
1448 if ( suppressKeyPressRepeat ) {
1449 return;
1450 }
1451
1452 // replicate some key handlers to allow them to repeat in Firefox and Opera
1453 var keyCode = $.ui.keyCode;
1454 switch( event.keyCode ) {
1455 case keyCode.PAGE_UP:
1456 this._move( "previousPage", event );
1457 break;
1458 case keyCode.PAGE_DOWN:
1459 this._move( "nextPage", event );
1460 break;
1461 case keyCode.UP:
1462 this._keyEvent( "previous", event );
1463 break;
1464 case keyCode.DOWN:
1465 this._keyEvent( "next", event );
1466 break;
1467 }
1468 },
1469 input: function( event ) {
1470 if ( suppressInput ) {
1471 suppressInput = false;
1472 event.preventDefault();
1473 return;
1474 }
1475 this._searchTimeout( event );
1476 },
1477 focus: function() {
1478 this.selectedItem = null;
1479 this.previous = this._value();
1480 },
1481 blur: function( event ) {
1482 if ( this.cancelBlur ) {
1483 delete this.cancelBlur;
1484 return;
1485 }
1486
1487 clearTimeout( this.searching );
1488 this.close( event );
1489 this._change( event );
1490 }
1491 });
1492
1493 this._initSource();
1494 this.menu = $( "<ul>" )
1495 .addClass( "ui-autocomplete ui-front" )
1496 .appendTo( this._appendTo() )
1497 .menu({
1498 // disable ARIA support, the live region takes care of that
1499 role: null
1500 })
1501 .hide()
1502 .data( "ui-menu" );
1503
1504 this._on( this.menu.element, {
1505 mousedown: function( event ) {
1506 // prevent moving focus out of the text field
1507 event.preventDefault();
1508
1509 // IE doesn't prevent moving focus even with event.preventDefault()
1510 // so we set a flag to know when we should ignore the blur event
1511 this.cancelBlur = true;
1512 this._delay(function() {
1513 delete this.cancelBlur;
1514 });
1515
1516 // clicking on the scrollbar causes focus to shift to the body
1517 // but we can't detect a mouseup or a click immediately afterward
1518 // so we have to track the next mousedown and close the menu if
1519 // the user clicks somewhere outside of the autocomplete
1520 var menuElement = this.menu.element[ 0 ];
1521 if ( !$( event.target ).closest( ".ui-menu-item" ).length ) {
1522 this._delay(function() {
1523 var that = this;
1524 this.document.one( "mousedown", function( event ) {
1525 if ( event.target !== that.element[ 0 ] &&
1526 event.target !== menuElement &&
1527 !$.contains( menuElement, event.target ) ) {
1528 that.close();
1529 }
1530 });
1531 });
1532 }
1533 },
1534 menufocus: function( event, ui ) {
1535 // support: Firefox
1536 // Prevent accidental activation of menu items in Firefox (#7024 #9118)
1537 if ( this.isNewMenu ) {
1538 this.isNewMenu = false;
1539 if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
1540 this.menu.blur();
1541
1542 this.document.one( "mousemove", function() {
1543 $( event.target ).trigger( event.originalEvent );
1544 });
1545
1546 return;
1547 }
1548 }
1549
1550 var item = ui.item.data( "ui-autocomplete-item" );
1551 if ( false !== this._trigger( "focus", event, { item: item } ) ) {
1552 // use value to match what will end up in the input, if it was a key event
1553 if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
1554 this._value( item.value );
1555 }
1556 } else {
1557 // Normally the input is populated with the item's value as the
1558 // menu is navigated, causing screen readers to notice a change and
1559 // announce the item. Since the focus event was canceled, this doesn't
1560 // happen, so we update the live region so that screen readers can
1561 // still notice the change and announce it.
1562 this.liveRegion.text( item.value );
1563 }
1564 },
1565 menuselect: function( event, ui ) {
1566 var item = ui.item.data( "ui-autocomplete-item" ),
1567 previous = this.previous;
1568
1569 // only trigger when focus was lost (click on menu)
1570 if ( this.element[0] !== this.document[0].activeElement ) {
1571 this.element.focus();
1572 this.previous = previous;
1573 // #6109 - IE triggers two focus events and the second
1574 // is asynchronous, so we need to reset the previous
1575 // term synchronously and asynchronously :-(
1576 this._delay(function() {
1577 this.previous = previous;
1578 this.selectedItem = item;
1579 });
1580 }
1581
1582 if ( false !== this._trigger( "select", event, { item: item } ) ) {
1583 this._value( item.value );
1584 }
1585 // reset the term after the select event
1586 // this allows custom select handling to work properly
1587 this.term = this._value();
1588
1589 this.close( event );
1590 this.selectedItem = item;
1591 }
1592 });
1593
1594 this.liveRegion = $( "<span>", {
1595 role: "status",
1596 "aria-live": "polite"
1597 })
1598 .addClass( "ui-helper-hidden-accessible" )
1599 .insertBefore( this.element );
1600
1601 // turning off autocomplete prevents the browser from remembering the
1602 // value when navigating through history, so we re-enable autocomplete
1603 // if the page is unloaded before the widget is destroyed. #7790
1604 this._on( this.window, {
1605 beforeunload: function() {
1606 this.element.removeAttr( "autocomplete" );
1607 }
1608 });
1609 },
1610
1611 _destroy: function() {
1612 clearTimeout( this.searching );
1613 this.element
1614 .removeClass( "ui-autocomplete-input" )
1615 .removeAttr( "autocomplete" );
1616 this.menu.element.remove();
1617 this.liveRegion.remove();
1618 },
1619
1620 _setOption: function( key, value ) {
1621 this._super( key, value );
1622 if ( key === "source" ) {
1623 this._initSource();
1624 }
1625 if ( key === "appendTo" ) {
1626 this.menu.element.appendTo( this._appendTo() );
1627 }
1628 if ( key === "disabled" && value && this.xhr ) {
1629 this.xhr.abort();
1630 }
1631 },
1632
1633 _appendTo: function() {
1634 var element = this.options.appendTo;
1635
1636 if ( element ) {
1637 element = element.jquery || element.nodeType ?
1638 $( element ) :
1639 this.document.find( element ).eq( 0 );
1640 }
1641
1642 if ( !element ) {
1643 element = this.element.closest( ".ui-front" );
1644 }
1645
1646 if ( !element.length ) {
1647 element = this.document[0].body;
1648 }
1649
1650 return element;
1651 },
1652
1653 _initSource: function() {
1654 var array, url,
1655 that = this;
1656 if ( $.isArray(this.options.source) ) {
1657 array = this.options.source;
1658 this.source = function( request, response ) {
1659 response( $.ui.autocomplete.filter( array, request.term ) );
1660 };
1661 } else if ( typeof this.options.source === "string" ) {
1662 url = this.options.source;
1663 this.source = function( request, response ) {
1664 if ( that.xhr ) {
1665 that.xhr.abort();
1666 }
1667 that.xhr = $.ajax({
1668 url: url,
1669 data: request,
1670 dataType: "json",
1671 success: function( data ) {
1672 response( data );
1673 },
1674 error: function() {
1675 response( [] );
1676 }
1677 });
1678 };
1679 } else {
1680 this.source = this.options.source;
1681 }
1682 },
1683
1684 _searchTimeout: function( event ) {
1685 clearTimeout( this.searching );
1686 this.searching = this._delay(function() {
1687 // only search if the value has changed
1688 if ( this.term !== this._value() ) {
1689 this.selectedItem = null;
1690 this.search( null, event );
1691 }
1692 }, this.options.delay );
1693 },
1694
1695 search: function( value, event ) {
1696 value = value != null ? value : this._value();
1697
1698 // always save the actual value, not the one passed as an argument
1699 this.term = this._value();
1700
1701 if ( value.length < this.options.minLength ) {
1702 return this.close( event );
1703 }
1704
1705 if ( this._trigger( "search", event ) === false ) {
1706 return;
1707 }
1708
1709 return this._search( value );
1710 },
1711
1712 _search: function( value ) {
1713 this.pending++;
1714 this.element.addClass( "ui-autocomplete-loading" );
1715 this.cancelSearch = false;
1716
1717 this.source( { term: value }, this._response() );
1718 },
1719
1720 _response: function() {
1721 var index = ++this.requestIndex;
1722
1723 return $.proxy(function( content ) {
1724 if ( index === this.requestIndex ) {
1725 this.__response( content );
1726 }
1727
1728 this.pending--;
1729 if ( !this.pending ) {
1730 this.element.removeClass( "ui-autocomplete-loading" );
1731 }
1732 }, this );
1733 },
1734
1735 __response: function( content ) {
1736 if ( content ) {
1737 content = this._normalize( content );
1738 }
1739 this._trigger( "response", null, { content: content } );
1740 if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
1741 this._suggest( content );
1742 this._trigger( "open" );
1743 } else {
1744 // use ._close() instead of .close() so we don't cancel future searches
1745 this._close();
1746 }
1747 },
1748
1749 close: function( event ) {
1750 this.cancelSearch = true;
1751 this._close( event );
1752 },
1753
1754 _close: function( event ) {
1755 if ( this.menu.element.is( ":visible" ) ) {
1756 this.menu.element.hide();
1757 this.menu.blur();
1758 this.isNewMenu = true;
1759 this._trigger( "close", event );
1760 }
1761 },
1762
1763 _change: function( event ) {
1764 if ( this.previous !== this._value() ) {
1765 this._trigger( "change", event, { item: this.selectedItem } );
1766 }
1767 },
1768
1769 _normalize: function( items ) {
1770 // assume all items have the right format when the first item is complete
1771 if ( items.length && items[0].label && items[0].value ) {
1772 return items;
1773 }
1774 return $.map( items, function( item ) {
1775 if ( typeof item === "string" ) {
1776 return {
1777 label: item,
1778 value: item
1779 };
1780 }
1781 return $.extend({
1782 label: item.label || item.value,
1783 value: item.value || item.label
1784 }, item );
1785 });
1786 },
1787
1788 _suggest: function( items ) {
1789 var ul = this.menu.element.empty();
1790 this._renderMenu( ul, items );
1791 this.isNewMenu = true;
1792 this.menu.refresh();
1793
1794 // size and position menu
1795 ul.show();
1796 this._resizeMenu();
1797 ul.position( $.extend({
1798 of: this.element
1799 }, this.options.position ));
1800
1801 if ( this.options.autoFocus ) {
1802 this.menu.next();
1803 }
1804 },
1805
1806 _resizeMenu: function() {
1807 var ul = this.menu.element;
1808 ul.outerWidth( Math.max(
1809 // Firefox wraps long text (possibly a rounding bug)
1810 // so we add 1px to avoid the wrapping (#7513)
1811 ul.width( "" ).outerWidth() + 1,
1812 this.element.outerWidth()
1813 ) );
1814 },
1815
1816 _renderMenu: function( ul, items ) {
1817 var that = this;
1818 $.each( items, function( index, item ) {
1819 that._renderItemData( ul, item );
1820 });
1821 },
1822
1823 _renderItemData: function( ul, item ) {
1824 return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
1825 },
1826
1827 _renderItem: function( ul, item ) {
1828 return $( "<li>" )
1829 .append( $( "<a>" ).text( item.label ) )
1830 .appendTo( ul );
1831 },
1832
1833 _move: function( direction, event ) {
1834 if ( !this.menu.element.is( ":visible" ) ) {
1835 this.search( null, event );
1836 return;
1837 }
1838 if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
1839 this.menu.isLastItem() && /^next/.test( direction ) ) {
1840 this._value( this.term );
1841 this.menu.blur();
1842 return;
1843 }
1844 this.menu[ direction ]( event );
1845 },
1846
1847 widget: function() {
1848 return this.menu.element;
1849 },
1850
1851 _value: function() {
1852 return this.valueMethod.apply( this.element, arguments );
1853 },
1854
1855 _keyEvent: function( keyEvent, event ) {
1856 if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
1857 this._move( keyEvent, event );
1858
1859 // prevents moving cursor to beginning/end of the text field in some browsers
1860 event.preventDefault();
1861 }
1862 }
1863});
1864
1865$.extend( $.ui.autocomplete, {
1866 escapeRegex: function( value ) {
1867 return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
1868 },
1869 filter: function(array, term) {
1870 var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
1871 return $.grep( array, function(value) {
1872 return matcher.test( value.label || value.value || value );
1873 });
1874 }
1875});
1876
1877
1878// live region extension, adding a `messages` option
1879// NOTE: This is an experimental API. We are still investigating
1880// a full solution for string manipulation and internationalization.
1881$.widget( "ui.autocomplete", $.ui.autocomplete, {
1882 options: {
1883 messages: {
1884 noResults: "No search results.",
1885 results: function( amount ) {
1886 return amount + ( amount > 1 ? " results are" : " result is" ) +
1887 " available, use up and down arrow keys to navigate.";
1888 }
1889 }
1890 },
1891
1892 __response: function( content ) {
1893 var message;
1894 this._superApply( arguments );
1895 if ( this.options.disabled || this.cancelSearch ) {
1896 return;
1897 }
1898 if ( content && content.length ) {
1899 message = this.options.messages.results( content.length );
1900 } else {
1901 message = this.options.messages.noResults;
1902 }
1903 this.liveRegion.text( message );
1904 }
1905});
1906
1907}( jQuery ));
1908(function( $, undefined ) {
1909
1910$.widget( "ui.menu", {
1911 version: "1.10.4",
1912 defaultElement: "<ul>",
1913 delay: 300,
1914 options: {
1915 icons: {
1916 submenu: "ui-icon-carat-1-e"
1917 },
1918 menus: "ul",
1919 position: {
1920 my: "left top",
1921 at: "right top"
1922 },
1923 role: "menu",
1924
1925 // callbacks
1926 blur: null,
1927 focus: null,
1928 select: null
1929 },
1930
1931 _create: function() {
1932 this.activeMenu = this.element;
1933 // flag used to prevent firing of the click handler
1934 // as the event bubbles up through nested menus
1935 this.mouseHandled = false;
1936 this.element
1937 .uniqueId()
1938 .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
1939 .toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length )
1940 .attr({
1941 role: this.options.role,
1942 tabIndex: 0
1943 })
1944 // need to catch all clicks on disabled menu
1945 // not possible through _on
1946 .bind( "click" + this.eventNamespace, $.proxy(function( event ) {
1947 if ( this.options.disabled ) {
1948 event.preventDefault();
1949 }
1950 }, this ));
1951
1952 if ( this.options.disabled ) {
1953 this.element
1954 .addClass( "ui-state-disabled" )
1955 .attr( "aria-disabled", "true" );
1956 }
1957
1958 this._on({
1959 // Prevent focus from sticking to links inside menu after clicking
1960 // them (focus should always stay on UL during navigation).
1961 "mousedown .ui-menu-item > a": function( event ) {
1962 event.preventDefault();
1963 },
1964 "click .ui-state-disabled > a": function( event ) {
1965 event.preventDefault();
1966 },
1967 "click .ui-menu-item:has(a)": function( event ) {
1968 var target = $( event.target ).closest( ".ui-menu-item" );
1969 if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
1970 this.select( event );
1971
1972 // Only set the mouseHandled flag if the event will bubble, see #9469.
1973 if ( !event.isPropagationStopped() ) {
1974 this.mouseHandled = true;
1975 }
1976
1977 // Open submenu on click
1978 if ( target.has( ".ui-menu" ).length ) {
1979 this.expand( event );
1980 } else if ( !this.element.is( ":focus" ) && $( this.document[ 0 ].activeElement ).closest( ".ui-menu" ).length ) {
1981
1982 // Redirect focus to the menu
1983 this.element.trigger( "focus", [ true ] );
1984
1985 // If the active item is on the top level, let it stay active.
1986 // Otherwise, blur the active item since it is no longer visible.
1987 if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) {
1988 clearTimeout( this.timer );
1989 }
1990 }
1991 }
1992 },
1993 "mouseenter .ui-menu-item": function( event ) {
1994 var target = $( event.currentTarget );
1995 // Remove ui-state-active class from siblings of the newly focused menu item
1996 // to avoid a jump caused by adjacent elements both having a class with a border
1997 target.siblings().children( ".ui-state-active" ).removeClass( "ui-state-active" );
1998 this.focus( event, target );
1999 },
2000 mouseleave: "collapseAll",
2001 "mouseleave .ui-menu": "collapseAll",
2002 focus: function( event, keepActiveItem ) {
2003 // If there's already an active item, keep it active
2004 // If not, activate the first item
2005 var item = this.active || this.element.children( ".ui-menu-item" ).eq( 0 );
2006
2007 if ( !keepActiveItem ) {
2008 this.focus( event, item );
2009 }
2010 },
2011 blur: function( event ) {
2012 this._delay(function() {
2013 if ( !$.contains( this.element[0], this.document[0].activeElement ) ) {
2014 this.collapseAll( event );
2015 }
2016 });
2017 },
2018 keydown: "_keydown"
2019 });
2020
2021 this.refresh();
2022
2023 // Clicks outside of a menu collapse any open menus
2024 this._on( this.document, {
2025 click: function( event ) {
2026 if ( !$( event.target ).closest( ".ui-menu" ).length ) {
2027 this.collapseAll( event );
2028 }
2029
2030 // Reset the mouseHandled flag
2031 this.mouseHandled = false;
2032 }
2033 });
2034 },
2035
2036 _destroy: function() {
2037 // Destroy (sub)menus
2038 this.element
2039 .removeAttr( "aria-activedescendant" )
2040 .find( ".ui-menu" ).addBack()
2041 .removeClass( "ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons" )
2042 .removeAttr( "role" )
2043 .removeAttr( "tabIndex" )
2044 .removeAttr( "aria-labelledby" )
2045 .removeAttr( "aria-expanded" )
2046 .removeAttr( "aria-hidden" )
2047 .removeAttr( "aria-disabled" )
2048 .removeUniqueId()
2049 .show();
2050
2051 // Destroy menu items
2052 this.element.find( ".ui-menu-item" )
2053 .removeClass( "ui-menu-item" )
2054 .removeAttr( "role" )
2055 .removeAttr( "aria-disabled" )
2056 .children( "a" )
2057 .removeUniqueId()
2058 .removeClass( "ui-corner-all ui-state-hover" )
2059 .removeAttr( "tabIndex" )
2060 .removeAttr( "role" )
2061 .removeAttr( "aria-haspopup" )
2062 .children().each( function() {
2063 var elem = $( this );
2064 if ( elem.data( "ui-menu-submenu-carat" ) ) {
2065 elem.remove();
2066 }
2067 });
2068
2069 // Destroy menu dividers
2070 this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" );
2071 },
2072
2073 _keydown: function( event ) {
2074 var match, prev, character, skip, regex,
2075 preventDefault = true;
2076
2077 function escape( value ) {
2078 return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
2079 }
2080
2081 switch ( event.keyCode ) {
2082 case $.ui.keyCode.PAGE_UP:
2083 this.previousPage( event );
2084 break;
2085 case $.ui.keyCode.PAGE_DOWN:
2086 this.nextPage( event );
2087 break;
2088 case $.ui.keyCode.HOME:
2089 this._move( "first", "first", event );
2090 break;
2091 case $.ui.keyCode.END:
2092 this._move( "last", "last", event );
2093 break;
2094 case $.ui.keyCode.UP:
2095 this.previous( event );
2096 break;
2097 case $.ui.keyCode.DOWN:
2098 this.next( event );
2099 break;
2100 case $.ui.keyCode.LEFT:
2101 this.collapse( event );
2102 break;
2103 case $.ui.keyCode.RIGHT:
2104 if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
2105 this.expand( event );
2106 }
2107 break;
2108 case $.ui.keyCode.ENTER:
2109 case $.ui.keyCode.SPACE:
2110 this._activate( event );
2111 break;
2112 case $.ui.keyCode.ESCAPE:
2113 this.collapse( event );
2114 break;
2115 default:
2116 preventDefault = false;
2117 prev = this.previousFilter || "";
2118 character = String.fromCharCode( event.keyCode );
2119 skip = false;
2120
2121 clearTimeout( this.filterTimer );
2122
2123 if ( character === prev ) {
2124 skip = true;
2125 } else {
2126 character = prev + character;
2127 }
2128
2129 regex = new RegExp( "^" + escape( character ), "i" );
2130 match = this.activeMenu.children( ".ui-menu-item" ).filter(function() {
2131 return regex.test( $( this ).children( "a" ).text() );
2132 });
2133 match = skip && match.index( this.active.next() ) !== -1 ?
2134 this.active.nextAll( ".ui-menu-item" ) :
2135 match;
2136
2137 // If no matches on the current filter, reset to the last character pressed
2138 // to move down the menu to the first item that starts with that character
2139 if ( !match.length ) {
2140 character = String.fromCharCode( event.keyCode );
2141 regex = new RegExp( "^" + escape( character ), "i" );
2142 match = this.activeMenu.children( ".ui-menu-item" ).filter(function() {
2143 return regex.test( $( this ).children( "a" ).text() );
2144 });
2145 }
2146
2147 if ( match.length ) {
2148 this.focus( event, match );
2149 if ( match.length > 1 ) {
2150 this.previousFilter = character;
2151 this.filterTimer = this._delay(function() {
2152 delete this.previousFilter;
2153 }, 1000 );
2154 } else {
2155 delete this.previousFilter;
2156 }
2157 } else {
2158 delete this.previousFilter;
2159 }
2160 }
2161
2162 if ( preventDefault ) {
2163 event.preventDefault();
2164 }
2165 },
2166
2167 _activate: function( event ) {
2168 if ( !this.active.is( ".ui-state-disabled" ) ) {
2169 if ( this.active.children( "a[aria-haspopup='true']" ).length ) {
2170 this.expand( event );
2171 } else {
2172 this.select( event );
2173 }
2174 }
2175 },
2176
2177 refresh: function() {
2178 var menus,
2179 icon = this.options.icons.submenu,
2180 submenus = this.element.find( this.options.menus );
2181
2182 this.element.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length );
2183
2184 // Initialize nested menus
2185 submenus.filter( ":not(.ui-menu)" )
2186 .addClass( "ui-menu ui-widget ui-widget-content ui-corner-all" )
2187 .hide()
2188 .attr({
2189 role: this.options.role,
2190 "aria-hidden": "true",
2191 "aria-expanded": "false"
2192 })
2193 .each(function() {
2194 var menu = $( this ),
2195 item = menu.prev( "a" ),
2196 submenuCarat = $( "<span>" )
2197 .addClass( "ui-menu-icon ui-icon " + icon )
2198 .data( "ui-menu-submenu-carat", true );
2199
2200 item
2201 .attr( "aria-haspopup", "true" )
2202 .prepend( submenuCarat );
2203 menu.attr( "aria-labelledby", item.attr( "id" ) );
2204 });
2205
2206 menus = submenus.add( this.element );
2207
2208 // Don't refresh list items that are already adapted
2209 menus.children( ":not(.ui-menu-item):has(a)" )
2210 .addClass( "ui-menu-item" )
2211 .attr( "role", "presentation" )
2212 .children( "a" )
2213 .uniqueId()
2214 .addClass( "ui-corner-all" )
2215 .attr({
2216 tabIndex: -1,
2217 role: this._itemRole()
2218 });
2219
2220 // Initialize unlinked menu-items containing spaces and/or dashes only as dividers
2221 menus.children( ":not(.ui-menu-item)" ).each(function() {
2222 var item = $( this );
2223 // hyphen, em dash, en dash
2224 if ( !/[^\-\u2014\u2013\s]/.test( item.text() ) ) {
2225 item.addClass( "ui-widget-content ui-menu-divider" );
2226 }
2227 });
2228
2229 // Add aria-disabled attribute to any disabled menu item
2230 menus.children( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
2231
2232 // If the active item has been removed, blur the menu
2233 if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
2234 this.blur();
2235 }
2236 },
2237
2238 _itemRole: function() {
2239 return {
2240 menu: "menuitem",
2241 listbox: "option"
2242 }[ this.options.role ];
2243 },
2244
2245 _setOption: function( key, value ) {
2246 if ( key === "icons" ) {
2247 this.element.find( ".ui-menu-icon" )
2248 .removeClass( this.options.icons.submenu )
2249 .addClass( value.submenu );
2250 }
2251 this._super( key, value );
2252 },
2253
2254 focus: function( event, item ) {
2255 var nested, focused;
2256 this.blur( event, event && event.type === "focus" );
2257
2258 this._scrollIntoView( item );
2259
2260 this.active = item.first();
2261 focused = this.active.children( "a" ).addClass( "ui-state-focus" );
2262 // Only update aria-activedescendant if there's a role
2263 // otherwise we assume focus is managed elsewhere
2264 if ( this.options.role ) {
2265 this.element.attr( "aria-activedescendant", focused.attr( "id" ) );
2266 }
2267
2268 // Highlight active parent menu item, if any
2269 this.active
2270 .parent()
2271 .closest( ".ui-menu-item" )
2272 .children( "a:first" )
2273 .addClass( "ui-state-active" );
2274
2275 if ( event && event.type === "keydown" ) {
2276 this._close();
2277 } else {
2278 this.timer = this._delay(function() {
2279 this._close();
2280 }, this.delay );
2281 }
2282
2283 nested = item.children( ".ui-menu" );
2284 if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {
2285 this._startOpening(nested);
2286 }
2287 this.activeMenu = item.parent();
2288
2289 this._trigger( "focus", event, { item: item } );
2290 },
2291
2292 _scrollIntoView: function( item ) {
2293 var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
2294 if ( this._hasScroll() ) {
2295 borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0;
2296 paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0;
2297 offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
2298 scroll = this.activeMenu.scrollTop();
2299 elementHeight = this.activeMenu.height();
2300 itemHeight = item.height();
2301
2302 if ( offset < 0 ) {
2303 this.activeMenu.scrollTop( scroll + offset );
2304 } else if ( offset + itemHeight > elementHeight ) {
2305 this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
2306 }
2307 }
2308 },
2309
2310 blur: function( event, fromFocus ) {
2311 if ( !fromFocus ) {
2312 clearTimeout( this.timer );
2313 }
2314
2315 if ( !this.active ) {
2316 return;
2317 }
2318
2319 this.active.children( "a" ).removeClass( "ui-state-focus" );
2320 this.active = null;
2321
2322 this._trigger( "blur", event, { item: this.active } );
2323 },
2324
2325 _startOpening: function( submenu ) {
2326 clearTimeout( this.timer );
2327
2328 // Don't open if already open fixes a Firefox bug that caused a .5 pixel
2329 // shift in the submenu position when mousing over the carat icon
2330 if ( submenu.attr( "aria-hidden" ) !== "true" ) {
2331 return;
2332 }
2333
2334 this.timer = this._delay(function() {
2335 this._close();
2336 this._open( submenu );
2337 }, this.delay );
2338 },
2339
2340 _open: function( submenu ) {
2341 var position = $.extend({
2342 of: this.active
2343 }, this.options.position );
2344
2345 clearTimeout( this.timer );
2346 this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) )
2347 .hide()
2348 .attr( "aria-hidden", "true" );
2349
2350 submenu
2351 .show()
2352 .removeAttr( "aria-hidden" )
2353 .attr( "aria-expanded", "true" )
2354 .position( position );
2355 },
2356
2357 collapseAll: function( event, all ) {
2358 clearTimeout( this.timer );
2359 this.timer = this._delay(function() {
2360 // If we were passed an event, look for the submenu that contains the event
2361 var currentMenu = all ? this.element :
2362 $( event && event.target ).closest( this.element.find( ".ui-menu" ) );
2363
2364 // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway
2365 if ( !currentMenu.length ) {
2366 currentMenu = this.element;
2367 }
2368
2369 this._close( currentMenu );
2370
2371 this.blur( event );
2372 this.activeMenu = currentMenu;
2373 }, this.delay );
2374 },
2375
2376 // With no arguments, closes the currently active menu - if nothing is active
2377 // it closes all menus. If passed an argument, it will search for menus BELOW
2378 _close: function( startMenu ) {
2379 if ( !startMenu ) {
2380 startMenu = this.active ? this.active.parent() : this.element;
2381 }
2382
2383 startMenu
2384 .find( ".ui-menu" )
2385 .hide()
2386 .attr( "aria-hidden", "true" )
2387 .attr( "aria-expanded", "false" )
2388 .end()
2389 .find( "a.ui-state-active" )
2390 .removeClass( "ui-state-active" );
2391 },
2392
2393 collapse: function( event ) {
2394 var newItem = this.active &&
2395 this.active.parent().closest( ".ui-menu-item", this.element );
2396 if ( newItem && newItem.length ) {
2397 this._close();
2398 this.focus( event, newItem );
2399 }
2400 },
2401
2402 expand: function( event ) {
2403 var newItem = this.active &&
2404 this.active
2405 .children( ".ui-menu " )
2406 .children( ".ui-menu-item" )
2407 .first();
2408
2409 if ( newItem && newItem.length ) {
2410 this._open( newItem.parent() );
2411
2412 // Delay so Firefox will not hide activedescendant change in expanding submenu from AT
2413 this._delay(function() {
2414 this.focus( event, newItem );
2415 });
2416 }
2417 },
2418
2419 next: function( event ) {
2420 this._move( "next", "first", event );
2421 },
2422
2423 previous: function( event ) {
2424 this._move( "prev", "last", event );
2425 },
2426
2427 isFirstItem: function() {
2428 return this.active && !this.active.prevAll( ".ui-menu-item" ).length;
2429 },
2430
2431 isLastItem: function() {
2432 return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
2433 },
2434
2435 _move: function( direction, filter, event ) {
2436 var next;
2437 if ( this.active ) {
2438 if ( direction === "first" || direction === "last" ) {
2439 next = this.active
2440 [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
2441 .eq( -1 );
2442 } else {
2443 next = this.active
2444 [ direction + "All" ]( ".ui-menu-item" )
2445 .eq( 0 );
2446 }
2447 }
2448 if ( !next || !next.length || !this.active ) {
2449 next = this.activeMenu.children( ".ui-menu-item" )[ filter ]();
2450 }
2451
2452 this.focus( event, next );
2453 },
2454
2455 nextPage: function( event ) {
2456 var item, base, height;
2457
2458 if ( !this.active ) {
2459 this.next( event );
2460 return;
2461 }
2462 if ( this.isLastItem() ) {
2463 return;
2464 }
2465 if ( this._hasScroll() ) {
2466 base = this.active.offset().top;
2467 height = this.element.height();
2468 this.active.nextAll( ".ui-menu-item" ).each(function() {
2469 item = $( this );
2470 return item.offset().top - base - height < 0;
2471 });
2472
2473 this.focus( event, item );
2474 } else {
2475 this.focus( event, this.activeMenu.children( ".ui-menu-item" )
2476 [ !this.active ? "first" : "last" ]() );
2477 }
2478 },
2479
2480 previousPage: function( event ) {
2481 var item, base, height;
2482 if ( !this.active ) {
2483 this.next( event );
2484 return;
2485 }
2486 if ( this.isFirstItem() ) {
2487 return;
2488 }
2489 if ( this._hasScroll() ) {
2490 base = this.active.offset().top;
2491 height = this.element.height();
2492 this.active.prevAll( ".ui-menu-item" ).each(function() {
2493 item = $( this );
2494 return item.offset().top - base + height > 0;
2495 });
2496
2497 this.focus( event, item );
2498 } else {
2499 this.focus( event, this.activeMenu.children( ".ui-menu-item" ).first() );
2500 }
2501 },
2502
2503 _hasScroll: function() {
2504 return this.element.outerHeight() < this.element.prop( "scrollHeight" );
2505 },
2506
2507 select: function( event ) {
2508 // TODO: It should never be possible to not have an active item at this
2509 // point, but the tests don't trigger mouseenter before click.
2510 this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
2511 var ui = { item: this.active };
2512 if ( !this.active.has( ".ui-menu" ).length ) {
2513 this.collapseAll( event, true );
2514 }
2515 this._trigger( "select", event, ui );
2516 }
2517});
2518
2519}( jQuery ));
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/jquery-ui-1.10.4.custom.min.js b/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/jquery-ui-1.10.4.custom.min.js
deleted file mode 100644
index 31635026..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/jquery-ui-1.10.4.custom.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
1/*! jQuery UI - v1.10.4 - 2014-03-08
2* http://jqueryui.com
3* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.position.js, jquery.ui.autocomplete.js, jquery.ui.menu.js
4* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
5
6(function(e,t){function i(t,i){var s,a,o,r=t.nodeName.toLowerCase();return"area"===r?(s=t.parentNode,a=s.name,t.href&&a&&"map"===s.nodeName.toLowerCase()?(o=e("img[usemap=#"+a+"]")[0],!!o&&n(o)):!1):(/input|select|textarea|button|object/.test(r)?!t.disabled:"a"===r?t.href||i:i)&&n(t)}function n(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}var s=0,a=/^ui-id-\d+$/;e.ui=e.ui||{},e.extend(e.ui,{version:"1.10.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({focus:function(t){return function(i,n){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),n&&n.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),scrollParent:function(){var t;return t=e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(i){if(i!==t)return this.css("zIndex",i);if(this.length)for(var n,s,a=e(this[0]);a.length&&a[0]!==document;){if(n=a.css("position"),("absolute"===n||"relative"===n||"fixed"===n)&&(s=parseInt(a.css("zIndex"),10),!isNaN(s)&&0!==s))return s;a=a.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++s)})},removeUniqueId:function(){return this.each(function(){a.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,n){return!!e.data(t,n[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),s=isNaN(n);return(s||n>=0)&&i(t,!s)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(i,n){function s(t,i,n,s){return e.each(a,function(){i-=parseFloat(e.css(t,"padding"+this))||0,n&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var a="Width"===n?["Left","Right"]:["Top","Bottom"],o=n.toLowerCase(),r={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+n]=function(i){return i===t?r["inner"+n].call(this):this.each(function(){e(this).css(o,s(this,i)+"px")})},e.fn["outer"+n]=function(t,i){return"number"!=typeof t?r["outer"+n].call(this,t):this.each(function(){e(this).css(o,s(this,t,!0,i)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,i,n){var s,a=e.ui[t].prototype;for(s in n)a.plugins[s]=a.plugins[s]||[],a.plugins[s].push([i,n[s]])},call:function(e,t,i){var n,s=e.plugins[t];if(s&&e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType)for(n=0;s.length>n;n++)e.options[s[n][0]]&&s[n][1].apply(e.element,i)}},hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var n=i&&"left"===i?"scrollLeft":"scrollTop",s=!1;return t[n]>0?!0:(t[n]=1,s=t[n]>0,t[n]=0,s)}})})(jQuery);(function(t,e){var i=0,s=Array.prototype.slice,n=t.cleanData;t.cleanData=function(e){for(var i,s=0;null!=(i=e[s]);s++)try{t(i).triggerHandler("remove")}catch(o){}n(e)},t.widget=function(i,s,n){var o,a,r,h,l={},c=i.split(".")[0];i=i.split(".")[1],o=c+"-"+i,n||(n=s,s=t.Widget),t.expr[":"][o.toLowerCase()]=function(e){return!!t.data(e,o)},t[c]=t[c]||{},a=t[c][i],r=t[c][i]=function(t,i){return this._createWidget?(arguments.length&&this._createWidget(t,i),e):new r(t,i)},t.extend(r,a,{version:n.version,_proto:t.extend({},n),_childConstructors:[]}),h=new s,h.options=t.widget.extend({},h.options),t.each(n,function(i,n){return t.isFunction(n)?(l[i]=function(){var t=function(){return s.prototype[i].apply(this,arguments)},e=function(t){return s.prototype[i].apply(this,t)};return function(){var i,s=this._super,o=this._superApply;return this._super=t,this._superApply=e,i=n.apply(this,arguments),this._super=s,this._superApply=o,i}}(),e):(l[i]=n,e)}),r.prototype=t.widget.extend(h,{widgetEventPrefix:a?h.widgetEventPrefix||i:i},l,{constructor:r,namespace:c,widgetName:i,widgetFullName:o}),a?(t.each(a._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,r,i._proto)}),delete a._childConstructors):s._childConstructors.push(r),t.widget.bridge(i,r)},t.widget.extend=function(i){for(var n,o,a=s.call(arguments,1),r=0,h=a.length;h>r;r++)for(n in a[r])o=a[r][n],a[r].hasOwnProperty(n)&&o!==e&&(i[n]=t.isPlainObject(o)?t.isPlainObject(i[n])?t.widget.extend({},i[n],o):t.widget.extend({},o):o);return i},t.widget.bridge=function(i,n){var o=n.prototype.widgetFullName||i;t.fn[i]=function(a){var r="string"==typeof a,h=s.call(arguments,1),l=this;return a=!r&&h.length?t.widget.extend.apply(null,[a].concat(h)):a,r?this.each(function(){var s,n=t.data(this,o);return n?t.isFunction(n[a])&&"_"!==a.charAt(0)?(s=n[a].apply(n,h),s!==n&&s!==e?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):e):t.error("no such method '"+a+"' for "+i+" widget instance"):t.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+a+"'")}):this.each(function(){var e=t.data(this,o);e?e.option(a||{})._init():t.data(this,o,new n(a,this))}),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this.bindings=t(),this.hoverable=t(),this.focusable=t(),s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:t.noop,_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(t.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:t.noop,widget:function(){return this.element},option:function(i,s){var n,o,a,r=i;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof i)if(r={},n=i.split("."),i=n.shift(),n.length){for(o=r[i]=t.widget.extend({},this.options[i]),a=0;n.length-1>a;a++)o[n[a]]=o[n[a]]||{},o=o[n[a]];if(i=n.pop(),1===arguments.length)return o[i]===e?null:o[i];o[i]=s}else{if(1===arguments.length)return this.options[i]===e?null:this.options[i];r[i]=s}return this._setOptions(r),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return this.options[t]=e,"disabled"===t&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!e).attr("aria-disabled",e),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,n){var o,a=this;"boolean"!=typeof i&&(n=s,s=i,i=!1),n?(s=o=t(s),this.bindings=this.bindings.add(s)):(n=s,s=this.element,o=this.widget()),t.each(n,function(n,r){function h(){return i||a.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof r?a[r]:r).apply(a,arguments):e}"string"!=typeof r&&(h.guid=r.guid=r.guid||h.guid||t.guid++);var l=n.match(/^(\w+)\s*(.*)$/),c=l[1]+a.eventNamespace,u=l[2];u?o.delegate(u,c,h):s.bind(c,h)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(e).undelegate(e)},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){t(e.currentTarget).addClass("ui-state-hover")},mouseleave:function(e){t(e.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){t(e.currentTarget).addClass("ui-state-focus")},focusout:function(e){t(e.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}})})(jQuery);(function(t,e){function i(t,e,i){return[parseFloat(t[0])*(p.test(t[0])?e/100:1),parseFloat(t[1])*(p.test(t[1])?i/100:1)]}function s(e,i){return parseInt(t.css(e,i),10)||0}function n(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}t.ui=t.ui||{};var a,o=Math.max,r=Math.abs,l=Math.round,h=/left|center|right/,c=/top|center|bottom/,u=/[\+\-]\d+(\.[\d]+)?%?/,d=/^\w+/,p=/%$/,f=t.fn.position;t.position={scrollbarWidth:function(){if(a!==e)return a;var i,s,n=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=n.children()[0];return t("body").append(n),i=o.offsetWidth,n.css("overflow","scroll"),s=o.offsetWidth,i===s&&(s=n[0].clientWidth),n.remove(),a=i-s},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,a="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:a?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s?i.width():i.outerWidth(),height:s?i.height():i.outerHeight()}}},t.fn.position=function(e){if(!e||!e.of)return f.apply(this,arguments);e=t.extend({},e);var a,p,g,m,v,_,b=t(e.of),y=t.position.getWithinInfo(e.within),k=t.position.getScrollInfo(y),w=(e.collision||"flip").split(" "),D={};return _=n(b),b[0].preventDefault&&(e.at="left top"),p=_.width,g=_.height,m=_.offset,v=t.extend({},m),t.each(["my","at"],function(){var t,i,s=(e[this]||"").split(" ");1===s.length&&(s=h.test(s[0])?s.concat(["center"]):c.test(s[0])?["center"].concat(s):["center","center"]),s[0]=h.test(s[0])?s[0]:"center",s[1]=c.test(s[1])?s[1]:"center",t=u.exec(s[0]),i=u.exec(s[1]),D[this]=[t?t[0]:0,i?i[0]:0],e[this]=[d.exec(s[0])[0],d.exec(s[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===e.at[0]?v.left+=p:"center"===e.at[0]&&(v.left+=p/2),"bottom"===e.at[1]?v.top+=g:"center"===e.at[1]&&(v.top+=g/2),a=i(D.at,p,g),v.left+=a[0],v.top+=a[1],this.each(function(){var n,h,c=t(this),u=c.outerWidth(),d=c.outerHeight(),f=s(this,"marginLeft"),_=s(this,"marginTop"),x=u+f+s(this,"marginRight")+k.width,C=d+_+s(this,"marginBottom")+k.height,M=t.extend({},v),T=i(D.my,c.outerWidth(),c.outerHeight());"right"===e.my[0]?M.left-=u:"center"===e.my[0]&&(M.left-=u/2),"bottom"===e.my[1]?M.top-=d:"center"===e.my[1]&&(M.top-=d/2),M.left+=T[0],M.top+=T[1],t.support.offsetFractions||(M.left=l(M.left),M.top=l(M.top)),n={marginLeft:f,marginTop:_},t.each(["left","top"],function(i,s){t.ui.position[w[i]]&&t.ui.position[w[i]][s](M,{targetWidth:p,targetHeight:g,elemWidth:u,elemHeight:d,collisionPosition:n,collisionWidth:x,collisionHeight:C,offset:[a[0]+T[0],a[1]+T[1]],my:e.my,at:e.at,within:y,elem:c})}),e.using&&(h=function(t){var i=m.left-M.left,s=i+p-u,n=m.top-M.top,a=n+g-d,l={target:{element:b,left:m.left,top:m.top,width:p,height:g},element:{element:c,left:M.left,top:M.top,width:u,height:d},horizontal:0>s?"left":i>0?"right":"center",vertical:0>a?"top":n>0?"bottom":"middle"};u>p&&p>r(i+s)&&(l.horizontal="center"),d>g&&g>r(n+a)&&(l.vertical="middle"),l.important=o(r(i),r(s))>o(r(n),r(a))?"horizontal":"vertical",e.using.call(this,t,l)}),c.offset(t.extend(M,{using:h}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,a=n.offset.left+n.scrollLeft,o=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-o-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-o-a,(0>i||r(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>r(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,a=n.offset.top+n.scrollTop,o=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-o-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-o-a,t.top+p+f+g>c&&(0>s||r(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,t.top+p+f+g>u&&(i>0||u>r(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}},function(){var e,i,s,n,a,o=document.getElementsByTagName("body")[0],r=document.createElement("div");e=document.createElement(o?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&t.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(a in s)e.style[a]=s[a];e.appendChild(r),i=o||document.documentElement,i.insertBefore(e,i.firstChild),r.style.cssText="position: absolute; left: 10.7432222px;",n=t(r).offset().left,t.support.offsetFractions=n>10&&11>n,e.innerHTML="",i.removeChild(e)}()})(jQuery);(function(e){e.widget("ui.autocomplete",{version:"1.10.4",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,undefined;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:case a.NUMPAD_ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),undefined;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),undefined):(this._searchTimeout(e),undefined)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,undefined):(clearTimeout(this.searching),this.close(e),this._change(e),undefined)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().data("ui-menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),undefined;var s=i.item.data("ui-autocomplete-item");!1!==this._trigger("focus",t,{item:s})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value):this.liveRegion.text(s.value)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertBefore(this.element),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):undefined},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").append(e("<a>").text(i.label)).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this._value(this.term),this.menu.blur(),undefined):(this.menu[e](t),undefined):(this.search(null,t),undefined)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments),this.options.disabled||this.cancelSearch||(t=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.text(t))}})})(jQuery);(function(t){t.widget("ui.menu",{version:"1.10.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,t.proxy(function(t){this.options.disabled&&t.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(t){t.preventDefault()},"click .ui-state-disabled > a":function(t){t.preventDefault()},"click .ui-menu-item:has(a)":function(e){var i=t(e.target).closest(".ui-menu-item");!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&t(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){var i=t(e.currentTarget);i.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(e,i)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.children(".ui-menu-item").eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){t.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){t(e.target).closest(".ui-menu").length||this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var e=t(this);e.data("ui-menu-submenu-carat")&&e.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(e){function i(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var s,n,a,o,r,l=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:l=!1,n=this.previousFilter||"",a=String.fromCharCode(e.keyCode),o=!1,clearTimeout(this.filterTimer),a===n?o=!0:a=n+a,r=RegExp("^"+i(a),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())}),s=o&&-1!==s.index(this.active.next())?this.active.nextAll(".ui-menu-item"):s,s.length||(a=String.fromCharCode(e.keyCode),r=RegExp("^"+i(a),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())})),s.length?(this.focus(e,s),s.length>1?(this.previousFilter=a,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}l&&e.preventDefault()},_activate:function(t){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i=this.options.icons.submenu,s=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),s.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),s=e.prev("a"),n=t("<span>").addClass("ui-menu-icon ui-icon "+i).data("ui-menu-submenu-carat",!0);s.attr("aria-haspopup","true").prepend(n),e.attr("aria-labelledby",s.attr("id"))}),e=s.add(this.element),e.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),e.children(":not(.ui-menu-item)").each(function(){var e=t(this);/[^\-\u2014\u2013\s]/.test(e.text())||e.addClass("ui-widget-content ui-menu-divider")}),e.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){"icons"===t&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(e.submenu),this._super(t,e)},focus:function(t,e){var i,s;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=e.height(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",t,{item:this.active}))},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.children(".ui-menu-item")[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())),undefined):(this.next(e),undefined)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item").first())),undefined):(this.next(e),undefined)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)}})})(jQuery); \ No newline at end of file
diff --git a/src/Wallabag/CoreBundle/Resources/views/Config/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig
index c90bb2e3..c90bb2e3 100644
--- a/src/Wallabag/CoreBundle/Resources/views/Config/index.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig
diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/edit.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/edit.html.twig
index 0d4d5ad2..0d4d5ad2 100644
--- a/src/Wallabag/CoreBundle/Resources/views/Entry/edit.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/edit.html.twig
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig
new file mode 100644
index 00000000..176290e4
--- /dev/null
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig
@@ -0,0 +1,120 @@
1{% extends "WallabagCoreBundle::layout.html.twig" %}
2
3{% block title "Unread" %}
4
5{% block content %}
6 {% block pager %}
7 <div class="results">
8 <div class="nb-results">{{ entries.count }} {% trans %}entries{% endtrans %}</div>
9 <div class="pagination">
10 <a href="#" id="filter">{% trans %}Filter{% endtrans %}</a>
11 {% if entries is not empty %}
12
13 {% for p in range(1, entries.nbPages) if entries.nbPages > 1 %}
14 <li>
15 <a href="{{ path(app.request.attributes.get('_route'), app.request.query.all|merge({'page': p})) }}" class="{{ currentPage == p ? 'current':''}}" >{{ p }}</a>
16 </li>
17 {% endfor %}
18 {% endif %}
19 </div>
20 </div>
21 {% endblock %}
22
23 {% if entries is empty %}
24 <div class="messages warning"><p>{% trans %}No articles found.{% endtrans %}</p></div>
25 {% else %}
26 {% for entry in entries %}
27 <div id="entry-{{ entry.id|e }}" class="entry">
28 <h2><a href="{{ path('view', { 'id': entry.id }) }}">{{ entry.title|raw }}</a></h2>
29 {% if entry.readingTime > 0 %}
30 <div class="estimatedTime"><span class="tool reading-time">{% trans %}estimated reading time :{% endtrans %} {{ entry.readingTime }} min</span></div>
31 {% else %}
32 <div class="estimatedTime"><span class="tool reading-time">{% trans %}estimated reading time :{% endtrans %} <small class="inferieur">&lt;</small> 1 min</span></div>
33 {% endif %}
34
35 <ul class="tools links">
36 <li><a title="{% trans %}Toggle mark as read{% endtrans %}" class="tool icon-check icon {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{% trans %}Toggle mark as read{% endtrans %}</span></a></li>
37 <li><a title="{% trans %}toggle favorite{% endtrans %}" class="tool icon-star icon {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{% trans %}toggle favorite{% endtrans %}</span></a></li>
38 <li><a title="{% trans %}delete{% endtrans %}" class="tool delete icon-trash icon" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{% trans %}delete{% endtrans %}</span></a></li>
39 <li><a href="{{ entry.url|e }}" target="_blank" title="{% trans %}original{% endtrans %} : {{ entry.title|e }}" class="tool link icon-link icon"><span>{{ entry.domainName }}</span></a></li>
40 </ul>
41 {% if entry.previewPicture is null %}
42 <p>{{ entry.content|striptags|slice(0, 300) }}&hellip;</p>
43 {% else %}
44 <img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" />
45 {% endif %}
46 </div>
47 {% endfor %}
48 {% endif %}
49
50 <aside id="filter-form" class="">
51 <form method="get" action="{{ path('all') }}">
52 <h2>{% trans %}Filters{% endtrans %}</h2>
53 <a href="javascript: void(null);" id="filter-form-close" class="close-button--popup close-button">&times;</a>
54
55 <div id="filter-status" class="filter-group">
56 <div class="">
57 <label>{% trans %}Status{% endtrans %}</label>
58 </div>
59 <div class="input-field">
60 {{ form_widget(form.isArchived) }}
61 <label for="entry_filter_isArchived">{% trans %}Archived{% endtrans %}</label>
62 </div>
63
64 <div class="input-field">
65 {{ form_widget(form.isStarred) }}
66 <label for="entry_filter_isStarred">{% trans %}Starred{% endtrans %}</label>
67 </div>
68
69 <div class="input-field">
70 {{ form_widget(form.previewPicture) }}
71 <label for="entry_filter_previewPicture">{% trans %}Has a preview picture{% endtrans %}</label>
72 </div>
73 </div>
74 <div id="filter-reading-time" class="filter-group">
75 <div class="">
76 <label>{% trans %}Reading time in minutes{% endtrans %}</label>
77 </div>
78 <div class="input-field ">
79 <label for="entry_filter_readingTime_left_number">{% trans %}from{% endtrans %}</label>
80 {{ form_widget(form.readingTime.left_number, {'type': 'number'}) }}
81 </div>
82 <div class="input-field ">
83 <label for="entry_filter_readingTime_right_number">{% trans %}to{% endtrans %}</label>
84 {{ form_widget(form.readingTime.right_number, {'type': 'number'}) }}
85 </div>
86 </div>
87
88 <div id="filter-domain-name" class="filter-group">
89 <label for="entry_filter_domainName">{% trans %}Domain name{% endtrans %}</label>
90 <div class="input-field ">
91 {{ form_widget(form.domainName, {'type': 'text', 'attr' : {'placeholder': 'website.com'} }) }}
92 </div>
93 </div>
94
95 <div id="filter-creation-date" class="filter-group">
96 <div class="">
97 <label>{% trans %}Creation date{% endtrans %}</label>
98 </div>
99 <div class="input-field ">
100 <label for="entry_filter_createdAt_left_date" class="active">{% trans %}from{% endtrans %}</label>
101 {{ form_widget(form.createdAt.left_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.left_date.vars.value} }) }}
102 </div>
103 <div class="input-field ">
104 <label for="entry_filter_createdAt_right_date" class="active">{% trans %}to{% endtrans %}</label>
105 {{ form_widget(form.createdAt.right_date, {'type': 'date', 'attr': {'class': 'datepicker', 'data-value': form.createdAt.right_date.vars.value} }) }}
106 </div>
107 </div>
108 <div id="filter-buttons" class="filter-group">
109
110 <div class="">
111 <a href="#!" class="center waves-effect waves-green btn-flat" id="clear_form_filters">{% trans %}Clear{% endtrans %}</a>
112 </div>
113
114 <button class="btn waves-effect waves-light" type="submit" id="submit-filter" value="filter">{% trans %}Filters{% endtrans %}</button>
115
116 </div>
117 </form>
118 </aside>
119
120{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/entries.xml.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig
index a39a8dc3..a39a8dc3 100644
--- a/src/Wallabag/CoreBundle/Resources/views/Entry/entries.xml.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig
diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/entry.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig
index f58d0399..f58d0399 100644
--- a/src/Wallabag/CoreBundle/Resources/views/Entry/entry.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig
diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/new.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new.html.twig
index 95ed0785..95ed0785 100644
--- a/src/Wallabag/CoreBundle/Resources/views/Entry/new.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new.html.twig
diff --git a/src/Wallabag/CoreBundle/Resources/views/Entry/new_form.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new_form.html.twig
index d182d552..d182d552 100644
--- a/src/Wallabag/CoreBundle/Resources/views/Entry/new_form.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/new_form.html.twig
diff --git a/src/Wallabag/CoreBundle/Resources/views/Mail/forgotPassword.txt.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Mail/forgotPassword.txt.twig
index 631bcb88..631bcb88 100644
--- a/src/Wallabag/CoreBundle/Resources/views/Mail/forgotPassword.txt.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Mail/forgotPassword.txt.twig
diff --git a/src/Wallabag/CoreBundle/Resources/views/Security/checkEmail.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Security/checkEmail.html.twig
index 056d65b5..056d65b5 100644
--- a/src/Wallabag/CoreBundle/Resources/views/Security/checkEmail.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Security/checkEmail.html.twig
diff --git a/src/Wallabag/CoreBundle/Resources/views/Security/forgotPassword.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Security/forgotPassword.html.twig
index 4476ea7b..4476ea7b 100644
--- a/src/Wallabag/CoreBundle/Resources/views/Security/forgotPassword.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Security/forgotPassword.html.twig
diff --git a/src/Wallabag/CoreBundle/Resources/views/Security/login.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Security/login.html.twig
index 5437d20c..5437d20c 100644
--- a/src/Wallabag/CoreBundle/Resources/views/Security/login.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Security/login.html.twig
diff --git a/src/Wallabag/CoreBundle/Resources/views/Security/reset.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Security/reset.html.twig
index fda88af2..fda88af2 100644
--- a/src/Wallabag/CoreBundle/Resources/views/Security/reset.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Security/reset.html.twig
diff --git a/src/Wallabag/CoreBundle/Resources/views/Static/about.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig
index 311b5067..311b5067 100755
--- a/src/Wallabag/CoreBundle/Resources/views/Static/about.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig
diff --git a/src/Wallabag/CoreBundle/Resources/views/Static/howto.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig
index 58cb316b..58cb316b 100644
--- a/src/Wallabag/CoreBundle/Resources/views/Static/howto.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig
diff --git a/src/Wallabag/CoreBundle/Resources/views/Tag/new_form.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/new_form.html.twig
index 0b5a530d..0b5a530d 100644
--- a/src/Wallabag/CoreBundle/Resources/views/Tag/new_form.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/new_form.html.twig
diff --git a/src/Wallabag/CoreBundle/Resources/views/Tag/tags.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig
index c2a461b8..c2a461b8 100644
--- a/src/Wallabag/CoreBundle/Resources/views/Tag/tags.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig
index dffea036..3d573eaa 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig
@@ -14,4 +14,59 @@
14 {{ parent() }} 14 {{ parent() }}
15 15
16 <script src="{{ asset('themes/baggy/js/init.js') }}"></script> 16 <script src="{{ asset('themes/baggy/js/init.js') }}"></script>
17 <script src="{{ asset('themes/baggy/js/closeMessage.js') }}"></script>
18 <script src="{{ asset('themes/baggy/js/autoClose.js') }}"></script>
19 <script src="{{ asset('themes/baggy/js/saveLink.js') }}"></script>
20 <script src="{{ asset('themes/baggy/js/popupForm.js') }}"></script>
21{% endblock %}
22
23{% block header %}
24 <header class="w600p center mbm">
25 <h1 class="logo">
26 {% block logo %}
27 <img width="100" height="100" src="{{ asset('themes/baggy/img/logo-w.png') }}" alt="wallabag logo" />
28 {% endblock %}
29 </h1>
30 </header>
31{% endblock %}
32
33{% block menu %}
34 <button id="menu" class="icon icon-menu desktopHide"><span>Menu</span></button>
35 <ul id="links" class="links">
36 <li><a href="{{ path('unread') }}">{% trans %}unread{% endtrans %}</a></li>
37 <li><a href="{{ path('starred') }}">{% trans %}favorites{% endtrans %}</a></li>
38 <li><a href="{{ path('archive') }}"}>{% trans %}archive{% endtrans %}</a></li>
39 <li><a href="{{ path('all') }}"}>{% trans %}all{% endtrans %}</a></li>
40 <li><a href="{{ path('tag') }}">{% trans %}tags{% endtrans %}</a></li>
41 <li><a href="{{ path('new') }}">{% trans %}save a link{% endtrans %}</a></li>
42 <li style="position: relative;"><a href="javascript: void(null);" id="search">{% trans %}search{% endtrans %}</a>
43 <div id="search-form" class="messages info popup-form">
44 <form method="get" action="index.php">
45 <h2>{% trans %}Search{% endtrans %}</h2>
46 <a href="javascript: void(null);" id="search-form-close" class="close-button--popup close-button">&times;</a>
47 <input type="hidden" name="view" value="search"></input>
48 <input required placeholder="{% trans %}Enter your search here{% endtrans %}" type="text" name="search" id="searchfield"><br>
49 <input id="submit-search" type="submit" value="{% trans %}Search{% endtrans %}"></input>
50 </form>
51 </div>
52 </li>
53 <li><a href="{{ path('config') }}">{% trans %}config{% endtrans %}</a></li>
54 <li><a href="{{ path('about') }}">{% trans %}about{% endtrans %}</a></li>
55 <li><a class="icon icon-power" href="{{ path('logout') }}" title="{% trans %}logout{% endtrans %}">{% trans %}logout{% endtrans %}</a></li>
56 </ul>
57{% endblock %}
58
59{% block messages %}
60 {% for flashMessage in app.session.flashbag.get('notice') %}
61 <div class="messages success">
62 <a href="#" class="closeMessage">×</a>
63 <p>{{ flashMessage }}</p>
64 </div>
65 {% endfor %}
66{% endblock %}
67
68{% block footer %}
69 <footer class="w600p center mt3 mb3 smaller txtright">
70 <p>{% trans %}powered by{% endtrans %} <a href="http://wallabag.org">wallabag</a></p>
71 </footer>
17{% endblock %} 72{% endblock %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/css/main.css b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/css/main.css
index 72a7b205..950d8b0e 100755
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/css/main.css
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/css/main.css
@@ -939,6 +939,34 @@ pre code {
939 font-size: 0.96em; 939 font-size: 0.96em;
940} 940}
941 941
942#filter-form {
943 position: fixed;
944 width: 20%;
945 height: 100%;
946 top: 0;
947 right: 0;
948 background-color: #FFF;
949 padding: 15px;
950 padding-right: 30px;
951 padding-top: 30px;
952
953 z-index: 12;
954
955 /*transition-property: transform;
956 transition-duration: 0.3s;
957 transition-delay: 0.3s;
958
959 transform: translate3d(100%, 0, 0);*/
960}
961
962#filter-form form {
963
964}
965
966#filter-form form .filter-group {
967 margin: 5px;
968}
969
942 970
943/* ========================================================================== 971/* ==========================================================================
944 6 = Media Queries 972 6 = Media Queries
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/autoClose.js b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/js/autoClose.js
index e9145b7e..e9145b7e 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/autoClose.js
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/js/autoClose.js
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/autoCompleteTags.js b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/js/autoCompleteTags.js
index 90bc982c..90bc982c 100755
--- a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/autoCompleteTags.js
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/js/autoCompleteTags.js
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/closeMessage.js b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/js/closeMessage.js
index 527719d5..527719d5 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/closeMessage.js
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/js/closeMessage.js
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/popupForm.js b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/js/popupForm.js
index d233e600..b933acd1 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/popupForm.js
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/js/popupForm.js
@@ -2,6 +2,7 @@ $(document).ready(function() {
2 2
3 $("#search-form").hide(); 3 $("#search-form").hide();
4 $("#bagit-form").hide(); 4 $("#bagit-form").hide();
5 $("#filter-form").hide();
5 6
6 //--------------------------------------------------------------------------- 7 //---------------------------------------------------------------------------
7 // Toggle the "Search" popup in the sidebar 8 // Toggle the "Search" popup in the sidebar
@@ -19,6 +20,13 @@ $(document).ready(function() {
19 } 20 }
20 21
21 //--------------------------------------------------------------------------- 22 //---------------------------------------------------------------------------
23 // Toggle the "Filter" popup on entries list
24 //---------------------------------------------------------------------------
25 function toggleFilter() {
26 $("#filter-form").toggle();
27 }
28
29 //---------------------------------------------------------------------------
22 // Toggle the "Save a Link" popup in the sidebar 30 // Toggle the "Save a Link" popup in the sidebar
23 //--------------------------------------------------------------------------- 31 //---------------------------------------------------------------------------
24 function toggleBagit() { 32 function toggleBagit() {
@@ -50,6 +58,11 @@ $(document).ready(function() {
50 $("#searchfield").focus(); 58 $("#searchfield").focus();
51 }); 59 });
52 60
61 $("#filter").click(function(){
62 closePopups();
63 toggleFilter();
64 });
65
53 $("#bagit").click(function(){ 66 $("#bagit").click(function(){
54 closePopups(); 67 closePopups();
55 toggleBagit(); 68 toggleBagit();
@@ -60,13 +73,11 @@ $(document).ready(function() {
60 toggleSearch(); 73 toggleSearch();
61 }); 74 });
62 75
76 $("#filter-form-close").click(function(){
77 toggleFilter();
78 });
79
63 $("#bagit-form-close").click(function(){ 80 $("#bagit-form-close").click(function(){
64 toggleBagit(); 81 toggleBagit();
65 }); 82 });
66
67 // $("#").click(function(){
68 // toggleSearch();
69 // });
70
71
72}); 83});
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/saveLink.js b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/js/saveLink.js
index a7acd84c..a7acd84c 100755
--- a/src/Wallabag/CoreBundle/Resources/views/themes/_global/public/js/saveLink.js
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/public/js/saveLink.js
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig
new file mode 100644
index 00000000..a39a8dc3
--- /dev/null
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig
@@ -0,0 +1,34 @@
1<?xml version="1.0" encoding="utf-8"?>
2<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">
3 <channel>
4 <title>wallabag — {{type}} feed</title>
5 <link>{{ url('unread') }}</link>
6 <pubDate>{{ "now"|date('D, d M Y H:i:s') }}</pubDate>
7 <generator>wallabag</generator>
8 <description>wallabag {{type}} elements</description>
9
10 {% for entry in entries %}
11
12 <item>
13 <title><![CDATA[{{ entry.title }}]]></title>
14 <source url="{{ url('view', { 'id': entry.id }) }}">wallabag</source>
15 <link>{{ url('view', { 'id': entry.id }) }}</link>
16 <guid>{{ url('view', { 'id': entry.id }) }}</guid>
17 <pubDate>{{ entry.createdAt|date('D, d M Y H:i:s') }}</pubDate>
18 <description>
19 <![CDATA[
20 {%- if entry.readingTime > 0 -%}
21 {% trans %}estimated reading time :{% endtrans %} {{ entry.readingTime }} min
22 {%- else -%}
23 {% trans %}estimated reading time :{% endtrans %} &lt; 1 min
24 {%- endif %}
25
26 {{ entry.content|raw -}}
27 ]]>
28 </description>
29 </item>
30
31 {% endfor %}
32
33 </channel>
34</rss>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Mail/forgotPassword.txt.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Mail/forgotPassword.txt.twig
new file mode 100644
index 00000000..631bcb88
--- /dev/null
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Mail/forgotPassword.txt.twig
@@ -0,0 +1,6 @@
1Hello {{username}}!
2
3To reset your password - please visit {{confirmationUrl}}
4
5Regards,
6Wallabag bot