summaryrefslogtreecommitdiff
path: root/p
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-10-31 17:21:20 +0100
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-10-31 17:21:20 +0100
commit105729639bd06c27536bbdd2968873046278d59f (patch)
tree30dcf7e3ae471b30810fb22ed701e0bb7d034fc8 /p
parentcaf98a6468dcea5ae8c38062e4eb527cb3667db9 (diff)
parentee50df518310d3aee5efb5a0c15548b457d10e7e (diff)
Merge branch 'beta' into hotfixes
Diffstat (limited to 'p')
-rw-r--r--p/api/greader.php6
-rw-r--r--p/ext.php38
-rwxr-xr-xp/i/index.php2
-rw-r--r--p/scripts/bcrypt.min.js78
-rw-r--r--p/scripts/category.js118
-rw-r--r--p/scripts/global_view.js17
-rw-r--r--p/scripts/main.js241
-rw-r--r--p/scripts/persona.js76
-rw-r--r--p/scripts/shortcut.js4
-rw-r--r--p/themes/Dark/dark.css224
-rw-r--r--p/themes/Flat/flat.css224
-rw-r--r--p/themes/Origine/origine.css219
-rw-r--r--p/themes/Pafat/pafat.css277
-rw-r--r--p/themes/Screwdriver/screwdriver.css261
-rw-r--r--p/themes/base-theme/base.css182
-rw-r--r--p/themes/base-theme/template.css247
-rw-r--r--p/themes/icons/import.svg1
17 files changed, 1347 insertions, 868 deletions
diff --git a/p/api/greader.php b/p/api/greader.php
index 5a6fdad7d..1a66c30fb 100644
--- a/p/api/greader.php
+++ b/p/api/greader.php
@@ -160,7 +160,7 @@ function authorizationToUserConf() {
return $conf;
} else {
logMe('Invalid API authorisation for user ' . $user . ': ' . $headerAuthX[1] . "\n");
- Minz_Log::record('Invalid API authorisation for user ' . $user . ': ' . $headerAuthX[1], Minz_Log::WARNING);
+ Minz_Log::warning('Invalid API authorisation for user ' . $user . ': ' . $headerAuthX[1]);
unauthorized();
}
} else {
@@ -181,7 +181,7 @@ function clientLogin($email, $pass) { //http://web.archive.org/web/2013060409104
$conf = new FreshRSS_Configuration($email);
} catch (Exception $e) {
logMe($e->getMessage() . "\n");
- Minz_Log::record('Invalid API user ' . $email, Minz_Log::WARNING);
+ Minz_Log::warning('Invalid API user ' . $email);
unauthorized();
}
if ($conf->apiPasswordHash != '' && password_verify($pass, $conf->apiPasswordHash)) {
@@ -191,7 +191,7 @@ function clientLogin($email, $pass) { //http://web.archive.org/web/2013060409104
'Auth=', $auth, "\n";
exit();
} else {
- Minz_Log::record('Password API mismatch for user ' . $email, Minz_Log::WARNING);
+ Minz_Log::warning('Password API mismatch for user ' . $email);
unauthorized();
}
} else {
diff --git a/p/ext.php b/p/ext.php
new file mode 100644
index 000000000..a1dde2f93
--- /dev/null
+++ b/p/ext.php
@@ -0,0 +1,38 @@
+<?php
+if (!isset($_GET['e'])) {
+ header('HTTP/1.1 400 Bad Request');
+ die();
+}
+$extension = substr($_GET['e'], 0, 64);
+if (!ctype_alpha($extension)) {
+ header('HTTP/1.1 400 Bad Request');
+ die();
+}
+
+require('../constants.php');
+$filename = FRESHRSS_PATH . '/extensions/' . $extension . '/';
+
+if (isset($_GET['j'])) {
+ header('Content-Type: application/javascript; charset=UTF-8');
+ header('Content-Disposition: inline; filename="script.js"');
+ $filename .= 'script.js';
+} elseif (isset($_GET['c'])) {
+ header('Content-Type: text/css; charset=UTF-8');
+ header('Content-Disposition: inline; filename="style.css"');
+ $filename .= 'style.css';
+} else {
+ header('HTTP/1.1 400 Bad Request');
+ die();
+}
+
+$mtime = @filemtime($filename);
+if ($mtime == false) {
+ header('HTTP/1.1 404 Not Found');
+ die();
+}
+
+require(LIB_PATH . '/http-conditional.php');
+
+if (!httpConditional($mtime, 604800, 2)) {
+ readfile($filename);
+}
diff --git a/p/i/index.php b/p/i/index.php
index 7b34eefd1..ec969c159 100755
--- a/p/i/index.php
+++ b/p/i/index.php
@@ -46,7 +46,7 @@ if (file_exists(DATA_PATH . '/do-install.txt')) {
$front_controller->run();
} catch (Exception $e) {
echo '### Fatal error! ###<br />', "\n";
- Minz_Log::record($e->getMessage(), Minz_Log::ERROR);
+ Minz_Log::error($e->getMessage());
echo 'See logs files.';
}
}
diff --git a/p/scripts/bcrypt.min.js b/p/scripts/bcrypt.min.js
index 6892caddc..614f0c259 100644
--- a/p/scripts/bcrypt.min.js
+++ b/p/scripts/bcrypt.min.js
@@ -1,41 +1,45 @@
-/*
+(function(){/*
bcrypt.js (c) 2013 Daniel Wirtz <dcode@dcode.io>
Released under the Apache License, Version 2.0
see: https://github.com/dcodeIO/bcrypt.js for details
*/
-function p(n){throw n;}var q=null;
-(function(n){function u(c,a,b,f){for(var d,e=c[a],l=c[a+1],e=e^b[0],h=0;14>=h;)d=f[e>>24&255],d+=f[256|e>>16&255],d^=f[512|e>>8&255],d+=f[768|e&255],l^=d^b[++h],d=f[l>>24&255],d+=f[256|l>>16&255],d^=f[512|l>>8&255],d+=f[768|l&255],e^=d^b[++h];c[a]=l^b[17];c[a+1]=e;return c}function s(c,a){var b,f=0;for(b=0;4>b;b++)f=f<<8|c[a]&255,a=(a+1)%c.length;return{key:f,a:a}}function y(c,a,b){for(var f=0,d=[0,0],e=a.length,l=b.length,h=0;h<e;h++){var g=s(c,f),f=g.a;a[h]^=g.key}for(h=0;h<e;h+=2)d=u(d,0,a,b),
-a[h]=d[0],a[h+1]=d[1];for(h=0;h<l;h+=2)d=u(d,0,a,b),b[h]=d[0],b[h+1]=d[1]}function C(c,a,b,f){for(var d=0,e=[0,0],l=b.length,h=f.length,g,k=0;k<l;k++)g=s(a,d),d=g.a,b[k]^=g.key;for(k=d=0;k<l;k+=2)g=s(c,d),d=g.a,e[0]^=g.key,g=s(c,d),d=g.a,e[1]^=g.key,e=u(e,0,b,f),b[k]=e[0],b[k+1]=e[1];for(k=0;k<h;k+=2)g=s(c,d),d=g.a,e[0]^=g.key,g=s(c,d),d=g.a,e[1]^=g.key,e=u(e,0,b,f),f[k]=e[0],f[k+1]=e[1]}function z(c){"undefined"!==typeof process&&"function"===typeof process.nextTick?process.nextTick(c):setTimeout(c,
-0)}function A(c,a,b,f){function d(){if(k<b)for(var n=new Date;k<b&&!(k+=1,y(c,h,g),y(a,h,g),100<Date.now()-n););else{for(k=0;64>k;k++)for(m=0;m<l>>1;m++)u(e,m<<1,h,g);n=[];for(k=0;k<l;k++)n.push((e[k]>>24&255)>>>0),n.push((e[k]>>16&255)>>>0),n.push((e[k]>>8&255)>>>0),n.push((e[k]&255)>>>0);return f?(f(q,n),q):n}f&&z(d);return q}var e=B.slice(),l=e.length;(4>b||31<b)&&p(Error("Illegal number of rounds: "+b));16!=a.length&&p(Error("Illegal salt length: "+a.length+" != 16"));b=1<<b;var h=D.slice(),g=
-E.slice();C(a,c,h,g);var k=0,m;if("undefined"!==typeof f)return d(),q;for(var n;;)if((n=d())!==q)return n}function F(c){for(var a,b,f=[],d=0;d<c.length;d++){a=c.charCodeAt(d);b=[];do b.push(a&255),a>>=8;while(a);f=f.concat(b.reverse())}return f}function w(c,a,b){function f(a){var b=[];b.push("$2");"a"<=d&&b.push(d);b.push("$");10>l&&b.push("0");b.push(l.toString());b.push("$");b.push(v.b(h,h.length));b.push(v.b(a,4*B.length-1));return b.join("")}var d,e;("$"!=a.charAt(0)||"2"!=a.charAt(1))&&p(Error("Invalid salt version: "+
-a.substring(0,2)));"$"==a.charAt(2)?(d=String.fromCharCode(0),e=3):(d=a.charAt(2),("a"!=d||"$"!=a.charAt(3))&&p(Error("Invalid salt revision: "+a.substring(2,4))),e=4);"$"<a.charAt(e+2)&&p(Error("Missing salt rounds"));var l=10*parseInt(a.substring(e,e+1),10)+parseInt(a.substring(e+1,e+2),10);a=a.substring(e+3,e+25);c=F(c+("a"<=d?"\x00":""));var h=[],h=v.c(a,16);if("undefined"==typeof b)return f(A(c,h,l));A(c,h,l,function(a,c){a?b(a,q):b(q,f(c))});return q}function G(){if("undefined"!==typeof module&&
-module.exports)return require("crypto").randomBytes(16);var c=new Uint32Array(16);n.crypto&&"function"===typeof n.crypto.getRandomValues?n.crypto.getRandomValues(c):"function"===typeof x?x(c):p(Error("Failed to generate random values: Web Crypto API not available / no polyfill set"));return Array.prototype.slice.call(c)}var t="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),r=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
--1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1],v={b:function(c,a){var b=0,f=[],d,e;for((0>=a||a>c.length)&&p(Error("Invalid 'len': "+a));b<a;){d=c[b++]&255;f.push(t[d>>2&63]);d=(d&3)<<4;if(b>=a){f.push(t[d&63]);break}e=c[b++]&255;d|=e>>4&15;f.push(t[d&63]);d=(e&15)<<
-2;if(b>=a){f.push(t[d&63]);break}e=c[b++]&255;d|=e>>6&3;f.push(t[d&63]);f.push(t[e&63])}return f.join("")},c:function(c,a){var b=0,f=c.length,d=0,e=[],l,h,g;for(0>=a&&p(Error("Illegal 'len': "+a));b<f-1&&d<a;){g=c.charCodeAt(b++);l=g<r.length?r[g]:-1;g=c.charCodeAt(b++);h=g<r.length?r[g]:-1;if(-1==l||-1==h)break;g=l<<2>>>0;g|=(h&48)>>4;e.push(String.fromCharCode(g));if(++d>=a||b>=f)break;g=c.charCodeAt(b++);l=g<r.length?r[g]:-1;if(-1==l)break;g=(h&15)<<4>>>0;g|=(l&60)>>2;e.push(String.fromCharCode(g));
-if(++d>=a||b>=f)break;g=c.charCodeAt(b++);h=g<r.length?r[g]:-1;g=(l&3)<<6>>>0;g|=h;e.push(String.fromCharCode(g));++d}f=[];for(b=0;b<d;b++)f.push(e[b].charCodeAt(0));return f}},m={},D=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],E=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,
-1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,
-1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,
-3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,
-3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,
-3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,
-705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971E4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,
-2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,
-3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,
-3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,
-2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,
-3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055,3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,
-2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,
-1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,
-4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,
-3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,
-448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,
-3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,
-2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,
-1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,
-2941484381,1077988104,1320477388,886195818,18198404,3786409E3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,
-3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,
-3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462],B=[1332899944,1700884034,1701343084,1684370003,1668446532,1869963892],x=q;m.setRandomPolyfill=function(c){x=c};m.genSaltSync=function(c){c||(c=10);var a;c=c||10;(4>c||31<c)&&p(Error("Illegal number of rounds: "+c));var b=[];
-b.push("$2a$");10>c&&b.push("0");b.push(c.toString());b.push("$");try{b.push(v.b(G(),16)),a=b.join("")}catch(f){p(f)}return a};m.genSalt=function(c,a,b){"function"==typeof a&&(b=a,a=-1);var f;"function"==typeof c?(b=c,f=10):f=parseInt(c,10);"function"!=typeof b&&p(Error("Illegal or missing 'callback': "+b));z(function(){try{var a=m.genSaltSync(f);b(q,a)}catch(c){b(c,q)}})};m.hashSync=function(c,a){a||(a=10);"number"==typeof a&&(a=m.genSaltSync(a));return w(c,a)};m.hash=function(c,a,b){"function"!=
-typeof b&&p(Error("Illegal 'callback': "+b));"number"==typeof a?m.genSalt(a,function(a,d){w(c,d,b)}):w(c,a,b)};m.compareSync=function(c,a){("string"!=typeof c||"string"!=typeof a)&&p(Error("Illegal argument types: "+typeof c+", "+typeof a));60!=a.length&&p(Error("Illegal hash length: "+a.length+" != 60"));for(var b=m.hashSync(c,a.substr(0,a.length-31)),f=b.length==a.length,d=b.length<a.length?b.length:a.length,e=0;e<d;++e)b.length>=e&&(a.length>=e&&b[e]!=a[e])&&(f=!1);return f};m.compare=function(c,
-a,b){"function"!=typeof b&&p(Error("Illegal 'callback': "+b));m.hash(c,a.substr(0,29),function(c,d){b(c,a===d)})};m.getRounds=function(c){"string"!=typeof c&&p(Error("Illegal type of 'hash': "+typeof c));return parseInt(c.split("$")[2],10)};m.getSalt=function(c){"string"!=typeof c&&p(Error("Illegal type of 'hash': "+typeof c));60!=c.length&&p(Error("Illegal hash length: "+c.length+" != 60"));return c.substring(0,29)};"undefined"!=typeof module&&module.exports?module.exports=m:"undefined"!=typeof define&&
-define.amd?define("bcrypt",function(){return m}):(n.dcodeIO||(n.dcodeIO={}),n.dcodeIO.bcrypt=m)})(this);
+function l(t){throw t;}var p=null;
+(function(t){function B(c){if("undefined"!==typeof module&&module&&module.exports)try{return require("crypto").randomBytes(c)}catch(a){}try{var b;(t.crypto||t.msCrypto).getRandomValues(b=new Uint32Array(c));return Array.prototype.slice.call(b)}catch(d){}x||l(Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative"));return x(c)}function F(c){var a=[],b=0;G.f(function(){return b>=c.length?p:c.charCodeAt(b++)},function(b){a.push(b)});return a}
+function y(c,a){var b=0,d=[],f,e;for((0>=a||a>c.length)&&l(Error("Illegal len: "+a));b<a;){f=c[b++]&255;d.push(u[f>>2&63]);f=(f&3)<<4;if(b>=a){d.push(u[f&63]);break}e=c[b++]&255;f|=e>>4&15;d.push(u[f&63]);f=(e&15)<<2;if(b>=a){d.push(u[f&63]);break}e=c[b++]&255;f|=e>>6&3;d.push(u[f&63]);d.push(u[e&63])}return d.join("")}function H(c){for(var a=0,b=c.length,d=0,f=[],e,k,h;a<b-1&&16>d;){h=c.charCodeAt(a++);e=h<r.length?r[h]:-1;h=c.charCodeAt(a++);k=h<r.length?r[h]:-1;if(-1==e||-1==k)break;h=e<<2>>>0;
+h|=(k&48)>>4;f.push(z(h));if(16<=++d||a>=b)break;h=c.charCodeAt(a++);e=h<r.length?r[h]:-1;if(-1==e)break;h=(k&15)<<4>>>0;h|=(e&60)>>2;f.push(z(h));if(16<=++d||a>=b)break;h=c.charCodeAt(a++);k=h<r.length?r[h]:-1;h=(e&3)<<6>>>0;h|=k;f.push(z(h));++d}c=[];for(a=0;a<d;a++)c.push(f[a].charCodeAt(0));return c}function w(c,a,b,d){for(var f,e=c[a],k=c[a+1],e=e^b[0],h=0;14>=h;)f=d[e>>24&255],f+=d[256|e>>16&255],f^=d[512|e>>8&255],f+=d[768|e&255],k^=f^b[++h],f=d[k>>24&255],f+=d[256|k>>16&255],f^=d[512|k>>8&
+255],f+=d[768|k&255],e^=f^b[++h];c[a]=k^b[17];c[a+1]=e;return c}function v(c,a){for(var b=0,d=0;4>b;++b)d=d<<8|c[a]&255,a=(a+1)%c.length;return{key:d,a:a}}function C(c,a,b){for(var d=0,f=[0,0],e=a.length,k=b.length,h,g=0;g<e;g++)h=v(c,d),d=h.a,a[g]^=h.key;for(g=0;g<e;g+=2)f=w(f,0,a,b),a[g]=f[0],a[g+1]=f[1];for(g=0;g<k;g+=2)f=w(f,0,a,b),b[g]=f[0],b[g+1]=f[1]}function I(c,a,b,d){for(var f=0,e=[0,0],k=b.length,h=d.length,g,m=0;m<k;m++)g=v(a,f),f=g.a,b[m]^=g.key;for(m=f=0;m<k;m+=2)g=v(c,f),f=g.a,e[0]^=
+g.key,g=v(c,f),f=g.a,e[1]^=g.key,e=w(e,0,b,d),b[m]=e[0],b[m+1]=e[1];for(m=0;m<h;m+=2)g=v(c,f),f=g.a,e[0]^=g.key,g=v(c,f),f=g.a,e[1]^=g.key,e=w(e,0,b,d),d[m]=e[0],d[m+1]=e[1]}function D(c,a,b,d,f){function e(){f&&f(q/b);if(q<b)for(var g=Date.now();q<b&&!(q+=1,C(c,m,n),C(a,m,n),100<Date.now()-g););else{for(q=0;64>q;q++)for(r=0;r<h>>1;r++)w(k,r<<1,m,n);g=[];for(q=0;q<h;q++)g.push((k[q]>>24&255)>>>0),g.push((k[q]>>16&255)>>>0),g.push((k[q]>>8&255)>>>0),g.push((k[q]&255)>>>0);if(d){d(p,g);return}return g}d&&
+s(e)}var k=E.slice(),h=k.length,g;if(4>b||31<b){g=Error("Illegal number of rounds (4-31): "+b);if(d){s(d.bind(this,g));return}l(g)}if(16!==a.length){g=Error("Illegal salt length: "+a.length+" != 16");if(d){s(d.bind(this,g));return}l(g)}b=1<<b;var m=J.slice(),n=K.slice(),q=0,r;I(a,c,m,n);if("undefined"!==typeof d)e();else for(;;)if("undefined"!==typeof(g=e()))return g||[]}function A(c,a,b,d){function f(a){var b=[];b.push("$2");"a"<=k&&b.push(k);b.push("$");10>g&&b.push("0");b.push(g.toString());b.push("$");
+b.push(y(m,m.length));b.push(y(a,4*E.length-1));return b.join("")}var e;if("string"!==typeof c||"string"!==typeof a){e=Error("Invalid string / salt: Not a string");if(b){s(b.bind(this,e));return}l(e)}var k,h;if("$"!==a.charAt(0)||"2"!==a.charAt(1)){e=Error("Invalid salt version: "+a.substring(0,2));if(b){s(b.bind(this,e));return}l(e)}if("$"===a.charAt(2))k=String.fromCharCode(0),h=3;else{k=a.charAt(2);if("a"!==k&&"y"!==k||"$"!==a.charAt(3)){e=Error("Invalid salt revision: "+a.substring(2,4));if(b){s(b.bind(this,
+e));return}l(e)}h=4}if("$"<a.charAt(h+2)){e=Error("Missing salt rounds");if(b){s(b.bind(this,e));return}l(e)}var g=10*parseInt(a.substring(h,h+1),10)+parseInt(a.substring(h+1,h+2),10);a=a.substring(h+3,h+25);c=F(c+("a"<=k?"\x00":""));var m=H(a);if("undefined"==typeof b)return f(D(c,m,g));D(c,m,g,function(a,d){a?b(a,p):b(p,f(d))},d)}var n={},x=p;try{B(1)}catch(L){}x=p;n.l=function(c){x=c};n.genSaltSync=function(c,a){"undefined"===typeof c?c=10:"number"!==typeof c&&l(Error("Illegal arguments: "+typeof c+
+", "+typeof a));(4>c||31<c)&&l(Error("Illegal number of rounds (4-31): "+c));var b=[];b.push("$2a$");10>c&&b.push("0");b.push(c.toString());b.push("$");b.push(y(B(16),16));return b.join("")};n.genSalt=function(c,a,b){"function"===typeof a&&(b=a,a=void 0);"function"===typeof c&&(b=c,c=10);"function"!==typeof b&&l(Error("Illegal callback: "+typeof b));"number"!==typeof c?s(b.bind(this,Error("Illegal arguments: "+typeof c))):s(function(){try{b(p,n.genSaltSync(c))}catch(a){b(a)}})};n.hashSync=function(c,
+a){"undefined"===typeof a&&(a=10);"number"===typeof a&&(a=n.genSaltSync(a));("string"!==typeof c||"string"!==typeof a)&&l(Error("Illegal arguments: "+typeof c+", "+typeof a));return A(c,a)};n.hash=function(c,a,b,d){"function"!==typeof b&&l(Error("Illegal callback: "+typeof b));"string"===typeof c&&"number"===typeof a?n.genSalt(a,function(a,e){A(c,e,b,d)}):"string"===typeof c&&"string"===typeof a?A(c,a,b,d):s(b.bind(this,Error("Illegal arguments: "+typeof c+", "+typeof a)))};n.compareSync=function(c,
+a){("string"!==typeof c||"string"!==typeof a)&&l(Error("Illegal arguments: "+typeof c+", "+typeof a));if(60!==a.length)return!1;for(var b=n.hashSync(c,a.substr(0,a.length-31)),d=b.length===a.length,f=b.length<a.length?b.length:a.length,e=0;e<f;++e)b.length>=e&&(a.length>=e&&b[e]!=a[e])&&(d=!1);return d};n.compare=function(c,a,b,d){"function"!==typeof b&&l(Error("Illegal callback: "+typeof b));"string"!==typeof c||"string"!==typeof a?s(b.bind(this,Error("Illegal arguments: "+typeof c+", "+typeof a))):
+n.hash(c,a.substr(0,29),function(d,c){b(d,a===c)},d)};n.getRounds=function(c){"string"!==typeof c&&l(Error("Illegal arguments: "+typeof c));return parseInt(c.split("$")[2],10)};n.getSalt=function(c){"string"!==typeof c&&l(Error("Illegal arguments: "+typeof c));60!==c.length&&l(Error("Illegal hash length: "+c.length+" != 60"));return c.substring(0,29)};var s="undefined"!==typeof process&&process&&"function"===typeof process.nextTick?"function"===typeof setImmediate?setImmediate:process.nextTick:setTimeout,
+u="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),r=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1],z=String.fromCharCode,G=function(){var c={h:1114111,
+g:function(a,b){var d=p;"number"===typeof a&&(d=a,a=function(){return p});for(;d!==p||(d=a())!==p;)128>d?b(d&127):(2048>d?b(d>>6&31|192):(65536>d?b(d>>12&15|224):(b(d>>18&7|240),b(d>>12&63|128)),b(d>>6&63|128)),b(d&63|128)),d=p},e:function(a,b){function d(a){a=a.slice(0,a.indexOf(p));var b=Error(a.toString());b.name="TruncatedError";b.bytes=a;l(b)}for(var c,e,k,h;(c=a())!==p;)0===(c&128)?b(c):192===(c&224)?((e=a())===p&&d([c,e]),b((c&31)<<6|e&63)):224===(c&240)?(((e=a())===p||(k=a())===p)&&d([c,e,
+k]),b((c&15)<<12|(e&63)<<6|k&63)):240===(c&248)?(((e=a())===p||(k=a())===p||(h=a())===p)&&d([c,e,k,h]),b((c&7)<<18|(e&63)<<12|(k&63)<<6|h&63)):l(RangeError("Illegal starting byte: "+c))},b:function(a,b){for(var c,f=p;(c=f!==p?f:a())!==p;)55296<=c&&57343>=c&&(f=a())!==p&&56320<=f&&57343>=f?(b(1024*(c-55296)+f-56320+65536),f=p):b(c);f!==p&&b(f)},d:function(a,b){var c=p;"number"===typeof a&&(c=a,a=function(){return p});for(;c!==p||(c=a())!==p;)65535>=c?b(c):(c-=65536,b((c>>10)+55296),b(c%1024+56320)),
+c=p},f:function(a,b){c.b(a,function(a){c.g(a,b)})},k:function(a,b){c.e(a,function(a){c.d(a,b)})},c:function(a){return 128>a?1:2048>a?2:65536>a?3:4},j:function(a){for(var b,d=0;(b=a())!==p;)d+=c.c(b);return d},i:function(a){var b=0,d=0;c.b(a,function(a){++b;d+=c.c(a)});return[b,d]}};return c}();Date.now=Date.now||function(){return+new Date};var J=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,
+3041331479,2450970073,2306472731],K=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,
+289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,
+1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,
+442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,
+3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,
+48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971E4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,
+1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,
+613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,
+2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,
+1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,
+4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055,3913112168,
+2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,
+499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,
+3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,
+309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,
+1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,
+2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,
+2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,
+3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,
+3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409E3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,
+3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,
+1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462],E=[1332899944,1700884034,1701343084,1684370003,1668446532,
+1869963892];"undefined"!==typeof module&&module.exports?module.exports=n:"undefined"!==typeof define&&define.amd?define(function(){return n}):(t.dcodeIO=t.dcodeIO||{}).bcrypt=n})(this);})();
diff --git a/p/scripts/category.js b/p/scripts/category.js
new file mode 100644
index 000000000..c33e68528
--- /dev/null
+++ b/p/scripts/category.js
@@ -0,0 +1,118 @@
+"use strict";
+
+var loading = false,
+ dnd_successful = false;
+
+function dragend_process(t) {
+ t.style.display = 'none';
+
+ if (loading) {
+ window.setTimeout(function() {
+ dragend_process(t);
+ }, 50);
+ }
+
+ if (!dnd_successful) {
+ t.style.display = 'block';
+ t.style.opacity = 1.0;
+ } else {
+ var parent = $(t.parentNode);
+ $(t).remove();
+
+ if (parent.children().length <= 0) {
+ parent.append('<li class="item disabled" dropzone="move">' + i18n['category_empty'] + '</li>');
+ }
+ }
+}
+
+function init_draggable() {
+ if (!(window.$ && window.i18n)) {
+ if (window.console) {
+ console.log('FreshRSS waiting for JS…');
+ }
+ window.setTimeout(init_draggable, 50);
+ return;
+ }
+
+ $.event.props.push('dataTransfer');
+
+ var draggable = '[draggable="true"]',
+ dropzone = '[dropzone="move"]';
+
+ $('.drop-section').on('dragstart', draggable, function(e) {
+ e.dataTransfer.effectAllowed = 'move';
+ e.dataTransfer.setData('text/html', e.target.outerHTML);
+ e.dataTransfer.setData('text', e.target.getAttribute('data-feed-id'));
+ e.target.style.opacity = 0.3;
+
+ dnd_successful = false;
+ });
+ $('.drop-section').on('dragend', draggable, function(e) {
+ dragend_process(e.target);
+ });
+
+ $('.drop-section').on('dragenter', dropzone, function(e) {
+ $(this).addClass('drag-hover');
+
+ e.preventDefault();
+ });
+ $('.drop-section').on('dragleave', dropzone, function(e) {
+ var pos_this = $(this).position(),
+ scroll_top = $(document).scrollTop(),
+ top = pos_this.top,
+ left = pos_this.left,
+ right = left + $(this).width(),
+ bottom = top + $(this).height(),
+ mouse_x = e.originalEvent.screenX,
+ mouse_y = e.originalEvent.clientY + scroll_top;
+
+ if (left <= mouse_x && mouse_x <= right &&
+ top <= mouse_y && mouse_y <= bottom) {
+ // HACK because dragleave is triggered when hovering children!
+ return;
+ }
+ $(this).removeClass('drag-hover');
+ });
+ $('.drop-section').on('dragover', dropzone, function(e) {
+ e.dataTransfer.dropEffect = "move";
+
+ e.preventDefault();
+ return false;
+ });
+ $('.drop-section').on('drop', dropzone, function(e) {
+ var feed_id = e.dataTransfer.getData('text'),
+ cat_id = e.target.parentNode.getAttribute('data-cat-id');
+
+ loading = true;
+
+ $.ajax({
+ type: 'POST',
+ url: './?c=feed&a=move',
+ data : {
+ f_id: feed_id,
+ c_id: cat_id
+ }
+ }).success(function() {
+ $(e.target).after(e.dataTransfer.getData('text/html'));
+ if ($(e.target).hasClass('disabled')) {
+ $(e.target).remove();
+ }
+ dnd_successful = true;
+ }).complete(function() {
+ loading = false;
+ });
+
+ $(this).removeClass('drag-hover');
+
+ e.preventDefault();
+ });
+}
+
+
+if (document.readyState && document.readyState !== 'loading') {
+ init_draggable();
+} else if (document.addEventListener) {
+ document.addEventListener('DOMContentLoaded', function () {
+ init_draggable();
+ }, false);
+}
diff --git a/p/scripts/global_view.js b/p/scripts/global_view.js
index 7105520a6..7d7ba22b5 100644
--- a/p/scripts/global_view.js
+++ b/p/scripts/global_view.js
@@ -9,7 +9,7 @@ function load_panel(link) {
panel_loading = true;
$.get(link, function (data) {
- $("#panel").append($(".nav_menu, #stream .day, #stream .flux, #stream .pagination", data));
+ $("#panel").append($(".nav_menu, #stream .day, #stream .flux, #stream .pagination, #stream.prompt", data));
$("#panel .nav_menu").children().not("#nav_menu_read_all").remove();
@@ -24,12 +24,13 @@ function load_panel(link) {
// en en ouvrant une autre ensuite, on se retrouve au même point de scroll
$("#panel").scrollTop(0);
- $('#panel').on('click', '#nav_menu_read_all > a, #nav_menu_read_all .item > a, #bigMarkAsRead', function () {
+ $('#panel').on('click', '#nav_menu_read_all button, #bigMarkAsRead', function () {
+ console.log($(this).attr("formaction"));
$.ajax({
- url: $(this).attr("href"),
+ type: "POST",
+ url: $(this).attr("formaction"),
async: false
});
- //$("#panel .close").first().click();
window.location.reload(false);
return false;
});
@@ -39,9 +40,8 @@ function load_panel(link) {
}
function init_close_panel() {
- $("#panel .close").click(function () {
- $("#panel").html('<a class="close" href="#">' + window.iconClose + '</a>');
- init_close_panel();
+ $("#overlay .close").click(function () {
+ $("#panel").html('');
$("#panel").slideToggle();
$("#overlay").fadeOut();
@@ -50,7 +50,8 @@ function init_close_panel() {
}
function init_global_view() {
- $("#stream .box-category a").click(function () {
+ // TODO: should be based on generic classes.
+ $(".box a").click(function () {
var link = $(this).attr("href");
load_panel(link);
diff --git a/p/scripts/main.js b/p/scripts/main.js
index 00cd96fbe..dc5428048 100644
--- a/p/scripts/main.js
+++ b/p/scripts/main.js
@@ -4,14 +4,6 @@ var $stream = null,
shares = 0,
ajax_loading = false;
-function is_normal_mode() {
- return $stream.hasClass('normal');
-}
-
-function is_global_mode() {
- return $stream.hasClass('global');
-}
-
function redirect(url, new_tab) {
if (url) {
if (new_tab) {
@@ -33,7 +25,7 @@ function needsScroll($elem) {
}
function str2int(str) {
- if (str == '' || str === undefined) {
+ if (!str) {
return 0;
}
return parseInt(str.replace(/\D/g, ''), 10) || 0;
@@ -64,31 +56,31 @@ function incLabel(p, inc, spaceAfter) {
function incUnreadsFeed(article, feed_id, nb) {
//Update unread: feed
- var elem = $('#' + feed_id + '>.feed').get(0),
+ var elem = $('#' + feed_id).get(0),
feed_unreads = elem ? str2int(elem.getAttribute('data-unread')) : 0,
feed_priority = elem ? str2int(elem.getAttribute('data-priority')) : 0;
if (elem) {
- elem.setAttribute('data-unread', numberFormat(feed_unreads + nb));
- elem = $(elem).closest('li').get(0);
+ elem.setAttribute('data-unread', feed_unreads + nb);
+ elem = $(elem).children('.item-title').get(0);
if (elem) {
- elem.setAttribute('data-unread', feed_unreads + nb);
+ elem.setAttribute('data-unread', numberFormat(feed_unreads + nb));
}
}
//Update unread: category
- elem = $('#' + feed_id).parent().prevAll('.category').children(':first').get(0);
+ elem = $('#' + feed_id).parents('.category').get(0);
feed_unreads = elem ? str2int(elem.getAttribute('data-unread')) : 0;
if (elem) {
- elem.setAttribute('data-unread', numberFormat(feed_unreads + nb));
- elem = $(elem).closest('li').get(0);
+ elem.setAttribute('data-unread', feed_unreads + nb);
+ elem = $(elem).find('.title').get(0);
if (elem) {
- elem.setAttribute('data-unread', feed_unreads + nb);
+ elem.setAttribute('data-unread', numberFormat(feed_unreads + nb));
}
}
//Update unread: all
if (feed_priority > 0) {
- elem = $('#aside_flux .all').children(':first').get(0);
+ elem = $('#aside_feed .all .title').get(0);
if (elem) {
feed_unreads = elem ? str2int(elem.getAttribute('data-unread')) : 0;
elem.setAttribute('data-unread', numberFormat(feed_unreads + nb));
@@ -97,7 +89,7 @@ function incUnreadsFeed(article, feed_id, nb) {
//Update unread: favourites
if (article && article.closest('div').hasClass('favorite')) {
- elem = $('#aside_flux .favorites').children(':first').get(0);
+ elem = $('#aside_feed .favorites .title').get(0);
if (elem) {
feed_unreads = elem ? str2int(elem.getAttribute('data-unread')) : 0;
elem.setAttribute('data-unread', numberFormat(feed_unreads + nb));
@@ -105,7 +97,7 @@ function incUnreadsFeed(article, feed_id, nb) {
}
var isCurrentView = false;
- //Update unread: title
+ // Update unread: title
document.title = document.title.replace(/^((?:\([ 0-9]+\) )?)/, function (m, p1) {
var $feed = $('#' + feed_id);
if (article || ($feed.closest('.active').length > 0 && $feed.siblings('.active').length === 0)) {
@@ -202,7 +194,7 @@ function mark_favorite(active) {
}
$b.find('.icon').replaceWith(data.icon);
- var favourites = $('.favorites>a').contents().last().get(0);
+ var favourites = $('#aside_feed .favorites .title').contents().last().get(0);
if (favourites && favourites.textContent) {
favourites.textContent = favourites.textContent.replace(/((?: \([ 0-9]+\))?\s*)$/, function (m, p1) {
return incLabel(p1, inc, false);
@@ -210,7 +202,7 @@ function mark_favorite(active) {
}
if (active.closest('div').hasClass('not_read')) {
- var elem = $('#aside_flux .favorites').children(':first').get(0),
+ var elem = $('#aside_feed .favorites .title').get(0),
feed_unreads = elem ? str2int(elem.getAttribute('data-unread')) : 0;
if (elem) {
elem.setAttribute('data-unread', numberFormat(feed_unreads + inc));
@@ -226,7 +218,7 @@ function toggleContent(new_active, old_active) {
return;
}
- if (does_lazyload) {
+ if (context['does_lazyload']) {
new_active.find('img[data-original], iframe[data-original]').each(function () {
this.setAttribute('src', this.getAttribute('data-original'));
this.removeAttribute('data-original');
@@ -245,12 +237,12 @@ function toggleContent(new_active, old_active) {
var box_to_move = "html,body",
relative_move = false;
- if (is_global_mode()) {
+ if (context['current_view'] == 'global') {
box_to_move = "#panel";
relative_move = true;
}
- if (sticky_post) {
+ if (context['sticky_post']) {
var prev_article = new_active.prevAll('.flux'),
new_pos = new_active.position().top,
old_scroll = $(box_to_move).scrollTop();
@@ -259,7 +251,7 @@ function toggleContent(new_active, old_active) {
new_pos = prev_article.position().top;
}
- if (hide_posts) {
+ if (context['hide_posts']) {
if (relative_move) {
new_pos += old_scroll;
}
@@ -278,7 +270,7 @@ function toggleContent(new_active, old_active) {
}
}
- if (auto_mark_article && new_active.hasClass('active')) {
+ if (context['auto_mark_article'] && new_active.hasClass('active')) {
mark_read(new_active, true);
}
}
@@ -300,42 +292,42 @@ function next_entry() {
}
function prev_feed() {
- var active_feed = $("#aside_flux .feeds li.active");
+ var active_feed = $("#aside_feed .tree-folder-items .item.active");
if (active_feed.length > 0) {
- active_feed.prevAll(':visible:first').find('a.feed').each(function(){this.click();});
+ active_feed.prevAll(':visible:first').find('a').each(function(){this.click();});
} else {
last_feed();
}
}
function next_feed() {
- var active_feed = $("#aside_flux .feeds li.active");
+ var active_feed = $("#aside_feed .tree-folder-items .item.active");
if (active_feed.length > 0) {
- active_feed.nextAll(':visible:first').find('a.feed').each(function(){this.click();});
+ active_feed.nextAll(':visible:first').find('a').each(function(){this.click();});
} else {
first_feed();
}
}
function first_feed() {
- var feed = $("#aside_flux .feeds.active li:visible:first");
+ var feed = $("#aside_feed .tree-folder-items.active .item:visible:first");
if (feed.length > 0) {
feed.find('a')[1].click();
}
}
function last_feed() {
- var feed = $("#aside_flux .feeds.active li:visible:last");
+ var feed = $("#aside_feed .tree-folder-items.active .item:visible:last");
if (feed.length > 0) {
feed.find('a')[1].click();
}
}
function prev_category() {
- var active_cat = $("#aside_flux .category.stick.active");
+ var active_cat = $("#aside_feed .tree-folder.active");
if (active_cat.length > 0) {
- var prev_cat = active_cat.parent('li').prevAll(':visible:first').find('.category.stick a.btn');
+ var prev_cat = active_cat.prevAll(':visible:first').find('.tree-folder-title .title');
if (prev_cat.length > 0) {
prev_cat[0].click();
}
@@ -346,10 +338,10 @@ function prev_category() {
}
function next_category() {
- var active_cat = $("#aside_flux .category.stick.active");
+ var active_cat = $("#aside_feed .tree-folder.active");
if (active_cat.length > 0) {
- var next_cat = active_cat.parent('li').nextAll(':visible:first').find('.category.stick a.btn');
+ var next_cat = active_cat.nextAll(':visible:first').find('.tree-folder-title .title');
if (next_cat.length > 0) {
next_cat[0].click();
}
@@ -360,16 +352,16 @@ function next_category() {
}
function first_category() {
- var cat = $("#aside_flux .category.stick:visible:first");
+ var cat = $("#aside_feed .tree-folder:visible:first");
if (cat.length > 0) {
- cat.find('a.btn')[0].click();
+ cat.find('.tree-folder-title .title')[0].click();
}
}
function last_category() {
- var cat = $("#aside_flux .category.stick:visible:last");
+ var cat = $("#aside_feed .tree-folder:visible:last");
if (cat.length > 0) {
- cat.find('a.btn')[0].click();
+ cat.find('.tree-folder-title .title')[0].click();
}
}
@@ -378,14 +370,12 @@ function collapse_entry() {
var flux_current = $(".flux.current");
flux_current.toggleClass("active");
- if (isCollapsed && auto_mark_article) {
+ if (isCollapsed && context['auto_mark_article']) {
mark_read(flux_current, true);
}
}
function user_filter(key) {
- console.log('user filter');
- console.warn(key);
var filter = $('#dropdown-query');
var filters = filter.siblings('.dropdown-menu').find('.item.query a');
if (typeof key === "undefined") {
@@ -459,12 +449,12 @@ function inMarkViewport(flux, box_to_follow, relative_follow) {
function init_posts() {
var box_to_follow = $(window),
relative_follow = false;
- if (is_global_mode()) {
+ if (context['current_view'] == 'global') {
box_to_follow = $("#panel");
relative_follow = true;
}
- if (auto_mark_scroll) {
+ if (context['auto_mark_scroll']) {
box_to_follow.scroll(function () {
$('.not_read:visible').each(function () {
if ($(this).children(".flux_content").is(':visible') && inMarkViewport($(this), box_to_follow, relative_follow)) {
@@ -474,7 +464,7 @@ function init_posts() {
});
}
- if (auto_load_more) {
+ if (context['auto_load_more']) {
box_to_follow.scroll(function () {
var load_more = $("#load_more");
if (!load_more.is(':visible')) {
@@ -494,10 +484,11 @@ function init_posts() {
}
function init_column_categories() {
- if (!is_normal_mode()) {
+ if (context['current_view'] !== 'normal') {
return;
}
- $('#aside_flux').on('click', '.category>a.dropdown-toggle', function () {
+
+ $('#aside_feed').on('click', '.tree-folder>.tree-folder-title>a.dropdown-toggle', function () {
$(this).children().each(function() {
if (this.alt === '▽') {
this.src = this.src.replace('/icons/down.', '/icons/up.');
@@ -507,12 +498,12 @@ function init_column_categories() {
this.alt = '▽';
}
});
- $(this).parent().next(".feeds").slideToggle();
+ $(this).parent().next(".tree-folder-items").slideToggle();
return false;
});
- $('#aside_flux').on('click', '.feeds .dropdown-toggle', function () {
+ $('#aside_feed').on('click', '.tree-folder-items .item .dropdown-toggle', function () {
if ($(this).nextAll('.dropdown-menu').length === 0) {
- var feed_id = $(this).closest('li').attr('id').substr(2),
+ var feed_id = $(this).closest('.item').attr('id').substr(2),
feed_web = $(this).data('fweb'),
template = $('#feed_config_template').html().replace(/!!!!!!/g, feed_id).replace('http://example.net/', feed_web);
$(this).attr('href', '#dropdown-' + feed_id).prev('.dropdown-target').attr('id', 'dropdown-' + feed_id).parent().append(template);
@@ -634,7 +625,7 @@ function init_shortcuts() {
shortcut.add(shortcuts.go_website, function () {
var url_website = $('.flux.current > .flux_header > .title > a').attr("href");
- if (auto_mark_site) {
+ if (context['auto_mark_site']) {
$(".flux.current").each(function () {
mark_read($(this), true);
});
@@ -658,7 +649,13 @@ function init_shortcuts() {
});
shortcut.add(shortcuts.help, function () {
- redirect(help_url, true);
+ redirect(url['help'], true);
+ }, {
+ 'disable_in_input': true
+ });
+
+ shortcut.add(shortcuts.close_dropdown, function () {
+ window.location.hash = null;
}, {
'disable_in_input': true
});
@@ -674,7 +671,7 @@ function init_stream(divStream) {
new_active = $(this).parent();
isCollapsed = true;
if (e.target.tagName.toUpperCase() === 'A') { //Leave real links alone
- if (auto_mark_article) {
+ if (context['auto_mark_article']) {
mark_read(new_active, true);
}
return true;
@@ -720,7 +717,7 @@ function init_stream(divStream) {
$(this).attr('target', '_blank');
});
- if (auto_mark_site) {
+ if (context['auto_mark_site']) {
// catch mouseup instead of click so we can have the correct behaviour
// with middle button click (scroll button).
divStream.on('mouseup', '.flux .link > a', function (e) {
@@ -780,7 +777,7 @@ function init_actualize() {
return false;
});
- if (auto_actualize_feeds) {
+ if (context['auto_actualize_feeds']) {
auto = true;
$("#actualize").click();
}
@@ -851,9 +848,9 @@ function notifs_html5_show(nb) {
return
}
- var notification = new window.Notification(str_notif_title_articles, {
+ var notification = new window.Notification(i18n['notif_title_articles'], {
icon: "../themes/icons/favicon-256.png",
- body: str_notif_body_articles.replace("\d", nb),
+ body: i18n['notif_body_articles'].replace("\d", nb),
tag: "freshRssNewArticles"
});
@@ -861,10 +858,10 @@ function notifs_html5_show(nb) {
window.location.reload();
}
- if (html5_notif_timeout !== 0){
+ if (context['html5_notif_timeout'] !== 0){
setTimeout(function() {
notification.close();
- }, html5_notif_timeout * 1000);
+ }, context['html5_notif_timeout'] * 1000);
}
}
@@ -879,12 +876,12 @@ function init_notifs_html5() {
function refreshUnreads() {
$.getJSON('./?c=javascript&a=nbUnreadsPerFeed').done(function (data) {
- var isAll = $('.category.all > .active').length > 0,
+ var isAll = $('.category.all.active').length > 0,
new_articles = false;
$.each(data, function(feed_id, nbUnreads) {
feed_id = 'f_' + feed_id;
- var elem = $('#' + feed_id + '>.feed').get(0),
+ var elem = $('#' + feed_id).get(0),
feed_unreads = elem ? str2int(elem.getAttribute('data-unread')) : 0;
if ((incUnreadsFeed(null, feed_id, nbUnreads - feed_unreads) || isAll) && //Update of current view?
@@ -894,7 +891,7 @@ function refreshUnreads() {
};
});
- var nb_unreads = str2int($('.category.all>a').attr('data-unread'));
+ var nb_unreads = str2int($('.category.all .title').attr('data-unread'));
if (nb_unreads > 0 && new_articles) {
faviconNbUnread(nb_unreads);
@@ -918,7 +915,7 @@ function load_more_posts() {
$.get(url_load_more, function (data) {
box_load_more.children('.flux:last').after($('#stream', data).children('.flux, .day'));
$('.pagination').replaceWith($('.pagination', data));
- if (display_order === 'ASC') {
+ if (context['display_order'] === 'ASC') {
$('#nav_menu_read_all > .read_all').attr(
'formaction', $('#bigMarkAsRead').attr('formaction')
);
@@ -949,7 +946,7 @@ function focus_search() {
function init_load_more(box) {
box_load_more = box;
- if (!does_lazyload) {
+ if (!context['does_lazyload']) {
$('img[postpone], audio[postpone], iframe[postpone], video[postpone]').each(function () {
this.removeAttribute('postpone');
});
@@ -1017,7 +1014,7 @@ function init_crypto_form() {
try {
var strong = window.Uint32Array && window.crypto && (typeof window.crypto.getRandomValues === 'function'),
s = dcodeIO.bcrypt.hashSync($('#passwordPlain').val(), data.salt1),
- c = dcodeIO.bcrypt.hashSync(data.nonce + s, strong ? 4 : poormanSalt());
+ c = dcodeIO.bcrypt.hashSync(data.nonce + s, strong ? dcodeIO.bcrypt.genSaltSync(4) : poormanSalt());
$('#challenge').val(c);
if (s == '' || c == '') {
openNotification('Crypto error!', 'bad');
@@ -1038,73 +1035,13 @@ function init_crypto_form() {
}
//</crypto form (Web login)>
-//<persona>
-function init_persona() {
- if (!(navigator.id)) {
- if (window.console) {
- console.log('FreshRSS waiting for Persona…');
- }
- window.setTimeout(init_persona, 100);
- return;
- }
- $('a.signin').click(function() {
- navigator.id.request();
- return false;
- });
- $('a.signout').click(function() {
- navigator.id.logout();
- return false;
- });
-
- navigator.id.watch({
- loggedInUser: current_user_mail,
-
- onlogin: function(assertion) {
- // A user has logged in! Here you need to:
- // 1. Send the assertion to your backend for verification and to create a session.
- // 2. Update your UI.
- $.ajax ({
- type: 'POST',
- url: url_login,
- data: {assertion: assertion},
- success: function(res, status, xhr) {
- /*if (res.status === 'failure') {
- alert (res_obj.reason);
- } else*/ if (res.status === 'okay') {
- location.href = url_freshrss;
- }
- },
- error: function(res, status, xhr) {
- alert("Login failure: " + res);
- }
- });
- },
- onlogout: function() {
- // A user has logged out! Here you need to:
- // Tear down the user's session by redirecting the user or making a call to your backend.
- // Also, make sure loggedInUser will get set to null on the next page load.
- // (That's a literal JavaScript null. Not false, 0, or undefined. null.)
- $.ajax ({
- type: 'POST',
- url: url_logout,
- success: function(res, status, xhr) {
- location.href = url_freshrss;
- },
- error: function(res, status, xhr) {
- //alert("logout failure" + res);
- }
- });
- }
- });
-}
-//</persona>
function init_confirm_action() {
$('body').on('click', '.confirm', function () {
var str_confirmation = $(this).attr('data-str-confirm');
if (!str_confirmation) {
- str_confirmation = str_confirmation_default;
+ str_confirmation = i18n['confirmation_default'];
}
return confirm(str_confirmation);
@@ -1150,7 +1087,7 @@ function init_share_observers() {
}
function init_stats_observers() {
- $('#feed_select').on('change', function(e) {
+ $('.select-change').on('change', function(e) {
redirect($(this).find(':selected').data('url'));
});
}
@@ -1199,7 +1136,7 @@ function init_password_observers() {
function faviconNbUnread(n) {
if (typeof n === 'undefined') {
- n = str2int($('.category.all>a').attr('data-unread'));
+ n = str2int($('.category.all .title').attr('data-unread'));
}
//http://remysharp.com/2010/08/24/dynamic-favicons/
var canvas = document.createElement('canvas'),
@@ -1233,8 +1170,44 @@ function faviconNbUnread(n) {
}
}
+function init_slider_observers() {
+ var slider = $('#slider'),
+ closer = $('#close-slider');
+ if (slider.length < 1) {
+ return;
+ }
+
+ $('.post').on('click', '.open-slider', function() {
+ if (ajax_loading) {
+ return false;
+ }
+
+ ajax_loading = true;
+ var url_slide = $(this).attr('href');
+
+ $.ajax({
+ type: 'GET',
+ url: url_slide,
+ data : { ajax: true }
+ }).done(function (data) {
+ slider.html(data);
+ closer.addClass('active');
+ slider.addClass('active');
+ ajax_loading = false;
+ });
+
+ return false;
+ });
+
+ closer.on('click', function() {
+ closer.removeClass('active');
+ slider.removeClass('active');
+ return false;
+ });
+}
+
function init_all() {
- if (!(window.$ && window.url_freshrss)) {
+ if (!(window.$ && window.context)) {
if (window.console) {
console.log('FreshRSS waiting for JS…');
}
@@ -1242,11 +1215,6 @@ function init_all() {
return;
}
init_notifications();
- switch (authType) {
- case 'persona':
- init_persona();
- break;
- }
init_confirm_action();
$stream = $('#stream');
if ($stream.length > 0) {
@@ -1268,6 +1236,7 @@ function init_all() {
init_feed_observers();
init_password_observers();
init_stats_observers();
+ init_slider_observers();
}
if (window.console) {
diff --git a/p/scripts/persona.js b/p/scripts/persona.js
new file mode 100644
index 000000000..36aeeaf56
--- /dev/null
+++ b/p/scripts/persona.js
@@ -0,0 +1,76 @@
+"use strict";
+
+function init_persona() {
+ if (!(navigator.id && window.$)) {
+ if (window.console) {
+ console.log('FreshRSS (Persona) waiting for JS…');
+ }
+ window.setTimeout(init_persona, 100);
+ return;
+ }
+
+ $('a.signin').click(function() {
+ navigator.id.request();
+ return false;
+ });
+
+ $('a.signout').click(function() {
+ navigator.id.logout();
+ return false;
+ });
+
+ navigator.id.watch({
+ loggedInUser: context['current_user_mail'],
+
+ onlogin: function(assertion) {
+ // A user has logged in! Here you need to:
+ // 1. Send the assertion to your backend for verification and to create a session.
+ // 2. Update your UI.
+ $.ajax ({
+ type: 'POST',
+ url: url['login'],
+ data: {assertion: assertion},
+ success: function(res, status, xhr) {
+ if (res.status === 'failure') {
+ openNotification(res.reason, 'bad');
+ } else if (res.status === 'okay') {
+ location.href = url['index'];
+ }
+ },
+ error: function(res, status, xhr) {
+ // alert(res);
+ }
+ });
+ },
+ onlogout: function() {
+ // A user has logged out! Here you need to:
+ // Tear down the user's session by redirecting the user or making a call to your backend.
+ // Also, make sure loggedInUser will get set to null on the next page load.
+ // (That's a literal JavaScript null. Not false, 0, or undefined. null.)
+ $.ajax ({
+ type: 'POST',
+ url: url['logout'],
+ success: function(res, status, xhr) {
+ location.href = url['index'];
+ },
+ error: function(res, status, xhr) {
+ // alert(res);
+ }
+ });
+ }
+ });
+}
+
+if (document.readyState && document.readyState !== 'loading') {
+ if (window.console) {
+ console.log('FreshRSS (Persona) immediate init…');
+ }
+ init_persona();
+} else if (document.addEventListener) {
+ document.addEventListener('DOMContentLoaded', function () {
+ if (window.console) {
+ console.log('FreshRSS (Persona) waiting for DOMContentLoaded…');
+ }
+ init_persona();
+ }, false);
+}
diff --git a/p/scripts/shortcut.js b/p/scripts/shortcut.js
index debaffbaa..e78cf6f5e 100644
--- a/p/scripts/shortcut.js
+++ b/p/scripts/shortcut.js
@@ -43,7 +43,9 @@ shortcut = {
//Find Which key is pressed
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
- var character = String.fromCharCode(code).toLowerCase();
+ if (code == 32 || (code >= 48 && code <= 90) || (code >= 96 && code <= 111) || (code >= 186 && code <= 192) || (code >= 219 && code <= 222)) { //FreshRSS
+ var character = String.fromCharCode(code).toLowerCase();
+ }
if(code == 188) character=","; //If the user presses , when the type is onkeydown
if(code == 190) character="."; //If the user presses , when the type is onkeydown
diff --git a/p/themes/Dark/dark.css b/p/themes/Dark/dark.css
index 10f6e655b..03bf3c985 100644
--- a/p/themes/Dark/dark.css
+++ b/p/themes/Dark/dark.css
@@ -435,6 +435,77 @@ a.btn {
font-size: 0;
}
+/*=== Boxes */
+.box {
+ border: 1px solid #000;
+ border-radius: 5px;
+}
+.box .box-title {
+ margin: 0;
+ padding: 5px 10px;
+ background: #26303F;
+ border-bottom: 1px solid #000;
+ border-radius: 5px 5px 0 0;
+}
+.box .box-content {
+ max-height: 260px;
+}
+
+.box .box-content .item {
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 2.5em;
+}
+
+.box .box-content .item .configure {
+ visibility: hidden;
+}
+.box .box-content .item:hover .configure {
+ visibility: visible;
+}
+
+/*=== Tree */
+.tree {
+ margin: 10px 0;
+}
+.tree-folder-title {
+ position: relative;
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 1rem;
+ background: #1c1c1c;
+}
+.tree-folder-title .title {
+ background: inherit;
+ color: #888;
+}
+.tree-folder-title .title:hover {
+ text-decoration: none;
+}
+.tree-folder.active .tree-folder-title {
+ background: #2c2c2c;
+ font-weight: bold;
+}
+.tree-folder-items {
+ border-top: 1px solid #222;
+ border-bottom: 1px solid #222;
+ background: #161616;
+}
+.tree-folder-items > .item {
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 0.8rem;
+}
+.tree-folder-items > .item.active {
+ background: #1c1c1c;
+}
+.tree-folder-items > .item > a {
+ text-decoration: none;
+}
+.tree-folder-items > .item.active > a {
+ color: #888;
+}
+
/*=== STRUCTURE */
/*===============*/
/*=== Header */
@@ -471,81 +542,59 @@ a.btn {
border-right: 1px solid #333;
background: #1c1c1c;
}
-.aside.aside_flux {
- padding: 10px 0 50px;
- border-right: 1px solid #333;
- background: #1c1c1c;
-}
-
-/*=== Aside main page (categories) */
-.categories {
+.aside.aside_feed {
+ padding: 10px 0;
text-align: center;
}
-.category {
- width: 235px;
- margin: 10px auto;
- text-align: left;
-}
-.category .btn:first-child {
- position: relative;
- width: 213px;
-}
-.category.stick .btn:first-child {
- width: 176px;
+.aside.aside_feed .tree {
+ position: sticky;
+ top: 0;
+ margin: 10px 0 50px;
}
-.category .btn:first-child:not([data-unread="0"]):after {
+
+/*=== Aside main page (categories) */
+.aside_feed .tree-folder-title > .title:not([data-unread="0"]):after {
position: absolute;
- top: 3px; right: 3px;
- padding: 1px 5px;
- background: #111;
- color: #888;
- border: 1px solid #000;
- border-radius: 5px;
+ right: 0;
+ margin: 10px 0;
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 1.5rem;
+ background: inherit;
+ border-left: 1px solid #666;
}
/*=== Aside main page (feeds) */
-.categories .feeds .item.active {
- background: #333;
+.feed.item.empty.active {
+ background: #c95;
}
-.categories .feeds .item.active .feed {
- color: #888;
+.feed.item.error.active {
+ background: #a44;
}
-.categories .feeds .item.empty .feed {
+.feed.item.empty,
+.feed.item.empty > a {
color: #c95;
}
-.categories .feeds .item.empty.active {
- background: #c95;
-}
-.categories .feeds .item.error .feed {
+.feed.item.error,
+.feed.item.error > a {
color: #a44;
}
-.categories .feeds .item.error.active {
- background: #a44;
+.feed.item.empty.active,
+.feed.item.empty.active > a {
+ color: #111;
}
-.categories .feeds .item.empty.active .feed,
-.categories .feeds .item.error.active .feed {
+.feed.item.error.active,
+.feed.item.error.active > a {
color: #fff;
}
-.categories .feeds .item .feed {
- margin: 0;
- width: 165px;
- line-height: 3em;
- font-size: 0.8em;
- text-align: left;
- text-decoration: none;
-}
-.categories .feeds .feed:not([data-unread="0"]) {
- font-weight: bold;
-}
-.categories .feeds .dropdown-menu:after {
+.aside_feed .tree-folder-items .dropdown-menu:after {
left: 2px;
}
-.categories .feeds .item .dropdown-target:target ~ .dropdown-toggle > .icon,
-.categories .feeds .item:hover .dropdown-toggle > .icon,
-.categories .feeds .item.active .dropdown-toggle > .icon {
- vertical-align: middle;
- background-color: #111;
+.aside_feed .tree-folder-items .item .dropdown-target:target ~ .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item:hover .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item.active .dropdown-toggle > .icon {
border-radius: 3px;
+ background-color: #111;
}
/*=== Configuration pages */
@@ -796,46 +845,34 @@ a.btn {
/*=== GLOBAL VIEW */
/*================*/
-#stream.global .box-category {
- text-align: left;
- background: #1a1a1a;
- border: 1px solid #000;
- border-radius: 5px;
+.box.category .box-title .title {
+ font-weight: normal;
+ text-decoration: none;
text-align: left;
+ color: #888;
}
-#stream.global .category {
- margin: 0;
+.box.category:not([data-unread="0"]) .box-title {
+ background: #34495E;
}
-#stream.global .btn {
- width: auto;
- height: 2em;
- margin: 0;
- padding: 0 10px;
- line-height: 2em;
- font-size: 1.2rem;
+.box.category:not([data-unread="0"]) .box-title:active {
background: #26303F;
- border: none;
- border-bottom: 1px solid #000;
- border-radius: 5px 5px 0 0;
}
-#stream.global .btn:not([data-unread="0"]) {
- font-weight: bold;
- background: #34495e;
+.box.category:not([data-unread="0"]) .box-title .title {
color: #fff;
-}
-#stream.global .btn:first-child:not([data-unread="0"]):after {
- top: 0; right: 5px;
font-weight: bold;
+}
+.box.category .title:not([data-unread="0"]):after {
+ position: absolute;
+ top: 5px; right: 10px;
border: 0;
background: none;
- color: #fff;
-}
-#stream.global .box-category .feeds {
- max-height: 250px;
+ font-weight: bold;
+ box-shadow: none;
+ text-shadow: none;
}
-#stream.global .box-category .feeds .item {
+.box.category .item.feed {
padding: 2px 10px;
- font-size: 0.9rem;
+ font-size: 0.8rem;
}
/*=== Panel */
@@ -934,17 +971,20 @@ a.btn {
}
.aside .toggle_aside,
#panel .close {
- position: absolute;
display: block;
- top: 0; right: 0;
- width: 30px;
- height: 30px;
- line-height: 30px;
+ width: 100%;
+ height: 50px;
+ line-height: 50px;
text-align: center;
background: #111;
- border-left: 1px solid #333;
border-bottom: 1px solid #333;
- border-radius: 0 0 0 5px;
+ }
+
+ .aside.aside_feed {
+ padding: 0;
+ }
+ .aside.aside_feed .tree {
+ position: static;
}
.nav_menu .btn {
diff --git a/p/themes/Flat/flat.css b/p/themes/Flat/flat.css
index 484cee9f3..313bee0ee 100644
--- a/p/themes/Flat/flat.css
+++ b/p/themes/Flat/flat.css
@@ -438,6 +438,79 @@ a.btn {
background: url("loader.gif") center center no-repeat #34495e;
}
+/*=== Boxes */
+.box {
+ border: 1px solid #ddd;
+ border-radius: 5px;
+}
+.box .box-title {
+ margin: 0;
+ padding: 5px 10px;
+ background: #ecf0f1;
+ color: #333;
+ border-bottom: 1px solid #ddd;
+ border-radius: 5px 5px 0 0;
+}
+.box .box-content {
+ max-height: 260px;
+}
+
+.box .box-content .item {
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 2.5em;
+}
+
+.box .box-content .item .configure {
+ visibility: hidden;
+}
+.box .box-content .item .configure .icon {
+ vertical-align: middle;
+ background-color: #95a5a6;
+ border-radius: 3px;
+}
+.box .box-content .item:hover .configure {
+ visibility: visible;
+}
+
+/*=== Tree */
+.tree {
+ margin: 10px 0;
+}
+.tree-folder-title {
+ position: relative;
+ padding: 0 10px;
+ background: #34495e;
+ line-height: 2.5rem;
+ font-size: 1rem;
+}
+.tree-folder-title .title {
+ background: inherit;
+ color: #fff;
+}
+.tree-folder-title .title:hover {
+ text-decoration: none;
+}
+.tree-folder.active .tree-folder-title {
+ background: #2980b9;
+ font-weight: bold;
+}
+.tree-folder-items {
+ background: #2c3e50;
+}
+.tree-folder-items > .item {
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 0.8rem;
+}
+.tree-folder-items > .item.active {
+ background: #2980b9;
+}
+.tree-folder-items > .item > a {
+ text-decoration: none;
+ color: #fff;
+}
+
/*=== STRUCTURE */
/*===============*/
/*=== Header */
@@ -473,76 +546,56 @@ a.btn {
.aside {
background: #ecf0f1;
}
-.aside.aside_flux {
- padding: 10px 0 50px;
- background: #ecf0f1;
-}
-
-/*=== Aside main page (categories) */
-.categories {
+.aside.aside_feed {
+ padding: 10px 0;
text-align: center;
+ background: #34495e;
+ border-radius: 0 10px 0 0;
}
-.category {
- width: 233px;
- margin: 10px auto;
- text-align: left;
-}
-.category .btn:first-child {
- position: relative;
- width: 212px;
-}
-.category.stick .btn:first-child {
- width: 175px;
+.aside.aside_feed .tree {
+ position: sticky;
+ top: 0;
+ margin: 10px 0 50px;
}
-.category .btn:first-child:not([data-unread="0"]):after {
+
+/*=== Aside main page (categories) */
+.aside_feed .tree-folder-title > .title:not([data-unread="0"]):after {
position: absolute;
- top: 5px; right: 5px;
- padding: 1px 5px;
- background: #3498DB;
- color: #fff;
- border-radius: 5px;
+ right: 0;
+ margin: 10px 0;
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 1.5rem;
+ background: inherit;
}
/*=== Aside main page (feeds) */
-.categories .feeds .item.active {
- background: #2980b9;
-}
-.categories .feeds .item.empty.active {
+.feed.item.empty.active {
background: #f39c12;
}
-.categories .feeds .item.error.active {
+.feed.item.error.active {
background: #bd362f;
}
-.categories .feeds .item.empty .feed {
+.feed.item.empty,
+.feed.item.empty > a {
color: #e67e22;
}
-.categories .feeds .item.error .feed {
+.feed.item.error,
+.feed.item.error > a {
color: #bd362f;
}
-.categories .feeds .item.active .feed,
-.categories .feeds .item.empty.active .feed,
-.categories .feeds .item.error.active .feed {
+.feed.item.empty.active,
+.feed.item.error.active,
+.feed.item.empty.active > a,
+.feed.item.error.active > a {
color: #fff;
}
-.categories .feeds .item .feed {
- margin: 0;
- width: 165px;
- line-height: 3em;
- font-size: 0.8em;
- text-align: left;
- text-decoration: none;
-}
-.categories .feeds .feed:not([data-unread="0"]) {
- font-weight: bold;
-}
-.categories .feeds .dropdown-menu:after {
+.aside_feed .tree-folder-items .dropdown-menu:after {
left: 2px;
}
-.categories .feeds .item .dropdown-target:target ~ .dropdown-toggle > .icon,
-.categories .feeds .item:hover .dropdown-toggle > .icon,
-.categories .feeds .item.active .dropdown-toggle > .icon {
- vertical-align: middle;
- background-color: #95a5a6;
+.aside_feed .tree-folder-items .item .dropdown-target:target ~ .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item:hover .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item.active .dropdown-toggle > .icon {
border-radius: 3px;
}
@@ -617,6 +670,12 @@ a.btn {
padding: 5px 0;
}
+#dropdown-query ~ .dropdown-menu .dropdown-header .icon {
+ vertical-align: middle;
+ background-color: #95a5a6;
+ border-radius: 3px;
+}
+
/*=== Feed articles */
.flux {
border-left: 2px solid #ecf0f1;
@@ -792,44 +851,33 @@ a.btn {
/*=== GLOBAL VIEW */
/*================*/
-#stream.global .box-category {
+.box.category .box-title .title {
+ font-weight: normal;
+ text-decoration: none;
text-align: left;
- border: 1px solid #ddd;
- border-radius: 5px;
}
-#stream.global .category {
- margin: 0;
+.box.category:not([data-unread="0"]) .box-title {
+ background: #3498db;
}
-#stream.global .btn {
- width: auto;
- height: 2em;
- margin: 0;
- padding: 0 10px;
- line-height: 2em;
- font-size: 1.2rem;
- background: #ecf0f1;
- color: #333;
- border-bottom: 1px solid #ddd;
- border-radius: 5px 5px 0 0;
+.box.category:not([data-unread="0"]) .box-title:active {
+ background: #2980b9;
}
-#stream.global .btn:not([data-unread="0"]) {
+.box.category:not([data-unread="0"]) .box-title .title {
font-weight: bold;
- background: #3498db;
color: #fff;
}
-#stream.global .btn:first-child:not([data-unread="0"]):after {
- top: 0; right: 5px;
- font-weight: bold;
- background: none;
+.box.category .title:not([data-unread="0"]):after {
+ position: absolute;
+ top: 5px; right: 10px;
border: 0;
- color: #fff;
-}
-#stream.global .box-category .feeds {
- max-height: 250px;
+ background: none;
+ font-weight: bold;
+ box-shadow: none;
+ text-shadow: none;
}
-#stream.global .box-category .feeds .item {
+.box.category .item.feed {
padding: 2px 10px;
- font-size: 0.9rem;
+ font-size: 0.8rem;
}
/*=== DIVERS */
@@ -920,15 +968,19 @@ a.btn {
}
.aside .toggle_aside,
#panel .close {
- position: absolute;
display: block;
- top: 0; right: 0;
- width: 32px;
- height: 32px;
- line-height: 30px;
+ width: 100%;
+ height: 50px;
+ line-height: 50px;
text-align: center;
- background: #34495e;
- border-radius: 0 0 0 5px;
+ background: #2c3e50;
+ }
+
+ .aside.aside_feed {
+ padding: 0;
+ }
+ .aside.aside_feed .tree {
+ position: static;
}
.nav_menu .btn {
diff --git a/p/themes/Origine/origine.css b/p/themes/Origine/origine.css
index 08fc08379..afd6ec04f 100644
--- a/p/themes/Origine/origine.css
+++ b/p/themes/Origine/origine.css
@@ -467,6 +467,82 @@ a.btn {
font-size: 0;
}
+/*=== Boxes */
+.box {
+ background: #fff;
+ border-radius: 5px;
+ box-shadow: 0 0 3px #bbb;
+}
+.box .box-title {
+ margin: 0;
+ padding: 5px 10px;
+ background: #f6f6f6;
+ border-bottom: 1px solid #ddd;
+ border-radius: 5px 5px 0 0;
+}
+.box .box-content {
+ min-height: 2.5em;
+ max-height: 260px;
+}
+
+.box .box-content .item {
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 2.5em;
+}
+
+.box .box-content .item .configure {
+ visibility: hidden;
+}
+.box .box-content .item:hover .configure {
+ visibility: visible;
+}
+
+/*=== Tree */
+.tree {
+ margin: 10px 0;
+}
+.tree-folder-title {
+ position: relative;
+ padding: 0 10px;
+ background: #fff;
+ line-height: 2.5rem;
+ font-size: 1rem;
+}
+.tree-folder-title .title {
+ background: inherit;
+ color: #444;
+}
+.tree-folder-title .title:hover {
+ text-decoration: none;
+}
+.tree-folder.active .tree-folder-title {
+ background: #f0f0f0;
+ font-weight: bold;
+}
+.tree-folder.active .tree-folder-title .title {
+ color: #0062BE;
+}
+.tree-folder-items {
+ border-top: 1px solid #ccc;
+ border-bottom: 1px solid #ccc;
+ background: #f6f6f6;
+}
+.tree-folder-items > .item {
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 0.8rem;
+}
+.tree-folder-items > .item.active {
+ background: #0062be;
+}
+.tree-folder-items > .item > a {
+ text-decoration: none;
+}
+.tree-folder-items > .item.active > a {
+ color: #fff;
+}
+
/*=== STRUCTURE */
/*===============*/
/*=== Header */
@@ -505,79 +581,57 @@ a.btn {
border-right: 1px solid #aaa;
background: #fff;
}
-.aside.aside_flux {
- padding: 10px 0 50px;
-}
-
-/*=== Aside main page (categories) */
-.categories {
+.aside.aside_feed {
+ padding: 10px 0;
text-align: center;
+ background: #fff;
}
-.category {
- width: 235px;
- margin: 10px auto;
- text-align: left;
-}
-.category .btn:first-child {
- position: relative;
- width: 213px;
-}
-.category.stick .btn:first-child {
- width: 176px;
+.aside.aside_feed .tree {
+ position: sticky;
+ top: 0;
+ margin: 10px 0 50px;
}
-.category .btn:first-child:not([data-unread="0"]):after {
+
+/*=== Aside main page (categories) */
+.aside_feed .category .title:not([data-unread="0"]):after {
position: absolute;
- top: 3px; right: 3px;
- padding: 1px 5px;
- background: #ccc;
- color: #fff;
- border: 1px solid #bbb;
- border-radius: 5px;
- box-shadow: 1px 3px 3px #aaa inset;
- text-shadow: 0 0 1px #aaa;
+ right: 0;
+ margin: 10px 0;
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 1.5rem;
+ background: inherit;
+ border-left: 1px solid #aaa;
}
/*=== Aside main page (feeds) */
-.categories .feeds .item.active {
- background: #0062BE;
-}
-.categories .feeds .item.empty.active {
+.feed.item.empty.active {
background: #e67e22;
}
-.categories .feeds .item.error.active {
- background: #BD362F;
+.feed.item.error.active {
+ background: #bd362f;
}
-.categories .feeds .item.empty .feed {
+.feed.item.empty,
+.feed.item.empty > a {
color: #e67e22;
}
-.categories .feeds .item.error .feed {
- color: #BD362F;
+.feed.item.error,
+.feed.item.error > a {
+ color: #bd362f;
}
-.categories .feeds .item.active .feed,
-.categories .feeds .item.empty.active .feed,
-.categories .feeds .item.error.active .feed {
+.feed.item.empty.active,
+.feed.item.error.active,
+.feed.item.empty.active > a,
+.feed.item.error.active > a {
color: #fff;
}
-.categories .feeds .item .feed {
- margin: 0;
- width: 165px;
- line-height: 3em;
- font-size: 0.8em;
- text-align: left;
- text-decoration: none;
-}
-.categories .feeds .feed:not([data-unread="0"]) {
- font-weight: bold;
-}
-.categories .feeds .dropdown-menu:after {
+.aside_feed .tree-folder-items .dropdown-menu:after {
left: 2px;
}
-.categories .feeds .item .dropdown-target:target ~ .dropdown-toggle > .icon,
-.categories .feeds .item:hover .dropdown-toggle > .icon,
-.categories .feeds .item.active .dropdown-toggle > .icon {
+.aside_feed .tree-folder-items .item .dropdown-target:target ~ .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item.active .dropdown-toggle > .icon {
background-color: #fff;
border-radius: 3px;
- vertical-align: middle;
}
/*=== Configuration pages */
@@ -842,35 +896,24 @@ a.btn {
/*=== GLOBAL VIEW */
/*================*/
-#stream.global .box-category {
- background: #fff;
- border-radius: 5px;
+.box.category .box-title .title {
+ font-weight: normal;
+ text-decoration: none;
text-align: left;
- box-shadow: 0 0 3px #bbb;
}
-#stream.global .category {
- margin: 0;
+.box.category:not([data-unread="0"]) .box-title {
+ background: #0084CC;
}
-#stream.global .btn {
- width: auto;
- height: 2em;
- margin: 0;
- padding: 0 10px;
- background: #f6f6f6;
- border: none;
- border-bottom: 1px solid #ddd;
- border-radius: 5px 5px 0 0;
- line-height: 2em;
- font-size: 1.2rem;
+.box.category:not([data-unread="0"]) .box-title:active {
+ background: #3498db;
}
-#stream.global .btn:not([data-unread="0"]) {
- background: #0084CC;
+.box.category:not([data-unread="0"]) .box-title .title {
color: #fff;
font-weight: bold;
- text-shadow: none;
}
-#stream.global .btn:first-child:not([data-unread="0"]):after {
- top: 0; right: 5px;
+.box.category .title:not([data-unread="0"]):after {
+ position: absolute;
+ top: 5px; right: 10px;
border: 0;
background: none;
color: #fff;
@@ -878,12 +921,9 @@ a.btn {
box-shadow: none;
text-shadow: none;
}
-#stream.global .box-category .feeds {
- max-height: 250px;
-}
-#stream.global .box-category .feeds .item {
+.box.category .item.feed {
padding: 2px 10px;
- font-size: 0.9rem;
+ font-size: 0.8rem;
}
/*=== DIVERS */
@@ -977,17 +1017,20 @@ a.btn {
}
.aside .toggle_aside,
#panel .close {
- position: absolute;
display: block;
- top: 0; right: 0;
- width: 30px;
- height: 30px;
- line-height: 30px;
+ width: 100%;
+ height: 50px;
+ line-height: 50px;
text-align: center;
background: #f6f6f6;
- border-left: 1px solid #ddd;
border-bottom: 1px solid #ddd;
- border-radius: 0 0 0 5px;
+ }
+
+ .aside.aside_feed {
+ padding: 0;
+ }
+ .aside.aside_feed .tree {
+ position: static;
}
.nav_menu .btn {
diff --git a/p/themes/Pafat/pafat.css b/p/themes/Pafat/pafat.css
index a35ac861d..8b1e7866c 100644
--- a/p/themes/Pafat/pafat.css
+++ b/p/themes/Pafat/pafat.css
@@ -192,48 +192,12 @@ a.btn {
text-decoration: none;
}
-
-.category.stick .btn {
- background:#5bc0de;
- color : #FFF;
- border-color :#5bc0de;
-}
-
-.category.stick .btn:first-child:hover, .category.stick .btn:last-child:hover, .category.stick .btn.active:first-child, .category.stick.active .btn:last-child {
- background:#39b3d7;
- border-color : #39b3d7;
-}
-
-
.btn.active,
.btn:active,
.dropdown-target:target ~ .btn.dropdown-toggle {
background: #eee;
}
-.category.all > .btn {
- background: #428bca;
- color : #FFF;
- border-color : #428bca;
-}
-
-.category.all > .btn:hover {
- background: #3276b1;
- border-color : #3276b1;
-}
-
-.category.favorites > .btn {
- background:#f0ad4e;
- border-color: #f0ad4e;
- color : #fff;
-}
-
-.category.favorites > .btn:hover {
- background: #ed9c28;
- border-color : #ed9c28;
- color : white;
-}
-
.btn-important {
background: #5cb85c;
color: #fff;
@@ -491,6 +455,80 @@ a.btn {
font-size: 0;
}
+/*=== Boxes */
+.box {
+ border: 1px solid #aaa;
+ border-radius: 5px;
+}
+.box .box-title {
+ margin: 0;
+ padding: 5px 10px;
+ background: #f6f6f6;
+ border-bottom: 1px solid #aaa;
+ border-radius: 5px 5px 0 0;
+}
+.box .box-content {
+ max-height: 260px;
+}
+
+.box .box-content .item {
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 2.5em;
+}
+
+.box .box-content .item .configure {
+ visibility: hidden;
+}
+.box .box-content .item:hover .configure {
+ visibility: visible;
+}
+
+/*=== Tree */
+.tree {
+ margin: 10px 0;
+}
+.tree-folder-title {
+ position: relative;
+ margin: 5px;
+ padding: 0 10px;
+ line-height: 2rem;
+ font-size: 0.9rem;
+ background: #5bc0de;
+ color: #fff;
+ border-top: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+ border-radius: 5px;
+}
+.tree-folder-title .title {
+ background: inherit;
+ color: #fff;
+}
+.tree-folder-title .title:hover {
+ text-decoration: none;
+}
+.tree-folder.active .tree-folder-title {
+ background: #39b3d7;
+ font-weight: bold;
+ font-size: 1rem;
+ border-top: 1px solid #666;
+ border-bottom: 1px solid #666;
+}
+.tree-folder-items > .item {
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 0.8rem;
+}
+.tree-folder-items > .item.active {
+ background: #5cb85c;
+}
+.tree-folder-items > .item > a {
+ text-decoration: none;
+}
+.tree-folder-items > .item.active > a {
+ color: #fff;
+}
+
/*=== STRUCTURE */
/*===============*/
/*=== Header */
@@ -543,75 +581,68 @@ a.btn {
border-right: 1px solid #aaa;
background: #fff;
}
-.aside.aside_flux {
- padding: 10px 0 50px;
+.aside.aside_feed {
+ padding: 10px 0;
+ text-align: center;
+}
+.aside.aside_feed .tree {
+ position: sticky;
+ top: 5px;
+ margin: 10px 0 50px;
}
/*=== Aside main page (categories) */
-.categories {
- text-align: center;
+.aside_feed .tree-folder-title > .title:not([data-unread="0"]):after {
+ position: absolute;
+ top: 0.25rem; right: 3px;
+ padding: 0px 5px;
+ border: 1px solid #fff;
+ border-radius: 3px;
+ font-size: 0.8rem;
+ line-height: 1.5rem;
}
-.category {
- width: 215px;
- margin: 10px auto;
- text-align: left;
+.aside_feed .tree-folder.all .tree-folder-title {
+ background: #428bca;
}
-.category .btn:first-child {
- position: relative;
- width: 203px;
+.aside_feed .tree-folder.all.active .tree-folder-title {
+ background: #3276b1;
}
-.category.stick .btn:first-child {
- width: 176px;
+.aside_feed .tree-folder.favorites .tree-folder-title {
+ background: #f0ad4e;
}
-.category .btn:first-child:not([data-unread="0"]):after {
- position: absolute;
- top: 2px; right: 3px;
- padding: 0px 3px;
- border: 1px solid ;
- border-radius: 3px;
- font-size:10pt;
- line-height : 20px;
+.aside_feed .tree-folder.favorites.active .tree-folder-title {
+ background: #ed9c28;
}
/*=== Aside main page (feeds) */
-.categories .feeds .item.active {
- background: #5cb85c;
+.feed.item.empty.active {
+ background: #e67e22;
}
-.categories .feeds .item.active .feed {
- color: #fff;
+.feed.item.error.active {
+ background: #bd362f;
}
-.categories .feeds .item.empty .feed {
+.feed.item.empty,
+.feed.item.empty > a {
color: #e67e22;
}
-.categories .feeds .item.empty.active {
- background: #e67e22;
+.feed.item.error,
+.feed.item.error > a {
+ color: #bd362f;
}
-.categories .feeds .item.empty.active .feed {
+.feed.item.empty.active,
+.feed.item.error.active,
+.feed.item.empty.active > a,
+.feed.item.error.active > a {
color: #fff;
}
-.categories .feeds .item.error .feed {
- color: #BD362F;
-}
-.categories .feeds .item .feed {
- margin: 0;
- width: 165px;
- line-height: 3em;
- font-size: 0.8em;
- text-align: left;
- text-decoration: none;
-}
-.categories .feeds .feed:not([data-unread="0"]) {
- font-weight: bold;
-}
-.categories .feeds .dropdown-menu:after {
+.aside_feed .tree-folder-items .dropdown-menu:after {
left: 2px;
}
-.categories .feeds .item .dropdown-target:target ~ .dropdown-toggle > .icon,
-.categories .feeds .item:hover .dropdown-toggle > .icon,
-.categories .feeds .item.active .dropdown-toggle > .icon {
- background-color: #fff;
+.aside_feed .tree-folder-items .item .dropdown-target:target ~ .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item:hover .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item.active .dropdown-toggle > .icon {
border-radius: 3px;
- vertical-align: middle;
+ background-color: #fff;
}
/*=== Configuration pages */
@@ -877,63 +908,32 @@ a.btn {
/*=== GLOBAL VIEW */
/*================*/
-#stream.global .box-category {
- background: #fff;
- border:none;
+.box.category .box-title .title {
+ font-weight: normal;
+ text-decoration: none;
text-align: left;
}
-
-#stream.global .category {
- margin: 0;
-}
-
-#stream.global .category:first-child {
- margin: 0;
-}
-
-
-#stream.global .btn {
- width: auto;
- height: 2em;
- margin: 0;
- padding: 0 10px;
- background: #f6f6f6;
- border-bottom: 1px solid #aaa;
- border-radius: 5px 5px 0 0;
- line-height: 2em;
- font-size: 1.2rem;
+.box.category:not([data-unread="0"]) .box-title {
+ background: #5BC0DE;
}
-
-#stream.global .btn:not([data-unread="0"]) {
- background: #5bc0de;
- border-color : #5bc0de;
- color: #fff;
+.box.category:not([data-unread="0"]) .box-title .title {
font-weight: bold;
- text-shadow: none;
-
+ color: #fff;
}
-
-
-#stream.global .btn:first-child:not([data-unread="0"]):after {
- top: 0; right: 5px;
+.box.category .title:not([data-unread="0"]):after {
+ position: absolute;
+ top: 5px; right: 10px;
border: 0;
background: none;
- color: #fff;
font-weight: bold;
box-shadow: none;
text-shadow: none;
+ font-size: 0.8rem;
+ line-height: 1.6rem;
}
-
-#stream.global .box-category .feeds {
- max-height: 250px;
- width: 302px;
- border : solid #aaa 1px;
- border-top : none;
-}
-
-#stream.global .box-category .feeds .item {
+.box.category .item.feed {
padding: 2px 10px;
- font-size: 0.9rem;
+ font-size: 0.8rem;
}
/*=== DIVERS */
@@ -1027,17 +1027,20 @@ a.btn {
}
.aside .toggle_aside,
#panel .close {
- position: absolute;
display: block;
- top: 0; right: 0;
- width: 30px;
- height: 30px;
- line-height: 30px;
+ width: 100%;
+ height: 40px;
+ line-height: 40px;
text-align: center;
background: #f6f6f6;
- border-left: 1px solid #ddd;
border-bottom: 1px solid #ddd;
- border-radius: 0 0 0 5px;
+ }
+
+ .aside.aside_feed {
+ padding: 0;
+ }
+ .aside.aside_feed .tree {
+ position: static;
}
.nav_menu .btn {
diff --git a/p/themes/Screwdriver/screwdriver.css b/p/themes/Screwdriver/screwdriver.css
index 37fa18e10..b6c2e670e 100644
--- a/p/themes/Screwdriver/screwdriver.css
+++ b/p/themes/Screwdriver/screwdriver.css
@@ -497,6 +497,88 @@ a.btn {
font-size: 0;
}
+/*=== Boxes */
+.box {
+ background: #EDE7DE;
+ border-radius: 4px 4px 0 0;
+}
+.box .box-title {
+ margin: 0;
+ padding: 5px 10px;
+ background: linear-gradient(0deg, #EDE7DE 0%, #fff 100%) #171717;
+ background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #fff 100%);
+ box-shadow: 0px -1px #fff inset,0 -2px #ccc inset;
+ color: #888;
+ text-shadow: 0 1px #ccc;
+ border-radius: 4px 4px 0 0;
+ font-size: 1.1rem;
+ font-weight: normal;
+}
+.box .box-content {
+ max-height: 260px;
+}
+
+.box .box-content .item {
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 2.5em;
+}
+
+.box .box-content .item .configure {
+ visibility: hidden;
+}
+.box .box-content .item:hover .configure {
+ visibility: visible;
+}
+
+/*=== Tree */
+.tree {
+ margin: 10px 0;
+}
+.tree-folder-title {
+ position: relative;
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 0.9rem;
+}
+.tree-folder-title .title {
+ background: inherit;
+ color: #fff;
+}
+.tree-folder-title .title:hover {
+ text-decoration: none;
+}
+.tree-folder.active .tree-folder-title {
+ background: linear-gradient(180deg, #222 0%, #171717 100%) #171717;
+ background: -webkit-linear-gradient(top, #222 0%, #171717 100%);
+ box-shadow: 0px 1px #171717, 0px 1px rgba(255, 255, 255, 0.08) inset;
+ text-shadow: 0 0 2px rgba(255,255,255,0.28);
+ color: #fff;
+}
+.tree-folder-items {
+ background: #171717;
+ padding: 8px 0;
+ box-shadow: 0 4px 4px #171717 inset, 0 1px rgba(255,255,255,0.08),0 -1px rgba(255,255,255,0.08);
+}
+.tree-folder-items > .item {
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 0.8rem;
+}
+.tree-folder-items > .item.active {
+ background: linear-gradient(180deg, #222 0%, #171717 100%) #171717;
+ background: -webkit-linear-gradient(top, #222 0%, #171717 100%);
+ border-radius: 4px;
+ margin: 0px 8px;
+ box-shadow: 0px 1px #171717, 0px 1px rgba(255, 255, 255, 0.08) inset, 0 2px 2px #111;
+}
+.tree-folder-items > .item > a {
+ text-decoration: none;
+ color: #fff;
+}
+.tree-folder-items > .item.active > a {
+}
+
/*=== STRUCTURE */
/*===============*/
/*=== Header */
@@ -535,7 +617,7 @@ a.btn {
/*=== Body */
#global {
background:#EDE7DE;
- height: calc(100% - 85px);
+ height: calc(100% - 60px);
}
.aside {
border-radius: 0px 12px 0px 0px;
@@ -544,105 +626,44 @@ a.btn {
background: #222;
width: 235px;
}
-.aside.aside_flux {
- padding: 10px 0 50px;
- background: #222;
-}
-
-/*=== Aside main page (categories) */
-.categories {
+.aside.aside_feed {
+ padding: 10px 0;
text-align: center;
}
-.categories .btn-important {
- border: none;
-}
-.category {
- width: 235px;
- margin: 10px auto 0;
- text-align: left;
-}
-#aside_flux ul.feeds{
- box-shadow: 0 4px 4px #171717 inset, 0 1px rgba(255,255,255,0.08),0 -1px rgba(255,255,255,0.08);
-}
-ul.feeds{
- background:#171717;
- padding:8px 0;
- box-shadow: 0 4px 4px #EDE7DE inset;
-}
-ul.feeds.active{
- box-shadow: 0 0 0 #171717 inset, 0 -2px 2px #111 inset,0 1px rgba(255,255,255,0.08),0 -1px rgba(255,255,255,0);
-}
-.category.stick.active{
- background: linear-gradient(180deg, #222 0%, #171717 100%) #171717;
- background: -webkit-linear-gradient(top, #222 0%, #171717 100%);
- box-shadow: 0px 1px #171717, 0px 1px rgba(255, 255, 255, 0.08) inset;
-}
-.category .btn {
- color: #fff;
- border: none;
- background: transparent;
-}
-.category .btn:first-child {
- position: relative;
- width: 213px;
- background: transparent;
-}
-.category.stick .btn:first-child {
- width: 176px;
+.aside.aside_feed .tree {
+ position: sticky;
+ top: 0;
+ margin: 10px 0 50px;
}
-.category .btn:first-child:not([data-unread="0"]):after {
+
+/*=== Aside main page (categories) */
+.aside_feed .tree-folder-title > .title:not([data-unread="0"]):after {
position: absolute;
- top: 3px; right: 3px;
+ right: 3px;
padding: 1px 5px;
- background: transparent;
color: #fff;
text-shadow: 0 1px rgba(255,255,255,0.08);
}
+.aside_feed .btn-important {
+ border: none;
+}
/*=== Aside main page (feeds) */
-.categories .feeds .item.active {
- background: linear-gradient(180deg, #222 0%, #171717 100%) #171717;
- background: -webkit-linear-gradient(top, #222 0%, #171717 100%);
- border-radius: 4px;
- margin: 0px 8px;
- box-shadow: 0px 1px #171717, 0px 1px rgba(255, 255, 255, 0.08) inset, 0 2px 2px #111;
-}
-.categories .feeds .item.active .feed {
- color: #fff;
-}
-.categories .feeds .item.empty .feed {
+.feed.item.empty,
+.feed.item.empty > a {
color: #e67e22;
}
-.categories .feeds .item.empty.active {
- background: #e67e22;
-}
-.categories .feeds .item.empty.active .feed {
- color: #fff;
-}
-.categories .feeds .item.error .feed {
+.feed.item.error,
+.feed.item.error > a {
color: #BD362F;
}
-.categories .feeds .item .feed {
- margin: 0;
- width: 165px;
- line-height: 3em;
- font-size: 0.8em;
- text-align: left;
- text-decoration: none;
- color:#ccc;
-}
-.categories .feeds .feed:not([data-unread="0"]) {
- font-weight: bold;
-}
-.categories .feeds .dropdown-menu:after {
+.aside_feed .tree-folder-items .dropdown-menu:after {
left: 2px;
}
-.categories .feeds .item .dropdown-target:target ~ .dropdown-toggle > .icon,
-.categories .feeds .item:hover .dropdown-toggle > .icon,
-.categories .feeds .item.active .dropdown-toggle > .icon {
- background-color: transparent;
+.aside_feed .tree-folder-items .item .dropdown-target:target ~ .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item:hover .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item.active .dropdown-toggle > .icon {
border-radius: 3px;
- vertical-align: middle;
}
/*=== Configuration pages */
@@ -934,63 +955,50 @@ opacity: 1;
/*=== GLOBAL VIEW */
/*================*/
-#stream.global{
- background:#222;
+#stream.global {
+ background: #222;
padding: 24px 0;
box-shadow: 0 1px #fff, 0 -2px 2px #171717 inset, 0 2px 2px #171717 inset;
}
-#stream.global .box-category {
- background: #fff;
- border-radius: 4px 4px 0 0;
- text-align: left;
- box-shadow: 0 0 4px #171717;
- overflow:hidden;
-}
-#stream.global .category {
- margin: 0;
-}
-#stream.global .btn {
- width: auto;
- height: 2em;
- margin: 0;
- padding: 0 10px;
+
+.box.category .box-title {
background: linear-gradient(0deg, #EDE7DE 0%, #fff 100%) #171717;
background: -webkit-linear-gradient(bottom, #EDE7DE 0%, #fff 100%);
- border: none;
box-shadow: 0px -1px #fff inset,0 -2px #ccc inset;
border-radius: none;
line-height: 2em;
font-size: 1.2rem;
- color:#888;
text-shadow:0 1px #ccc;
}
-#stream.global .btn:not([data-unread="0"]) {
+.box.category .box-title .title {
+ font-weight: normal;
+ text-decoration: none;
+ text-align: left;
+ color: #888;
+}
+.box.category:not([data-unread="0"]) .box-title {
+}
+.box.category:not([data-unread="0"]) .box-title:active {
+}
+.box.category:not([data-unread="0"]) .box-title .title {
color: #222;
font-weight: bold;
}
-#stream.global .btn:first-child:not([data-unread="0"]):after {
- top: 0;
- right: 5px;
+.box.category .title:not([data-unread="0"]):after {
+ position: absolute;
+ top: 5px; right: 10px;
border: 0;
background: none;
- color: #222;
font-weight: bold;
- box-shadow: none;
- text-shadow: none;
}
-#stream.global .box-category .feeds {
- max-height: 250px;
- color:#222;
- background:#EDE7DE;
-}
-#stream.global .box-category .feeds .item {
+.box.category .item.feed {
padding: 2px 10px;
- font-size: 0.9rem;
- overflow:hidden;
+ font-size: 0.8rem;
}
-#stream.global .box-category .feed {
- color:#222;
+.box.category .item.feed:not(.empty):not(.error) .item-title {
+ color: #222;
}
+
/*=== PANEL */
/*===========*/
#panel {
@@ -1101,12 +1109,10 @@ opacity: 1;
}
.aside .toggle_aside,
#panel .close {
- position: absolute;
display: block;
- top: 0; right: 0;
- width: 30px;
- height: 30px;
- line-height: 30px;
+ width: 100%;
+ height: 40px;
+ line-height: 40px;
text-align: center;
background: #171717;
box-shadow: 0 1px rgba(255,255,255,0.08);
@@ -1117,6 +1123,13 @@ opacity: 1;
margin: 20px 0 0;
}
+ .aside.aside_feed {
+ padding: 0;
+ }
+ .aside.aside_feed .tree {
+ position: static;
+ }
+
.nav_menu .btn {
margin: 5px 10px;
}
diff --git a/p/themes/base-theme/base.css b/p/themes/base-theme/base.css
index ccfab10df..ac30dbfea 100644
--- a/p/themes/base-theme/base.css
+++ b/p/themes/base-theme/base.css
@@ -329,6 +329,66 @@ a.btn {
font-size: 0;
}
+/*=== Boxes */
+.box {
+}
+.box .box-title {
+ margin: 0;
+ padding: 5px 10px;
+}
+.box .box-content {
+ max-height: 260px;
+}
+
+.box .box-content .item {
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 2.5em;
+}
+
+.box .box-content .item .configure {
+ visibility: hidden;
+}
+.box .box-content .item:hover .configure {
+ visibility: visible;
+}
+
+/*=== Tree */
+.tree {
+ margin: 10px 0;
+}
+.tree-folder-title {
+ position: relative;
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 1rem;
+}
+.tree-folder-title .title {
+ background: inherit;
+}
+.tree-folder-title .title:hover {
+ text-decoration: none;
+}
+.tree-folder.active .tree-folder-title {
+ font-weight: bold;
+}
+.tree-folder.active .tree-folder-title .title {
+}
+.tree-folder-items {
+}
+.tree-folder-items > .item {
+ padding: 0 10px;
+ line-height: 2.5rem;
+ font-size: 0.8rem;
+}
+.tree-folder-items > .item.active {
+}
+.tree-folder-items > .item > a {
+ text-decoration: none;
+}
+.tree-folder-items > .item.active > a {
+}
+
/*=== STRUCTURE */
/*===============*/
/*=== Header */
@@ -362,65 +422,49 @@ a.btn {
}
.aside {
}
-.aside.aside_flux {
- padding: 10px 0 50px;
-}
-
-/*=== Aside main page (categories) */
-.categories {
+.aside.aside_feed {
+ padding: 10px 0;
text-align: center;
}
-.category {
- width: 235px;
- margin: 10px auto;
- text-align: left;
+.aside.aside_feed .tree {
+ position: sticky;
+ top: 0;
+ margin: 10px 0 50px;
}
-.category .btn:first-child {
- position: relative;
- width: 213px;
-}
-.category.stick .btn:first-child {
- width: 176px;
-}
-.category .btn:first-child:not([data-unread="0"]):after {
+
+/*=== Aside main page (categories) */
+.aside_feed .tree-folder-title > .title:not([data-unread="0"]):after {
position: absolute;
- top: 3px; right: 3px;
- padding: 1px 5px;
+ right: 0;
+ margin: 10px 0;
+ padding: 0 10px;
+ font-size: 0.9rem;
+ line-height: 1.5rem;
}
/*=== Aside main page (feeds) */
-.categories .feeds .item.active {
-}
-.categories .feeds .item.empty.active {
+.feed.item.empty.active {
}
-.categories .feeds .item.error.active {
+.feed.item.error.active {
}
-.categories .feeds .item.empty .feed {
+.feed.item.empty,
+.feed.item.empty > a {
}
-.categories .feeds .item.error .feed {
-}
-.categories .feeds .item.active .feed,
-.categories .feeds .item.empty.active .feed,
-.categories .feeds .item.error.active .feed {
-}
-.categories .feeds .item .feed {
- margin: 0;
- width: 165px;
- line-height: 3em;
- font-size: 0.8em;
- text-align: left;
- text-decoration: none;
+.feed.item.error,
+.feed.item.error > a {
}
-.categories .feeds .feed:not([data-unread="0"]) {
- font-weight: bold;
+.feed.item.empty.active,
+.feed.item.error.active,
+.feed.item.empty.active > a,
+.feed.item.error.active > a {
}
-.categories .feeds .dropdown-menu:after {
+.aside_feed .tree-folder-items .dropdown-menu:after {
left: 2px;
}
-.categories .feeds .item .dropdown-target:target ~ .dropdown-toggle > .icon,
-.categories .feeds .item:hover .dropdown-toggle > .icon,
-.categories .feeds .item.active .dropdown-toggle > .icon {
- vertical-align: middle;
+.aside_feed .tree-folder-items .item .dropdown-target:target ~ .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item:hover .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item.active .dropdown-toggle > .icon {
+ border-radius: 3px;
}
/*=== Configuration pages */
@@ -621,33 +665,30 @@ a.btn {
/*=== GLOBAL VIEW */
/*================*/
-#stream.global .box-category {
+.box.category .box-title .title {
+ font-weight: normal;
+ text-decoration: none;
text-align: left;
}
-#stream.global .category {
- margin: 0;
+.box.category:not([data-unread="0"]) .box-title {
}
-#stream.global .btn {
- width: auto;
- height: 2em;
- margin: 0;
- padding: 0 10px;
- line-height: 2em;
- font-size: 1.2rem;
+.box.category:not([data-unread="0"]) .box-title:active {
}
-#stream.global .btn:not([data-unread="0"]) {
+.box.category:not([data-unread="0"]) .box-title .title {
font-weight: bold;
}
-#stream.global .btn:first-child:not([data-unread="0"]):after {
- top: 0; right: 5px;
+.box.category .title:not([data-unread="0"]):after {
+ position: absolute;
+ top: 5px; right: 10px;
+ border: 0;
+ background: none;
font-weight: bold;
+ box-shadow: none;
+ text-shadow: none;
}
-#stream.global .box-category .feeds {
- max-height: 250px;
-}
-#stream.global .box-category .feeds .item {
+.box.category .item.feed {
padding: 2px 10px;
- font-size: 0.9rem;
+ font-size: 0.8rem;
}
/*=== DIVERS */
@@ -726,15 +767,20 @@ a.btn {
}
.aside .toggle_aside,
#panel .close {
- position: absolute;
display: block;
- top: 0; right: 0;
- width: 30px;
- height: 30px;
- line-height: 30px;
+ width: 100%;
+ height: 50px;
+ line-height: 50px;
text-align: center;
}
+ .aside.aside_feed {
+ padding: 0;
+ }
+ .aside.aside_feed .tree {
+ position: static;
+ }
+
.nav_menu .btn {
margin: 5px 10px;
}
diff --git a/p/themes/base-theme/template.css b/p/themes/base-theme/template.css
index dc011503d..5ba621415 100644
--- a/p/themes/base-theme/template.css
+++ b/p/themes/base-theme/template.css
@@ -73,7 +73,9 @@ label {
input {
width: 180px;
}
-textarea {
+textarea,
+input[type="file"],
+input.extend:focus {
width: 300px;
}
input, select, textarea {
@@ -85,9 +87,6 @@ input[type="checkbox"] {
width: 15px !important;
min-height: 15px !important;
}
-input.extend:focus {
- width: 300px;
-}
button.as-link,
button.as-link:hover,
button.as-link:active {
@@ -180,6 +179,7 @@ a.btn {
.dropdown {
position: relative;
display: inline-block;
+ vertical-align: middle;
}
.dropdown-target {
display: none;
@@ -280,6 +280,91 @@ a.btn {
width: 100px;
}
+/*=== Boxes */
+.box {
+ display: inline-block;
+ width: 20rem;
+ max-width: 95%;
+ margin: 20px 10px;
+ border: 1px solid #ccc;
+ vertical-align: top;
+}
+.box .box-title {
+ position: relative;
+ font-size: 1.2rem;
+ font-weight: bold;
+ text-align: center;
+}
+.box .box-title a {
+ display: block;
+}
+.box .box-title form {
+ margin: 0;
+}
+.box .box-content {
+ display: block;
+ overflow: auto;
+}
+.box .box-content .item {
+ display: block;
+}
+.box .box-content .item.disabled {
+ text-align: center;
+ font-style: italic;
+}
+
+.box .box-content-centered {
+ padding: 30px 5px;
+ text-align: center;
+}
+.box .box-content-centered .btn {
+ margin: 20px 0 0;
+}
+
+/*=== Draggable */
+.drag-hover {
+ margin: 0 0 5px;
+ border-bottom: 2px solid #ccc;
+}
+[draggable=true] {
+ cursor: grab;
+}
+
+/*=== Tree */
+.tree {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ text-align: left;
+}
+.tree-folder-items {
+ padding: 0;
+ list-style: none;
+}
+.tree-folder-title {
+ display: block;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.tree-folder-title .title {
+ display: inline-block;
+ width: 100%;
+ vertical-align: middle;
+}
+.tree-folder-items > .item {
+ display: block;
+ white-space: nowrap;
+}
+.tree-folder-items > .item > a {
+ display: inline-block;
+ vertical-align: middle;
+ width: calc(100% - 32px);
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
/*=== STRUCTURE */
/*===============*/
/*=== Header */
@@ -318,60 +403,37 @@ a.btn {
.aside {
display: table-cell;
height: 100%;
- width: 250px;
+ width: 300px;
vertical-align: top;
}
-.aside.aside_flux {
- background: #fff;
-}
-/*=== Aside main page (categories) */
-.categories {
- list-style: none;
- margin: 0;
-}
-.state_unread li:not(.active)[data-unread="0"] {
- display: none;
-}
-.category {
- display: block;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-}
-.category .btn:not([data-unread="0"]):after {
- content: attr(data-unread);
+/*=== Aside main page */
+.aside_feed .category .title {
+ width: calc(100% - 35px);
}
-/*=== Aside main page (feeds) */
-.categories .feeds {
- width: 100%;
- list-style: none;
+.aside_feed .tree-folder-title .icon {
+ padding: 5px;
}
-.categories .feeds:not(.active) {
- display: none;
+.aside_feed .tree-folder-items .item.feed {
+ padding: 0px 15px;
}
-.categories .feeds .feed {
- display: inline-block;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- vertical-align: middle;
+.aside_feed .tree-folder-items:not(.active) {
+ display: none;
}
-.categories .feeds .feed:not([data-unread="0"]):before {
- content: "(" attr(data-unread) ") ";
+.aside_feed .tree-folder-items .dropdown {
+ vertical-align: top;
}
-.categories .feeds .dropdown-menu {
+.aside_feed .tree-folder-items .dropdown-menu {
left: 0;
}
-.categories .feeds .item .dropdown-toggle > .icon {
+.aside_feed .tree-folder-items .item .dropdown-toggle > .icon {
visibility: hidden;
cursor: pointer;
- vertical-align: top;
}
-.categories .feeds .item .dropdown-target:target ~ .dropdown-toggle > .icon,
-.categories .feeds .item:hover .dropdown-toggle > .icon,
-.categories .feeds .item.active .dropdown-toggle > .icon {
+.aside_feed .tree-folder-items .item .dropdown-target:target ~ .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item:hover .dropdown-toggle > .icon,
+.aside_feed .tree-folder-items .item.active .dropdown-toggle > .icon {
visibility: visible;
}
@@ -425,6 +487,7 @@ a.btn {
.flux .item.date {
width: 145px;
text-align: right;
+ overflow: hidden;
}
.flux .item > a {
display: block;
@@ -512,7 +575,7 @@ br + br + br {
position: fixed;
bottom: 0; left: 0;
display: table;
- width: 250px;
+ width: 300px;
background: #fff;
table-layout: fixed;
}
@@ -558,28 +621,12 @@ br + br + br {
/*=== GLOBAL VIEW */
/*================*/
-/*=== Category boxes */
-#stream.global .box-category {
- display: inline-block;
- width: 19em;
- max-width: 95%;
- margin: 20px 10px;
- border: 1px solid #ccc;
- vertical-align: top;
-}
-#stream.global .category {
- width: 100%;
-}
-#stream.global .btn {
- display: block;
-}
-#stream.global .box-category .feeds {
- display: block;
- overflow: auto;
+#stream.global {
+ text-align: center;
}
-#stream.global .box-category .feed {
- width: 19em;
- max-width: 90%;
+
+#stream.global .box {
+ text-align: left;
}
/*=== Panel */
@@ -598,51 +645,84 @@ br + br + br {
overflow: auto;
background: #fff;
}
-#panel .close {
+#overlay .close {
position: fixed;
top: 0; bottom: 0;
left: 0; right: 0;
display: block;
}
-#panel .close img {
+#overlay .close img {
display: none;
}
+/*=== Slider */
+#slider {
+ position: fixed;
+ top: 0; bottom: 0;
+ left: 100%; right: 0;
+ overflow: auto;
+ background: #fff;
+ border-left: 1px solid #aaa;
+ transition: left 200ms linear;
+ -moz-transition: left 200ms linear;
+ -webkit-transition: left 200ms linear;
+ -o-transition: left 200ms linear;
+ -ms-transition: left 200ms linear;
+}
+#slider.active {
+ left: 40%;
+}
+#close-slider {
+ position: fixed;
+ top: 0; bottom: 0;
+ left: 100%; right: 0;
+ cursor: pointer;
+}
+#close-slider.active {
+ left: 0;
+}
+
/*=== DIVERS */
/*===========*/
+.category .title:not([data-unread="0"]):after {
+ content: attr(data-unread);
+}
+.feed .item-title:not([data-unread="0"]):before {
+ content: "(" attr(data-unread) ") ";
+}
+.feed .item-title:not([data-unread="0"]) {
+ font-weight: bold;
+}
+
+.state_unread .category:not(.active)[data-unread="0"],
+.state_unread .feed:not(.active)[data-unread="0"] {
+ display: none;
+}
+
.nav-login,
.nav_menu .search,
+.aside .toggle_aside,
.nav_menu .toggle_aside {
display: none;
}
-.aside .toggle_aside {
- position: absolute;
- right: 0;
- display: none;
- width: 30px;
- height: 30px;
- line-height: 30px;
- text-align: center;
-}
/*=== MOBILE */
/*===========*/
@media(max-width: 840px) {
.header,
.aside .btn-important,
- .aside .feeds .dropdown,
.flux_header .item.website span,
.item.date, .day .date,
.dropdown-menu > .no-mobile,
.no-mobile {
display: none;
}
+ .aside .toggle_aside,
.nav-login {
display: block;
}
.nav_menu .toggle_aside,
- .aside .toggle_aside,
.nav_menu .search,
#panel .close img {
display: inline-block;
@@ -660,9 +740,6 @@ br + br + br {
width: 90%;
overflow: auto;
}
- .aside .categories {
- margin: 10px 0 75px;
- }
.flux_header .item.website {
width: 40px;
@@ -684,12 +761,8 @@ br + br + br {
width: 100%;
}
- #stream.global .box-category {
- margin: 10px 0;
- }
-
#panel {
- top: 0; bottom: 0;
+ top: 25px; bottom: 30px;
left: 0; right: 0;
}
#panel .close {
diff --git a/p/themes/icons/import.svg b/p/themes/icons/import.svg
new file mode 100644
index 000000000..18a54ab59
--- /dev/null
+++ b/p/themes/icons/import.svg
@@ -0,0 +1 @@
+<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" height="16" width="16"><g transform="translate(-80,-648)"/><g transform="translate(-80,-648)"/><g transform="translate(-80,-648)"/><g transform="translate(-80,-648)"><path d="m84.406 657a0.5 0.5 0 0 0-0.312 0.219l-1 1.5a0.5 0.5 0 1 0 0.813 0.563l1-1.5A0.5 0.5 0 0 0 84.406 657zm7 0a0.5 0.5 0 0 0-0.312 0.781l1 1.5a0.5 0.5 0 1 0 0.813-0.562l-1-1.5A0.5 0.5 0 0 0 91.406 657z" style="-inkscape-font-specification:Sans;baseline-shift:baseline;block-progression:tb;direction:ltr;fill:#ffffff;font-family:Sans;font-size:medium;letter-spacing:normal;line-height:normal;text-align:start;text-anchor:start;text-decoration:none;text-indent:0;text-transform:none;word-spacing:normal;writing-mode:lr-tb"/><g transform="translate(-80,110)"><path d="m167 539 0 5.563-1.281-1.281C165.531 543.093 165.265 543 165 543l-1 0 0 1c0 0.265 0.093 0.531 0.281 0.719l3 3 0.281 0.281 0.875 0 0.281-0.281 3-3C171.907 544.531 172 544.265 172 544l0-1-1 0c-0.265 0-0.531 0.093-0.719 0.281L169 544.563 169 539z" style="-inkscape-font-specification:Bitstream Vera Sans;block-progression:tb;direction:ltr;fill:#ffffff;font-family:Bitstream Vera Sans;font-size:medium;letter-spacing:normal;line-height:normal;text-align:start;text-anchor:start;text-decoration:none;text-indent:0;text-transform:none;word-spacing:normal;writing-mode:lr-tb"/><path d="m163 549 0 4 10 0 0-4zm3.344 1.438c0.021-0.001 0.042-0.001 0.063 0 0.291-0.056 0.599 0.204 0.594 0.5l0 0.063 2 0 0-0.062c-0.004-0.264 0.236-0.507 0.5-0.507 0.264 0 0.504 0.243 0.5 0.507L170 551c0 0.545-0.455 1-1 1l-2 0c-0.545 0-1-0.455-1-1l0-0.062c-0.011-0.217 0.137-0.432 0.344-0.5z" fill="#ffffff"/></g></g><g transform="translate(-80,-648)"/><g transform="translate(-80,-648)"/><g transform="translate(-80,-648)"/></svg>