diff options
| author | 2014-10-31 17:21:20 +0100 | |
|---|---|---|
| committer | 2014-10-31 17:21:20 +0100 | |
| commit | 105729639bd06c27536bbdd2968873046278d59f (patch) | |
| tree | 30dcf7e3ae471b30810fb22ed701e0bb7d034fc8 /p | |
| parent | caf98a6468dcea5ae8c38062e4eb527cb3667db9 (diff) | |
| parent | ee50df518310d3aee5efb5a0c15548b457d10e7e (diff) | |
Merge branch 'beta' into hotfixes
Diffstat (limited to 'p')
| -rw-r--r-- | p/api/greader.php | 6 | ||||
| -rw-r--r-- | p/ext.php | 38 | ||||
| -rwxr-xr-x | p/i/index.php | 2 | ||||
| -rw-r--r-- | p/scripts/bcrypt.min.js | 78 | ||||
| -rw-r--r-- | p/scripts/category.js | 118 | ||||
| -rw-r--r-- | p/scripts/global_view.js | 17 | ||||
| -rw-r--r-- | p/scripts/main.js | 241 | ||||
| -rw-r--r-- | p/scripts/persona.js | 76 | ||||
| -rw-r--r-- | p/scripts/shortcut.js | 4 | ||||
| -rw-r--r-- | p/themes/Dark/dark.css | 224 | ||||
| -rw-r--r-- | p/themes/Flat/flat.css | 224 | ||||
| -rw-r--r-- | p/themes/Origine/origine.css | 219 | ||||
| -rw-r--r-- | p/themes/Pafat/pafat.css | 277 | ||||
| -rw-r--r-- | p/themes/Screwdriver/screwdriver.css | 261 | ||||
| -rw-r--r-- | p/themes/base-theme/base.css | 182 | ||||
| -rw-r--r-- | p/themes/base-theme/template.css | 247 | ||||
| -rw-r--r-- | p/themes/icons/import.svg | 1 |
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> |
