Compare commits

..

266 Commits

Author SHA1 Message Date
Henrique Dias
2b7aa7a0c9 chore: version v2.0.1
Former-commit-id: 1ee923d5e301cbc091885dc523baf9f771a5fe26 [formerly a7fc98143b3fc481d04e64c9a9608957475bbece] [formerly 87cca4477009a498c17c5779ec33964513139325 [formerly 5b097eec5f]]
Former-commit-id: 28bf2572b9e3e8258d57de8c0905a8aaafa707c7 [formerly 5de3ab416d621dbd54cd58cf0bf34273017144d9]
Former-commit-id: 603e4589dd55068be106f240a57ec1ee04f8760d
2019-01-26 12:10:55 +00:00
Henrique Dias
4d8f0c532b feat: update front-end
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 2153ac8242a70a057f3573ee6d5afca1824a61bf [formerly c3a4cd6efdfcf3d7d568548763d9eacc1f2a1679] [formerly 6ae07ad768953558d19885c5e4a5b97194ae18ef [formerly a4fee75dd4]]
Former-commit-id: 09c70625d4c30701a49a063835e22a5b74152ffb [formerly 2ac34724d3074d99a21878b5048d9886ce9bf04d]
Former-commit-id: 6039d9b1533d84cc930db13f16a1acb6222610a5
2019-01-26 11:38:49 +00:00
Henrique Dias
367e251a0e fixes: correct users importing id (#645)
@princemaple could you try out this branch to see if it works on your end?

Former-commit-id: 12c782316c411fa3438f167c12634adffb5e1adf [formerly c613ff6624c55292f532d7772e866cf6c81241f5] [formerly 11f03e54dae28fa773227d85259cfd73c5750137 [formerly 9c42269b62]]
Former-commit-id: 04bcf5803397877d00ba48ea6d0b00246dc07b3d [formerly 4c1bb1e95375777aede2c0911bdfa9ce46273b37]
Former-commit-id: 601db641f7d7b01c14903d0cc27085e3d7080c3d
2019-01-26 11:37:33 +00:00
Henrique Dias
cc6f2f8bec fix: encode URIs correctly
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: bf213b683c7cf6a42bd5a710e08ea2ed1cbe6c8c [formerly 7033f8885f037a8fd17aaccc7c95741cdd8a7f15] [formerly 1156eac936b97cc1821f0ffc28f09c977b434945 [formerly dadfffbd31]]
Former-commit-id: 5afbd473b14481514e137a191aa75c3860efbe68 [formerly 691b7b346559672fe41fd2bc7430256ab8512b2d]
Former-commit-id: 0aec5af50f77e3f4f6701b3a4e34694514c64cd5
2019-01-26 10:47:34 +00:00
Henrique Dias
007fde8186 fix: linting
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 3b1344ed7b9b7c41f7188a3e740cf69f3de7ebb7 [formerly db8acf75870cd31f5077629b2f8bcc6606afb606] [formerly e2a38027b43f835c13933188d0c4e14119f78661 [formerly b90d39dfda]]
Former-commit-id: c521ed975cc868b106344c4212707aa1b1eae19d [formerly a3f0dace392521435350c78e40adfc9ac6c576f2]
Former-commit-id: 46c88075964cdd102f5fd2c12e1b09fd94eba6b1
2019-01-23 15:58:06 +00:00
Henrique Dias
552f8168ea chore: update frontend
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: ee0540ac596192045f940e0bc4f47d29b6c2351f [formerly d90bc812c6a77c9838a711fb4e00d1d62a6bfa04] [formerly 90128f33ffa10f584fcab30a8a1165c06b6659e3 [formerly 2ba176a319]]
Former-commit-id: b677fba611975bdbeb56fd541ac7bedee39e000e [formerly 5ad6e6b025d20d171d4a097cc5895b4f7f38b9aa]
Former-commit-id: 91d3aea37524297ece1d797df6bbf716cda77553
2019-01-23 14:49:18 +00:00
Henrique Dias
42426e3e69 chore: setting untracked version [ci skip]
Former-commit-id: 28403ab07de56efe726c60b5b9394652ade286c8 [formerly f98ae829dafc277f9af53195a359ddf4177b2adc] [formerly 9bee729afab603d71e0f386f2dcf1d68bf117be0 [formerly 846127d164]]
Former-commit-id: 03a5583ca594f0cce67b025d913f68ad5582285f [formerly 8ee04063a261f3f85b9e19b86c9a96e2bf6e78e6]
Former-commit-id: 683769c4b55b6dbddf47e66e1e6760e9f961f508
2019-01-14 09:04:16 +00:00
Henrique Dias
e706391934 chore: version v2.0.0
Former-commit-id: 1a6e6ec0cda359306ef81deb4393e6e588005674 [formerly 45bb5b1b929da50fec506f27a50e6ba492374b60] [formerly 41a597953b6d48ff01ed5a28817e9c9436db300b [formerly 145b391315]]
Former-commit-id: db2d7837facbec0ab84275550934d70956d28add [formerly 0d47b66dfb9c802f0ee885b43a034f6cea044878]
Former-commit-id: b5ddd38e9879458640ec3e9449c72e0fad4e4df1
2019-01-14 09:03:39 +00:00
Henrique Dias
58ff28f84d feat: export generate key
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 3088476c44d4608e2b8c90d3c274b6db17ef30c0 [formerly e40d3ba193e0b54bccce8c13459032f51af84c7b] [formerly 33cabf26abee5ef4f1dd63e423fe1b0fa7ae4f7c [formerly a3daac84a2]]
Former-commit-id: fe022f36fc4d7d8442df8c0fa4a86e2ff3ec328e [formerly 1d949d0ae88b3b5a9b8e4da5c3b6ca814a319589]
Former-commit-id: 36207ddeb7eba335f5fe73ea9dcdf6bffc6265bf
2019-01-11 20:25:39 +00:00
Henrique Dias
74a1ecbb89 chore: setting untracked version [ci skip]
Former-commit-id: f8b61a3532b72c804933bf4ba63a111b3c8a2955 [formerly d076a6110407d517bde07846bf31f6cae710e0c0] [formerly 435d24276a43b69dec81ff9666d78f208116a577 [formerly 6dbf801370]]
Former-commit-id: 7ebd072dccb015521deb296f0151c06f17b5dcf8 [formerly 9f8c86143171142fb3c108ba32c7eab63a5632db]
Former-commit-id: d28fa2428da947bae7029257d04497d581c18d99
2019-01-09 21:52:14 +00:00
Henrique Dias
5fa1711a30 chore: version v2.0.0-rc.2
Former-commit-id: 39889c9895dba58578db931c4c55a1c25b822672 [formerly ebdcd02361e6499301262051376278a9dccecce9] [formerly 4ff653acbd767dd37a2b86be607bbd1af0fb7cd7 [formerly 0d0d9ef5f9]]
Former-commit-id: 0ce6e7f7871bde28b24e1b596af786f3e8dbddf9 [formerly 7d3a69c30e1af1e5b028bbcb926a28341a3f71b9]
Former-commit-id: 81cf5a20fa5ae3077337d968f686df58923b5b5c
2019-01-09 21:51:39 +00:00
Henrique Dias
4bc6a23143 fix: no db error when db size is 0 (#629)
Fixes the error where File Browser would fail when the DB existed with size 0. This closes #628.

@1138-4EB I decided not to check the version for now since it's the first time we're adding that info. Only the next time we change the DB structure we'll use that value as reference to know how to upgrade.

I did not check it because the users running rc1 would have some issues with it.

Former-commit-id: e8b07ab919e9c24feee8f6f2dd6df30df1e2325f [formerly 3396f05b4a1a07e1b993b7c07d1afd2def9cabbb] [formerly b43eb8e400603f99baf7966a58156dec7bd47420 [formerly c1c57c6525]]
Former-commit-id: 1115d0cf8a601feafac2b33cb46b813343f4fa8c [formerly 05de6caf8cf747a95fbb10587f0a767dfb8b8774]
Former-commit-id: 840c1a278cd45d36ce8538b7c5fe97923be05ca3
2019-01-09 21:37:47 +00:00
Henrique Dias
b578e2196a fix: search (#625)
Former-commit-id: d9c9234e87c190d847572c1fe715cf745ba44b53 [formerly f8b5f600fe39be8b47aece870ff24756c5dcfc6d] [formerly ad1cbfd739888d4cc3a1db882a98251cac3b89cc [formerly bafe9f0ad7]]
Former-commit-id: 493e4f3e4b42092201cfd1f99d8ee6cd3eb25dfc [formerly 520a9df6582492f24906f8f3f5c5e90cf5a02acd]
Former-commit-id: 17484d0fe391a82d5ee0dc990f4b1f039d305f4c
2019-01-09 15:18:03 +01:00
Henrique Dias
866375141f fix: strip baseurl (#626)
Former-commit-id: 5daa76063fbd8766115a722336d544d2f6156c74 [formerly 3d644f06b38b6c20f5549b3f2f780556881f216e] [formerly beb819187116079ce83329e85bb1b1d5e6b908ea [formerly 73e0acaa71]]
Former-commit-id: 01dfc4bb6016d6c3de2bb932695e7ca6b9185ff6 [formerly cdee480885c5050d9311f41f39ef7b4feefcc602]
Former-commit-id: 82bbfed106ddae78f22d01cabc11f314c19a1796
2019-01-09 08:13:57 +00:00
Henrique Dias
a3b9807717 fix: clean server struct once it gets to the handler
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: a9d9c2cd9a5fffa71409ebb0867faa3a0aca6e9f [formerly c3359cf3ff2633945a9c8dd5ea8eff5a77484364] [formerly 8921b27f322e426cf2f2f07dc682e1fffca162e0 [formerly f1c86054b3]]
Former-commit-id: 078633f5c5b1aaeafd6b078b5e006c5e05f19c84 [formerly 9013496a12cda3bef58215a3f5df4eeeaa677eb1]
Former-commit-id: 420076748685f1b8a23053c5fe159bc5e86942d3
2019-01-09 08:13:24 +00:00
1138-4EB
d47774c828 fix: caddy sed package name
Former-commit-id: 23faa66a6010168f64545ead1beb5f41db3ffd76 [formerly 335df9ff6c4799677119e72f6bbf5a00e6709c43] [formerly 54ebf5831102f306edb07b40cb518262787a9305 [formerly 5a9f0a0d81]]
Former-commit-id: 5203ad4f906f8f85c7ece2d7beb14eedfa907cf7 [formerly b58ea071061a8a045fbbb9301b028774f9991696]
Former-commit-id: 7ae9ac04e135c449355a8da8845e0951fde6fe92
2019-01-09 03:13:54 +01:00
1138-4EB
bc4ac5eb9b chore: setting untracked version [ci skip]
Former-commit-id: 55909b40916ed0b65a2d588cac5aa171b43c4482 [formerly 52607bd0e51b455281480ac0d8c7fdc5a4a663af] [formerly 75ce16e7e290c9fba9f4288507a4961a4bb0b10b [formerly a55e0d24f8]]
Former-commit-id: 15936e40500010751e70401bd6f0574f614d9ada [formerly a39e7b2a11d0379964f5e911447289910406e0e5]
Former-commit-id: a87b512c8f08cdf5affff568ee96507575e8e2db
2019-01-09 01:53:36 +01:00
1138-4EB
f16ec4b45c chore: version v2.0.0-rc.1
Former-commit-id: 15b5351860f405fa69e33eac6b1fab2c5cdca545 [formerly 3784bd141b58be668dea5b55daf1581a8cd368ff] [formerly b35c153dcd6eb02bb9a989cfa94524609c69b2dd [formerly c1f344e9eb]]
Former-commit-id: dcb76cb145e62812a451e871385be3e7065c09f8 [formerly baad8aadbacf6ea9d17e70ecdff9272e341006c2]
Former-commit-id: d58d71dea43f6b2da1b5600b5d15a15d82fa9f1e
2019-01-09 01:53:36 +01:00
1138-4EB
f8da8bc985 fix: wizard pushRicebox non-existing envvar
Former-commit-id: 4a6d00004f968e76543e3d20ce493a0ff5e4cd1b [formerly e36e6696fd79defbbff9683c96a53920c158aeef] [formerly 5d1798ef2f3a97a4d5e772500acfcb8d47a6a75a [formerly 9f6e51b251]]
Former-commit-id: 1a74df1209e3216eb5cfd780406b75136a441d36 [formerly f72d4c934ecaa9c6930cfa9da7d1974757759af7]
Former-commit-id: e0e020f7937a943976c78c0d212a1076ac2c8ee4
2019-01-09 01:53:35 +01:00
1138-4EB
0ec589ca74 fix: update to goreleaser dockers changes
Former-commit-id: 4c10c5e07f551de30964ae18cfdf4e868efff84c [formerly cc244cf72188258270d20d30781170603513cdd7] [formerly a28388f0d471fae4d8791c1e31b7f9d8b4299f4c [formerly 27d1a95310]]
Former-commit-id: 854366de95a9065503b779581c4d0a4c25b37b65 [formerly 72860fe1d2b1dfcbfd2e2c0797e55a1772b81a38]
Former-commit-id: 7c9b7d2b86fe881a7b71f7619b698cce5c3f98ef
2019-01-09 01:30:56 +01:00
1138-4EB
4e4ac88cbe fix: goreleaser main file
Former-commit-id: d4f2b341e949bfce045124115123b2748ab4b438 [formerly a92a7d72c9077d77be55f9d76b94a104f0be992f] [formerly 3ee3bbc16944230a4c5f7b5b92c19131f08bc5e7 [formerly 8c2c298d9d]]
Former-commit-id: 68b9c5ecebf51002b823d4ef0aee9746a6f22e76 [formerly 441e5f99c76a2d9594f3ee8c12a7b889e6edeee1]
Former-commit-id: aab01c50e0b68dee6472455bf2c14d254fee57f7
2019-01-09 00:37:59 +01:00
1138-4EB
0762516a18 fix: wizard -r requires an argument
Former-commit-id: 0f180b2a9e78ca551eba70705f812e349943d468 [formerly 20bf6d4bd2ec6165c02560725b698278e17e24c3] [formerly a60dd0705c3d59d9f8214fa4bb38b39259b2fd5d [formerly 43e494b0f7]]
Former-commit-id: 6c7a31c95851d3759cef822976bcb41ccf45cbbc [formerly 53b885258e59bb8366290b30b2aded5ab1e361a6]
Former-commit-id: 8311ae09ce36822171d55e3f855bf66a9a2b3461
2019-01-08 23:54:37 +01:00
1138-4EB
41272e67a3 fix: wizard release
Former-commit-id: ca21ec5987a64aea7d155d5ce532b452d502d1e8 [formerly 0f4ae7305653e52c36bd2e05b6328e4b6a21cfa7] [formerly 8461ae3cc270e84de3ab0a402d50484b1a417261 [formerly f218c2a791]]
Former-commit-id: 1e7aca3d5837c39a5073bd3d65847fe566929ad0 [formerly d210374bc803529ce4edf7a6d83bd3c4ae3f1bc5]
Former-commit-id: 0eaf26b83f446f6022da9af1be334f9eb452b5a1
2019-01-08 21:22:03 +01:00
1138-4EB
da7d1db06c style: rename functions in root.go (#623)
* replace isFlagSet with Changed

* style: rename mustGetStringViperFlag and getStringViperFlag, use getParamB to read noauth

* style

* style: move

* fix build error

* rename getServerWithViper to getRunParams


Former-commit-id: 2d6d9535247e9de01ca0741726665f7dfef1b1e6 [formerly 8fa7b76b92545e0b91bd06fd7b21247e921bbb2a] [formerly 3b7eefee2ac5120796c2a13583ea0b0b2d1ccb89 [formerly 2c526077c0]]
Former-commit-id: 57912c62749c5890285657c1b4b637925d480ccd [formerly 03b4cd9551d77589f25881cbf693c6bf8390db4e]
Former-commit-id: 77b9083e39607aedcba9ef9b4af9a94535661ffd
2019-01-08 21:10:27 +01:00
Henrique Dias
cc428d3cd6 feat: add no auth to quick setup (#621)
Former-commit-id: 56d5c323e0f176247779946e04664990b13146e8 [formerly 43ee26a4e1929560135c81ef2d1bfb60f6d15815] [formerly db983bfd8d1e9cea1e749b02ac11d933af05624b [formerly e0a3ce95f2]]
Former-commit-id: 20d14a1193271ef23c090dab1b3828ba7655b687 [formerly bdeb651589e0ca20ff669bfeb85ae0358e8e1d95]
Former-commit-id: 1f00d921e2a7e60f3a290b11603acc6a67a874a2
2019-01-08 18:43:04 +00:00
1138-4EB
9a54abfe62 chore: style and gofmt (#622)
Former-commit-id: 669963fd1d51d7e2d32520ffb0c1ecd5e4224c78 [formerly 8ef320b07699c842ae0325e4665d570fa4399481] [formerly d171df23332dff1d33f00a7407f5dc3f6dde1ef7 [formerly d0fd97d943]]
Former-commit-id: dc9a921b032e1acee0845186e7a009badbe768c5 [formerly 0c8a0f739bd1d984ca0db2b0623da5fdb813f4e0]
Former-commit-id: 3005cd15261952387fde1adf13770e2c1ee52749
2019-01-08 19:40:14 +01:00
Henrique Dias
c50a9b29bd Merge pull request #620 from filebrowser/chore-docker
Former-commit-id: 50fc6f67b7d60b6d30368e58f7ea612af0eefd33 [formerly 01f966c6f8f313a0cfabe43ab547724cb550dbd8] [formerly fd099dd6be88c96aece03fdbb83d716ac23eff16 [formerly a70b9e20a7]]
Former-commit-id: 24c6dfa4f95567a8c6a845243de4649dbafce660 [formerly a07b3b77be33f64ad9deb616c032e31b0c6ea2b2]
Former-commit-id: ad7ca28cac44bbd54e0f622aee02ef87c0777cbe
2019-01-08 17:38:07 +00:00
1138-4EB
3396218ff0 chore: update Dockerfile
Former-commit-id: 2ce789dc1facaee4afb7edcdd922f304b0b2cd69 [formerly 52c535b516b35996190d4bceded1502b622bed10] [formerly edc3b73e09591edf8bb352f047fe64da39c58f4e [formerly 5a0547b467]]
Former-commit-id: 87c2a4a3e4002a0a676470f9fda207486673b525 [formerly 0d790b609d7b0d96dc273f2241dedb0695b8d351]
Former-commit-id: 56b586a9cf0f851ad69b1db9e8e7046b5d57523f
2019-01-08 18:17:52 +01:00
Henrique Dias
04392a7328 feat: quick docs update
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 24d7ca4ba681ae4395cb23620fb92c19fad79279 [formerly f22f42daaaa18cea22f1a5c15544568d3c7bbb2a] [formerly 04e6ddffc5371fba2dfa1c0322326ed9b28ee73a [formerly 66010d877e]]
Former-commit-id: 10e7edbfb312764a8ba335a10aab2ca26392db47 [formerly d2fa614d1938fb18644957728634808b1d4acf5d]
Former-commit-id: 65727295e4f0e3758d235e08dd62cbf737b5904a
2019-01-08 17:00:36 +00:00
Henrique Dias
e1026a1fb4 feat: add docs info
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 4cc444f7168a76920c2821534027f121b7b0b0d5 [formerly fc1b399bbcf6cbd0a26db133ce644192664e4987] [formerly c71a14856c55345626eb7982e2bbe9ca0b7a1aec [formerly e68af011d4]]
Former-commit-id: b6ec8dd8817ec6bf028e1e7df299f8dd720628d9 [formerly 99077c4ca6faac93a1c956d96833faa3f2c40fe6]
Former-commit-id: 620919fdfd9f213cc61e4ce3b4e8650096a489b4
2019-01-08 16:37:02 +00:00
Henrique Dias
4703e0d36f docs: improve some cli docs
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: f7710895557fc2f181dc04b07cef1bf8e612bd9b [formerly bf7a392bc9e83971ddc9ae673f4fedf8772d3ed1] [formerly 06404f0eb55f410bb6cab197021bdd5e5c0991a2 [formerly 2ba5a4275a]]
Former-commit-id: 5a676627143edb8d7ca474b564fe2ab3c6b610c3 [formerly edbc0e60c66ab62df1611cda766fc8b3c8ac837e]
Former-commit-id: 2925d9dd6471f900c59adb495a5c2f7abfe0026e
2019-01-08 16:09:25 +00:00
Henrique Dias
2e1553542b Merge pull request #618 from filebrowser/chores-version
Former-commit-id: e4a254c445bb6f9e6012800101812847f2f7a165 [formerly 39f8661c8cb8a37dd379bc87685fa266e2c98cc9] [formerly ad43c963e3adce98b64edb3324f9c4912b4a5623 [formerly 58edf878ab]]
Former-commit-id: 66301024e8d6c34070382fb0b9db8e25a1055da1 [formerly cb29ecd9eec4ae6ae0cb422457ee1d794a51df20]
Former-commit-id: d4eff084d7aad39e384ec9cc0cd3227250a195d3
2019-01-08 15:55:06 +00:00
1138-4EB
438371fc9a use log.Fatal instead of panic
Former-commit-id: 5f02ba76b35ff67d57114729fc08e58fadc11067 [formerly afdbc0fb9d46042f3bd02d623d7d762a30edbd3b] [formerly 13ff37a836606b90cff13e0836e679983eaaadec [formerly 7a775c42a1]]
Former-commit-id: 99e8cbc7708b4c6c197220e21eced17aa11e242d [formerly 1404d4021cbcce848c106a8b15ee9bd989afebf1]
Former-commit-id: ae93bddd201e69d8069cc1ff8989e75d1adecec3
2019-01-08 16:21:03 +01:00
1138-4EB
6712fa580b enable version subcmd and --version flag for root cmd and all subcmds
Former-commit-id: a9e681d47d47f9f09a22d8479705f62672f509b7 [formerly b7d17db57156675b06897bc289fe616628a47abb] [formerly e06d3b13b547356fb928288b09aaaaf1a60b8950 [formerly b4708348c6]]
Former-commit-id: 43b18221e14269bada106e867b666f67a692c992 [formerly bee15f87fc2ecf5e8b4a0d74f41bde7617aef12a]
Former-commit-id: 733aaa6f3d5e3fc80dbb65ccc028d9f6ff6f73b7
2019-01-08 16:20:23 +01:00
1138-4EB
b660404bfe reduce code duplication
Former-commit-id: fa4946eff4f979e8fd3550a0b11f3ab147177b8f [formerly cd071c220157452a095325c049d801e99d2f8a94] [formerly 7a619be88fb162ddbf897387a31577fd3e94bfec [formerly ef56112711]]
Former-commit-id: 692897eac98f1d8d4a916d0ef0aa342b994a186b [formerly 69d9f127de2deadbbcaa0174fc1a4613ce2cb93d]
Former-commit-id: 49c5aef77aa74ec8352368627c98b9e50d417228
2019-01-08 16:19:17 +01:00
Henrique Dias
6ab8779948 fix: root
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: fc5ff2d807b0b8c6857c71311f061c7322af32df [formerly 19bd77dbaf743c53e7c8db08930e2a9ce6c0b675] [formerly 89f54b49d9d705b9a016827ceb1e7c0face0e56b [formerly 88644664e4]]
Former-commit-id: 3ff15179a86d330ff5f2a7f6b49b890d3ecd34fd [formerly 483a8a99b3b9dbe13ded1cf7fd608bf27b35a4d0]
Former-commit-id: 8115bd29a2356de1dd1cc2950248c4a3c07580e4
2019-01-08 14:43:46 +00:00
Henrique Dias
dd16a2e836 feat: update frontend
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 5b039e136b6100689309ded011501fb4a6dcce76 [formerly 54ace8e99e7ad81101cebb0dc44c5ad67b4af3b7] [formerly 1756700eaf0dcffd6b3888e613925905a123390c [formerly 68bdf65595]]
Former-commit-id: ef1cd08c5a36d4f28a6fd6d7d906b36f7b377051 [formerly d14c62b4510730c62bb2fba982c4cbaf96c804ec]
Former-commit-id: ed5c968279e630468c2ba6d1823a86153be78d4c
2019-01-08 14:29:18 +00:00
Henrique Dias
870b5b4079 fix: use server options from DB too (#616)
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: bb60ec81f56f5d761ef76b2c1e26bbe83210f434 [formerly b28f83c65e0934e138a1710549f52e0f66a158e0] [formerly 7138a3215ceb144afa0ea45be2315f30b052109f [formerly 72069207c6]]
Former-commit-id: 0fb7ae6353f786edd93a9166141bfa446dd3dbf9 [formerly 5cb07e8c96a7cfca1aec5843123e1abc4ca8578a]
Former-commit-id: 914c0348516f072a9ccce4e105327feaaddb4cc0
2019-01-08 14:07:55 +00:00
Henrique Dias
66d485f639 feat: add replace opt
Former-commit-id: 7cc788c0560fb54cd098f4b6039b42d46fd78561 [formerly 7fd126f9152827162e9cf17dcd3ea293793ce504] [formerly bef00ad6a024835145bea635511be47b7e1f8a16 [formerly 76bf72902d]]
Former-commit-id: afc342bb45e4b8d3f059c33f2c60043f9612210b [formerly 149f17999b12be474cc91e2b821a528ce98adfcf]
Former-commit-id: b855a6691f1661b5d8af13a58f80773eda2d8a96
2019-01-08 12:03:34 +00:00
Henrique Dias
684366e050 feat: simplify flag adding
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 520945c4cd979999ce7da8cc60544e1e390de3fe [formerly 5c73f94c28f67f0fb25ecff7ce999480ff0d873f] [formerly bdb85560ceeac89408c8588213ef88c5b774c8c7 [formerly fc06f642f2]]
Former-commit-id: dc0c81b78cdec8656bd25dad84f9589486300d34 [formerly b18cd1e0bced8b34b31863fb7c4e714905bbf0d9]
Former-commit-id: cd84e54f28b9c56c3ced9da79f7fcb9a659f674a
2019-01-08 10:50:37 +00:00
Henrique Dias
01929c72ea feat: make server options a struct (#615)
Former-commit-id: a54bc7c8a0fb700d4f90f78c54d6cb028e8acea7 [formerly a0946a1d5b82ce5681684bc0f871bd892c4d6c3f] [formerly 6b23b0abbe5cde6a6348f982975d15a1161359de [formerly 0e7abaa7fb]]
Former-commit-id: cf9ea1110bcb8b5eb30ecd25db1928659ecea922 [formerly 38cebeff1f9e6b03760f7b277a3941f7bd733fb5]
Former-commit-id: db44c1d5ff8fed361849b5bf1fe48e04c75d7ce7
2019-01-08 10:29:09 +00:00
Henrique Dias
802318f903 feat: config/users import/export (#613)
Supports json and yaml.

Former-commit-id: d36b07953ede1842942b7ab477effeb2e5aa7d5b [formerly 51d0d5691d19e0649935816779a34b1b700e088a] [formerly 342f636293be8e38e7907453a67c67e5e9195c78 [formerly 73b8d2ee7e]]
Former-commit-id: 8ef6a1563ebe425a15a8229165d2ddb043cefb21 [formerly 01c4ac1d89e0d5c6ed16bb7f23c2bbe62085d6e5]
Former-commit-id: 6d197ee1931889571c61ad0920e4352d4b02b264
2019-01-08 08:57:24 +00:00
Henrique Dias
b9acd275a2 feat: remove useless code
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 7cc4780fb876e5cbb50a2918bb7f59ef27c9df69 [formerly 172f465b8292a1427ca957034c25bd989b27665a] [formerly aa4115896142f42f126f3cce34256937b03c5e04 [formerly 46b221533a]]
Former-commit-id: dbe998a5acfe50a763cef63316c824c49b626dad [formerly 92d7264061e532ceae3a98861f434734f4488b90]
Former-commit-id: c09fb725461ad375bac46a2648a588a1b6d88ffd
2019-01-07 23:11:00 +00:00
Henrique Dias
1809a3638b chore: update ricebox path on caddy repo [ci skip]
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 92566ce4d867c9ca04840bc8a10c72620bef7988 [formerly b417064bd37ebf0d30bc38b6f2e463a1ca3d5531] [formerly 8c167e6c20cce29f068d9ef574e5a52830c4b2d8 [formerly cae8809da0]]
Former-commit-id: 45bc3ca821d054bb8b96bbc58f8206268cd944b1 [formerly ce0f48e3b4673ae70aca38fe427a334c8129b4ae]
Former-commit-id: 69b5cd589a27d444adbb83b8f1ae7fbd7ed4709f
2019-01-07 20:59:55 +00:00
Henrique Dias
5a83d6736b fix: rename global scope as root and fix root md
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 856c18bc9cf98a27b6cbea923b231e0aaf279190 [formerly 201c1a0294947930a7d0706af72ce719a8cc3b98] [formerly 0253e57e2994023e798f6fb0ae76f9c21d18fd69 [formerly 33a58c999a]]
Former-commit-id: e7d88b22207125c29ea85a5a539653a54584999c [formerly 77cb1e0172cdf7195cc25d557e5028a9250d655c]
Former-commit-id: 64288f5a475a82d5f88c91347a09aea67ebb169d
2019-01-07 20:34:44 +00:00
Henrique Dias
77e1fe83db feat: wrap commands to send info (#612)
Wrap commands in a better way to pass storage

Former-commit-id: 9a3790c193936b53fe3826d1e051795efd30670b [formerly 04a9f34933a162cf4a98bc1e019f0d6c6404aae7] [formerly ab9be7f27b55a94e6a0f053df6908e357d4b396c [formerly 01ff03e426]]
Former-commit-id: ae7b61281dec2b5527f6032dc6f8c1bd8bb51296 [formerly 780ccc3b166e72bf53114bbfc0a95c0b7ffd8656]
Former-commit-id: 68ee8f7f3931f8e571b0188c96951077d6529cd7
2019-01-07 20:24:23 +00:00
Henrique Dias
1133f0f826 feat: rename import to upgrade
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 0c8eb7bea0cdf9745385fae660532bda9368c7be [formerly 5fb38e8b21346fa41fe0602929cd4f7f6fa19fa2] [formerly 9f39ca06f86dcb7c64b69ed4227789581f140397 [formerly f396602084]]
Former-commit-id: f310a5b4d7b1a54026dba8ccb637bf2ad5bf531a [formerly da06cb70d42ae5c2a4b0927f661b0026ae972792]
Former-commit-id: 23d0481a4cb60a70ab1b59bd8042c3923d161917
2019-01-07 19:22:32 +00:00
Henrique Dias
981b42fb5c fix: remove init from root
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 0a29d1eb40c1df0ad039959d3dc3ab4e5ebe328f [formerly eda99299d47c005f30bc04123403d9a739fd4933] [formerly f0703faa441e10b681854c71e6fb9fdbbad6ac44 [formerly 148d233d7a]]
Former-commit-id: e2162f9ac885704fc60e0b427b8331207b960712 [formerly c39d1dbdb49c5f534c69d6359f3afc793bcf5632]
Former-commit-id: de358cd75d688ba93fd4f36b8c5f3aadbe58ca3f
2019-01-07 19:21:29 +00:00
Henrique Dias
c59d42b601 feat: improve docs output
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: af19a86cebfe955619d5e05cfd5e9c4101a328e0 [formerly 84df35184bd684e00617651b0115b219e6e9c88e] [formerly 697906b1c6c4e47a03518edd50f5e3d86ea16690 [formerly ebaed3c390]]
Former-commit-id: a89ca0fd17984ebf6e95596ed515ad1592d314b6 [formerly e776a061d2628054eca107076601703aa2c7575d]
Former-commit-id: 7c809138219ef4723ec1ae47252eacdb60f7d78d
2019-01-06 18:36:47 +00:00
Henrique Dias
f70fc2d954 Merge pull request #610 from filebrowser/hashedpwd
feat: require hashed password and add hash command
Former-commit-id: b8d4bd7c9fbdde724beb62c77cee1daba15d315b [formerly fadf295f423c8979fcf7a704b05cffc3a0735d2a] [formerly e4a9044cd0a94b4f4fa1a8f441c563fe0a564a62 [formerly a2d32438f1]]
Former-commit-id: fbf8a1d1e85646a43bf220f1bb73d40481da7df0 [formerly a5b48143fb9c39da6b1b8f43c1e80729892a1837]
Former-commit-id: 5ba56215decd17c9c2b8cd59546a7181cef96aea
2019-01-06 18:25:09 +00:00
Henrique Dias
1aec3744d7 feat: only hash if it's default pw
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: f25a675cd60a328715febb7e6e799b28e3dbadec [formerly 09fc814b175a9d6ce7669daaaf64071c9de8d951] [formerly d53b7af3501535f25e74aef463c4b9d821486aa4 [formerly 550269d2ed]]
Former-commit-id: c21b1ecc3bdf6b1f8c9de8e18ba8d9a2777f0b27 [formerly a31b1e0ae18bc0bf69e83f564dfd50fb6b2c38b6]
Former-commit-id: fc3ee85d741cd83eda2961bcff91fb9d5ebc42d1
2019-01-06 17:55:47 +00:00
Henrique Dias
25792232e6 feat: add hash command
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 4d1b43927775194e96b8a9a3ae13fbffc21df572 [formerly b738daa5a48369b1fd5140a70b8b8965a34109e4] [formerly 5d2eefed13d38efdb480aab2d61a2e06244919eb [formerly a2742dff16]]
Former-commit-id: c4c6b087a91ea3d781fd5e5bbf9c511a9c25a312 [formerly 0aedca54ba1e98ad63e863fdd86e50123ad9078f]
Former-commit-id: b4581ad7c366baf486fc1412eaac4c6f9940b979
2019-01-06 17:53:47 +00:00
Henrique Dias
2869570a20 docs: update caddy issue template
Former-commit-id: af5dd2ab18970ed2a2792eb2bdb061d1540a67d3 [formerly e4563af635b2fe1d6d8abc6bcd07f120378f1cba] [formerly 633630c52d61cde8b8d5b31096a5621fa4063e84 [formerly 56c1536693]]
Former-commit-id: c58ffbae57cf39c342c5ce8bc6ae73b765edecf0 [formerly d4981d9243a139b6a96d791ef89f03c33a830b6d]
Former-commit-id: 01a668e7d5644566257d4f689928e5194ab5e59a
2019-01-06 16:39:59 +00:00
Henrique Dias
3a4ff6dbb2 Merge pull request #606 from filebrowser/viper
feat: dockerfile & viper
Former-commit-id: e819374dcd28bd939b0d3105f338a51cadf112fd [formerly e2886cb88a7642e9c681cd21205fd6f178e782df] [formerly 776586c1e92a0adcd0797a6ec8f95d7a0c177e65 [formerly 143dcec6f7]]
Former-commit-id: 8160ef39bcc5e01ff1489523240de0b59beb5bf9 [formerly 19520a57cc82f85178a5de7feac00cea3848791b]
Former-commit-id: 67518c991c6c4c3a6a8e8ffa5762001f01536013
2019-01-06 15:27:23 +00:00
Henrique Dias
42134a4849 feat: cleanup cli
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 2923c251335301f361098890bf67d47cd58c0f86 [formerly 277653e21c4b9077ea3b83c149f0c5b2982b694f] [formerly 7481557b6f47c8de6499f3ee7339ea8d29216700 [formerly 999c69de5c]]
Former-commit-id: 65eaacb4aee11f84c9f97ca2834def045921202a [formerly 7c9260a1fe142258dd0ac02c4710b03badd66d76]
Former-commit-id: ff3f3d7189b2e8cc2f00bef581cba108780e4552
2019-01-06 15:26:46 +00:00
Henrique Dias
e5c150e83f merge with master
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: dfac33db9ca3454cd3af02a732a64a02a8268b01 [formerly 38be015f7b3376a3bc992725c1cb1a019c1843cb] [formerly 5a4e310b96ebc5895e64f8eeb2f592890d4b63b0 [formerly 2b8bd28158]]
Former-commit-id: a30bfcebe6bbc115990b8f8398171b32942a8767 [formerly 553fafa22b46b2689ece093f3b0cf85b3cff1c87]
Former-commit-id: 5ce047d4e3f5217a179685f8b2850d4eb157376e
2019-01-06 13:20:17 +00:00
Henrique Dias
f1a89f5ec4 feat: add global scope (#604)
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: a44ebfc7a5687b5f51f0ff791335f66ab9f2e8e0 [formerly 9a044fadd8f2ebbb7dbb773273799c26a797f513] [formerly 7f374d016eaf756cfce215dd16a2274bbabe1915 [formerly f55f205ced]]
Former-commit-id: 31015ddc5f4fc28c895743f6fe9dcf5488bb4b01 [formerly e439027304a1e49667fafde011e07d043ef0d2ee]
Former-commit-id: 0394c60358673b56991364260b1cbe41fa457593
2019-01-06 13:01:42 +00:00
Henrique Dias
f2d952bf0e fix: dont fail when can't detect file type (#609)
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>
Former-commit-id: 3dbe943b6d64bf7d3f6c6d8970d2608438e4c2bc [formerly d5238a25f0e31dee84367a5e27b6f68ab50050d6] [formerly 297d8be6b3aa5e5411634286ba4faff256fd6837 [formerly 07f3ee38e5]]
Former-commit-id: 5a568c9eff47b5fa54d3956ecc2d2a55cb31fc8f [formerly 8d7f78cbf47a8a84f02324fdd858782e4b67b0e0]
Former-commit-id: 1343ba84d9c8952bd9e210cf7f23b70129236c81
2019-01-06 12:59:53 +00:00
Henrique Dias
70733ff846 feat: change default to 8080
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 4bcba1cc1d4f275c68b1e3a32045f6ec1136d264 [formerly 990ef78e797dc4a9828a6dd8c5c7162e06c6af3f] [formerly 1a4f246dc04fc76b0dd9656beb010d03fcef8045 [formerly e22598a126]]
Former-commit-id: 649df28a7201a0fefbd57b6faf56046fbf46c7b5 [formerly 7c763bae4fb9072920cc0907102583e15d1a7afc]
Former-commit-id: 163cfb1164e3f2be099722b013598fd9aba6611a
2019-01-06 12:57:35 +00:00
Henrique Dias
94619341f2 feat: simplify future changes
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 1fef9a9903b88ce216c4863a2c13d18030883f01 [formerly ab968c3e733db147d0e185934f03e7f965e03fde] [formerly a8e8e77ed08ca600abc156ba1cd57aff1af9d5c5 [formerly 12eb050cc2]]
Former-commit-id: eeb1864fb4c2c0d981c657a54c2d1e2a83a260e7 [formerly 09d661a1172e93b8e6a627dff2870b1e1c5903c6]
Former-commit-id: 5974a6e8e1309855e58160e6fa827de6dc5b9605
2019-01-06 12:41:52 +00:00
Henrique Dias
36bd2907f8 Merge pull request #608 from filebrowser/dont-persist
feat: don't persist server data on database
Former-commit-id: 768c9ce33d1f24626f94f1de558624382ebb4d97 [formerly de47b48b656299e3e9918e302257b031fd73bc34] [formerly 0304ed3fe19248a7635c06db5367478e5c5ac7bc [formerly 02c34ef8be]]
Former-commit-id: a780a2b2f96b2650c35cd65e3ece26cc1c58eb41 [formerly 4cac4d8b2e52632711d50e59c07107d677ce1616]
Former-commit-id: 930d1650c381ce4e02c79d29b2d3bcd9062828b7
2019-01-06 12:29:31 +00:00
Henrique Dias
f879944346 feat: dont persist server data on database
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 2ba9d0a5d060380a73ec1b46901a6f16a5e985a1 [formerly 1cd1c62eaba87c166d8fe10baebfe27bce0448a0] [formerly 3d1721671fb760a4b99aa66fe7d5a8d00579b17c [formerly a8ff679ae3]]
Former-commit-id: ff84b7c9f8982292219b6c673ecbe60b231cb567 [formerly 2cf251aa108b3415e766fd05dd268ccd05f0ee1c]
Former-commit-id: f112fdbd48836c509981cb93f41a47ff0eff77eb
2019-01-06 12:26:48 +00:00
Henrique Dias
d821418bca feat: update frontend
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 3454ae3d39d1739b4c586f099442894cc64b4473 [formerly e2024dbdb835a464b91b843d73ffbbb5ca84d190] [formerly 5ed6bc9695aa06e86ad6c67afec1af85d332dacf [formerly 22f2287bc3]]
Former-commit-id: f1a65e8d41ce28cc9d9d849d14ae407e48c58535 [formerly 1000226a97885b3e0a88aa3f0afaa7901ad4166d]
Former-commit-id: ce067696dd15c98f472d8cbdd77e764a6a1efe0c
2019-01-06 12:01:44 +00:00
Henrique Dias
a21198be11 feat: update frontend
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: abe6d7d161c5623b479a0331bfb035bad0e3ac2b [formerly c7de783f07988d163a19f5c4f4274de029fbc4dd] [formerly 776a733a98306debc757ca1048233b24d7823987 [formerly d97bafb53b]]
Former-commit-id: d405dd0600ad15bc6956c417f8894b8c51efa805 [formerly e9499a12c629884dd194e9ea4867fb07f3500735]
Former-commit-id: 36df4acbca806758aa1d031fa1e9f4ae041e5830
2019-01-06 10:06:39 +00:00
Henrique Dias
70042f4489 fix: allow embedding into iframes (close #550)
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: fd99b98b820e6d7bfe0e5e2c7cb0371e19497c57 [formerly 9c306af4416794e5a2e0d9165960617cfeca81e1] [formerly 9267510624a99cc72cf29ba671cca797d2f441e3 [formerly 2d858e6738]]
Former-commit-id: 3004c1182c71f3eb094d2ce1f60e5ec4364d00f8 [formerly ff39e10768468f8eb2580fae4aed5f9242925dba]
Former-commit-id: 0f7df8698160a72d74d6bdac41573b8c9c48cc4f
2019-01-06 09:29:23 +00:00
Henrique Dias
3890a9a416 fix: do not read whole file on listings
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: c630ed523a9f599c3dd1eda5930baa020d0b9911 [formerly f89f524d2979e43d6c2fd99903552bfe89addbc1] [formerly ba05ce7e5c730a04681910d87378dcdf3acc809b [formerly 28b326ab1d]]
Former-commit-id: cc4832f376eb2e5d5c99dfdac9b1966448b4e48f [formerly f254f221fa44f016a8f22cb3414580bb3a57750b]
Former-commit-id: 66c66d82ade69e62d32e05f8350166b2cdc3bb12
2019-01-06 09:24:09 +00:00
Henrique Dias
a58b64085d Merge pull request #603 from filebrowser/feat-viper
Feat viper

Former-commit-id: 688b44305afd67a5c018c7147d7b92d74978594b [formerly 6ddcd63bb1b210403c6ec3175bc8081971b82a96] [formerly 637bfd056f36ace26e958444318f3cbfc921c41e [formerly 72402b0274]]
Former-commit-id: ac60c7fa2da5bd5baa0522e106bbbff81ea2525f [formerly 8502db4715fd84e41665d97dd257ba1b27bb1dfb]
Former-commit-id: be28f4eb5496598b825bbac154906a33988bb224
2019-01-06 08:09:26 +00:00
1138-4EB
90b7f4aaf6 [WIP] add viper to manage envvars and cfg files
Former-commit-id: 99d241dc790629791b67b7b2ce20a10341a1c1e7 [formerly 08e8410bffdb50134a2d6ccbe853b25d4c4d3fc6] [formerly f32b18d9acb42ee1988c49b7980a16a606cee142 [formerly 1080bfde68]]
Former-commit-id: 318c4f159697e896bcf824e274907c5c03046bf0 [formerly 82533ae817673dfab8d56533f15a9931c0c74c1e]
Former-commit-id: ece42aa8e8c7480a5a21614b6ca397b71a01e1fa
2019-01-06 06:11:15 +01:00
1138-4EB
2def76df83 fix Dockerfile entrypoint args
Former-commit-id: 1569bdc5af20784b25dd1350dc640c99bb111736 [formerly 92e50eb0b6bc61b43f93515c79f7bf5741ce229f] [formerly 61cfe864e8dd0017060249b6962a5fa67bf1252f [formerly 09a6ffb1f3]]
Former-commit-id: 642e1ac56911282dfbea5e7c41044cc557d7c39f [formerly 8df377f2bda0c02c3b464529c871ccfb81fe968c]
Former-commit-id: 82ecd4ab3a9fce2c9ade430fc85417b9270c634a
2019-01-06 03:36:08 +01:00
Henrique Dias
1db210a24f 🧼: remove comment [ci skip]
Former-commit-id: 6560b8172709c5e8809b734eaf82139635c24905 [formerly c172a284c4c2bce5d7f82a13dda7cdc78d5c7d66] [formerly b75b0b28ef23b9e341628054252f32eb08f9933c [formerly c830b80269]]
Former-commit-id: b482c5c90f95166aaf3c368d136f23c67531d6a7 [formerly 52b0e3434d83a82f55aa6a0157a35578494b5aa0]
Former-commit-id: d1e5d7262a89f20f80274be277c9e388af56f20e
2019-01-05 23:56:22 +00:00
Henrique Dias
b0586d985c feat: scope must be set on CMD
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 328b2a0ff52cb16c90158fff624f61230341b340 [formerly 68c35fd1abf023bdb9e1de101834f9b680c23dcf] [formerly 24554f91091c9d30073d4a98d462bea8d1928970 [formerly 3939e7b99d]]
Former-commit-id: ef97962090dad10d21924b476ec79b0fa92b906c [formerly f242696e812a57876edf282e0a7304860bd04b1f]
Former-commit-id: 85b816ed5ff5cf47ff2ae8a26f4a4cd99b1c29d6
2019-01-05 23:49:18 +00:00
Henrique Dias
a52374e288 feat: correct db path
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: c9c695d3b3c51a1e6f75b2319e52eb7a67221411 [formerly 4c1416815a2e2facf55f1fab9cb564b9090a305d] [formerly 09022439361037a8112f6421cc8eb9c6d5b93572 [formerly ed3d32e3ba]]
Former-commit-id: df28f382068ad0b6b1c4d2e2331ef035e54541d7 [formerly b7013cce5004ed0f8c0a157a8985949b11c73b35]
Former-commit-id: 49830926e40c5ac6bcbd9495a15c91ee6c1158c1
2019-01-05 23:48:51 +00:00
Henrique Dias
277f13a350 feat: update dockerfile
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: e6b5d4dae3b1c92e5f45d1871d2cf522ebe231da [formerly d96f427f565caeaa73d496f1cfe5797849cbfee6] [formerly ecdfa88ca15f22287b8a145b1a32deac51febf54 [formerly 365eff8ca4]]
Former-commit-id: 7035068a2d4532448ce5f99df3e44a56ef70abf0 [formerly 22078ce93001feb79a7fe835ab33298287ffb23b]
Former-commit-id: 4d4576f98a9d992501e4ee7cd7d90a7dd319fabc
2019-01-05 23:47:56 +00:00
Henrique Dias
ea434ffc04 🧹: gofmt
Former-commit-id: 9548d370497e13d436abbc670cf40d360badab9f [formerly f29ba9c4dcf9962c3a5045629526296cd2b43ad8] [formerly 3f89c094c1b3330c8d6f1b2379d6309567d12210 [formerly 92fda0070c]]
Former-commit-id: 4ad64211019e0236f0eaa6e041a8793e899954fe [formerly 6bf71ffba205b563ff6cd0c7487d9a328c757686]
Former-commit-id: 4c7afe072fc3e2a225ca5a7dbf3f3beb66b44058
2019-01-05 23:01:16 +00:00
Henrique Dias
12b2c21522 feat: v2 (#599)
Read https://github.com/filebrowser/filebrowser/pull/575.

Former-commit-id: 7aedcaaf72b863033e3f089d6df308d41a3fd00c [formerly bdbe4d49161b901c4adf9c245895a1be2d62e4a7] [formerly acfc1ec67c423e0b3e065a8c1f8897c5249af65b [formerly d309066def]]
Former-commit-id: 0c7d925a38a68ccabdf2c4bbd8c302ee89b93509 [formerly a6173925a1382955d93b334ded93f70d6dddd694]
Former-commit-id: e032e0804dd051df86f42962de2b39caec5318b7
2019-01-05 22:44:33 +00:00
1138-4EB
53a4601361 chore: setting untracked version [ci skip]
Former-commit-id: 08352e25250ae60eca3289b81227833cd59c6122 [formerly f05e75cd9d0a34dc1155a348c26c6f1ce16d5973] [formerly 60bc13d70b80580426a7eee48a83efa4da16fdd8 [formerly 013ddf45c7]]
Former-commit-id: 591b084ed5dd5ebb0b5661f6bbad33dc5a19fec1 [formerly d3ca27f95cec8bd4b2557eb807699ae801b14804]
Former-commit-id: 993c87748dfd43ab90bed637a21bd008713299ba
2019-01-05 22:26:41 +01:00
1138-4EB
4c7c507830 chore: version v1.11.0
Former-commit-id: ef29aae8bce2a6f7065f17e5a67a2ae7f0757ecb [formerly 73e46c8be3e8eeb30dbe09e1f32a23f0ad72b0d4] [formerly 4edd4c5782b442132446486132a5adab9d6f15d6 [formerly 663e0608b9]]
Former-commit-id: 2d337b53eff21b0ac7b42ac217a348ae683b75f0 [formerly 6af864c17bec27e4eed20ef2e0cdcd12a65b23cf]
Former-commit-id: 5ea70d7c172c1f40aaa1a718b6972935d3b8c688
2019-01-05 22:26:40 +01:00
1138-4EB
bc8d19feff fix goreleaser work dir, go get
Former-commit-id: 77e16f340827015ab03b517fb573bde6e864e170 [formerly 5cd6823a69867510bc37532c31737107a95d2f26] [formerly b84c196ad4be5a099eb4153f03431b419d6694b6 [formerly 77868b2647]]
Former-commit-id: 906c949ce79f94faee8b795ef66622d557281964 [formerly d401d2ea6393e4ed133563980e4fea3fee0c64e4]
Former-commit-id: b2ce07cb1c0a969a8cb62e823cba5f617b19f0bb
2019-01-05 22:26:28 +01:00
1138-4EB
f77009365f move filebrowser bin to root
Former-commit-id: 26f855618a8be4f28fe05bbd04ffb1c3437d6e45 [formerly f49857b8acd81f2155d5dfcd83d5362f6b91f846] [formerly 27a857c6d63f7dd795613f2af44b563e072c7453 [formerly 3988bdb8fe]]
Former-commit-id: da0d6b6921b340df1ae4a77a3306f56a970cf0c6 [formerly b56f8c43fed299ca73ba155c76c74b76a2347a36]
Former-commit-id: 06329d841c54b4d58a73b59bc5ab8a64e62f35ba
2019-01-02 03:35:35 +01:00
1138-4EB
74e93b8df0 replace gometalinter with golangci-lint (#596)
Former-commit-id: f43cff5a88f9b70f593cf612832428f71decd92f [formerly 7f5f957bc17fb9e03b37224a1cc31ad65af5468c] [formerly 8e8a054716b10a3999bf75deea0f0d3759c1ac42 [formerly 835c37d1e3]]
Former-commit-id: 970cbb1ad8489d7117ee580339709a07652def96 [formerly f7a47fc1f409b3acc390fa039c0076b208931748]
Former-commit-id: ec3c2df078a903c6485dd74207e34bab08f1d9c1
2019-01-02 03:13:53 +01:00
1138-4EB
901dc2c160 allow to set default user with env vars (#591)
Former-commit-id: e0e798642757d7a5017fccf0edd4d65a4181359f [formerly b354327fac46e7b721e2baf6fef5877944afb400] [formerly 3ef64ca1637c2145fd4a776f26afbd1b426d5098 [formerly 0b66d700e8]]
Former-commit-id: 192b543db9d3707eedd8745833020d603fe64c21 [formerly b7b034bd96ff63d185ccf9cd20cbc7673eed7de1]
Former-commit-id: 4fca72efa7aac242fec991da5330e78ef455d12e
2019-01-01 03:18:58 +01:00
helloray
b5ee82c943 fix multi-select files download error when filename contains '+' (#571)
Former-commit-id: fda2e75979b6d48ab77e1486d0d65375cae8ee03 [formerly 0ea1d769d4a591c522e7a642f386e3db579ce913] [formerly 230ee6abca47dd4a212d1481a294fc30972f3545 [formerly 7394f6b9bb]]
Former-commit-id: 3786998d5b87591db765e5388886e217a3c58dc8 [formerly c4954221ab23794024ced09d0f858c65d0d82c23]
Former-commit-id: 42bfe718742895fa9e03bf5dd5c1e53c826c510b
2019-01-01 02:39:45 +01:00
Allen.Guo
8e4805ba69 set threshold for large files (#558)
Former-commit-id: 9b4aa87da78f2a9ad539e4229a5a1114a5716502 [formerly 0767dca86d42737c75bb7575015f9c29e35a55a2] [formerly 65887efb2d961d40c95374ac2336e76e53e3b4b0 [formerly 802bcd8cbd]]
Former-commit-id: 3daab729620942ea0403f618588e731f90717e17 [formerly 5197f129ce4425a8716279e04f4e5b3653901c3d]
Former-commit-id: 0cb78fc0e87cb14ee540f2d3a2264d7b081c8985
2019-01-01 02:22:09 +01:00
helloray
694c750561 fix directories in search results can not be opened by click (#583)
Former-commit-id: ed2a9a08fc9488bf4ad9ad6124d24324dce7bc4c [formerly 8cfcadb62184144e58bba8af3b6c47ace2f6050f] [formerly 040d07180c51944c5f5d713a86db915365c829fa [formerly ea3576da7e]]
Former-commit-id: e653086b78975f878ba0f6f397715c61f8fb53ef [formerly 1b4d65cd703b6c37fe6589da29c25d565783fe27]
Former-commit-id: 1f073a343adb693ee4d9153309a664520027908e
2018-12-30 17:47:45 +00:00
Henrique Dias
efa3b3f198 feat: readd dos2unix
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 7a00285b53dc2a67214cf2a9a8111794801cc7ab [formerly 0dd178342671e6c201a2ea86d6699b52c03fe4c3] [formerly c25ea49026485af46401c2bf359b3dc3883711f7 [formerly c01ebf33ef]]
Former-commit-id: 489505f6219c7ce5476717c8cc054dd7e648e29b [formerly 2d81af6b62d26914f7d3b48d4781a5f5196769af]
Former-commit-id: 8e72aee50d6cd5a158f791c3aa8a1d2f3fa4ca6e
2018-12-28 23:39:46 +00:00
Henrique Dias
998dd9430d fix: move everything to LF (#588)
* fix: move everything to LF

License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

* feat: metalinter

License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 3e371bf0dc4d8205fd2ab4d1b64328b7659242c0 [formerly 5c776eafad1350b9f55b3417bf63f51d372e1663] [formerly ef8552957375306c1ab58db6cead3fdf92bc1758 [formerly b344efef2d]]
Former-commit-id: b8e19acffb00ef1546a7005b1956a858038199f2 [formerly 2b9920caa1bf71b44f245ee3d246b41170f5aecf]
Former-commit-id: 36c7a82150c1ca5d528aeb7aadae243661966560
2018-12-28 19:19:54 +00:00
1138-4EB
c8b5728743 add go mod support (#586)
Former-commit-id: cbe15cc342afd93705ee0ebd588313dad64ad45e [formerly d8de1b0940a83510fc5af2d35b04bce5d34fec60] [formerly d5b2b44d09de2740ebde690b9eb85d5ac5bbcd0c [formerly 4945635bd6]]
Former-commit-id: a56cc4805870bedf858ca69d9692188d69bf9bef [formerly faec73a01496613eaa0ee1512d77a8d62617cac0]
Former-commit-id: 67b5db918ee3295f5d4223b68e11504ec4f70491
2018-12-26 00:48:43 +01:00
Shodhan
fab33e3ed1 update README.md (#568)
Former-commit-id: 901577a2f334e78051f75b4c4435abe655c634e0 [formerly cd82cd950a318fe28e86621667a8339996e44cff] [formerly a480ec089d539fbc0439181b5505e6dca6455e28 [formerly 59f28638c7]]
Former-commit-id: 5119d459fcdba021f4e23f3705ddc0f9bec0b161 [formerly 8d30555b1c6f7328d4e07c41043cc370c0cc0154]
Former-commit-id: 4a30913f85528107b8cf5f5f62c7a8f6aa3746f3
2018-11-19 03:21:24 +00:00
Henrique Dias
5079f405fc docs: remove old disclaimer and add new one (#533)
Remove old disclaimer and add new one.

Former-commit-id: 26caff0046abe585e1dc58c7f6ca728254b57883 [formerly 9915c1da01cdf3742c49625028de3646f4cc0218] [formerly aad017cd8c74480cfc978c830f83346c5e410bc3 [formerly dae992d4a9]]
Former-commit-id: 0fb7d01241ec6fe633624710bd7d4a2a713ca119 [formerly defcc61802d496705a16de97c30ad5ca2e7d8497]
Former-commit-id: 2dffe9f988673bc9c4b83638190f70ac579b9e38
2018-09-08 20:30:39 +01:00
chinglin
b85a07536d fix: recognize small text files (#531)
Former-commit-id: c4d7475d7fe858562fb5f45dc39164aac2463cbd [formerly da7f7862848b719e71b0b4af9fb4c9813a2c1629] [formerly 264f015d1a736fd5d237e7895d3ee142b0137cee [formerly a0194899c9]]
Former-commit-id: 218bd162ee8f5222fdb0c717b481524c210ded7a [formerly 916f1ca36e2439e32d1b6a8baa0eee7a8efd290c]
Former-commit-id: ad2dd70b88612c8a212c0351abdeae9da442e21d
2018-09-08 19:03:12 +01:00
1138-4EB
7e3a15e073 chore: update frontend
Former-commit-id: 701a87afa3c7a8c7dfd15458fe2c23c2ebffa322 [formerly 743b8fcd60467068ce0bbc7129a6481d3feb740b] [formerly 4f705a9a56af47da1c06cc6e7ce779890dedb7e2 [formerly 43707a68cf]]
Former-commit-id: a856ab9ac4e6e3d2716997e0ef0ad5b62eb55cbc [formerly 21503f038fba99e7ec45fbf9a6de455fe860b009]
Former-commit-id: b3cde7867cd25d02a95a802761aa9956f15ddd58
2018-08-24 00:24:38 +01:00
Equim
aeb4e2aab3 readme: fix ci badge
Former-commit-id: 47ccac39f49f20424b045e69bd41c16b958d75e9 [formerly cfca8143a46299a6044da9fd644aa97444c03f61] [formerly 61a6608b440440ca14dbad171abaa7b581cc430e [formerly 516aa80c86]]
Former-commit-id: 710cf897c71bb8e5fdd3726e68ddc44b66633634 [formerly 8d1f3a87ab4580dfbc051c04d72201ee0cd878af]
Former-commit-id: 3bdf49c3539bc73d8862dbdf19545547a2aba375
2018-08-23 13:47:44 +08:00
Equim
bd65bc9e44 readme: fix ci badge
Former-commit-id: b8e5a0df76108e9d8c8341899e5270c46f4a9ba7 [formerly f86e9cb629e7dfceddb7e1fa3dcd701394d2933d] [formerly 3c80281d4fc173ce9fbde95823344456b8b0ee93 [formerly fc84aa65a3]]
Former-commit-id: 49a0f985fb5c0e78a532300a3192bfe8c1565c9b [formerly 78cdcdcedc20829ed77f6e2759391c75a4352f18]
Former-commit-id: 2edfc4473e44cea69f7f8423109111fa29abc248
2018-08-23 13:45:11 +08:00
Hugo Massing
59468830bb fix: search case sensitiveness (#515)
Former-commit-id: 7d86ecccd2095be6bf7db6fa4b93e226cb590661 [formerly c6e3db510232dad7f175ede09481dd3c14cac26c] [formerly cf4dfe6c7ce811d489292a0896b4de46a89bfdc0 [formerly d16352b0ba]]
Former-commit-id: bfa8e15160d458a77c9a1e5cea759d214716dbdd [formerly 74fa0134bc42399b0f3a6627791efed6f5176fa6]
Former-commit-id: 04d04ac91ad7047afc541d5c43e69f81fae54f2a
2018-08-22 16:25:30 +01:00
1138-4EB
d7c3665e2b chore(goreleaser): adapt main to refactoring (#506)
Former-commit-id: b3489300998867306df6e168ace939c8e5d02906 [formerly 9bef5d82435847fe679a298a6e0bd7ba74361f09] [formerly 4e385aea825abd7f4ee9f2eb9cdad7f6acbbe061 [formerly 3372f0546d]]
Former-commit-id: e221415d23a3f6be129fe921d429414b4199b772 [formerly 8cefe1aabe6f30fb9b415e009cce96cc3b00f019]
Former-commit-id: 17b5db1f79eb41e90fdeac2f85178f5ce777dd33
2018-08-22 13:24:34 +01:00
1138-4EB
679b0f0f4e chore(version): set CLI version from lib
Former-commit-id: 687a0a5f65c1e246110f11832a74aff227aea9b1 [formerly 6066fdbdd709de04a8362868084f70fb04a24c66] [formerly c29860d9846fe01aadffd393753265294749fc3f [formerly 0c53f06c64]]
Former-commit-id: cc10a50da0a49f97455a59a7e6e8145460168407 [formerly ea1aae8d790840e5ac7e86556f59316b476b1218]
Former-commit-id: ccc7c07a75dffcd5306a537bef2a5dce8a8f6051
2018-08-22 13:15:55 +01:00
1138-4EB
7d912dd257 chore(dokerfile): load config file implicitly
Former-commit-id: af5491f1958594a033cceea64bb988e427141952 [formerly 24659c5c4693bb2f7a4930e748a79e329dd6e45c] [formerly 9b3bc71ac1708475648c0ec0207584a5690ac91f [formerly 0f2be941e8]]
Former-commit-id: 9a1f8040210fb026e6741517640bc583915727bb [formerly 971cd99c1c3734d352b6f07664f05245b1672047]
Former-commit-id: 653b6e78a6d562db4374f5e0ce22078cdc670fd8
2018-08-22 13:09:21 +01:00
1138-4EB
a92d7aab8e chore: add version to subcmds
Former-commit-id: a08e327cccff4586578c71b6278b46c9d802f4dc [formerly 0b5e200ece501efd62b80c11f03518f5aac11c87] [formerly defeb96bda2355d30a5fd0d9e6a3b6c427b170b2 [formerly d5fcb555cb]]
Former-commit-id: bf7ccdb941b150562153ba61609db38922191b97 [formerly d6250e9ca18bd318f0fdf742fc32e0404998e2f3]
Former-commit-id: 867dec4689e6ed85b29c6501e37da85801783281
2018-08-22 12:30:55 +01:00
1138-4EB
0536d8342c feat: use cobra to provide subcommands, move sources to lib (#506)
- Use cobra in order to provide subcommands `serve` and `db`.
  - Subdir `cmd` is removed.
  - Subdir `cli` is created, which is a standard cobra structure.
- Sources related to the core are moved to subdir `lib`.
- #497 and #504 are merged.
- Deprecated flags are added. See https://github.com/filebrowser/filebrowser/pull/497#discussion_r209428120.
- [`viper.BindPFlags`](https://godoc.org/github.com/spf13/viper#BindPFlags) is used in order to reduce the verbosity in `serve.go`.


Former-commit-id: 4b37ad82e91e01f7718cd389469814674bdf7032 [formerly c84d7fcf9c362b2aa1f9e5b57196152f53835e61] [formerly 2fef43c0382f3cc7d13e0297ccb467e38fac6982 [formerly 69a3f853bd]]
Former-commit-id: 2f7dc1b8ee6735382cedae2053f40c546c21de45 [formerly b438417178b47ad5f7caf9cb728f4a5011a09f5e]
Former-commit-id: 07bc58ab2e1ab10c30be8d0a5e760288bfc4d4dc
2018-08-22 01:29:51 +01:00
1138-4EB
93acf4a6f7 chore: use commit SHA as version if not release (#505)
Former-commit-id: f94f65a805178a47be814226c69125f2c35b995e [formerly f87abdedd1a0b0a4187d11e6311a1fc5d95b9368] [formerly f0a8303535fdfa4bcb348c21e8576c32908255ed [formerly b1eb90767d]]
Former-commit-id: 31edb3a4cb01d8a091549d3b7a4dcc572b64baa8 [formerly 6b2abc348d488a7066812072a887df19ac70c720]
Former-commit-id: d7fbb8e61646a9fdc55699b0d016d8c13e676dcc
2018-08-20 10:41:06 +01:00
1138-4EB
dd8f47fade chore: fix rice-box import with sed in push_ricebox
Former-commit-id: 8f25251975c4e8a24d8cd7af1a9ab915010cb2ec [formerly 22583d38eff231d75e6fa1bb0a3f30f19201ebe2] [formerly f96b729dcf040693463591f90c602b030c576c1a [formerly 43ab4fa3de]]
Former-commit-id: 1b1a4b9be3b365faf0e18215fb2b5723b644a66f [formerly 6ce724f373ec2ad6738c61589a075ff9de0ed64e]
Former-commit-id: 750ca0440b7fb606e53fc043255fd2b0e0327a17
2018-08-16 10:12:33 +01:00
1138-4EB
3f4db6b81e chore: fix author in push_rice (#514)
Former-commit-id: f2b1df2b3387ae61c9e165de5763a0e06c2eb7d7 [formerly b3b5751c000a722e5d61e20ecfd0f7ef18420b0f] [formerly d951176d0cf0e0f1db255eb9d4fb0f52688c8cb9 [formerly 7afaf59e5d]]
Former-commit-id: 28fa6fdbd6b6414e303cf52ce57288e534a0a50c [formerly 780354453afc8940fec77d9b5765aeacc56dc924]
Former-commit-id: a83f01e72a88cdcc557f85b84f513c38b565f08e
2018-08-16 09:56:06 +01:00
1138-4EB
e471e79d50 fix(config): ensure provided config path is used (#508)
Former-commit-id: 519c027039de94232d801df4a71187096888f6bd [formerly f76f9459eeb7d8038b8d9b31af2e562c2984809e] [formerly 6b532750f58cf0eabaffacb772b623a9ecbf8e5b [formerly 1e12bb7f7c]]
Former-commit-id: 17a85007590f31c7ef1c2e6d125d30191eaa4d7d [formerly 4ee6dc582cc4e1c086f55901902864d784d392d5]
Former-commit-id: 9daf15d9a1131f8f45ce35a9b676dfdc8cd4b099
2018-08-16 09:37:07 +01:00
1138-4EB
6b4bce5daf chore: setting untracked version [ci skip]
Former-commit-id: f1990766e31c6cf01a7b97d1047e494e1ffb5175 [formerly 3f137859a89ca9623cf0ccb5cafdcd732853aa3e] [formerly d97c14c27c0c7e88295dc3114ec497979e3507e0 [formerly 69d1fdc0ac]]
Former-commit-id: 9983703da7f342ac3648fab4e92ce90fa19ea186 [formerly 78ac026abaa38ca16278b80d8f7c23f842d736c9]
Former-commit-id: 3626e4a882a1b28850a579090812347718247597
2018-08-16 07:33:26 +01:00
1138-4EB
b66adcb582 chore: version v1.10.0
Former-commit-id: 74446bfe3c27c860a34021c9fbc072a1d1b82bc5 [formerly cb41bf65c06e12bfdba229e337204dfe5e00c3c6] [formerly 5482d87a53717bc557d984d87f6448a0ee955503 [formerly b579350798]]
Former-commit-id: 38679cbcad1ab3e5bde96897048fc90594bcc5dd [formerly 775d5d1d240ae13649f383bdbc170ea906d969e8]
Former-commit-id: 941367abeb3f691ef5017d59c7a2543cc4caddab
2018-08-16 07:33:20 +01:00
1138-4EB
5ec06fa0cd chore: fix release conditions
Former-commit-id: 6300d99faea5b807ba90ca409bcc683eefb5cf67 [formerly e9ce861912c0b03f64bded2ed44896d6ae79a485] [formerly 8acca6c5ecf8b56e85e22271addaa7ce396bc676 [formerly 714876e3d0]]
Former-commit-id: bcc4154cbe9a0dbe6819b3ac3236d98c3b8f6010 [formerly 00da283ee494ad42a7e886f52fa5c8ec34860c68]
Former-commit-id: 4f8963ab76da8a9230e835ba8ef82b7893516b20
2018-08-16 07:32:46 +01:00
1138-4EB
c163318ce5 chore: make release.sh executable, update frontend
Former-commit-id: 239ec73aad2905eb0ffaf2318b1f6166bb910da1 [formerly 723297d061329c46876a4bfc534c1bd83a1249a4] [formerly 0293f9a819d58f62b00c51894bb7e33d0af9cab9 [formerly 0854c423c3]]
Former-commit-id: 2cb8474af898a81cdcce7d6a0c109854efa7c0c9 [formerly 48013895c67ac2cb22097fb5dde040747a231dfd]
Former-commit-id: 06799635ff5acfa1a79f4c41f22b187aa92b2b98
2018-08-16 04:30:28 +01:00
Henrique Dias
98dabff1e7 docs: update docker iamge
Former-commit-id: fb8c8d07d7c50a916b9142ae674a0d080af4bad5 [formerly 37c016849e2bc83f184eb1cb3b881c3fa300bdb4] [formerly 05c42ceabed6b64d5b4550fa32b07d3d3d976c50 [formerly 10607eb6bb]]
Former-commit-id: 525cbecb6754d4bc3c440053880440dfdb16acd7 [formerly 03e66762e36fb88cf738c21238faa7f72463d486]
Former-commit-id: 723f07c766502c2f49305baf79ebde41e9e15098
2018-08-08 11:50:59 +01:00
maweck
50dcf35eda feat: proxy auth support (#485)
* Change the order of commands to be able to cache more layers in case of multiple builds triggered in a row

* Fix #471

* Format Code

* Revert "Change the order of commands to be able to cache more layers in case of multiple builds triggered in a row"

This reverts commit 29217f66ee6aee63d2c03ac86de4ad437876317d [formerly ebff3e9d79ac9eca44d7b3caf7814be62c784d43] [formerly 9b95d9e986254d55405cd0e9484dcbbadc54c87b [formerly d13fd2878c38a46f91da30de150624200f0b32e9]] [formerly 3ec8fb12d8b6e1942ebae6abb00c5f15b03d6412 [formerly 6a70bdaf457f50896dd9826608666a39babae666] [formerly 063a6fe9d4991b7b6c257ae081288ea40efbe8b5 [formerly 01362f34ee]]].

* Adjustment based on the review

* Rename "login-header" to "loginHeader" and prepare auth.method to accept "none" as a value

* Fixed line break

* Readd "lumberjack.v2" import which was removed by gofmt

Sorry - I do my tests and run "gofmt" before comitting the changes - It sadly seems like it is messing up the imports over and over again.


Former-commit-id: 252e65171f70ee87238b5542e6af81d90bdaed6b [formerly fa843827feaab389550f32ba3a629e1968bcea3d] [formerly 942986226dbb56ef1cb4dff24445406cfa699d2d [formerly ed62451ea0]]
Former-commit-id: e87377dd6f30012b0d602b592100a7deb39a8632 [formerly f8198aa8a51fd5e727c31df0918ab62024520cef]
Former-commit-id: 019de07d53c3da16354e228330c14efb0dfb2122
2018-08-08 10:06:16 +01:00
Henrique Dias
769e634bdd docs: add freenode badge
Former-commit-id: adbba24f2d206e5f70e062c3733dc4737b2be85c [formerly d74e2307695c122fe4ad8118aa73d4af91fc7d5c] [formerly 1428ecc21a5031949b8bb04b43a31db7dbe1ca5c [formerly b90e7b8d26]]
Former-commit-id: ddbb0a87937d4704e1e14fbd16a9a129b26cceb4 [formerly 90a491507a9f9e8dfe78329ae6b51dd722859855]
Former-commit-id: 724bae950c0affd84fd9066ac016e318c5b7c115
2018-08-08 09:14:55 +01:00
1138-4EB
dead024e53 add pull request template (#501)
Related to #477.

Former-commit-id: f3020544c0b03295d5c4c79a678a4a1acc47884e [formerly 10c8b8febfa720d1e719f5e4735259b6427b9df0] [formerly 3d0b90a6b6c62bed99d8347066befff8a29f4525 [formerly 8186e8f02f]]
Former-commit-id: ccbd134d4e7d8eb7a362a2e34fa2828f2b86766d [formerly 2f9b979b97a8086136cdf36c68cdaeb2b36ef7da]
Former-commit-id: 6855aafd45b5c526b91fd3acdd95af4fec68175f
2018-08-07 13:53:51 +01:00
Henrique Dias
f4982cff5e style: fix linting issues
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 10657ab9cff2ee94dd7c0082bfe2cbfa07865022 [formerly 5501af1ace43a089ac4222cf9da2f5176242f817] [formerly 39c72e2e9235a822a30c0b338f55c441f3b3024d [formerly b7022bdfe3]]
Former-commit-id: 5941e4ab1295b90371ba60003f69939559dc8060 [formerly 3513d92ba403133d7b53aa19c92e4356f9e68b75]
Former-commit-id: 3657f6f659e893928bd2b9f64afecdaa41d587a6
2018-08-07 13:34:06 +01:00
1138-4EB
bfbb7b5ee1 chore: move filebrowser/dev img to separate repo (#500)
Former-commit-id: e54327906c7e4923debd36fff1dc31886440463c [formerly 72506b1b7f04ba728532ab6e94bd3e482ce38cda] [formerly 1195ba2763a02f47797bb529a7f89fa625e4c3ca [formerly 5afe2cc52d]]
Former-commit-id: 022049582a495c141024ceaa43516541a8c72628 [formerly 6a29708b0a57ae9aad227fec96983218d50da38b]
Former-commit-id: b9b48ad2b8e5d0b3b96f2b15fefe785a830240dd
2018-08-07 13:29:50 +01:00
1138-4EB
7c09473312 chore(gometalinter): exclude vendor
Former-commit-id: 8e99e3c0802a1f8acbed90047f0143789da771ad [formerly 94a11f954bdbdb4f295ecfb53ed786241a2a7fb5] [formerly 165c7ed873e40b703e3c910678479212f5f78fec [formerly 65ea97b32e]]
Former-commit-id: b144f646b8808e500209056d35994f4b9cb60773 [formerly 964ce718e4661dd15d3a7311637d4105d381b320]
Former-commit-id: ffc4f157a492490b95df3849d52218ae142581fc
2018-08-07 12:31:27 +01:00
1138-4EB
b6a8472722 fix: use './...' when running gometalinter
Former-commit-id: a3f2c975184928b042e09a42a2006c54fc3c9026 [formerly 3f80e808255c869732bc31f981f3a9256f151cc7] [formerly facb7e61332d3fb6fb18e5ac36771141474935c8 [formerly 69f11ed80b]]
Former-commit-id: fd86fb79039c33f22aaf05ca7023c74ad8d0036b [formerly 990a472cde58a891c01d673e1b1fb570b07868f1]
Former-commit-id: 887b84b6134135b268d4aa82d9c65990fc7d86c9
2018-08-07 12:04:43 +01:00
1138-4EB
db01cfa2f0 fix multiple entries in script deploy [travis-ci/travis-ci#7641]
Former-commit-id: 32d1205b18e256f94831485837b868f1cdf30bb1 [formerly 8caae9f4acbfc93df6729a28ecb0f136bff3cc3e] [formerly c988834f5d4a7a08796d538626c2b3f042fbe1eb [formerly 81f05aa894]]
Former-commit-id: 8b2f7f547441f01f853a67d8edca7c54fc6cf0db [formerly d4c50007f20825ef35cf767ce7b31ed76848e341]
Former-commit-id: ff4fab2a46d70189ba0a977c372db7cf7c5c0bd3
2018-08-06 22:14:40 +01:00
Henrique Dias
4267ebf0b4 fix: error at first sign
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: 649162e55f57817c6e2fd8cb66fb4de1ada68199 [formerly fe5e1f6df6320c2eb6f24ca64ebffd6cedf6659b] [formerly 2f6eea9879c754d67acdf8f0809dd9c39cc12df0 [formerly 4470e0b450]]
Former-commit-id: 3a3500d1492db1ca7c262c60390452892fccb97b [formerly 2ea468347c670e8dfeda99be204e0b22072ea9c5]
Former-commit-id: be6a317810a0a465db2e852c6839308bf4d346ad
2018-08-06 20:53:48 +01:00
Henrique Dias
d4e9f5ba53 Merge pull request #492 from filebrowser/chore/build
chore: new build process
Former-commit-id: 5c703aea976d95470a5f427a2c2d7b15d08c0e9e [formerly 326fcdd2d11d414c557986c74ec343d5c2221168] [formerly 7a5991c0e85806e82256b201b515a070e0e95ec9 [formerly 8ad626b0bc]]
Former-commit-id: f78d78c109181cd9c52bd91753d4e39e8f65e077 [formerly 05e6b729485ddfa48ad428c389bd85d8ab11f366]
Former-commit-id: e91d24edfdff15c075e4f980a88b3dc8cf9d5254
2018-08-06 20:40:57 +01:00
1138-4EB
4ace991b8a update ricebox in caddy/assets
Former-commit-id: af8d9982d961f4c8e5a301dc0eeb1dc790f35231 [formerly 6f678bfadf1e1db8c8dc5e368087a23a3dba8b65] [formerly 3d06b4d8d6b2ffe209f10b9ae4ce30955839e721 [formerly 6f7fded3f1]]
Former-commit-id: 4016e6b9b12d5f945c67fd0960a3460cd1fbfda1 [formerly 1ead636502f6b0991e1b18f3de5889546cedfa24]
Former-commit-id: 03bb7d11a2062ca3fe4ffd5d3efc702e4652c260
2018-08-06 20:08:56 +01:00
1138-4EB
e0c91bb747 update frontend submodule
Former-commit-id: d1cbaf35191dfbdf499909baed77d16daa54ce4c [formerly edb3f13a7a6fd20a8377bee0c1eb9814dedcb615] [formerly b5566691de3d26ffaaaa0a9df77d517a8290a2cd [formerly 1149092d73]]
Former-commit-id: 642d0481907ba86e2fde0940e02bdfad4e04c898 [formerly 4f90dfe05f65af83234eb32e62fc4476ecdc5a75]
Former-commit-id: c858f5c393bfdc4de23c7fcc50cd1f2145ec44cf
2018-08-06 18:26:59 +01:00
1138-4EB
557e5922d2 fix(publish): fetch all before checking a matching semver in the frontend
Former-commit-id: 922b633d536f4102d8ec3e68a7d7fa12270e21c9 [formerly 7c8b0295aebc6819a162f94d23821e7728ebabc0] [formerly efad5cfea2c8bf1a1617dea5e9e6d0903d2d44d7 [formerly 18a9d977c2]]
Former-commit-id: c48391a56546742845c697d0b6494b1230bdf529 [formerly 4609f232086d4c5096c2a937cdf980f1b1a786cc]
Former-commit-id: 50ac09f7bca6d3541c0b8eb70ad672ed6768b2ca
2018-08-06 12:46:59 +01:00
1138-4EB
cea4d2aae9 fix rice-box dir in travis
Former-commit-id: a4de4d83ab964c11bb0375a66af7b011f39990bc [formerly e93bcfd8f83c089d72245ffa79785860f00b3758] [formerly 364f472f6e27004dab8bffa8674c855e9e6d4213 [formerly ac3ad47a92]]
Former-commit-id: 4c8cebdea67e8cd88c58563702489f7549aaa222 [formerly 1d6a75e82822a33f8edde2d64077196454f460ed]
Former-commit-id: 4230de67e7923ef7450385c8c9d25654f19f18c7
2018-08-06 12:46:59 +01:00
Filebrowser Bot
bb5c041d5c add deploy_key.enc 9ca81b5594f5
Former-commit-id: ed1098dcc37748ac3253be57416ba10aed0786e2 [formerly 4f791e75150f7947ea9bfac6e7e13bf3316f21d7] [formerly 140301afea7e83c08649870eb8cd6ee8bd111353 [formerly 43288e9b86]]
Former-commit-id: a8e5cee586fadff0a107d47cdb10573eb9aa30f5 [formerly 2eaf33fe47c4c56277284733251be36cfc0956e9]
Former-commit-id: 6d7a694ae4b0328c092ee342b96b226f464e526b
2018-08-06 05:01:44 +01:00
1138-4EB
bf1ef5b0f8 setup travis releases with filebrowserbot
Former-commit-id: 0593d1dd3883e25a44588131fa6fe69df815fd87 [formerly 429f789e0c54719595830f2290985be1f5899fb1] [formerly bb5b0328aa951f5534ab29e5070a1aa4da9ec2e2 [formerly 52aebd0444]]
Former-commit-id: 0cd117cb81b2a38b2646cc880c8774fed786d45c [formerly bf046ec317be577c8c3c4613d81272f6ae7fcabc]
Former-commit-id: 5066ef1dc9b898e8cf9909c03dede43690325815
2018-08-06 05:01:42 +01:00
1138-4EB
08ebe0fbb0 release all the files in dist
Former-commit-id: 9ac3858d788425d5c447f5a5ce068db71ba3bac2 [formerly 1eb037fc961dcb2d288d3f9edb7ee0867456aeef] [formerly 8633b5ef520ec3d4873a8b93925f90b4d129713e [formerly 6c98dfc9fc]]
Former-commit-id: 80f9ee49a48f953108813af26d8d576b17793245 [formerly 8cb7931e12674c248c68a90a3de2d5054646e089]
Former-commit-id: 2f0a1639a58ed6c8b56c178675829b05d8b08f30
2018-08-06 05:01:41 +01:00
1138-4EB
bdd7c269ed add docker-credential-pass to dev img and use it in travis
Former-commit-id: 3deff7d6b345fd6c1e9bac71b446730631e891c9 [formerly 2525a27cb90b003f72c7d936e2f0224848e3e49f] [formerly c699da2816b0c61bfdaf0a8b40612b9d50734d73 [formerly 5ab5c7c243]]
Former-commit-id: 7ed9366f3c83f50afef6b40d0006c32256d053f7 [formerly 0fc1beb902fbadc6f6388b10b7ed319e15fcb7d4]
Former-commit-id: 7bd6bacacb114d72808ded8c102f8f14de450625
2018-08-06 05:01:39 +01:00
1138-4EB
292ef7ea8a replace publish.sh with build/release.sh
Former-commit-id: 89636040fe653a0e2917a51fd7e557b0a9d2436c [formerly b052d724fe2381766bfd225d451cc7a077f82db4] [formerly e9e6f9066892058cf2780d33db8e561281bb1597 [formerly 2592c5eb43]]
Former-commit-id: d29d1a3284e7e84c80324d7591623644e5c3fac9 [formerly 3417ad7fe90ed523a0bc9bd67beafbb7b7ff3a80]
Former-commit-id: 5ac4f1ea442c54a401c66203343fa0373b5ffa9c
2018-08-06 05:01:38 +01:00
Henrique Dias
03ab2199d4 update repo
License: MIT
Signed-off-by: Henrique Dias <hacdias@gmail.com>

Former-commit-id: c78a96fbc7f65f0504e28ac2a59130d060cfc3d2 [formerly 5b8124120440eef3f81bef7a1354897c1e88e0ef] [formerly bbfcefaad0bd8e345f8463ad6f3ef7e5a65ea152 [formerly c6c915e387]]
Former-commit-id: 4af0f562b1c42e28e50f51c368544b957e3954b7 [formerly fa4050a8f763b7fea686617842610c526ed077b1]
Former-commit-id: 789e64f89019211fc541cbbc2e67655899b294ae
2018-08-06 05:01:36 +01:00
1138-4EB
41489f9e89 chore(gometalinter): gas is renamed to gosec [alecthomas/gometalinter#505]
Former-commit-id: 9d049a2544677a82892d61b046d9ca02719fd64e [formerly 75108904316b277fcdbd28145d0abff61c4c7d04] [formerly c28ae59c1ed7230f7f9ac4c5d6b27a014bac506b [formerly 993bab4687]]
Former-commit-id: b2bcc79aa40cb727315e0ec1007deea3a74358c6 [formerly 35c44ec3706ef141489d1c65309b55e21f03b4a0]
Former-commit-id: bce721ae0ca43b5b9667c31ccb2a3b64b48b7a71
2018-08-06 05:01:35 +01:00
1138-4EB
3bc5f6e0df build docker images with goreleaser
Former-commit-id: 5f8a21053734ba6c507b7d39fca57c0dcb9994fa [formerly 2ecda20825d40484ae2a24fba6dff4dfa63bf5df] [formerly a13bb1c1d1d812c86d8d92521bb48f7102b6725e [formerly 6cb2e30143]]
Former-commit-id: 553cb8f6ac4f89a4ab9574a72a2dd54e384f1072 [formerly 64e289831d826b28cc777c7ee7a79c8938f2a706]
Former-commit-id: 587e569d59adf142a24513bce9bc764841f8a550
2018-08-06 05:01:33 +01:00
1138-4EB
42d33cf595 add docker static client to filebrowser/dev
Former-commit-id: c9e14d35f42c240caf16c7ffaf03b56dac75588f [formerly bf92002b6cac66b3fca8fd68e7a19284983973d1] [formerly 3954699af9e3dad46a0026b07fd5ebb13796fabd [formerly 7459e66b71]]
Former-commit-id: 8f65bfb661773bd587243e84e9381d0e9a77ff50 [formerly 72cb26e555e2dd113a7c7e77fff71ae0abf440de]
Former-commit-id: dfe6091913bbcaf6bd87f8e1f3b06d5d5c84d14e
2018-08-06 05:01:31 +01:00
1138-4EB
0fbde826bf move caddy to separate repo
Former-commit-id: 38db4637c287a3f77a8e3fc39b0344a0d0ea0e94 [formerly aa94394d631efb107b6597e8bf2ec8d68f754fc8] [formerly efcef3211664021f7b23b9e6f1dcb7b5dbfc68a7 [formerly 28952e81bb]]
Former-commit-id: b7c4dbc1a19630c9116d640f96c52eccb6c66ab4 [formerly 5f2c74aa1fd92fdd3cd5917b21b5f6034d024748]
Former-commit-id: 3d6ad271b8f507f479ab9375419ad4b74594e719
2018-08-06 05:01:29 +01:00
1138-4EB
578f3e9bdd ignore rice-box.go
Former-commit-id: d416e0328a439e90100a8898b4eecd0d841094f0 [formerly 2ae0702ee23cb54706f34a01e2adadc8d71af201] [formerly e14ada686593af7f4e51df3631388e2564cc48d8 [formerly 569354c493]]
Former-commit-id: 55f994a485f1c19e0f217ef5a0a9eb929c0cb602 [formerly fc5f991702704d2b39bd3d557a7972a8da0190d7]
Former-commit-id: 0da0e4d08c933641f4212ec5e528da384eee315a
2018-08-06 05:01:27 +01:00
1138-4EB
f1e5cd490e add gometalinter and goreleaser to travis, drop circleci
Former-commit-id: dc44ea15987447b0f179bb2011c000f6d7224898 [formerly 3192a7ad777c6ff93fdd0d62a1d9f4c466c5b06e] [formerly 5bb95d586cf0dbf48355142fe17dfa8d162923c5 [formerly de7a8cee60]]
Former-commit-id: 129d25ece6e5ad704f3ef98bc4a59db70d0c9e10 [formerly f51552b629dbd69810e51142c9a66ab708d96d39]
Former-commit-id: 39d64538f9edcb5933c5cff8904f86691bf75ed3
2018-08-06 05:01:25 +01:00
1138-4EB
40b0cd4b66 add travis
Former-commit-id: a68e501a962cdd7c3a9e5a3d91433cbec34265e3 [formerly ab4763c975794e5997fab6abb51b2e91bda6e08a] [formerly 709e134df8986005308f3e125348fe13cf92919a [formerly 703318c214]]
Former-commit-id: 6672ab0918f84d73819f038cc5a24f1ce22625b4 [formerly 21d926cefe6d46ec2a99eba5e589b264e818d22d]
Former-commit-id: 294b3fa3faae6363f483388ccbedcf091d1f837c
2018-08-06 05:01:16 +01:00
1138-4EB
f9e3923ae7 add filebrowser/frontend as a submodule
Former-commit-id: 689395356dc1860d0f0f5786986cbbc4238a1fe0 [formerly 0c528dae26624fad221c4fa6b273a02dc030e81c] [formerly f353338b249c2ed818611ac6a91939bc87356de9 [formerly a2e293292e]]
Former-commit-id: 647dac9f8eed2df57191a75e4b199aebb18375fc [formerly 000079405f67a4bff2098c2cddc082a4374e0bd5]
Former-commit-id: 89c911c807783e2176994fc6949bf8221ca5e5a3
2018-08-05 10:58:21 +01:00
1138-4EB
32f7efbde5 add filebrowser/filebrowser:dev, move dep execution to build.sh
Former-commit-id: 691201333f6c76d5fe8d7134a1d68c4cc50404a7 [formerly a9973160b528bfe6b26bac2a6e1236e6e9192f0c] [formerly 84f8fdb79bd0929ef84a969a688ef1381e6ac691 [formerly d11aa8de6b]]
Former-commit-id: 5d10ebcf1f43a9854aa8b66b1227220e81e34473 [formerly a6e486b7c3a40fa821c2250bcd9edc1841775887]
Former-commit-id: 7367476016ce2499441cdb2d050fb2f961eed4d0
2018-08-05 10:58:21 +01:00
1138-4EB
56e5005484 drop package.json, use yarn instad of npm, add build_in_docker.sh
Former-commit-id: 1f1ce1a5350eb1d4d12dc3b90bae20d6df6048f9 [formerly fae0cae6f369574aab49ab952e1aa681c97f7067] [formerly 6f8245ec50d0d2485a263e5877a6a353837b1197 [formerly f91ee24858]]
Former-commit-id: b9bb3ad6a460de55851943bbbc62aee74e32028c [formerly 049f6c239d7a936d70493e68f23838c0ec11af88]
Former-commit-id: 81f69427472bbeb3f82e6bd2c3a114e2c5fb47d7
2018-08-05 10:58:21 +01:00
Henrique Dias
6bf0e8c063 chore: disable gosec (#490)
Former-commit-id: 515a160e341e7dcd338c7aea0a73c8dea0a917ca [formerly 85d6e4c2e150055fd8a2ba223bf8a7ee92116f72] [formerly 703c59c0f952f0fb7e43159c98328e53d1a92c04 [formerly 46b5fa013c]]
Former-commit-id: 1f6a9e78cdab0a6a6066248d98464bafd9d3f1c3 [formerly e102d783604d0afaff7e45a6dfd6eed9b7065e0d]
Former-commit-id: 22ffc5fbb93cd96609b04baf437e63db7bbfbe1b
2018-08-04 16:24:16 +01:00
1138-4EB
7445d73cf6 new issue templates (#477)
Former-commit-id: a28d3ceeb4a70ec5c59c7ad159952c4d453c8bca [formerly 1bcbffccb6aa9ccadf8ea43a7ffe4eb14cd7ec2b] [formerly 1d27bddbcf066bf32160c9b422bd927802ae8daa [formerly fb1dbb4276]]
Former-commit-id: 5fca1e72ba88f574059c4cf6ce92a13eac1919ed [formerly 3b928a4ec672b17f72ecfbc71bd7764e7cf7a31c]
Former-commit-id: 613be772339dcf2e4d422d5ddd361b66c95e7b2c
2018-07-29 20:20:24 +01:00
1138-4EB
af095a71e7 add ca-certificates to scratch docker image (#478)
Former-commit-id: aa531b84a518c6e4b48edc1231f663c316f36c23 [formerly 2b724b5f31ddbd39b1f9fb6df7ed4cff481b30db] [formerly 8f803379488acbc1149161b7df0eed4455ba876f [formerly 4e454f4bd2]]
Former-commit-id: 1579bebb11497abcdb83a4141af9da8bf681f8a9 [formerly c3943d81a5e4e66b4c1407ea37f30044b65ce593]
Former-commit-id: b26678c4727c4ad42463e25c53b6982efc18330c
2018-07-29 20:20:06 +01:00
1138-4EB
ab87f76dcb docs: add note about filemanager migration
Close #467.

Former-commit-id: 18d26af7c8a72d6195db73b795734dd18b9b2441 [formerly 87bdb71d011899d5e3e4c8dd9f7da6f629dceb67] [formerly ad1ff095a6e5dcf0c5e9f203f2bc3aa8e515d71d [formerly 6bbedddf51]]
Former-commit-id: 5d27d3e8f271ee437cb119df21334a942687193a [formerly 4ed80cbda3c300b5b18657cbbb4897eeff10f3df]
Former-commit-id: bc9d48ea84661e0607f30af71036d2e4f9a574f1
2018-07-29 20:19:52 +01:00
Dawid 'DeyV' Polak
2cbe941202 updated readme - case sensitive (#481)
Former-commit-id: 2ba295ca7060930f1f84645eed1f402b6f322522 [formerly fc51c3822642127f1d6ef6752bbcf47a3691a630] [formerly 8c38dd9075aed5f7a0d1fd974aa3dcad9fee8445 [formerly 90ad46b881]]
Former-commit-id: c0cc1705d3a215f07635de8809ab53238fccb75f [formerly bb31830df2193330f7266a4c382a57b89301446b]
Former-commit-id: bee1cec2d7892350706b8f2b24481f41a93e1082
2018-07-29 20:18:42 +01:00
Dawid 'DeyV' Polak
5e58c25aa4 natural sort (#474)
Former-commit-id: 9865271f38824fd4762253014a7855ee087d315f [formerly 17c1a5f7e2cbbea4f01ba394f6ae76ded22594f3] [formerly 2087a30cb8fa514b33d99fb9797a0751a8f532cd [formerly 202c9c97e5]]
Former-commit-id: 513ed21a74e590d062f0974b0ea7af7381162df9 [formerly 3fb2617b7aa05abe93460e2ab25ba2369ce68095]
Former-commit-id: a038eda5003c044eeceeea46539f3673ebc16f95
2018-07-29 17:43:23 +01:00
1138-4EB
bdfca1be33 subdir 'logo' moved to separate repo (#473)
Former-commit-id: d8596d836d5f3a126e6c58bab8737ae3902c0e9f [formerly b71f4484566042f6e4450f8ffafbf09f7ac76d48] [formerly e0b9028417b62b2ef00df7ed4ffa5deedef2b4bd [formerly c6f60d298a]]
Former-commit-id: 74e17d4db50e7ce9a2c2e16b706bd9a037832953 [formerly ef09d2f245aac59b54c09d370677294eda305c5a]
Former-commit-id: fa358937f8c8e9ca24e45c2f8d2c9997587dd927
2018-07-28 16:14:41 +01:00
VLEFF
281b8dca23 feat: handle subtitles for video streaming (#468)
Former-commit-id: 4259259f666304a88a808093afd26967059bd702 [formerly c925c803e33aa5486e920291b97b27e15ee9e2b9] [formerly dfe55f167c82ce734968505765104f855284a095 [formerly eb12bf2c2d]]
Former-commit-id: 96c5284c2a8c00c97dce3965893b4820e7ed4e6e [formerly 84f9ed9f1256e89010c5e813dc0b589af6a32d4a]
Former-commit-id: 0c84bae4cefcd2fad3b65f0fbec31e565ca5f27b
2018-07-26 10:47:09 +01:00
Henrique Dias
2761302ddf Update .dockerignore
Former-commit-id: a81be3e8b6e2130c615bb41f67946f940590ab0e [formerly a0c08066d324572fbff46aad1697bb8eb51722ca] [formerly 86886ab818a9fff57402bc5fb2652554d3f3998e [formerly ccf1722e65]]
Former-commit-id: 735ed5b90b2c329b97dd1840f95616d4089c91e6 [formerly 81363b7cbbe2b06e23701460b5842d22d51eaf33]
Former-commit-id: d34170646d7bec7efeeb9558b0b048333b86e096
2018-07-25 10:16:26 +01:00
Henrique Dias
06f0d36dd8 chore: setting untracked version [ci skip]
Former-commit-id: 3f52c0a25429df791e76eb7b157f4fd977193597 [formerly beee01e81d8380725e8f6b351606a9d1121c53fe] [formerly 75a659afa40143517192f3c4e04fa4f2fda5acc7 [formerly 80da59dab0]]
Former-commit-id: 0a74edab781637aa33568654fc7c82574cff069c [formerly d15a8f7f1b994aa8f359b402367da0f9b39c6c8d]
Former-commit-id: 912c7ff7943300c3f4b6b89f021c9071831afd28
2018-07-23 14:54:28 +01:00
Henrique Dias
a8863ec90b chore: version 1.9.0
Former-commit-id: 4dd0b080c6e792a117af9e33c43ac81c767e589a [formerly 3f3e6b6933d063cbcd16d2d14312740571ee908b] [formerly dd9b3423fe513c11916676922fae7a965dfa90e3 [formerly b4eda31788]]
Former-commit-id: 0ae3856cb12a0fdc1eea2acaf297145d93c1f2f9 [formerly 8191100298ba99a599de7c32513a5d010c705c7d]
Former-commit-id: 7b7a6565f30b0000eae8dc096f33ee0044bc99c7
2018-07-23 14:53:42 +01:00
Henrique Dias
3ed5a64cef feat: case insensitive search by default #415
Former-commit-id: e39d951ceaac2a3c9b055b8661c17432d746f5d2 [formerly f6a93dfc39e6edec09f19228d9d8d6cb66fbdac4] [formerly 0cecdec65555f37fab1e8773f066928cf821f6b5 [formerly 43d489c194]]
Former-commit-id: 57fd7a80303a6044846a3e11fabe0c9402557052 [formerly 4ffe639c08a784a05d49ff615994bda5f700ec1a]
Former-commit-id: 0db3b23185991ca9f0c0dc7e3f1eff5f4c2f7a77
2018-07-23 10:24:52 +01:00
Torben Woltjen
013c24733e Update .dockerignore to ignore the .git directory (#462)
Former-commit-id: fde994a6670ee97a1172869daa30645a1b6ea5a3 [formerly 6d7b714941b24f2c7aa92b1592d337957b57398b] [formerly b51eaa45ca829c7d0a6fa10f57edfb01fbc3c765 [formerly 3d3191b154]]
Former-commit-id: 8a25b969af8fe457970ab6151968fcef368dbbfc [formerly 9ed0c187ed77d53538bdc80a179d15f09a3d71fe]
Former-commit-id: ba61b6f861baee637bfacef1f8ce9d0a4f0ef915
2018-07-18 07:20:26 +01:00
Henrique Dias
d9d6fb656a fix: remove default rules (#455)
Former-commit-id: 61306205aa8bbdbd8248fb2cc1b1f2b8d1c9a47d [formerly 01601ea4acb9479b6b1b8f26acf89bec97876f42] [formerly c619c7135b3aa54367c3a9cb857eb647f6f6657a [formerly ec2e8d1f54]]
Former-commit-id: 51e1335b9720aa2825b55dbedabe5040f2c98e85 [formerly 9bdceac017d39acc8f7fb5abebe23c842c646f48]
Former-commit-id: b003d0e8e6b0410c31d80e60a50ba5fa70232304
2018-07-08 08:29:45 +01:00
Henrique Dias
eb72c5d959 chore: set untracked version [ci skip]
Former-commit-id: 34ebd89ab0214e369573f7fd9e830cd5b167aacf [formerly f8c67cb2a5dd1db582b71e1e3a838fd2644cdac8] [formerly 44d8c11057a965cfdbc6cf6e4f32afd6d7ca9c93 [formerly 8e864bfc93]]
Former-commit-id: 8d8d63420a5f135d64906369e98ad24541fab599 [formerly 6ed08fff774a5eb3ef92a81f646984e2504e5a1e]
Former-commit-id: bda207626bcae10499d7db7d68a30bf2ca81d340
2018-06-28 17:39:11 +01:00
Henrique Dias
03bdc57334 chore: version 1.8.0
chore: remove mips and misple due to compiling issues

Former-commit-id: ff1ab1b2a7f565ab9a7ec641c2158451208b939c [formerly 4c3f92a99672985e351bba104bbdb39cb442567f] [formerly 62e767638a349586584ebf16a9bfaaeb5de485c9 [formerly 30d5603964]]
Former-commit-id: 2aaa5a5e38f5ffd2bd08de26dc87caaabf81399c [formerly 9aa15449ec3391649367d7df8f16224d6772b8b5]
Former-commit-id: 60c82bdb832ebd50f5d9a9c6997da617849f7920
2018-06-28 17:33:23 +01:00
Henrique Dias
00e80365da docs: update screenshots
Former-commit-id: a2c782005b0a6566852847628e13de89087b2f31 [formerly e07e40fb4b7a1c44d930758d8641d1005f04e504] [formerly 7cd48e4afc82cd96671004984121a053e0b19d4b [formerly 102df60321]]
Former-commit-id: c266b57797145bc48f47fb12eb41bfa0786198f7 [formerly 53e746f3706e233045b1e93eea2977bb84917b1d]
Former-commit-id: 234de2cfc43b74964ca92e91f3bfafe637bb1968
2018-06-28 17:10:29 +01:00
Henrique Dias
aeba656a3b chore: update dependencies
Former-commit-id: 923d89ba332e6cc8fe80acdb821bff6b4ec003ed [formerly 45291bd9bbed76416b79a0a24d37aa32cfc86afc] [formerly 8d52172856c5ca1bbd7d5426a42dd8129d0c1b3e [formerly acc6e575ef]]
Former-commit-id: 3636b2e136c09a89f60a4f74adf980bfb5bb1d2d [formerly 3b84ff7966be81f45145f2eabed6b5705dd6cf09]
Former-commit-id: 505b1e40ac3adf3a4aad59e6f769d1fd34b0408a
2018-06-28 13:32:13 +01:00
Vladyslav Tokarchuk
dd40590ee6 fix: directory "others" execute permission, close #300
Former-commit-id: 0b0798905c957972e4deb0a934593f8c06910160 [formerly d77b03128a8c6b28a07998be4a29e3cfa8c14345] [formerly 19c9cefe047c2ef0c43d03d37fc4633bc35fbdb9 [formerly a07b08dae5]]
Former-commit-id: 72b8c93ab89c5df491899b3e41be46090089b406 [formerly 4a3e4bbac51eb2cc5c2fb75cb6de8ed5da01a108]
Former-commit-id: 86a702dbd2daa2ce36e799f6fd8b2ec8957c6844
2018-06-27 12:27:41 +01:00
1138-4EB
3ffb64abcd Add logo (#436)
* Add new logo

* Add new logo to README

* center logo in the readme

* add icon and logo in multiple formats #417

* rename logo.* to banner.*, crop white space, add icon_raw


Former-commit-id: c52c4c30f8f3a21a0c53f64452bf242146600956 [formerly 2d1d1efcd07060e18d26a7ecb530087f66b93d88] [formerly 4ee282a565c0cf5bc7ee7c07b338530c4592aea4 [formerly c0531c129a]]
Former-commit-id: c00a2f847ba387a304bfc59248626a2636e05dc6 [formerly a86618d87d4490ae891d50dfa92f42e9117be2c6]
Former-commit-id: f670dda3f4713e070625a56a76dc264aa62bf0c2
2018-06-26 18:10:12 +08:00
Henrique Dias
2dbb080fa2 chore: setting untracked version [ci skip]
Former-commit-id: ab9c804efbf5c372bc72fb1692a892cdf6c03d9c [formerly 24fadc2ccb26cbde51949560642a4dcd05e8cb55] [formerly 041bb1d3b5bddf9e9d9a00a0d15bc107bde8597a [formerly e3162e7170]]
Former-commit-id: f7612d5ad4db40943017edca2c90cfa9e46cb42e [formerly ed73a7e4e7dda445a6810529b345fe07d296fdf6]
Former-commit-id: 1c20c6e4c26b88f4381ce672de174f465b844012
2018-05-20 14:57:11 +01:00
Henrique Dias
f014828ee6 chore: version 1.7.1
Former-commit-id: 5b1b7642b56050a35dd06e020fe666d54ac4608b [formerly 3f64b131efb30db09461791b0bcce8a45cde2fd7] [formerly 31799922e187b67442ca8d024304dbdfa37b76f8 [formerly a8c589172d]]
Former-commit-id: c034e606c858c02346bd6de223a8dae1c35cde6f [formerly d9ee0ae17078a3510552541b26ba50d4c1d48806]
Former-commit-id: f94753f8d2de4ef2c99c0e5a19a863c8e5c464fe
2018-05-20 14:56:25 +01:00
Equim
bab6b7760b fix name_template for arm arch
Former-commit-id: a6c02bbd245beec733e61853c0a2446d464779fb [formerly 0399fb8fd0458ca804df6786f2f2013dc92155ed] [formerly a4fb29cb77d6448beef4c6bba88c93f70ac1bd75 [formerly 347122153b]]
Former-commit-id: d7b0611d1e2d2c76f4b04a9faf681947b9973e52 [formerly fff496e7d33c0b9b81467a33c7398dc962efe941]
Former-commit-id: c7d63e5908af2541d7cf4444bdf1730eefe23c5a
2018-04-26 22:38:15 +08:00
1138-4EB
e278dbba65 Rename manager to browser (#406)
* rename File Manager to File Browser

* rename fm to fb


Former-commit-id: 82cd461b7efa992114a6cb6a3bb7fbae53558f42 [formerly 18b0295100462d2c798177086ddc3f615c50ca71] [formerly 5927828ac67268438cc6de00fcaf9140a8620794 [formerly 7643b0c4e3]]
Former-commit-id: 3661e0339db83f5e4e3afa9bcb1015401afb611d [formerly 50eb65db9848c8db82115913fb58399fc371d990]
Former-commit-id: 03e42a5b429a3f0a83c88799e086a4c51c5e031d
2018-04-23 22:42:52 +01:00
Henrique Dias
5a8c28fa6d Update package.json
Former-commit-id: 0481ae202a800cc772ecc73f2df6c34c7cd3c440 [formerly 39f2f5644324def07a26aeaba413009785edd01e] [formerly 1d8a679709a764eb3485cc235e78ea102f1eb2b1 [formerly cd0ab77388]]
Former-commit-id: 0539911bdb06bafddd89d01235444397653dfbdd [formerly cea0a516383ad638738b6bc4d0a12509cdc9daf8]
Former-commit-id: 4eeca9fed79ddce64b6c1da7dead970601541733
2018-04-23 20:29:16 +01:00
1138-4EB
e7e2edf76c fix #311, fix #312 (see filebrowser/frontend#7) (#405)
Former-commit-id: 2a2fe8e441a30073ff9dbb4ba4f6c6235709f158 [formerly 75aa9ca68f6fe2e20ff01d027c9c18e49fe75739] [formerly 371c60a517b81399929f520abc25462f7a271083 [formerly c6eb4fbac5]]
Former-commit-id: e501e318c908fd83ffe7a4984ea732385116aa97 [formerly c5a2a983c3960e2af98915b89a6abb3f2ae3bbde]
Former-commit-id: 90dd43012239882bf72855df4f538fa59f699d64
2018-04-23 20:21:18 +01:00
1138-4EB
dd2d02e492 fix309: merge CMD in the dockerfile to ENTRYPOINT (#397)
Former-commit-id: ca81d11e477ac00abf2998b69425f00a0fa9bfd3 [formerly 262790d3b7ddd904b38fc926658e275531ced99b] [formerly 7d2d31e627d5df0d2f78362a43a27d80725dd4be [formerly f7fdd6cc92]]
Former-commit-id: 097da2311051673f5bea9f851f1451938a7d1935 [formerly b7922bd40d932e03493345cdaca0541150d9a44e]
Former-commit-id: 6b915b5d648575b857d51dc885de675616509d18
2018-04-18 11:53:22 +01:00
Michael Lawson
735e74a858 Fix typo preventing "--allow-edit" from being set (#392)
Former-commit-id: 3762a51ff4883a37b27ba5f859c0633f46d9d7f6 [formerly e125c2f788f5c04c4546ddfc6d86fff1d6624142] [formerly 2d696d4c1857621a9f8ae8c0637a5f43d783c2a5 [formerly 54d0845212]]
Former-commit-id: b063d159d13c5024b79d7dd7bbb5770732efd7e7 [formerly d75479c0c17ca461e36930501ee415a4b8863319]
Former-commit-id: b4a1f4516594d07ff22894384713b0fcb5ba15d8
2018-04-06 05:24:32 +08:00
Henrique Dias
7fc2414476 chore: add more architectures and arm versions (#379)
closes #357

Former-commit-id: 3ee5cc7ba30971665983f9e4a6ff9c25736c02db [formerly a804a698af9226856a76451dc78b756ce9d97dcc] [formerly e1ec927e96a80c90d039efd85a706135f6d4725a [formerly 281339337d]]
Former-commit-id: 6cdd27c4d9ecdb019b99228cbe5641949efc71d6 [formerly dac19ea15f5c7fa6d4b5eaad1c3a5267ae561900]
Former-commit-id: 2a263d999de61788373209667fa8c67a4e3850ad
2018-03-11 22:05:57 +08:00
Henrique Dias
822b8f8e05 chore: setting untracked version [ci skip]
Former-commit-id: 1bf9470ebe3331bcf61f1335de88b4298d253d3c [formerly 360a3ff78b73dadb59a78dc96a4708a4e8e7669b] [formerly c09ce1961737ed92aa22960025e25c0c63847f3e [formerly 5facaf219f]]
Former-commit-id: 4716a43b6e1a3a107d9f9b586376c726e4362ebf [formerly 4ff2f3a2b977b0f1ccaf7eb7ebc8fd4b57f459a9]
Former-commit-id: d0dd7a8e05f6495882493978ed3507aefbdcbd25
2018-03-10 13:25:56 +00:00
Henrique Dias
2d63c288e4 chore: version 1.7.0
Former-commit-id: fad547009e94abcf390a7a9a5fbda912890f5558 [formerly 38266b3eac1f5b6f45d12fdfa83afcf7daa98e60] [formerly e36ec6f4c2b25002be967b4a5dc9566749ac8d42 [formerly 97d26e2348]]
Former-commit-id: 59730ce4eac5932e9d52ffd5dbe810f52f69f548 [formerly 327efa168ad4669b585228fd6b7ced76b261e1f7]
Former-commit-id: d325631f00a18d8fc6009f571b66192809cb8875
2018-03-10 13:25:46 +00:00
Henrique Dias
218a96eebd chore: update dependencies
Former-commit-id: 17c4e043823582d827f3de6a50fc48f2c60250a7 [formerly b1783b936da0e7ede97e128c0d73d20c4c0f5c1b] [formerly b170eca4528721f3269451f6fabeffa54d08fcb9 [formerly fbf49d61d6]]
Former-commit-id: b34516564cf6520f8c21693e287c092bc65b76e9 [formerly b45a4f2367831aee0e5def4096e34b6afb4b8a83]
Former-commit-id: b06ebe48ba6311fa50488aa26b0cc74118d4dfd7
2018-03-10 13:25:11 +00:00
Henrique Dias
4fbef557ee chore: setting untracked version [ci skip]
Former-commit-id: 0fbfd17b4531b45f781fb8517eb155ec953a98f2 [formerly 3a6821e11c979bc638eeb1d31458f1ff7605f69e] [formerly 0ecb209c4172fc504860f25325e03d78f4a12408 [formerly dc97fb7dc6]]
Former-commit-id: 18dc494d9c4b250dc451316ee6c342e0bc26a5e0 [formerly e375068391bba6b1e4c477895bcf054574c7865a]
Former-commit-id: eed4fd2cddeb199b22843a293e8471cb3a40ab0a
2018-03-10 09:00:56 +00:00
Henrique Dias
0a4c803650 chore: version 1.6.0
Former-commit-id: 9b5297726d87eb6617a8c99a1f8e23c9b4d7f1e2 [formerly e227cf02e128ba194fba68f9aca3ea61476e65f4] [formerly 4d23059dc7db2615079ea2364ea5db10663a27e5 [formerly 5f9d216542]]
Former-commit-id: 7676703b8cf5c681fd671a7fe457f4bcdeafcdc2 [formerly 13e2b075b1db00a8de95742ac1a377bdb8272585]
Former-commit-id: 64bfe1b140a3d98c1e6c77b1d225cfb7e5ed5055
2018-03-10 09:00:46 +00:00
Henrique Dias
68c5b8cd52 chore: remove failing arches
Former-commit-id: bca9d8ef1c447c295b564711e52271c233ee76aa [formerly a8b9b2c7706199b9e655f77f51193540af9dcdaa] [formerly e03e1f77be77d2f9ae853472c03197183e3d000e [formerly 4c197176fc]]
Former-commit-id: 0a904664f8bf4177eb1e573a3dbd2e71ffbd86b4 [formerly 74c0785f2cd7b5c92c910f9043b9ccc06433acbc]
Former-commit-id: 70a547ce5220e833f393a9c94b1d70c76fa708d1
2018-03-10 09:00:24 +00:00
Equim
0cff87be24 alternative ReCaptcha, close #366
Former-commit-id: c8c9baff75891868283bd353c83a19d38e6bc0e9 [formerly 88aeffc35a402c44c9c92a534c8cd271124826a7] [formerly 39cfd0e090894509e913100aa2f9b325ad6e5b68 [formerly 6e1c6a4a8c]]
Former-commit-id: a49c1046af3ba28c469e93e7d88013f5a6b1d062 [formerly 07c801b64ed03b187bb1dd9bbfb502b92572af44]
Former-commit-id: aa69ed3d4d78f8942b8b2c924c73c8e4c4965520
2018-02-27 17:12:54 +00:00
Equim
a2fcb8b3b0 feat: 6 bytes version of share link, close #331
Former-commit-id: a4a4edf89a32e9b8338474eb3322de69e12da83e [formerly 57124e6118adfbf0ae38ec77ce6816f6351174ad] [formerly 6d9e5b81bf0f52373147cb46d3c71d7e8e1362a7 [formerly f0a703baa7]]
Former-commit-id: 7da431b8bf791bdfe66fca2b0f87fc4b4918543b [formerly 4d02e3f0a697b912fb639b09857ae5daa0851ebf]
Former-commit-id: 87af8b945b414dad82d1c6769d6ec014e097aa22
2018-02-27 17:06:23 +00:00
Equim
5eb9e95720 chore: use dep to manage vendor (#364)
Former-commit-id: a5262bb5a3ca329e8d9d7f68bbcd932bcd4f5aa0 [formerly 38cda564a25a09a12a849a5ac756b55e895d8ac7] [formerly b70c0cf897f19e468259148fc75e9a60de5252ab [formerly a184b775b3]]
Former-commit-id: 1de8ed7a5b316b7a64cad814c0efc80b67a9668f [formerly 5ef584fce122832b7e9200e6a7c6259a2b0e3c09]
Former-commit-id: 7e11fda1d06bd57d16a03a17d7c3a644e46c451a
2018-02-25 08:55:48 +00:00
Henrique Dias
967d4e28de chore: setting untracked version [ci skip]
Former-commit-id: 093104cb4d68178bf5de22289d58c465fca10552 [formerly 17499e5eec1c3c54f9e1c699818ea823be3d6728] [formerly 0e561b7ea77348ba12e29173607062c6badccc88 [formerly 4bd2e8e333]]
Former-commit-id: 992c37c538e5aa2aec9b6504cf836f2dd6aea2c9 [formerly cf3727500421de16876ddc84462d48b5600e1946]
Former-commit-id: af2ab326c2092bc169a44622e56b10000d6091dc
2018-02-24 08:45:44 +00:00
Henrique Dias
ee53803fc2 chore: version 1.5.5
Former-commit-id: cee33f264a3b98f9e635203f38793a5b4147792f [formerly 0619dbb1ca27fb4b3f030a77c2a1eae4233f3c87] [formerly eb56b144bfc0ec579fac4abd31aae495f3ba3498 [formerly 04096b6d1e]]
Former-commit-id: 4630f7870de9502b05b9bfd84c0feb022220b20b [formerly 029af42ac358788458facfba9236265e78bf681a]
Former-commit-id: b4471eb6375f7a46fe7344f6e301ea88722d389e
2018-02-24 08:45:16 +00:00
Henrique Dias
fa2ab280aa chore: bump frontend version
Former-commit-id: a381a7cf11629dc1fd8c847299f90b931accf2c6 [formerly 8da5f9853d69fb4a77a9d563be75408a1c0abf26] [formerly d7eaec9372fea8b12154755ccfb5a527e7d4a105 [formerly b0e3ec25ba]]
Former-commit-id: d745e4d51195a9d054bec17809f6a2c4da296c94 [formerly 03513fff5e0c16d3a2d694e5e2a76465157b1bb1]
Former-commit-id: c94620ff90019ee0e725fd1fa16017368a8d9715
2018-02-24 08:44:31 +00:00
Henrique Dias
395801016b chore: setting untracked version [ci skip]
Former-commit-id: f35ba7ce165f0d16b5943a26f713cfdd701d1ea1 [formerly 6a439c90d9c04a9d7c946444f1177b328f2b4735] [formerly 85ae45844946d0f4575b5fb1929fecb9a9a56b1b [formerly 52803ddb26]]
Former-commit-id: 1678fc7a028b881e4e7c7a721adaf51120877b04 [formerly c5a6dcf31959b2444d38a93705edb7ade958122d]
Former-commit-id: 73bd93eac053a1857d034f30af66a3f1fee3bd36
2018-02-18 12:27:49 +00:00
Henrique Dias
30ed82a70f chore: version 1.5.4
Former-commit-id: 1ad07843678a00d0f24d490dbdbbe5c211782c91 [formerly f0328a485087490f0f6fb1bdb8751ce0377edb63] [formerly 381a1863aa910ba03b89b47769b575f6dc2869d6 [formerly 83af6f2720]]
Former-commit-id: 8bdb8c1913820d84a3b504a7d55c98cd675baa58 [formerly 6b84fde09c4e03b8d9504d9786ae953e69d83402]
Former-commit-id: 9ddd4867df78fcbf7cd8302ab408fef3cdbf8906
2018-02-18 12:27:38 +00:00
Henrique Dias
ab643cd0c4 fix: not being able to change settings (#359)
Former-commit-id: 6230e0e979ca561a778be5f1aa245e85adb808e9 [formerly a14bfa497f716aa95a6b24d04e09361f06ff0b31] [formerly 008421161a7563ce29631cd103eef34597dd211a [formerly 7e962180b2]]
Former-commit-id: 3ac8515e4d0d2fff862af27ef14b23a8a66226a6 [formerly 83798c187f0df689f85f4118140661f04c051d60]
Former-commit-id: 1edf72e1db7824b1a64fbd97889835d20d9af500
2018-02-18 12:26:07 +00:00
Henrique Dias
85e5beaa4a chore: setting untracked version [ci skip]
Former-commit-id: c61d0cbd94e07432d75926fdc2c23dc365674351 [formerly f48aae15e3a532a9988b63be960185fd839db46d] [formerly 7807dcf654b3a05c2743b63fbd63d3a42e4381fc [formerly d117e4d005]]
Former-commit-id: a8fcba07f677764ee58f5bde4f10cb7dddf18bef [formerly aba5eff7c0ea571e728322e33070a977323f194c]
Former-commit-id: 3eb36b35a1672e254b046131309556ee22b1845d
2018-02-18 10:03:45 +00:00
Henrique Dias
3cab34c68b chore: version 1.5.3
Former-commit-id: fdf8f683da6bfb0c9c5f653f89969ed28a5fac86 [formerly ba0afcdbb13ea6040a77397d9b5cc1844b04d3df] [formerly c5625bc490f452970645719cec512f62796da98e [formerly 13030c7ace]]
Former-commit-id: d3fd31bf729a46295c53b3bbd9f7d2c09ce1ed13 [formerly 8278bc090fd8b99ef07b3d376d1243f14c8aa7aa]
Former-commit-id: ca391495213b2523fbde1c2aef1ee7a7818715e2
2018-02-18 10:03:34 +00:00
Henrique Dias
8299f8ed06 chore: go 1.10 and fix linters
Former-commit-id: 289bceb9a90eb2422a69010863e7f2691eae357f [formerly b0cbba626a1185f95c6ce98d453cce99ee208e97] [formerly 90388476afb899550d56c82f836203e3d7942df6 [formerly 5c188d9dd4]]
Former-commit-id: a318b0f544706102d05a1f6faaeb2bbbd11ede29 [formerly 05b5bf7216959990c8cdccebae5fd91769aa9596]
Former-commit-id: af8ef1c7dc5926a9f6912249b2c0a334452c239b
2018-02-18 09:59:49 +00:00
Henrique Dias
da05c5048e fix: bypass errors on symbolic links
Former-commit-id: 20cd8429be62bbe7c4f2ee48f7dddc2f389d5117 [formerly f857fe8d323a25e00e193f959aac605d742d7f15] [formerly 2c4ef521c756b902b7914a42958c163db85c2cc3 [formerly df453ca634]]
Former-commit-id: a638071b19674d82400639a142cb32085c20d1d9 [formerly aaabe20901f149ec00f4eea1ac730a6cf9f30856]
Former-commit-id: 43a13d56401f6b18fee8cff4806f960cd5683314
2018-02-18 09:49:40 +00:00
Henrique Dias
071e1ec19b chore: setting untracked version [ci skip]
Former-commit-id: d3e7532c6a00a899c1447cca4cd995e1f8feab73 [formerly 4d445abd785ae0adb8c8d0d748efbffa4ac2d001] [formerly 098e184c167f80cf3780e043ce941b3b36ddb41e [formerly 22327703fd]]
Former-commit-id: 84da73349f055e544276fafd9d3b4663ebe4e7d9 [formerly 28a71db5fb466aedb66045068a20647f192d12ad]
Former-commit-id: dbdc0c0a3953dbdd941cd3310bedbfc3d957362a
2018-02-04 00:40:16 +01:00
Henrique Dias
8884e68806 chore: version 1.5.2
Former-commit-id: 590181d208cd1a1addabbffa5c860afe234fbc60 [formerly d04974b17bc5cb290eca029c8e99af7d8a8555e8] [formerly a138ec0dba4609b2093dea1091ec8a4141504ae9 [formerly 60026f943b]]
Former-commit-id: 09ecb88b44745c160aa1db5262d299ce249b95bc [formerly 8458b1c621fa766998da3a886ac990495cf771ae]
Former-commit-id: 0a0bb60c235a1a2a8b98282d9e63ca5defb7d90f
2018-02-04 00:40:06 +01:00
Henrique Dias
68bfbe5103 feat: readd caddy to this repo
Former-commit-id: cf48e35cd8c5ceff57d1353c75ffacd1de96e9ad [formerly d62bc138c736881547184977110cd622f2d31847] [formerly 4270b9fb5c907097ce6babffcedafccb5a8b6356 [formerly 385cfba0ff]]
Former-commit-id: 04e6142a81d677781664c9a79e960465fadd3eb4 [formerly 2152b2410fb078914c788bf7f15ca8028af54c58]
Former-commit-id: e88a3fce1b9d16421ce9c1aa9c63c90705878bd2
2018-02-04 00:38:07 +01:00
Henrique Dias
4a7bdfc59b chore: setting untracked version [ci skip]
Former-commit-id: bf80464d9d029dbe2ad94e6a0578767051edcd0e [formerly 338f2cc8d8e86b6666d692fa1497da3acf0bd5f7] [formerly 2ed27b9f856328760b427bc0ad19eb62a04aabc0 [formerly 05cca04f2e]]
Former-commit-id: a7f4dd93d50011d538a206f6d5e317407c33f8bf [formerly 2386141b2825821c379d15bb183fddad6eb80b4d]
Former-commit-id: 5014565536c407489923ec844f0818b9f671d2f4
2018-02-03 00:15:05 +01:00
Henrique Dias
b54a5cda59 chore: version 1.5.1
Former-commit-id: 8b5c4c9bb6373d53f0e8aee54b338c717e53a8bb [formerly 67714d7f475bbfddf77427860f038cec27764eaf] [formerly 3d1eb5103718e6519089467f9e0e3daa0f40479b [formerly ce06238423]]
Former-commit-id: 3e2400fd4b834a53fe6ecd8392d0f23a40bf45ed [formerly f15d2d67c065605ca52cf4fe32a644fe5b1c3553]
Former-commit-id: 11c1a8703cbac67cb5b4aed103e81e3db99e5851
2018-02-03 00:14:53 +01:00
Henrique Dias
418ce4fa15 feat: add german translation
Former-commit-id: 5021b155e5e191373a738f209450e968faab5014 [formerly 1f22f637a5d4d33fbed4519ca07881a407e629c1] [formerly a4de3ae977d9bbf7562544d6b31e795877fba167 [formerly 7392c9637e]]
Former-commit-id: 058499b5e728c54e8d2530093e824fb06e969206 [formerly 2d351f9a003955c7b7ed9986a7cf8ecce099a755]
Former-commit-id: ea6d9c2dbc2d2b230977ac06a9ad1a947c3f9b3e
2018-02-03 00:14:31 +01:00
Henrique Dias
6e27059f25 chore: setting untracked version [ci skip]
Former-commit-id: dbd4a231305b18e0c44ed6bfe2579ce57daa86d3 [formerly 7b516acecac4a5115aeeea00069568d7a4258a73] [formerly 629208fd6a67debd2ce9914b4607a5c92cd4a278 [formerly 8bf8bc3a15]]
Former-commit-id: d7556c9c4943edf716afec49b87ef789e7544d8f [formerly 9cc4bf24fc00ff27f97ba391e4faf2fef341de3f]
Former-commit-id: 01c3a4ad98ec88352dd20fb7c371920d71668075
2018-02-01 16:19:18 +00:00
Henrique Dias
7dacc97e7b chore: version 1.5.0
Former-commit-id: 3bb87b07b493a17a5b06d189bf2b0081b1dd26c4 [formerly 89933c61a34d1b9c63204436e3b3a055c184d073] [formerly fe2b8550a40ab568af209454c9385a6c171fb607 [formerly bbb47d0bea]]
Former-commit-id: ed555f48c83a847f2972feb0bfc487c4f4647570 [formerly 81d38795a9f4b657ed150007f0aade3da04ae8f5]
Former-commit-id: 92aeac43ccfc83eee946217c8824636015432878
2018-02-01 16:19:05 +00:00
Henrique Dias
a89701b746 chore: add circle ci and use external assets
Former-commit-id: a474183e1779f03ebbf0feacb6c657a7c3f32fb1 [formerly c2c77a210a1a121f6d3ba5331093a8a0b5ed9f1e] [formerly 8cc259f949bcab23ea5bb402c2f551428fa7f22b [formerly 040455b4ac]]
Former-commit-id: e05cf0627cde1ae2266c06851590573e5bdecc6e [formerly 458fc2c269daa31cc18a4132a4c801f748a610af]
Former-commit-id: 946b8ed702254d3c11f1b791c790af606f2a68f4
2018-02-01 16:18:44 +00:00
Henrique Dias
7b58b1fbf6 refactor: moving repository
* refactor

* updates

* add circle

* update circle

* fix circle


Former-commit-id: bdc8ecd8766e35f9ab7a9e8bd9dd62206bffb37b [formerly 0d28166061f5c8e573e916797abef67e33a83cf2] [formerly efd85c08040565ba75e06b3d7d7b16366d36325a [formerly 613a3f2811]]
Former-commit-id: eca6ad66d686a6737d81dca5e00f1d46a75a217a [formerly a987246f7c0940e8812cb4d0c1b0514b708e8c44]
Former-commit-id: fd882cf0d2216dcfb035a703011eeb1a2f79da9f
2018-02-01 13:38:43 +00:00
Equim
4d93ec940c http: download: use PathEscape instead of QueryEscape (#340)
Former-commit-id: a85344dc54e40ff15cbd6d2a917df7d273a386ce [formerly 323a8d5bac3f44f7bda8e52bcaac16e9dc272fbe] [formerly a0960ca476d5840dbd25a8bbc600d21e7f3624f2 [formerly d97f17facb]]
Former-commit-id: fc84005e5d05d27829fdabd0b28a681969ed8942 [formerly a11d653f0ee1b370f6248ec4d671f3f200afc898]
Former-commit-id: 5c0d556c93fc37b8cafff8b01b09fa9572cc13ea
2018-01-23 08:28:08 +00:00
Henrique Dias
efac18bfef chore: setting untracked version [ci skip]
Former-commit-id: 08af2d65b6fd1d9fa6320f91f6cb2a53fa9c8776 [formerly 08212a5a691129b55478ad0f313217ad5373a15a] [formerly 0a949b0c99e245693aea091117549d999ce04b42 [formerly e171f7ac12]]
Former-commit-id: 163b87eedcebe4305dcaff878e5c3f990cc9e73d [formerly 583b87fd5df07143f6758bb2a7db8c6ed51c3485]
Former-commit-id: 4946b9e1b7889e090a75369a8693c7700cd0a1ab
2018-01-22 08:52:30 +00:00
Henrique Dias
7330997281 chore: version 1.4.6
Former-commit-id: 0e8638a2e0a27e9ef097eb634e3998e5dad64ebb [formerly b322f42236da92471bcd43dcefe54b0d64b9791a] [formerly bec8a75ad3e69c7d349099b7c6d926e3c704c642 [formerly 9cd462502a]]
Former-commit-id: 0ebf3bc0d6d3fd5d3e3fc876ab404b47ebbc6bf1 [formerly 1edceb43775dd729beabedabe44c9516811f4d44]
Former-commit-id: ab52b3a238c41709bea8165b0b2bd72da0b29322
2018-01-22 08:52:19 +00:00
Henrique Dias
0787522d7c chore: setting untracked version [ci skip]
Former-commit-id: be1de8b5ac1887c021b03467f49840377558c8af [formerly 2fd31a54ae462d951f6c1bb481c4ea08d588b552] [formerly 5cc7edf5823b540a486d7702c24bc6ba00c8694b [formerly 31b464e9c3]]
Former-commit-id: 0d7af8186f4957ab26a0be82ef7f1a4ae9632e3e [formerly 16a582826f79caa95807a160c2dd5ef2fa783c5c]
Former-commit-id: 1ccc51414cc6a787b1e330e68127b192e0168c05
2018-01-22 08:40:25 +00:00
Henrique Dias
46df72ac0e chore: version v1.4.6
Former-commit-id: fb9d41965a36f9be671b5a5166815fa361c92ce2 [formerly 58cc394693cb65256dc0e56f96ebc1eb86181e3c] [formerly bb622a876fb325725188139dead3758213af32d5 [formerly 5650610bb3]]
Former-commit-id: 2a292b4ee3ccc1fe54e244fd05a8e47f1b92d9cf [formerly e07f41821c62119a32a76f613eba7d6dda36ec2b]
Former-commit-id: 6b8543b02c91c3449dba8847b72086abd16397c3
2018-01-22 08:40:14 +00:00
Equim
6839c15a7b fix: recaptcha fixes, auth fixes and line endings
* http: auth: remove unnecessary fields in recaptcha validation

* http: render: never expose ReCaptchaSecret to public

* build: dos2unix build.sh


Former-commit-id: 21908028289e4a5d30b5a2c1961abf163b1a93b6 [formerly b634e3e4da4a616119f6bc15ae92f15073f019fa] [formerly 55efca9d070539f346215090517abde1ec788be4 [formerly 9b8c2862e2]]
Former-commit-id: 70df1f0443977f6f2b101b946698dc3466aa6db9 [formerly 15195d4c28060aa1eca8f03ad0b77576ac8d9181]
Former-commit-id: e22d026e74a0cc800ad7281c35e4157037849e37
2018-01-22 08:35:39 +00:00
Equim
d50dc90a54 frontend: share: fix #335 (#337)
Former-commit-id: 116629d99a0512b82772468331e829e2486af3d9 [formerly 71a073a0d7ee1e27b8a79afbb08b4387e94ec53c] [formerly 40fa722b1bee8aeee021455c20ea10788d87a739 [formerly 93566aceef]]
Former-commit-id: 4027d444c5d9b9915fa97e4b82711dfa5499f080 [formerly 1adda5ac2fcf49a27042541ae8fb0b1f3d820ddf]
Former-commit-id: 0504804487188a7bc9330e19ad1350a45fa6e5b9
2018-01-21 19:47:35 +00:00
Equim
4039efe4b2 fix: http wrong header (#333)
Former-commit-id: 6d65d8aac2314998c01c4a04e05395e1a2553045 [formerly 1ec8cd98f322298f5c5da4747f05189bc2f2ddf9] [formerly ea74b49f932daa9836df7cdf51b8e9cd6d043175 [formerly 53240ef9dd]]
Former-commit-id: 2cbd9e68f132a1170261b4b9549a2cb79b0059d8 [formerly c47d9063e48e8fcf77ece4ab75a10b588a8ecafa]
Former-commit-id: 203b0a61ef2045c62f3ccd94f62625f0e19435e4
2018-01-18 15:36:45 +00:00
Henrique Dias
2ab1ea44ff chore: setting untracked version [ci skip]
Former-commit-id: 1243e66e54147d73108374296220395f90c7aa92 [formerly e538d9176df83d4dc3b9b32d826489b89f1341e6] [formerly 6a72ab507b84de0adad11ba67831595eb90113ad [formerly 8fb3798c12]]
Former-commit-id: 1e142e2483cf4ef98b6ebfd048b2aff97b19c270 [formerly cd851d42b067f2ebb0f59124686c8a3d6eedc260]
Former-commit-id: e8426e1fc13beed881962cd62dc23f123e7a5ecb
2018-01-14 10:28:14 +00:00
Henrique Dias
23a2c60d9f chore: version 1.4.5
Former-commit-id: c1c687c85477814782ac1c37f1153222cbd66aac [formerly 62f611d73f4a94b1a8c38be469edbe4b9f15b128] [formerly b18279cba8d103941a0c999e212fba4b4c36d1f1 [formerly e1836e2274]]
Former-commit-id: e735874c31bd3f07fefcc528e63e83520b1ccf8a [formerly 121a4fd4096b00d3a03df57bb6872f02cca94a47]
Former-commit-id: 79f9ba3aff8aab04125277fc8298aaf3416d3648
2018-01-14 10:28:02 +00:00
Equim
54e66bbc05 http: download: improvement for range support and I/O (#330)
* http: download: adopt http.ServeContent

* http: download: deprecate unnecessary temp dir

* http: download: adopt http.ServeContent in inline mode


Former-commit-id: 9ad519b51bcd7bebd862ccb65153bf418aaccc24 [formerly 6c2ac9b647a5cd5a67b7f688502e185a6180a34d] [formerly fd8dab4db58c098dcd5fca47226a50fa99a52aeb [formerly 30efa23a85]]
Former-commit-id: 54cd985769d20c02f890ffaa64ed02153b9fcff9 [formerly 7f0bf159ebf192055fa2bc346a0545d0b3007721]
Former-commit-id: 58e72dbdd1dc8ae43f4d769632d892ace0a19400
2018-01-14 08:41:01 +00:00
Equim
69b262f91a fix(i18n): zh: minor fix (#329)
Former-commit-id: f923123d02d6aa875bc5c3a0171920df625b1787 [formerly 494e0f97f54b823fb14ed5b4ac028942dbf0077c] [formerly 933be3dd0a5b167e822d73a4877c1ebfb55ae4c0 [formerly 94648c92a2]]
Former-commit-id: e01ef36d8dbcee0ce16ea190b2d9afe6a9751c20 [formerly 59ca3451e6b26e9ad2811ba7c352778e8acec1ec]
Former-commit-id: 799fda14369c565d68c62133b7cd62ea7f1e75e9
2018-01-13 09:49:47 +00:00
Henrique Dias
731cc45e05 Update README.md
Former-commit-id: 3c5dc2c840b4ea82d2b88503b89515d8d6e1b590 [formerly aa5a9564be7917bc2bca82870eb61ccc2cc75347] [formerly f8f01920e7b54e52b012f469d917fb6f7e94d94a [formerly 300b55f2c7]]
Former-commit-id: daae1ff5c473b6fa583e270538830a046831eb2c [formerly 73ef7dac5d799cb3e321ba1b4969b125aa71c52b]
Former-commit-id: 715ce711701440e20da9512272fcd31922435323
2018-01-09 07:30:42 +00:00
Henrique Dias
a3960ff9a3 chore: setting untracked version [ci skip]
Former-commit-id: 9301c7f3b4a71d6ce1e41e48bb8b61a0f4878f44 [formerly 6e69aa23419cd7e42e474c7db9f1cb6dbe5955d9] [formerly 19b578c58faf698f3bfceaeae33cc085801b5d9d [formerly f2ac4dd262]]
Former-commit-id: ca520cd8264c71fb6cf0f0bfd88c065d8c55c08e [formerly 83d060fa29de8b601f40acac64857044f352a141]
Former-commit-id: 38ac4f4fc95e531027b5daa737987bfecccbd244
2018-01-07 12:40:42 +00:00
Henrique Dias
5f986901e9 chore: version 1.4.4
Former-commit-id: 0ab1627b929b5c4be5ebb66b97d7f81fcb480395 [formerly 6a569e0973cb86401d95dcc9285ae81b2b9b49ad] [formerly 571700b6bc7ddc08738f3f887a5cf9dfe127cbda [formerly 93b823e6d1]]
Former-commit-id: a875a5b56484e0d392ddf7a8c60cf022bb46099f [formerly 19a767e19ff83ff34a36b3845d6b8e91063c7167]
Former-commit-id: 4c98b119b38be29e52fc502d635a05491ea9e9a4
2018-01-07 12:40:28 +00:00
Henrique Dias
0b4d8df22d chore: update dependencies
Former-commit-id: 0e9c3b0caff7d2297e06985cf7361607e0e9205c [formerly 397e6c26097c550d8ca74e554237502964b337a2] [formerly 1fe8a4d39b94285a8c5ffb089f6388a38aacb12a [formerly f29e210e6b]]
Former-commit-id: 352a198a53b3589f40ca83148e64149a67f7c2a3 [formerly 93bf553394ea1d30190412fe77db0d456146d177]
Former-commit-id: c07af559899e9d0851ab4ac2573b57bbd8efaddd
2018-01-07 08:20:58 +00:00
Henrique Dias
9619b4ee1d update example
Former-commit-id: 41adc5e8fc05d20caa0d293224c3b987b3d18a9f [formerly 531a461aff8e332598842e2d98355f77ea8caa7c] [formerly 3f84ed6e4bbe7d14e2a1f6221edcb069b2b95dea [formerly b9a0ac4459]]
Former-commit-id: 1eece7e6b527ea1daaba2424399a76e1c702bb43 [formerly dc079172134ddafd696c910f440f4597be1983af]
Former-commit-id: ddb46ff3aae922ecb4818862cad0b8920d6899d0
2018-01-07 08:06:55 +00:00
Henrique Dias
c75f3e0f59 chore: update build and publish scripts
[ci skip]

Former-commit-id: 68fc4cab3e092dbf192f02a7b69cd1024be6095e [formerly af8599c8c136f466f33b3060c1aa0568054617fc] [formerly fcce660652925df3b7837a503114380f6eab269e [formerly 32106b537d]]
Former-commit-id: 42514c2f46abf0ec4533ed44edb2ed16ff1220da [formerly 0bf28005af9a16de599a99d7c0fc543b5208729f]
Former-commit-id: 2f1b4cbd7bce86943ceca8a3f0834a1ac81edb45
2018-01-05 10:15:26 +00:00
Henrique Dias
6d71ab08ce [ci skip] auto: setting untracked version
Former-commit-id: 2fed0803c7febc91e7b5bb3d33d85b7ff560d5d7 [formerly b7153111a10d7bb8374469aa4504b7b63c4f9999] [formerly acd233135fd878ba16bcf73bda9b4358f9a7473e [formerly 1218966226]]
Former-commit-id: e0a33076851b5927794180e4b5bfd1483d51ebfe [formerly e150034ec51997ec1ce075ea28e51a79b60c54d4]
Former-commit-id: 9a52d3ec859ed128606ae01d2bcf6a9ef08cb2b3
2018-01-05 10:10:49 +00:00
Henrique Dias
121c695c1a Version 1.4.3
Former-commit-id: 105f6e3a206963eb810ed178f5a3d05e4c05693f [formerly 95a0eef30242460e822aef2f93ec770f6d82702d] [formerly bb726ba819c7f01330db8dc7503b2f869ace40c0 [formerly 74f6ea6897]]
Former-commit-id: 9db1edc8d09521068b70bc7b81e5d2586ef949a8 [formerly e9e78572d9b296f160b5c311e57822a0e960d35a]
Former-commit-id: 4513e831114a23e30822734d62191a7a49d50555
2018-01-05 10:10:40 +00:00
Henrique Dias
6a1f9bbf69 [ci skip] auto: setting untracked version
Former-commit-id: 500c3e1726327fca7ca8421d70f46eebe76702bf [formerly 09a3811e6a1b87b159fe6ab562f968aef1eeef20] [formerly e85343d82a8de4c9b93f1d5e65e8654e85b67f5b [formerly 13c12b9130]]
Former-commit-id: 26e2c13658759ee83e6d2ec7d851a1cfc2b485c7 [formerly 4eb961b41d768ff23b4d00163f4c0e9512829fbd]
Former-commit-id: d6a362c2611bf9ef6267be25a08e47a8d7f58b1e
2018-01-05 10:02:58 +00:00
Henrique Dias
ab54bc3c57 Version 1.4.3
Former-commit-id: f47b39a9b2817c603578b2623919403e30d3af22 [formerly a8b23dd12fba701c0cbe91049f263318d33a8be9] [formerly 7de9b5f8f6d1c6a962b89c540625b68cd4cbac0a [formerly ac3f1482c6]]
Former-commit-id: 56c305fb8ea1a017daf051ce8f630c2ffddebb7b [formerly bcd1d113a852499dee8701bd64e49df8513f8538]
Former-commit-id: 95ca9218c8b98432f9c5e0019fe619c0dd417e34
2018-01-05 10:02:49 +00:00
Henrique Dias
8a10baa815 Update .goreleaser.yml
Former-commit-id: dce13b52b52d980f11ef90f08b229c99ef74548c [formerly 45b6e868899a14fad61e61b5603da5dbdf1704fc] [formerly 90aabc167231a2d164afee7ab966a465146afe63 [formerly d8f057757e]]
Former-commit-id: 43bae9e293b2e3cf0b8608c344dadff88de47380 [formerly beff2d7f954169e917950549a353f5efa033f906]
Former-commit-id: e77e853b8e818863bff7164b169b411eaa6732fe
2018-01-04 14:04:09 +00:00
Henrique Dias
98c22ece8d [ci skip] auto: setting untracked version
Former-commit-id: 8ddd21218dd4fb6e00cf083a80199d2a4339af2f [formerly 3406ebe12f6112ed751092e5f831c77ce459c6e0] [formerly 143f9d23f5fa5e5545fd63e6f44ae9228e6c093c [formerly 5bd60ce05a]]
Former-commit-id: d7362d24d7d872cb722d462fab45d2a48b37b1d5 [formerly c7c1cfd6d43642315e9a7956211ede7eb0a6b5e3]
Former-commit-id: c42269de8c2b7ecbdacaca0cf383c8a29dfd239b
2018-01-04 13:50:31 +00:00
Henrique Dias
63247f6e8c Version 1.4.2
Former-commit-id: 488d6575d81275f6c5e1c04280a5def6aa700117 [formerly fb198ae1767fc52ed8492657f33f5bd91d4d4283] [formerly b100a438db05a237c2e7a081fbdaed3a5ed6ebae [formerly e7b372f548]]
Former-commit-id: 3c418fc25a996e829e35be8f49eec0c43bf1829d [formerly 6568a1dd89e6a5640a2ad9fde224303813f219d0]
Former-commit-id: a1355be166395d2bc0d0a4a5a7170b36c73df094
2018-01-04 13:50:19 +00:00
Henrique Dias
58dd812008 fix #269
Former-commit-id: a0b8ed91061292e0f155cee9a7865609daacf836 [formerly e6bb9eaa82b5704f3fe29bdec50f6bb4f55304b2] [formerly b443cbf5c6d7946ff3cfa44493449b5f0d75d830 [formerly 02df167434]]
Former-commit-id: c193caff6faaf78a16375960893be9e253869d3c [formerly 6c84d234c9e1db432027bc159dbeeb77e9c35031]
Former-commit-id: a48c3851511472efc47bce07ee2509fdd8a44c4a
2018-01-04 13:49:41 +00:00
Henrique Dias
1575fafec8 [ci skip] auto: setting untracked version
Former-commit-id: c497913d120be4a71f7d2305600e2785190f0e2b [formerly 0126f289afd78bc006e5e0fe383670dbc9df4fd4] [formerly 12899a40ac7b8a94c3930dcdb3101d121c56cbc2 [formerly 9da06a7010]]
Former-commit-id: 866590120ccd5ddc189d36e352c637cabc82f81f [formerly af0b154bf6db52c01e9d0b10f3d6678319727bca]
Former-commit-id: ff3c428b12cc8028b21d8585a9927e826ebdf4cb
2018-01-04 12:41:34 +00:00
Henrique Dias
8c935eb51d Version 1.4.1
Former-commit-id: 77ee0108106777f2de0719eb6ea50bcad12f8635 [formerly 4dc3acf5b7eaaa687ccfced7fc463e2b7e7104ea] [formerly 3ec2bd1fe0b8e364621204b9aa1732cbc7828199 [formerly 44d6730073]]
Former-commit-id: efd15158f953966190c8a8e9310801a89049ea4e [formerly 56a49a89f919d70486b6db126e84e5997bd6d261]
Former-commit-id: 969b87ac24214cb7dfc9429253724c68aa0d46bc
2018-01-04 12:41:23 +00:00
Henrique Dias
7f3a26e1c0 fix: error when user have no commands; close #293
Former-commit-id: 9e1ebf686f12d76a202bf8a3b0b16f14f8eb713d [formerly bfc761cc181d6d8880fd86396e69bf5894806f6c] [formerly 774e09b49a2dff07becff48bf048b3b0bd8353ed [formerly 65d3c0fb9b]]
Former-commit-id: 8ab97c0103cde1a9bcf69c1e9af994241fb9d124 [formerly a25dc7feb0755122c7329e3a3bfa61f74418467b]
Former-commit-id: 92e21139ffe04ab23406352e0a5b6131e8cad084
2018-01-04 12:40:45 +00:00
Henrique Dias
fe834aa244 remove file
Former-commit-id: 95f665f00dc03c130afb5fc45e8076a869c30222 [formerly acae04da4a0d58e689b704ff405a749c4fa43c05] [formerly 482666a8335cc216fa706d5175c8a75cbdb073df [formerly 0781b961da]]
Former-commit-id: 57a2f201668aad631fead876207b2d5620e202dc [formerly 9f1344480aa6589652ce34dff2496dc36b9d631c]
Former-commit-id: 2760b12b251f53c4421b80d5d5122520eb92cf40
2017-12-29 17:31:21 +00:00
Henrique Dias
6620a1bf41 [ci skip] auto: setting untracked version
Former-commit-id: 0b2303648bf1c82d04b20f439a76d2ce37cfbc4c [formerly 8aedb0827d0538efa6ec0d88082e3df2e85b6e46] [formerly 91dc35e45674e83e44ecb66e7da2bb1d7634efb4 [formerly d431f5f0e4]]
Former-commit-id: 551cf4271e33f7893ecbd7290074d0d031827a94 [formerly 034d533f73603df46d2c7efccaddd17bb0f37814]
Former-commit-id: 1cf3cbcb484e5128ac9564516992f5fbdaddfc28
2017-12-29 16:46:22 +00:00
Henrique Dias
dab08325b7 Version 1.4.0
Former-commit-id: 368d4ecf114fb68ca038e4baf3d840afb2636ba0 [formerly 42d7e7c749edda5dc525f86e775c999b69dd0343] [formerly edb264480cef71783fa0ec799c667710b48c0e76 [formerly 0848d5b135]]
Former-commit-id: db6356cdcaf40265c31e4aa08c88614d2aa1f886 [formerly a52ba320deffe84af53facdba3606b9d032118ea]
Former-commit-id: 6ee806954d2456421fe737541dfee136df93f54e
2017-12-29 16:46:12 +00:00
Henrique Dias
ddb4685257 Update .goreleaser.yml
Former-commit-id: 66c518285185e0a94bd1ab865676e3e5f409b76f [formerly 906313ef1a1747ce137bcbe7d54a20244b04ced9] [formerly 4724da443d609b6ef27851c2b79eadb9d7cefa4f [formerly 2fc342a3e9]]
Former-commit-id: 90b7247bd50078d5321c9dc1c51149f88c63989e [formerly ba9587d799234e3cd1c2888841fa6fc12227806c]
Former-commit-id: 9b9383f2cbb64775944dc68d882454d73b406246
2017-12-29 16:45:21 +00:00
Henrique Dias
39dbca3b15 [ci skip] auto: setting untracked version
Former-commit-id: ea04ce9843fafcc33961d3aacd5f31b5f93d1a08 [formerly d97fa13252b9201ea17bb9aa188b7f93b03d3f6a] [formerly c647d2080414bccf957ffb713cf029219780f606 [formerly 2b9cf83feb]]
Former-commit-id: 82f4a48d20d439257a70e49726bc26ddbd259c58 [formerly 8d3787cabd875c3ee84044051e5f97fbf1922585]
Former-commit-id: 45a6d0ca105b6b9591928d69db81c7c7777b62df
2017-12-29 16:35:29 +00:00
Henrique Dias
a02bdfc8d5 Version 1.4.0
Former-commit-id: 3a8e072916c7ce76104d67e805c202cb95568c41 [formerly 6c77d93905851193699f1651653de748fc8f0806] [formerly 8563da03483dfdc77cb65736deb60084ae76df40 [formerly d98b58e0f0]]
Former-commit-id: 745caf9deb45ed766f088d7a52aa992191960a40 [formerly d2e6c7c774dc6b58b9406081358730f4dc5c573d]
Former-commit-id: 37ba109c46b21bdff083ee63451cb54bc3243e3e
2017-12-29 16:33:50 +00:00
Henrique Dias
f88721cc83 chore: add more build platforms
Former-commit-id: d3442dce2a31d700cc0778229819ee3821bdcc19 [formerly 218c9d7fb7fa28546797c50d03956362829407a2] [formerly 6abbb1b814a037c106526506ee1ca999dae54914 [formerly 3217751cc3]]
Former-commit-id: 4fb0fecd3b19b145369d751f454b5c079163c9f4 [formerly c428f4e11ce84ca60ed7c2d968da9c71c1f23d11]
Former-commit-id: f22d06e1d43a9eb68845aa2490c72b187eba0018
2017-12-29 16:32:32 +00:00
Henrique Dias
95544bfed5 fix default view mode on caddy plugins
Former-commit-id: 41e6e855b611449829b4aaab2381685da8b94bb0 [formerly cfcd8802666a8869a2e2f8229d86fee05e088d4e] [formerly 72b0f44e1bf1ab0b27cf327cfac6977049e2dacf [formerly 258557fb57]]
Former-commit-id: e17e5ed75665cd53ec8a20b2833268de5ffa5e47 [formerly 5b8571fd62e0517f1daa72fbb95d7c99ba120c6b]
Former-commit-id: 39ebfa5155c60f71e9f565de875594c3b07b8bac
2017-12-29 08:55:03 +00:00
Henrique Dias
999ee1c2f5 [ci skip] auto: setting untracked version
Former-commit-id: c555833bd28140ffed26dd56d5d1f03ccdefe8f9 [formerly 19be792ade9e4df3c4cc0765d819be35269803b9] [formerly 190d7e277e3d94b22af59288b0403c1e6055ca58 [formerly dc1f51cfa9]]
Former-commit-id: d270e36617e94f506828700bab84310aa6199750 [formerly c414ab0a208bc6fa5a4236bd269d42c2fab3ca8c]
Former-commit-id: a82ebba0e51012db7689b41f81c6cbcfdac9accb
2017-12-27 16:20:03 +00:00
Henrique Dias
a61ade62e5 Version 1.3.12
Former-commit-id: cebe84ae6a9b87fec49fd1b2966f58174f49b616 [formerly d8fc91407b0a3cc7616532f14e5ae9b8af49ca11] [formerly d52eac19847da77e49817878f2930c8f438af49a [formerly cec257787b]]
Former-commit-id: c8913636186c289c615ee29d0b36998484d39023 [formerly 67b4f850b4452112f63f2b10e6ae9f9e8848d26b]
Former-commit-id: 45593be374fb4c925a93c26e7ee1288e53c3abf4
2017-12-27 16:19:51 +00:00
Henrique Dias
08de5efeb4 fix: stream file instead of putting it all in memory (#303)
Former-commit-id: 2dc1092f4111870eda6fd51f06cf6dadcac27c78 [formerly 6b21e8ca91b69a70aa07a60099e6919cf1f29fff] [formerly 5860c903ca50aa9a29f91c98d144e859fa223977 [formerly e6a8e3349e]]
Former-commit-id: f8923f5d3fa5d638170ccd870ed4d38abee42d2e [formerly 1a1b27bb606ea012bb5eb3ee42ab6f1d585e1490]
Former-commit-id: f7a238d6ed3e61b925fa20e7ecca145b1f903dba
2017-12-27 16:18:27 +00:00
Henrique Dias
74f690a71b fix: allow user not to write .md or .markdown when creating file based on archetype #288
Former-commit-id: e2bc376cc78905e9d85596bcb281b1f52647b4fb [formerly d4c44f8625bda57d5659366d2651d8021776c9d2] [formerly 766fc98ad54327498076992a110415750d059bd2 [formerly 390fe1d797]]
Former-commit-id: 6c30496fab170a7a39eacba39827e054089f64ad [formerly 8b3aac4b83339ec9722ddadc3fe225e3753afd94]
Former-commit-id: 85e39aa259af1e628e77d488fbd9c7ea5d207eb7
2017-12-27 16:02:36 +00:00
Henrique Dias
1d4a3005ff fix: hugo full path in URL #288 (#306)
Former-commit-id: 56143acfb6b2817df49998c96f9b70174327c31c [formerly b763216262fd57a06d7f343a96891cc62f5ba358] [formerly 8a09d84e73ce9e3865bcd65a8071f2e5cb48333f [formerly 68c4072bd1]]
Former-commit-id: cbec5adf02b6d83b27c7286546a7a291b2344256 [formerly 94dbfbb4aaf51abcd809f3562a4a8a53945782f5]
Former-commit-id: 3f11f9c8be4f7e9b063789fca73212ca838ce1ad
2017-12-27 16:00:16 +00:00
Henrique Dias
7447a530ee Close #289
Former-commit-id: 6145bac21a69ec5af8b0c9d6f5a343ab66c32c74 [formerly 13a045c4cc6852e88af60b359653032590c8cb48] [formerly 1b279454432546ba44702b792ec83eec00f63a1f [formerly b1c36ec71f]]
Former-commit-id: ef359bdf00c3c64d4877f02de3d8cb505bd6448c [formerly b4f09c805cd6a0f5300a1e608d024ce7af6b60db]
Former-commit-id: 009fb85389f234e1d5f7fc726e1d983fed3b5832
2017-12-06 22:30:49 +00:00
Henrique Dias
fa9396f0f4 [ci skip] auto: setting untracked version
Former-commit-id: b508f843299648b61849e33273041df46c2ed31e [formerly 9e153dd2ff31f0bb769e35f70c2bdba656bf449f] [formerly 864e40ed1299bf717242ddc1556d3f3ccbfc2f89 [formerly 6856716adb]]
Former-commit-id: 88b556096518c23d2db8a26c9c448400172d30b7 [formerly 9b9d9539c8ebf8c4ff5a2288ca04ade387a84351]
Former-commit-id: 625b4ab5af200087a85db6e1402c9bc4a0295d83
2017-12-04 16:10:27 +00:00
Henrique Dias
172bbb1828 Version 1.3.11
Former-commit-id: 4a93c06ece303164400a26def8508b415ce8c906 [formerly cb7e56f73da93ce59e63b74de61a384d49335991] [formerly ee5c57615221b3b91660df2146845b413c972975 [formerly 506570530f]]
Former-commit-id: 3b120ed2a0b36e84dc258862663421240866601a [formerly 641b5b688bb500b711cc4b14f4eec48c10c23d6c]
Former-commit-id: 965b1316ab20445fda0d3b64c45229c98496534f
2017-12-04 16:10:15 +00:00
Henrique Dias
410aa5d9da Set correct indentation
Former-commit-id: 0088ec263439da995dd6f42d0e2ad9b0b42c7c98 [formerly c5232aa97864225d432f04d5d83e0215edff18c9] [formerly d038a6f63e089003de83bbb054d76d3953cab33b [formerly 0dac28fbb0]]
Former-commit-id: 44d9d716ddd2eed8fcfa7bcb92f5f46475ab0afc [formerly 9f9d3a6c0bec92f75b6ad6932e6b1eebb9ddefdf]
Former-commit-id: 9e2919024770313c9ed94c1bc9060f2e45871f77
2017-12-04 16:08:24 +00:00
Iñigo
736cef7127 Add Spanish translation (#291)
* Add Spanish

* Add Spanish


Former-commit-id: 52479d923ca4a91d3cd8b627246de8b70c3a5152 [formerly 53bb5278073dd5abdd96d04b9423811ae78637e9] [formerly fe82800194e49c99d278413e79f8c007bf4dfab8 [formerly 78c68ce2f3]]
Former-commit-id: e1314f8d7a5ae78cfbd3727339016d6b322c4aa5 [formerly a0a6d84f266f512c5f9eaa9c92d0f7b57f447367]
Former-commit-id: 6a557d9ab0e82332b201534276e1c032e682714e
2017-12-04 15:49:56 +00:00
Henrique Dias
f4ceb7163e Update file.go
Former-commit-id: 713c809c9314b3db947fd33e5fae69bbe0058865 [formerly 4dd6de8cddb93b1553a6d768db426ec3eb1f0b53] [formerly c5033b6ff486b786afd6b75e41ff35c3a8c69e47 [formerly a34422de57]]
Former-commit-id: 1028ebd6474ce1e257ef1f81c9f805c74f64994e [formerly 5f2db5f3060c457ff2af82e0e0be89a25d1cbc4d]
Former-commit-id: 609be343302e0a49190ef6f37ee677116e9baa04
2017-11-30 18:22:16 +00:00
Henrique Dias
7bd4fbc0cb Add Badge and Update Deps
Former-commit-id: 8d3cf568a2f901ec8370a5f7aaaf0aae95425353 [formerly af950ac5e3ddc57c599b62937ed8872bb653f426] [formerly 3b9e1a7c8d9ea35b10eec9a82fad1221830ae5b6 [formerly 1f62c26e81]]
Former-commit-id: 31e0e2de46b44cb85f4423be7064f4d6d9552ef9 [formerly 431ed7d219cfec8b98fbe4423ee66c23e7849b74]
Former-commit-id: a851d7f44f290616d042542edbcadf35f856d73a
2017-11-21 19:17:19 +00:00
Henrique Dias
2ed4658369 Update assets
Former-commit-id: 921770105b3b607f2681112d204130a0655248b9 [formerly cb7d152432980c20f5d5cda743992b6a0684ed0e] [formerly e63e514df0f701934dad6744d79c7b7746c372e8 [formerly ec30606dcc]]
Former-commit-id: 725b6820ac82bfab769306f1fc92acb3f690f366 [formerly 56b2b925d513261885fbdc7cc0d3662f9576d56a]
Former-commit-id: aeaeb164f0c2c7579778ae1bd587806b69868c3c
2017-11-19 11:22:54 +00:00
Henrique Dias
735312982c Update Dependencies
Former-commit-id: 76bedea1c27cf4e87cb9255786de3d73e6abd29e [formerly 8c21d31b2c5a22d96f3a7a9042dcd58077d7dcef] [formerly b335f0ac2e16fdc8042255ef1d0dbb421c4b09d4 [formerly 02b2bb6215]]
Former-commit-id: dbc8cfd8755959d7d7f40976c2641969e08cdb5a [formerly 29b617fd9461a72b0d0ab729a6a1d7247c5ec74e]
Former-commit-id: 23a7b57755f5fea3e0d62450e6466267227fb865
2017-11-19 11:05:05 +00:00
Henrique Dias
4ddb3f5a34 Improve file extension checking performance
Former-commit-id: 30aaff2f0bee9dd9743d4acd6a68aafc90addef9 [formerly 967fc0b47a5fb0d1b5e79a8b926f4fdd61b8477a] [formerly 5eaecd069cd3de9ebb5e3e6d0feb04844fc473c3 [formerly c76c69c256]]
Former-commit-id: 11d0c1ae276859eccb7949d96dedbd0cd3204ffd [formerly 63de350fea7eb0a6d621b029c9c8866866462d31]
Former-commit-id: 422edd1298a7ba86dd958dcc7a513a0a3e6d83a3
2017-11-15 21:03:50 +00:00
Henrique Dias
c947228ac4 Whitelist yml and tml extensions
Former-commit-id: aed7606c12fa705954e650ba948d891329d66dff [formerly efd4415075000737c5dc7bb5a38a78605989e05c] [formerly 5656bb7bc09285720f094b3054c70994b51aa658 [formerly 8f5eaee952]]
Former-commit-id: 9d774b10c85ae9456a324030f9b7b0c06e600db4 [formerly 9c7919b5e027d829364fcb658b6b9579caad51a3]
Former-commit-id: 3196b0ea7f550057e411410e083a8c4f8e748240
2017-11-15 20:38:30 +00:00
Henrique Dias
505af7d9d7 Update auth.go
Former-commit-id: e2a955c377393341ac3ccf08d2fba9e3359e72b0 [formerly aaf783e1c2aec83c5e0a4a016f98b9b17ece09c2] [formerly a3be55338e9d4403ae3266cba5ac2451aff507fc [formerly 1f946bd94e]]
Former-commit-id: 53e720dcdc8745aa5de632a5d2676ea1c0648445 [formerly 7069f0e163c34e1890d344066ba570dde674a414]
Former-commit-id: 2aee9f0b0ba181bde240bdcf098f3914c3f512b0
2017-11-15 09:09:09 +00:00
Henrique Dias
2c13ac4ac1 Remove fmt.println from code
Former-commit-id: 6bdb55590fb58a6edc64a3ca946a13ee35f3ad60 [formerly 60939e561228d83df8c588942f6773e5cb508fc6] [formerly 0764f9f8de88d1adbb668c48dfee17c43d59b5f4 [formerly d3eafec864]]
Former-commit-id: c09a0c84177f6f8053269cf6396b64cc17bf257c [formerly fc5b21e08ca0f2ebab30991a4c7f2ee0eb0d6a40]
Former-commit-id: cb8338d463ec7014de5e2cb09009ac872ade06b8
2017-11-15 08:59:23 +00:00
Henrique Dias
b5fbab2072 [ci skip] auto: setting untracked version
Former-commit-id: a15ba929646b6a49aad1c0a1f447c8417490bd82 [formerly 2140e8ebdbe698e68fa7cb80c879749af21a67ac] [formerly 8c2f7dc49612073e633affb68f437b8c2241b609 [formerly 927a1aea6c]]
Former-commit-id: a1daf8141f756ad4352bd26697d073c2468b1163 [formerly da39c59b7c0187c61b80fa4fb4867795f2b60b17]
Former-commit-id: 7b1fc0b045cd1e1d59fb49bb9b6db819e670fd94
2017-11-14 07:25:09 +00:00
Henrique Dias
005b184d59 Version 1.3.10
Former-commit-id: f9c2dd8d2b77b8d5e887562032777a108cc75c31 [formerly 659e0be49e23fed2271489b14db6fc51a25b7e0d] [formerly 57d196da7a6f46d3accb40ed471adbed67ebe5bf [formerly 0c657c3019]]
Former-commit-id: 40ae9fb71bcc1989f00c20cf05b54ebf3db3f0ff [formerly a51a873c5262d30736274109f7d779e5cc45e423]
Former-commit-id: 45946d34eca1ae4198ea113bc886d43f12322a65
2017-11-14 07:24:57 +00:00
Henrique Dias
372bd813d9 Merge branch 'master' of https://github.com/hacdias/filemanager
Former-commit-id: 7b068c22b37003acf5dd60806a828ed9f828fc95 [formerly 10918882c8f3150b57a5cd142e7443150caff282] [formerly be0e1f9cd900feead555280dbff11e024055cd7f [formerly b8fdb487d9]]
Former-commit-id: cf6f5b27bb327bfb00d01e249f8db457543407f6 [formerly e5e0ceee98ceadd4061f2443b6c4a53249e838a4]
Former-commit-id: 2187a74e21e29e8cf5b13bcca6724ced2aae47c9
2017-11-14 07:23:08 +00:00
OopsMonk
52599314b0 fix symbolic links issue on Linux. (#281)
Former-commit-id: 84a15d1ff70cbdcb91aaa7a40cb86604f036e349 [formerly 60e5a702fd98686193c5ee7bfb66698453de05ae] [formerly b863bd64cfc4e953c005f71ccc3fd936456b8a5e [formerly d269e239bf]]
Former-commit-id: 24b6c15a5c3a54a866106eff843bea0d7401cf15 [formerly 6b6c3036a90776bb16d93a4b7e864e4f433f5531]
Former-commit-id: 5b7aacabf2ceb1a5303fd303d5132bbdd711362f
2017-11-14 07:21:26 +00:00
Henrique Dias
f61e71e44f Update Dockerfile
Former-commit-id: 657785108f5de159eebb842d402ef98d512f96f7 [formerly addc47263d93e2895204151aab13539307533430] [formerly 91081acc00772f9fba15eec3362d94cbf9513145 [formerly 6f39464130]]
Former-commit-id: 54dc3af451a3bb3e1fdd114b88e0dac7c1a8802e [formerly 49d5afc124292884245cacdd951c5f9670cb552a]
Former-commit-id: f331a53412d10708e0ac19db04d94f0b99e63b40
2017-11-11 07:08:12 +00:00
Henrique Dias
e5265b6632 Update Dockerfile
Former-commit-id: 2b02497070be694a121f6ae8f7567ee521d2039f [formerly 6c301dfe46f6e1ebb9d92fa5251c23aa6a5c9f64] [formerly befd05696772a79c19330a4d3f0b4651c35802a4 [formerly 44d68a4868]]
Former-commit-id: 9f8661bb18ac3230d4f65fc4c5c8ccf31122daf6 [formerly 683bb4fdbfc8c95f1e69382322a8f1132c3de457]
Former-commit-id: a7af592420975962f5556ba47801f9cd4f009fcc
2017-11-11 07:06:23 +00:00
Henrique Dias
003f361956 Add /tmp folder #274
Former-commit-id: 938bde70202335858fe569949b65c04e7ffc4146 [formerly 37c4c3ac2743f7be8e4a8eec92565e8c3b4303e2] [formerly 74b276e4616904471b27d3478b3a58c2ba09fe42 [formerly 00da35b91d]]
Former-commit-id: 7be322ae95ea19b352cb4799b8927353b69286f5 [formerly c662fbd6eb0dc63624daae038897bcede3f28ed7]
Former-commit-id: c8ef89c3ea2239cdf715ad9f1555c1f28167e4f2
2017-11-10 22:29:15 +00:00
Davor Kapsa
cc8369d83e travis: update go version (#276)
Former-commit-id: cb189a867e029cd6dd57e6abcd70f74949e770a7 [formerly 92b3401b09d16673356c16321a1fd2938a8002fe] [formerly 5118e5894f9dec2ae5ae337e300c033f763be0fe [formerly 0be294a502]]
Former-commit-id: 516ccab1cfd5c713eb79a5ab4907e13d1bda98e2 [formerly 586b5951af545993c9ee4bff07625bfc26a3e439]
Former-commit-id: 77e2897c8571704617bd721e46a50a46f6f9acd9
2017-11-09 20:58:34 +00:00
Henrique Dias
aeb583a0bc Improve readability.
Former-commit-id: 684d5ef09624509fb041e47539dc0a568d1e8ac8 [formerly 3d0b8b2e61c5a60174a1fd8b06f8d1e8a55120d5] [formerly fc6cb1f278dbaa90d7db1c4c96cb3c1cbff06c5f [formerly ac88aab3eb]]
Former-commit-id: 80493535e416cad297aed47e8a8dd018d2fd2346 [formerly 3522c56e45bc8c0e2c89177f96c7f812f6c9a6ef]
Former-commit-id: 3096eb9e8abeee11f2ea447aeacfa681464a1252
2017-11-04 09:23:55 +00:00
pandarong
41f07c64eb fix npm run build error (#272)
Former-commit-id: bb2a5ea8b5949e11629d344c319e4cb0c5d48f0e [formerly c6b89a2ab4c66a1e9f16116906dead677e03a5ec] [formerly eb2a1b5b8840883ee18af987f6b7cf16a9d70075 [formerly 8703094109]]
Former-commit-id: 4208e88d8263785a5cc5bacd1127ce8460df960a [formerly 7d45d39e5913b04ca12998ce622188f3c4b975f9]
Former-commit-id: 6020a51629bbdd71ddc131c8ab9c6b0db5eb0f56
2017-11-02 21:21:16 +00:00
Henrique Dias
98588a66a7 Remove unused commentary
Former-commit-id: 6c214b9e0e640036cb012e1000c6a7506a48fa5f [formerly ba4b53ecb41176513699bc883be694b1be3d586b] [formerly bf971d7279fcdb0a734f0f515edd02c405ad86bc [formerly 45a6fd563f]]
Former-commit-id: c50f55e67204964a33fd324b4c948b164420e1df [formerly c00391a35a2aa77a4f5ca2aa5325ac763da263be]
Former-commit-id: 4548263d313aae263f97d2786112a65dd7e056c2
2017-11-02 09:57:47 +00:00
Henrique Dias
49f32f876d [ci skip] auto: setting untracked version
Former-commit-id: ab889938f319abc51aa1eab32ba12d4773b82e23 [formerly 56bf07aeec065255b34e9de3024a1116abd90e1d] [formerly 51aa29d909009fca0b83c71e8bf106ae403091b0 [formerly 2ebc7708a7]]
Former-commit-id: 22662250fd4e0e82ab7dda0f201823c68d437398 [formerly 7c4865e1c894d538d0627413454145d33df6b57e]
Former-commit-id: b3313117d95195075241fd082380de05a582f958
2017-10-31 19:20:50 +00:00
Henrique Dias
aeb0f37e20 Version 1.3.9
Former-commit-id: 9c7d15644bcab9e3babc8d645615e50d99187871 [formerly f0a0bf08c328b801cc6ed5add830732c99f92047] [formerly 250bc983264deb841b2115a03610b8e6f473f1ca [formerly b903356b94]]
Former-commit-id: 56bb31f4e44ad39a65f1d1eaa0a8e493287fad7f [formerly e120e69e05cc67f377a83f19f4106b7be945780f]
Former-commit-id: 36fb7783992200295b2f9811b97c2312977023a4
2017-10-31 19:20:36 +00:00
Henrique Dias
59a0daa293 Fix ViewMode related bugs:
- The user will no longer lost their 'ViewMode' option after being updated in the settings.
- The console will not output errors due tot he scroll function when Mosaic mode is on.


Former-commit-id: 97aa6abdc8b864dc7a55dbf03a2e58895ea7613f [formerly ff9e6ff0898f32bd106b644b2e9002b5de45281c] [formerly 556cc12bd5ff1d91776c81f48dd1dceb8bb627b4 [formerly 51104c5ee7]]
Former-commit-id: dd63b2b818a7bd4960a7243866d6b2829f4c03a8 [formerly 45855d70eaa9a2b060d3a89cb70388040ea8e6d9]
Former-commit-id: 6e0ebf10d7fe3e2c234abc9c0ffd447cfbdd7455
2017-10-31 18:23:31 +00:00
Henrique Dias
c716d126eb [ci skip] auto: setting untracked version
Former-commit-id: 88d8cc322b27fc1165a53779e7226db8fd6f90ab [formerly 7f0e5a193dba73cb133bd4d72cd0d81bdc354736] [formerly da79e8c40409e5b5995749556155cccd8a0325cd [formerly cc5f3ac1dd]]
Former-commit-id: 47f0176b53e3a5b2eb402eba29a07f51b7d0c7a7 [formerly c1d2d78eb8827f3386080b0309e6cef66bfed9b1]
Former-commit-id: 64c1ec091ce58eb6b38b0281b7a728b2ca07fe1a
2017-10-30 16:24:48 +00:00
247 changed files with 6176 additions and 22800 deletions

View File

@@ -1,13 +0,0 @@
{
"presets": [
["env", { "modules": false }],
"stage-2"
],
"plugins": ["transform-runtime"],
"env": {
"test": {
"presets": ["env", "stage-2"],
"plugins": [ "istanbul" ]
}
}
}

BIN
.ci/deploy_key.enc Normal file

Binary file not shown.

8
.docker.json Normal file
View File

@@ -0,0 +1,8 @@
{
"port": 80,
"baseURL": "",
"address": "",
"log": "stdout",
"database": "/database.db",
"root": "/srv"
}

View File

@@ -1,4 +1,3 @@
assets/
testdata/
caddy/
.github/
testdata/
.github/
**.git

View File

@@ -1,14 +0,0 @@
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
# 4 space indentation
[*.go]
indent_style = tab
indent_size = 4

View File

@@ -1,2 +0,0 @@
build/*.js
config/*.js

View File

@@ -1,27 +0,0 @@
// http://eslint.org/docs/user-guide/configuring
module.exports = {
root: true,
parser: 'babel-eslint',
parserOptions: {
sourceType: 'module'
},
env: {
browser: true,
},
// https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
extends: 'standard',
// required to lint *.vue files
plugins: [
'html'
],
// add your custom rules here
'rules': {
// allow paren-less arrow functions
'arrow-parens': 0,
// allow async-await
'generator-star-spacing': 0,
// allow debugger during development
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
}
}

View File

@@ -1,24 +0,0 @@
### Instructions (remove before submitting):
1. Are you asking for help with using Caddy or File Manager? Please use our forum instead: https://forum.caddyserver.com.
2. If you are filing a bug report, please answer the following questions.
3. If your issue is not a bug report, you do not need to use this template.
4. If not using with Caddy, ignore questions 1 and 2.
### 1. Have you downloaded File Manager from caddyserver.com? If yes, when have you done that? If no, and you are running a custom build, which is the revision of File Manager's repository?
### 2. What is your entire Caddyfile?
```text
(Put Caddyfile here)
```
### 3. What are you trying to do?
### 4. What did you expect to see?
### 5. What did you see instead (give full error messages and/or log)?
### 6. How can someone who is starting from scratch reproduce this behaviour as minimally as possible?

22
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,22 @@
---
name: Bug report
about: Create a report to help us improve
---
**Description**
A clear and concise description of what the issue is about. What are you trying to do?
**Expected behaviour**
What did you expect to happen?
**What is happening instead?**
Please, give full error messages and/or log.
**Additional context**
Add any other context about the problem here. If applicable, add screenshots to help explain your problem.
**How to reproduce?**
Tell us how to reproduce this issue. How can someone who is starting from scratch reproduce this behaviour as minimally as possible?
**Files**
A list of relevant files for this issue. Large files can be uploaded one-by-one or in a tarball/zipfile.

View File

@@ -0,0 +1,6 @@
---
name: Caddy related bug report
about: Create a report to help us improve
---
### Please open the issue on https://github.com/filebrowser/caddy/issues/new

View File

@@ -0,0 +1,16 @@
---
name: Feature request
about: Suggest an idea for this project
---
**Is your feature request related to a problem? Please describe.**
Add a clear and concise description of what the problem is. E.g. *I'm always frustrated when [...]*
**Describe the solution you'd like**
Add a clear and concise description of what you want to happen.
**Describe alternatives you've considered**
Add a clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

16
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,16 @@
**Description**
Please explain the changes you made here.
If the feature changes current behaviour, explain why your solution is better.
:rotating_light: Before submitting your PR, please read [community](https://github.com/filebrowser/community), and indicate which issues (in any of the repos) are either fixed or closed by this PR. See [GitHub Help: Closing issues using keywords](https://help.github.com/articles/closing-issues-via-commit-messages/).
- [ ] DO make sure you are requesting to **pull a topic/feature/bugfix branch** (right side). Don't request your master!
- [ ] DO make sure you are making a pull request against the **master branch** (left side). Also you should start *your branch* off *our master*.
- [ ] DO make sure that File Browser can be successfully built. See [builds](https://github.com/filebrowser/community/blob/master/builds.md) and [development](https://github.com/filebrowser/community/blob/master/development.md).
- [ ] DO make sure that related issues are opened in other repositories. I.e., the frontend, caddy plugins or the web page need to be updated accordingly.
- [ ] AVOID breaking the continuous integration build.
**Further comments**
If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution you did, what alternatives you considered, etc.
:heart: Thank you!

13
.gitignore vendored
View File

@@ -1,10 +1,5 @@
.DS_Store
node_modules/
*/dist/*
*.db
*.db.lock
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.idea
.vscode
*.lock
*.bak
_old
rice-box.go

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "frontend"]
path = frontend
url = https://github.com/filebrowser/frontend

20
.golangci.yml Normal file
View File

@@ -0,0 +1,20 @@
run:
deadline: 5m
linters:
enable:
- deadcode
- govet
- ineffassign
- interfacer
- maligned
- megacheck
- structcheck
- unconvert
- varcheck
enable-all: false
disable-all: true
# presets:
# - bugs
# - unused
fast: false

View File

@@ -1,29 +1,58 @@
build:
main: cmd/filemanager/main.go
binary: filemanager
goos:
- darwin
- linux
- windows
- freebsd
- netbsd
- openbsd
goarch:
- amd64
- 386
- arm
- arm64
ignore:
- goos: openbsd
goarch: arm
goarm: 6
- goos: freebsd
goarch: arm
goarm: 6
archive:
name_template: "{{.Os}}-{{.Arch}}-{{ .ProjectName }}"
format: tar.gz
format_overrides:
- goos: windows
format: zip
project_name: filebrowser
build:
env:
- CGO_ENABLED=0
main: main.go
binary: filebrowser
goos:
- darwin
- linux
- windows
- freebsd
- netbsd
- openbsd
- dragonfly
- solaris
goarch:
- amd64
- 386
- arm
- arm64
goarm:
- 5
- 6
- 7
ignore:
- goos: darwin
goarch: 386
- goos: openbsd
goarch: arm
- goos: freebsd
goarch: arm
- goos: netbsd
goarch: arm
- goos: solaris
goarch: arm
archive:
name_template: "{{.Os}}-{{.Arch}}{{if .Arm}}v{{.Arm}}{{end}}-{{ .ProjectName }}"
format: tar.gz
format_overrides:
- goos: windows
format: zip
release:
disable: true
dockers:
-
goos: linux
goarch: amd64
goarm: ''
image_templates:
- "filebrowser/filebrowser:latest"
- "filebrowser/filebrowser:{{ .Tag }}"
skip_push: true
extra_files:
- .docker.json

View File

@@ -1,22 +1,47 @@
language: go
go: 1.8.3
os: linux
services: docker
language: minimal
install: skip
addons:
apt:
packages:
- docker-ce
- pass
env:
- "PATH=/home/travis/gopath/bin:$PATH"
install:
- go get ./...
# Install gometalinter and certain linters
- go get github.com/alecthomas/gometalinter
- go get github.com/client9/misspell/cmd/misspell
- go get github.com/gordonklaus/ineffassign
- go get golang.org/x/tools/cmd/goimports
- go get github.com/tsenart/deadcode
script:
- gometalinter --disable-all -E gofmt -E misspell -E ineffassign -E goimports -E deadcode --exclude="rice-box.go" --tests ./...
- go test ./... -timeout 30s
after_success:
- test -n "$TRAVIS_TAG" && curl -sL https://git.io/goreleaser | bash
global:
- USE_DOCKER="true"
stages:
- lint
- build
- release
cache:
directories:
- http/rice-box.go
jobs:
include:
- stage: lint
script: ./wizard.sh -l
- stage: build
script: ./wizard.sh -b
deploy:
provider: script
skip_cleanup: true
script: ./wizard.sh -p
on:
tags: false
repo: filebrowser/filebrowser
branch: master
- stage: release
script: ./wizard.sh -r "$TRAVIS_TAG"
if: tag IS present
deploy:
provider: releases
skip_cleanup: true
api_key:
secure: GCURbl9xmjOmeNc7cYSvfSwbEp46cacWmJRczcsU6rQa0aWqzjELYdyIsl6HWW+o0dzuZvbWRD6muxYqIud92oPLYDuXSnra9tM3mCjswrjiPCJ57bksWkSPBfFQcxIyB6c3o+A/FMnX3nnSE/2r5HYZnPNFbEcBbC7WSgwx9ejXUuyWn1PUFK9YQWANdl6J7b7EKsk+9MxS9Pmw6M2ycBwX8ScUQdofkUPvR/nqlXISm+3hs30VubqQi9Ha6DM9Bw3aFK3/Ts/ujCOxP1ZoMCBZ6tfnaQOElIG96WTwnt77eDYlZezBOLym3Z18iif+Qny+XndFKDbexaiUT06VlWFXCKtt3iLs6HJwRcjmiHmB0Z3v+W4cKPl3cEyxxrU2aal54k1PBhU+5L0Xc8ileKbDMYg5tps88zWHNefeZVfaxYSVrmUHkuygMe481oaBLacDXTxs4t6XEpStREuLmvx9NLTwTFAbWjMNM0PqlueDMxO4bdwNvzXg/TcKLWV9FezqAlre8lFNZK5wX6lKFVSZ3hFjxCfwrJL2cPwg5A8Yd5EOC4Nh81WdgYuFGOxZzMAoSJlaVRvQS1trCUP/++ONnDep3ExSxvw4B7vijGZWeXUhrOMiPQHXu+t6BnrlnDjQ4gi44QTW0y/iM2WC2DBKfgYjAKwyHx13hFrmOCg=
file: "dist/*.*"
file_glob: true
on:
repo: filebrowser/filebrowser
all_branches: true
tags: true

View File

@@ -1,46 +0,0 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at hacdias@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

View File

@@ -1,14 +0,0 @@
# Contributing
If you want to contribute or want to build the code from source, you will need to have the most recent version of Go and, if you want to change the static assets (JS, CSS, ...), Node.js installed on your computer. To start developing, you just need to do the following:
1. `go get github.com/hacdias/filemanager`
2. `cd $GOPATH/src/github.com/hacdias/filemanager`
3. `npm install`
4. `npm run dev` - regenerates the static assets automatically
5. `go install github.com/hacdias/filemanager/cmd/filemanager`
6. Execute `$GOPATH/bin/filemanager`
The steps 3 and 4 are only required **if you want to develop the front-end**. Otherwise, you can ignore them. Before pulling, if you made any change on assets folder, you must run the `build.sh` script on the root of this repository.
If you are using this as a Caddy plugin, you should use its [official instructions for plugins](https://github.com/mholt/caddy/wiki/Extending-Caddy#2-plug-in-your-plugin) and import `github.com/hacdias/filemanager/caddy/filemanager`.

View File

@@ -1,10 +0,0 @@
{
"port": 80,
"address": "",
"database": "/database.db",
"scope": "/srv",
"allowCommands": true,
"allowEdit": true,
"allowNew": true,
"commands": []
}

View File

@@ -1,22 +1,11 @@
FROM golang:alpine
COPY . /go/src/github.com/hacdias/filemanager
WORKDIR /go/src/github.com/hacdias/filemanager
RUN apk add --no-cache git
RUN go get ./...
WORKDIR /go/src/github.com/hacdias/filemanager/cmd/filemanager
RUN CGO_ENABLED=0 go build -a
RUN mv filemanager /go/bin/filemanager
FROM scratch
COPY --from=0 /go/bin/filemanager /filemanager
VOLUME /srv
EXPOSE 80
COPY Docker.json /config.json
ENTRYPOINT ["/filemanager"]
CMD ["--config", "/config.json"]
FROM scratch
COPY --from=filebrowser/dev /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
VOLUME /srv
EXPOSE 80
COPY .docker.json /.filebrowser.json
COPY filebrowser /filebrowser
ENTRYPOINT [ "/filebrowser" ]

202
LICENSE Normal file
View File

@@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2018 File Browser contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@@ -1,201 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

109
README.md
View File

@@ -1,78 +1,31 @@
![Preview](https://user-images.githubusercontent.com/5447088/28537288-39be4288-70a2-11e7-8ce9-0813d59f46b7.gif)
# filemanager
[![Build](https://img.shields.io/travis/hacdias/filemanager.svg?style=flat-square)](https://travis-ci.org/hacdias/filemanager)
[![Go Report Card](https://goreportcard.com/badge/github.com/hacdias/filemanager?style=flat-square)](https://goreportcard.com/report/hacdias/filemanager)
[![Documentation](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square)](http://godoc.org/github.com/hacdias/filemanager)
filemanager provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory. It can be used as a standalone app or as a middleware.
# Table of contents
+ [Getting started](#getting-started)
+ [Features](#features)
- [Users](#users)
- [Search](#search)
+ [Contributing](#contributing)
+ [Donate](#donate)
# Getting started
You can find the Getting Started guide on the [documentation](https://henriquedias.com/filemanager/quick-start/).
# Features
Easy login system.
![Login Page](https://user-images.githubusercontent.com/5447088/28432382-975493dc-6d7f-11e7-9190-23f8037159dc.jpg)
Listings of your files, available in two styles: mosaic and list. You can delete, move, rename, upload and create new files, as well as directories. Single files can be downloaded directly, and multiple files as *.zip*, *.tar*, *.tar.gz*, *.tar.bz2* or *.tar.xz*.
![Mosaic Listing](https://user-images.githubusercontent.com/5447088/28432384-9771bb4c-6d7f-11e7-8564-3a9bd6a3ce3a.jpg)
File Manager editor is powered by [Codemirror](https://codemirror.net/) and if you're working with markdown files with metadata, both parts will be separated from each other so you can focus on the content.
![Markdown Editor](https://user-images.githubusercontent.com/5447088/28432383-9756fdac-6d7f-11e7-8e58-fec49470d15f.jpg)
On the settings page, a regular user can set its own custom CSS to personalize the experience and change its password. For admins, they can manage the permissions of each user, set commands which can be executed when certain events are triggered (such as before saving and after saving) and change plugin's settings.
![Settings](https://user-images.githubusercontent.com/5447088/28432385-9776ec66-6d7f-11e7-90a5-891bacd4d02f.jpg)
We also allow the users to search in the directories and execute commands if allowed.
## Users
We support multiple users and each user can have its own scope and custom stylesheet. The administrator is able to choose which permissions should be given to the users, as well as the commands they can execute. Each user also have a set of rules, in which he can be prevented or allowed to access some directories (regular expressions included!).
![Users](https://user-images.githubusercontent.com/5447088/28432386-977f388a-6d7f-11e7-9006-87d16f05f1f8.jpg)
## Search
FileManager allows you to search through your files and it has some options. By default, your search will be something like this:
```
this are keywords
```
If you search for that it will look at every file that contains "this", "are" or "keywords" on their name. If you want to search for an exact term, you should surround your search by double quotes:
```
"this is the name"
```
That will search for any file that contains "this is the name" on its name. It won't search for each separated term this time.
By default, every search will be case sensitive. Although, you can make a case insensitive search by adding `case:insensitive` to the search terms, like this:
```
this are keywords case:insensitive
```
# Contributing
The contributing guidelines can be found [here](https://github.com/hacdias/filemanager/blob/master/CONTRIBUTING.md).
# Donate
Enjoying this project? You can [donate to its creator](https://henriquedias.com/donate/). He will appreciate.
<p align="center">
<img src="https://raw.githubusercontent.com/filebrowser/logo/master/banner.png" width="550"/>
</p>
![Preview](https://user-images.githubusercontent.com/5447088/50716739-ebd26700-107a-11e9-9817-14230c53efd2.gif)
[![Travis](https://img.shields.io/travis/com/filebrowser/filebrowser.svg?style=flat-square)](https://travis-ci.com/filebrowser/filebrowser)
[![Go Report Card](https://goreportcard.com/badge/github.com/filebrowser/filebrowser?style=flat-square)](https://goreportcard.com/report/github.com/filebrowser/filebrowser)
[![Documentation](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square)](http://godoc.org/github.com/filebrowser/filebrowser)
[![Version](https://img.shields.io/github/release/filebrowser/filebrowser.svg?style=flat-square)](https://github.com/filebrowser/filebrowser/releases/latest)
[![Chat IRC](https://img.shields.io/badge/freenode-%23filebrowser-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23filebrowser)
> INFO: **This project is not under active development ATM. A small group of developers keeps the project alive, but due to lack of time, we can't continue adding new features or doing deep changes. Please read [#532](https://github.com/filebrowser/filebrowser/issues/532) for more info!**
filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory. It can be used as a standalone app or as a middleware.
## Features
Please refer to our docs at [docs.filebrowser.xyz/features](https://docs.filebrowser.xyz/features)
## Install
Please refer to our docs at [docs.filebrowser.xyz](https://docs.filebrowser.xyz/).
## Usage
Please refer to our docs at [docs.filebrowser.xyz/usage](https://docs.filebrowser.xyz/usage).
## Contributing
Please refer to our docs at [docs.filebrowser.xyz/contributing](https://docs.filebrowser.xyz/contributing).

View File

@@ -1,31 +0,0 @@
require('./check-versions')()
process.env.NODE_ENV = 'production'
var ora = require('ora')
var rm = require('rimraf')
var path = require('path')
var chalk = require('chalk')
var webpack = require('webpack')
var config = require('./config')
var webpackConfig = require('./webpack.prod.conf')
var spinner = ora('building for production...')
spinner.start()
rm(path.join(config.assetsRoot, config.assetsSubDirectory), err => {
if (err) throw err
webpack(webpackConfig, function (err, stats) {
spinner.stop()
if (err) throw err
process.stdout.write(stats.toString({
colors: true,
modules: false,
children: false,
chunks: false,
chunkModules: false
}) + '\n\n')
console.log(chalk.cyan(' Build complete.\n'))
})
})

View File

@@ -1,48 +0,0 @@
var chalk = require('chalk')
var semver = require('semver')
var packageConfig = require('../../package.json')
var shell = require('shelljs')
function exec (cmd) {
return require('child_process').execSync(cmd).toString().trim()
}
var versionRequirements = [
{
name: 'node',
currentVersion: semver.clean(process.version),
versionRequirement: packageConfig.engines.node
}
]
if (shell.which('npm')) {
versionRequirements.push({
name: 'npm',
currentVersion: exec('npm --version'),
versionRequirement: packageConfig.engines.npm
})
}
module.exports = function () {
var warnings = []
for (var i = 0; i < versionRequirements.length; i++) {
var mod = versionRequirements[i]
if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
warnings.push(mod.name + ': ' +
chalk.red(mod.currentVersion) + ' should be ' +
chalk.green(mod.versionRequirement)
)
}
}
if (warnings.length) {
console.log('')
console.log(chalk.yellow('To use this template, you must update following to modules:'))
console.log()
for (var i = 0; i < warnings.length; i++) {
var warning = warnings[i]
console.log(' ' + warning)
}
console.log()
process.exit(1)
}
}

View File

@@ -1,26 +0,0 @@
// see http://vuejs-templates.github.io/webpack for documentation.
var path = require('path')
module.exports = {
index: path.resolve(__dirname, '../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: '{{ .BaseURL }}/',
build: {
env: {
NODE_ENV: '"production"'
},
productionSourceMap: true,
// Run the build command with an extra argument to
// View the bundle analyzer report after build finishes:
// `npm run build --report`
// Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report
},
dev: {
env: {
NODE_ENV: '"development"'
},
produceSourceMap: true
}
}

View File

@@ -1,35 +0,0 @@
require('./check-versions')()
process.env.NODE_ENV = 'development'
var rm = require('rimraf')
var path = require('path')
var chalk = require('chalk')
var webpack = require('webpack')
var config = require('./config')
var webpackConfig = require('./webpack.dev.conf')
var fs = require('fs')
if (fs.existsSync('./rice-box.go')) {
fs.unlinkSync('./rice-box.go')
}
if (fs.existsSync('./plugins/rice-box.go')) {
fs.unlinkSync('./plugins/rice-box.go')
}
rm(path.join(config.assetsRoot, config.assetsSubDirectory), err => {
if (err) throw err
webpack(webpackConfig, function (err, stats) {
if (err) throw err
process.stdout.write(stats.toString({
colors: true,
modules: false,
children: false,
chunks: false,
chunkModules: false
}) + '\n\n')
console.log(chalk.cyan(' Build complete.\n'))
})
})

View File

@@ -1,17 +0,0 @@
// This service worker file is effectively a 'no-op' that will reset any
// previous service worker registered for the same host:port combination.
// In the production build, this file is replaced with an actual service worker
// file that will precache your site's local assets.
// See https://github.com/facebookincubator/create-react-app/issues/2272#issuecomment-302832432
self.addEventListener('install', () => self.skipWaiting());
self.addEventListener('activate', () => {
self.clients.matchAll({ type: 'window' }).then(windowClients => {
for (let windowClient of windowClients) {
// Force open pages to refresh, so that they have a chance to load the
// fresh navigation response from the local dev server.
windowClient.navigate(windowClient.url);
}
});
});

View File

@@ -1,55 +0,0 @@
(function() {
'use strict';
// Check to make sure service workers are supported in the current browser,
// and that the current page is accessed from a secure origin. Using a
// service worker from an insecure origin will trigger JS console errors.
const isLocalhost = Boolean(window.location.hostname === 'localhost' ||
// [::1] is the IPv6 localhost address.
window.location.hostname === '[::1]' ||
// 127.0.0.1/8 is considered localhost for IPv4.
window.location.hostname.match(
/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
)
);
window.addEventListener('load', function() {
if ('serviceWorker' in navigator &&
(window.location.protocol === 'https:' || isLocalhost)) {
navigator.serviceWorker.register('{{ .BaseURL }}/sw.js')
.then(function(registration) {
// updatefound is fired if service-worker.js changes.
registration.onupdatefound = function() {
// updatefound is also fired the very first time the SW is installed,
// and there's no need to prompt for a reload at that point.
// So check here to see if the page is already controlled,
// i.e. whether there's an existing service worker.
if (navigator.serviceWorker.controller) {
// The updatefound event implies that registration.installing is set
const installingWorker = registration.installing;
installingWorker.onstatechange = function() {
switch (installingWorker.state) {
case 'installed':
// At this point, the old content will have been purged and the
// fresh content will have been added to the cache.
// It's the perfect time to display a "New content is
// available; please refresh." message in the page's interface.
break;
case 'redundant':
throw new Error('The installing ' +
'service worker became redundant.');
default:
// Ignore
}
};
}
};
}).catch(function(e) {
console.error('Error during service worker registration:', e);
});
}
});
})();

View File

@@ -1,70 +0,0 @@
var path = require('path')
var config = require('./config')
var ExtractTextPlugin = require('extract-text-webpack-plugin')
exports.assetsPath = function (_path) {
var assetsSubDirectory = config.assetsSubDirectory
return path.posix.join(assetsSubDirectory, _path)
}
exports.cssLoaders = function (options) {
options = options || {}
var cssLoader = {
loader: 'css-loader',
options: {
minimize: process.env.NODE_ENV === 'production',
sourceMap: options.sourceMap
}
}
// generate loader string to be used with extract text plugin
function generateLoaders (loader, loaderOptions) {
var loaders = [cssLoader]
if (loader) {
loaders.push({
loader: loader + '-loader',
options: Object.assign({}, loaderOptions, {
sourceMap: options.sourceMap
})
})
}
// Extract CSS when that option is specified
// (which is the case during production build)
if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
fallback: 'vue-style-loader'
})
} else {
return ['vue-style-loader'].concat(loaders)
}
}
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
return {
css: generateLoaders(),
postcss: generateLoaders(),
less: generateLoaders('less'),
sass: generateLoaders('sass', { indentedSyntax: true }),
scss: generateLoaders('sass'),
stylus: generateLoaders('stylus'),
styl: generateLoaders('stylus')
}
}
// Generate loaders for standalone style files (outside of .vue)
exports.styleLoaders = function (options) {
var output = []
var loaders = exports.cssLoaders(options)
for (var extension in loaders) {
var loader = loaders[extension]
output.push({
test: new RegExp('\\.' + extension + '$'),
use: loader
})
}
return output
}

View File

@@ -1,12 +0,0 @@
var utils = require('./utils')
var config = require('./config')
var isProduction = process.env.NODE_ENV === 'production'
module.exports = {
loaders: utils.cssLoaders({
sourceMap: isProduction
? config.build.productionSourceMap
: config.dev.produceSourceMap,
extract: isProduction
})
}

View File

@@ -1,69 +0,0 @@
var path = require('path')
var utils = require('./utils')
var config = require('./config')
var vueLoaderConfig = require('./vue-loader.conf')
function resolve (dir) {
return path.join(__dirname, '..', dir)
}
module.exports = {
entry: {
app: './assets/src/main.js'
},
output: {
path: config.assetsRoot,
filename: '[name].js',
publicPath: config.assetsPublicPath
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src')
}
},
module: {
rules: [
{
test: /\.(yml|yaml)$/,
loader: 'yml-loader'
},
{
test: /\.(js|vue)$/,
loader: 'eslint-loader',
enforce: 'pre',
include: [resolve('src'), resolve('test')],
options: {
formatter: require('eslint-friendly-formatter')
}
},
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test')]
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
// limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
}
]
}
}

View File

@@ -1,81 +0,0 @@
var fs = require('fs')
var path = require('path')
var utils = require('./utils')
var webpack = require('webpack')
var config = require('./config')
var merge = require('webpack-merge')
var baseWebpackConfig = require('./webpack.base.conf')
var HtmlWebpackPlugin = require('html-webpack-plugin')
var ExtractTextPlugin = require('extract-text-webpack-plugin')
var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
var CopyWebpackPlugin = require('copy-webpack-plugin')
module.exports = merge(baseWebpackConfig, {
watch: true,
module: {
rules: utils.styleLoaders({
sourceMap: config.dev.produceSourceMap,
extract: true
})
},
devtool: '#cheap-module-eval-source-map',
output: {
path: config.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash].js'),
chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
},
plugins: [
new webpack.NoEmitOnErrorsPlugin(),
new FriendlyErrorsPlugin(),
new webpack.DefinePlugin({
'process.env': config.dev.env
}),
// extract css into its own file
new ExtractTextPlugin({
filename: utils.assetsPath('css/[name].[contenthash].css')
}),
// generate dist index.html with correct asset hash for caching.
// you can customize output by editing /index.html
// see https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: config.index,
template: 'assets/index.html',
inject: true,
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: 'dependency',
serviceWorkerLoader: `<script>${fs.readFileSync(path.join(__dirname,
'./service-worker-dev.js'), 'utf-8')}</script>`
}),
// split vendor js into its own file
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: function (module, count) {
// any required modules inside node_modules are extracted to vendor
return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(
path.join(__dirname, '../../node_modules')
) === 0
)
}
}),
// extract webpack runtime and module manifest to its own file in order to
// prevent vendor hash from being updated whenever app bundle is updated
new webpack.optimize.CommonsChunkPlugin({
name: 'manifest',
chunks: ['vendor']
}),
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.assetsSubDirectory,
ignore: ['.*']
},
{
from: path.resolve(__dirname, '../../node_modules/codemirror/mode/*/*'),
to: path.join(config.assetsSubDirectory, 'js/codemirror/mode/[name]/[name].js')
}
])
]
})

View File

@@ -1,127 +0,0 @@
var fs = require('fs')
var path = require('path')
var utils = require('./utils')
var webpack = require('webpack')
var config = require('./config')
var merge = require('webpack-merge')
var baseWebpackConfig = require('./webpack.base.conf')
var CopyWebpackPlugin = require('copy-webpack-plugin')
var HtmlWebpackPlugin = require('html-webpack-plugin')
var ExtractTextPlugin = require('extract-text-webpack-plugin')
var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
var SWPrecacheWebpackPlugin = require('sw-precache-webpack-plugin')
var UglifyJS = require('uglify-js')
var env = config.build.env
var webpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({
sourceMap: config.build.productionSourceMap,
extract: true
})
},
devtool: config.build.productionSourceMap ? '#source-map' : false,
output: {
path: config.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash].js'),
chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
},
plugins: [
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.assetsSubDirectory,
ignore: ['.*']
},
{
from: path.resolve(__dirname, '../../node_modules/codemirror/mode/*/*'),
to: path.join(config.assetsSubDirectory, 'js/codemirror/mode/[name]/[name].js'),
transform: function (source, path) {
let result = UglifyJS.minify(source.toString('utf8'))
if (result.error !== undefined) {
return source
}
return result.code
}
}
]),
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
'process.env': env
}),
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
},
sourceMap: true
}),
// extract css into its own file
new ExtractTextPlugin({
filename: utils.assetsPath('css/[name].[contenthash].css')
}),
// Compress extracted CSS. We are using this plugin so that possible
// duplicated CSS from different components can be deduped.
new OptimizeCSSPlugin({
cssProcessorOptions: {
safe: true
}
}),
// generate dist index.html with correct asset hash for caching.
// you can customize output by editing /index.html
// see https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: config.index,
template: 'assets/index.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true,
minifyCSS: true
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
},
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: 'dependency',
serviceWorkerLoader: `<script>${fs.readFileSync(path.join(__dirname,
'./service-worker-prod.js'), 'utf-8')}</script>`
}),
// split vendor js into its own file
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: function (module, count) {
// any required modules inside node_modules are extracted to vendor
return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(
path.join(__dirname, '../../node_modules')
) === 0
)
}
}),
// extract webpack runtime and module manifest to its own file in order to
// prevent vendor hash from being updated whenever app bundle is updated
new webpack.optimize.CommonsChunkPlugin({
name: 'manifest',
chunks: ['vendor']
}),
// service worker caching
new SWPrecacheWebpackPlugin({
cacheId: 'File Manager',
filename: 'sw.js',
replacePrefix: '{{ .BaseURL }}/',
staticFileGlobs: ['dist/**/*.{js,html,css}'],
minify: true,
stripPrefix: 'dist/'
})
]
})
if (config.build.bundleAnalyzerReport) {
var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}
module.exports = webpackConfig

View File

@@ -1,116 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="base" content="{{ .BaseURL }}">
<meta name="staticgen" content="{{ .StaticGen }}">
<meta name="noauth" content="{{ .NoAuth }}">
<meta name="version" content="{{ .Version }}">
<meta name="recaptcha" content="{{ .ReCaptchaKey }}">
<title>File Manager</title>
<link rel="icon" type="image/png" sizes="32x32" href="{{ .BaseURL }}/static/img/icons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="{{ .BaseURL }}/static/img/icons/favicon-16x16.png">
<!--[if IE]><link rel="shortcut icon" href="{{ .BaseURL }}/static/img/icons/favicon.ico"><![endif]-->
<!-- Add to home screen for Android and modern mobile browsers -->
<link rel="manifest" href="{{ .BaseURL }}/static/manifest.json">
<meta name="theme-color" content="#2979ff">
<!-- Add to home screen for Safari on iOS -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="assets">
<link rel="apple-touch-icon" href="{{ .BaseURL }}/static/img/icons/apple-touch-icon-152x152.png">
<!-- Add to home screen for Windows -->
<meta name="msapplication-TileImage" content="{{ .BaseURL }}/static/img/icons/msapplication-icon-144x144.png">
<meta name="msapplication-TileColor" content="#2979ff">
<script>CSS = "{{ .CSS }}"</script>
{{ if .ReCaptcha -}}
<script src='https://www.google.com/recaptcha/api.js?render=explicit'></script>
{{ end }}
<% for (var chunk of webpack.chunks) {
for (var file of chunk.files) {
if (file.match(/\.(js|css)$/)) { %>
<link rel="preload" href="{{ .BaseURL }}/<%= file %>" as="<%= file.match(/\.css$/)?'style':'script' %>"><% }}} %>
<style>
#loading {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #fff;
z-index: 9999;
transition: .1s ease opacity;
-webkit-transition: .1s ease opacity;
}
#loading.done {
opacity: 0;
}
.spinner {
width: 70px;
text-align: center;
position: fixed;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.spinner > div {
width: 18px;
height: 18px;
background-color: #333;
border-radius: 100%;
display: inline-block;
-webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;
animation: sk-bouncedelay 1.4s infinite ease-in-out both;
}
.spinner .bounce1 {
-webkit-animation-delay: -0.32s;
animation-delay: -0.32s;
}
.spinner .bounce2 {
-webkit-animation-delay: -0.16s;
animation-delay: -0.16s;
}
@-webkit-keyframes sk-bouncedelay {
0%, 80%, 100% { -webkit-transform: scale(0) }
40% { -webkit-transform: scale(1.0) }
}
@keyframes sk-bouncedelay {
0%, 80%, 100% {
-webkit-transform: scale(0);
transform: scale(0);
} 40% {
-webkit-transform: scale(1.0);
transform: scale(1.0);
}
}
</style>
</head>
<body>
<div id="app"></div>
<div id="loading">
<div class="spinner">
<div class="bounce1"></div>
<div class="bounce2"></div>
<div class="bounce3"></div>
</div>
</div>
<%= htmlWebpackPlugin.options.serviceWorkerLoader %>
</body>
</html>

View File

@@ -1,78 +0,0 @@
<template>
<router-view :dependencies="loaded" @update:css="updateCSS" @clean:css="cleanCSS"></router-view>
</template>
<script>
import { mapState } from 'vuex'
export default {
name: 'app',
computed: mapState(['recaptcha']),
data () {
return {
loaded: false
}
},
mounted () {
if (this.recaptcha.length === 0) {
this.unload()
return
}
let check = () => {
if (typeof window.grecaptcha === 'undefined') {
setTimeout(check, 100)
return
}
this.unload()
}
check()
},
methods: {
unload () {
this.loaded = true
// Remove loading animation.
let loading = document.getElementById('loading')
loading.classList.add('done')
setTimeout(function () {
loading.parentNode.removeChild(loading)
}, 200)
this.updateCSS()
},
updateCSS (global = false) {
let css = this.$store.state.css
if (typeof this.$store.state.user.css === 'string' && !global) {
css += '\n' + this.$store.state.user.css
}
this.removeCSS()
let style = document.createElement('style')
style.title = 'custom-css'
style.type = 'text/css'
style.appendChild(document.createTextNode(css))
document.head.appendChild(style)
},
removeCSS () {
let style = document.querySelector('style[title="custom-css"]')
if (style === undefined || style === null) {
return
}
style.parentElement.removeChild(style)
},
cleanCSS () {
this.updateCSS(true)
}
}
}
</script>
<style>
@import './css/styles.css';
</style>

View File

@@ -1,5 +0,0 @@
<svg id="content" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 144 144">
<circle cx="72" cy="72" r="72" fill="#2979ff"/>
<circle cx="72" cy="72" r="48" fill="#40c4ff"/>
<circle cx="72" cy="72" r="24" fill="#fff"/>
</svg>

Before

Width:  |  Height:  |  Size: 239 B

View File

@@ -1,220 +0,0 @@
<template>
<header>
<div>
<button @click="openSidebar" :aria-label="$t('buttons.toggleSidebar')" :title="$t('buttons.toggleSidebar')" class="action">
<i class="material-icons">menu</i>
</button>
<img src="../assets/logo.svg" alt="File Manager">
<search></search>
</div>
<div>
<button @click="openSearch" :aria-label="$t('buttons.search')" :title="$t('buttons.search')" class="search-button action">
<i class="material-icons">search</i>
</button>
<button v-show="showSaveButton" :aria-label="$t('buttons.save')" :title="$t('buttons.save')" class="action" id="save-button">
<i class="material-icons">save</i>
</button>
<template v-if="staticGen.length > 0">
<button v-show="showPublishButton" :aria-label="$t('buttons.publish')" :title="$t('buttons.publish')" class="action" id="publish-button">
<i class="material-icons">send</i>
</button>
</template>
<button @click="openMore" id="more" :aria-label="$t('buttons.more')" :title="$t('buttons.more')" class="action">
<i class="material-icons">more_vert</i>
</button>
<!-- Menu that shows on listing AND mobile when there are files selected -->
<div id="file-selection" v-if="isMobile && req.kind === 'listing'">
<span v-if="selectedCount > 0">{{ selectedCount }} selected</span>
<share-button v-show="showRenameButton"></share-button>
<rename-button v-show="showRenameButton"></rename-button>
<copy-button v-show="showMoveButton"></copy-button>
<move-button v-show="showMoveButton"></move-button>
<delete-button v-show="showDeleteButton"></delete-button>
</div>
<!-- This buttons are shown on a dropdown on mobile phones -->
<div id="dropdown" :class="{ active: showMore }">
<div v-if="!isListing || !isMobile">
<share-button v-show="showRenameButton"></share-button>
<rename-button v-show="showRenameButton"></rename-button>
<copy-button v-show="showMoveButton"></copy-button>
<move-button v-show="showMoveButton"></move-button>
<delete-button v-show="showDeleteButton"></delete-button>
</div>
<template v-if="staticGen.length > 0">
<schedule-button v-show="showPublishButton"></schedule-button>
</template>
<switch-button v-show="showSwitchButton"></switch-button>
<download-button v-show="showCommonButton"></download-button>
<upload-button v-show="showUpload"></upload-button>
<info-button v-show="showCommonButton"></info-button>
<button v-show="showSelectButton" @click="openSelect" :aria-label="$t('buttons.selectMultiple')" :title="$t('buttons.selectMultiple')" class="action">
<i class="material-icons">check_circle</i>
<span>{{ $t('buttons.select') }}</span>
</button>
</div>
<div v-show="showOverlay" @click="resetPrompts" class="overlay"></div>
</div>
</header>
</template>
<script>
import Search from './Search'
import InfoButton from './buttons/Info'
import DeleteButton from './buttons/Delete'
import RenameButton from './buttons/Rename'
import UploadButton from './buttons/Upload'
import DownloadButton from './buttons/Download'
import SwitchButton from './buttons/SwitchView'
import MoveButton from './buttons/Move'
import CopyButton from './buttons/Copy'
import ScheduleButton from './buttons/Schedule'
import ShareButton from './buttons/Share'
import {mapGetters, mapState} from 'vuex'
import * as api from '@/utils/api'
import buttons from '@/utils/buttons'
export default {
name: 'main',
components: {
Search,
InfoButton,
DeleteButton,
ShareButton,
RenameButton,
DownloadButton,
CopyButton,
UploadButton,
SwitchButton,
MoveButton,
ScheduleButton
},
data: function () {
return {
width: window.innerWidth,
pluginData: {
api,
buttons,
'store': this.$store,
'router': this.$router
}
}
},
created () {
window.addEventListener('resize', () => {
this.width = window.innerWidth
})
},
computed: {
...mapGetters([
'selectedCount'
]),
...mapState([
'req',
'user',
'loading',
'reload',
'multiple',
'staticGen'
]),
isMobile () {
return this.width <= 736
},
isListing () {
return this.req.kind === 'listing'
},
showSelectButton () {
return this.req.kind === 'listing' && !this.loading && this.$route.name === 'Files'
},
showSaveButton () {
return (this.req.kind === 'editor' && !this.loading)
},
showPublishButton () {
return (this.req.kind === 'editor' && !this.loading && this.user.allowPublish)
},
showSwitchButton () {
return this.req.kind === 'listing' && this.$route.name === 'Files' && !this.loading
},
showCommonButton () {
return !(this.$route.name !== 'Files' || this.loading)
},
showUpload () {
if (this.$route.name !== 'Files' || this.loading) return false
if (this.req.kind === 'editor') return false
return this.user.allowNew
},
showDeleteButton () {
if (this.$route.name !== 'Files' || this.loading) return false
if (this.req.kind === 'listing') {
if (this.selectedCount === 0) {
return false
}
return this.user.allowEdit
}
return this.user.allowEdit
},
showRenameButton () {
if (this.$route.name !== 'Files' || this.loading) return false
if (this.req.kind === 'listing') {
if (this.selectedCount === 1) {
return this.user.allowEdit
}
return false
}
return this.user.allowEdit
},
showMoveButton () {
if (this.$route.name !== 'Files' || this.loading) return false
if (this.req.kind !== 'listing') {
return false
}
if (this.selectedCount > 0) {
return this.user.allowEdit
}
return false
},
showMore () {
if (this.$route.name !== 'Files' || this.loading) return false
return (this.$store.state.show === 'more')
},
showOverlay () {
return (this.$store.state.show === 'more')
}
},
methods: {
openSidebar () {
this.$store.commit('showHover', 'sidebar')
},
openMore () {
this.$store.commit('showHover', 'more')
},
openSearch () {
this.$store.commit('showHover', 'search')
},
openSelect () {
this.$store.commit('multiple', true)
this.resetPrompts()
},
resetPrompts () {
this.$store.commit('closeHovers')
}
}
}
</script>

View File

@@ -1,22 +0,0 @@
<template>
<select v-on:change="change" :value="selected">
<option value="en">{{ $t('languages.en') }}</option>
<option value="fr">{{ $t('languages.fr') }}</option>
<option value="pt">{{ $t('languages.pt') }}</option>
<option value="ja">{{ $t('languages.ja') }}</option>
<option value="zh-cn">{{ $t('languages.zhCN') }}</option>
<option value="zh-tw">{{ $t('languages.zhTW') }}</option>
</select>
</template>
<script>
export default {
name: 'languages',
props: [ 'selected' ],
methods: {
change (event) {
this.$emit('update:selected', event.target.value)
}
}
}
</script>

View File

@@ -1,265 +0,0 @@
<template>
<div id="search" @click="open" v-bind:class="{ active , ongoing }">
<div id="input">
<button v-if="active" class="action" @click="close" :aria-label="$t('buttons.close')" :title="$t('buttons.close')">
<i class="material-icons">arrow_back</i>
</button>
<i v-else class="material-icons">search</i>
<input type="text"
@keyup="keyup"
@keyup.enter="submit"
ref="input"
:autofocus="active"
v-model.trim="value"
:aria-label="$t('search.writeToSearch')"
:placeholder="placeholder">
</div>
<div id="result">
<div>
<template v-if="search.length === 0 && commands.length === 0">
<p>{{ text }}</p>
<template v-if="value.length === 0">
<div class="boxes">
<h3>{{ $t('search.types') }}</h3>
<div>
<div tabindex="0"
role="button"
@click="init('type:image')"
:aria-label="$t('search.images')">
<i class="material-icons">insert_photo</i>
<p>{{ $t('search.images') }}</p>
</div>
<div tabindex="0"
role="button"
@click="init('type:audio')"
:aria-label="$t('search.music')">
<i class="material-icons">volume_up</i>
<p>{{ $t('search.music') }}</p>
</div>
<div tabindex="0"
role="button"
@click="init('type:video')"
:aria-label="$t('search.video')">
<i class="material-icons">movie</i>
<p>{{ $t('search.video') }}</p>
</div>
<div tabindex="0"
role="button"
@click="init('type:pdf')"
:aria-label="$t('search.pdf')">
<i class="material-icons">picture_as_pdf</i>
<p>{{ $t('search.pdf') }}</p>
</div>
</div>
</div>
</template>
</template>
<ul v-else-if="search.length > 0">
<li v-for="s in search">
<router-link @click.native="close" :to="'./' + s.path">
<i v-if="s.dir" class="material-icons">folder</i>
<i v-else class="material-icons">insert_drive_file</i>
<span>./{{ s.path }}</span>
</router-link>
</li>
</ul>
<pre v-else-if="commands.length > 0">
<template v-for="c in commands">{{ c }}</template>
</pre>
</div>
<p id="renew"><i class="material-icons spin">autorenew</i></p>
</div>
</div>
</template>
<script>
import { mapState } from 'vuex'
import url from '@/utils/url'
import * as api from '@/utils/api'
export default {
name: 'search',
data: function () {
return {
value: '',
active: false,
ongoing: false,
scrollable: null,
search: [],
commands: [],
reload: false
}
},
watch: {
show (val, old) {
this.active = (val === 'search')
// If the hover was search and now it's something else
// we should blur the input.
if (old === 'search' && val !== 'search') {
if (this.reload) {
this.$store.commit('setReload', true)
}
document.body.style.overflow = 'auto'
this.reset()
this.$refs.input.blur()
}
// If we are starting to show the search box, we should
// focus the input.
if (val === 'search') {
this.reload = false
this.$refs.input.focus()
document.body.style.overflow = 'hidden'
}
}
},
computed: {
...mapState(['user', 'show']),
// Placeholder value.
placeholder: function () {
if (this.user.allowCommands && this.user.commands.length > 0) {
return this.$t('search.searchOrCommand')
}
return this.$t('search.search')
},
// The text that is shown on the results' box while
// there is no search result or command output to show.
text: function () {
if (this.ongoing) {
return ''
}
if (this.value.length === 0) {
if (this.user.allowCommands && this.user.commands.length > 0) {
return `${this.$t('search.searchOrSupportedCommand')} ${this.user.commands.join(', ')}.`
}
this.$t('search.type')
}
if (!this.supported() || !this.user.allowCommands) {
return this.$t('search.pressToSearch')
} else {
return this.$t('search.pressToExecute')
}
}
},
mounted: function () {
// Gets the result div which will be scrollable.
this.scrollable = document.querySelector('#search #result')
// Adds the keydown event on window for the ESC key, so
// when it's pressed, it closes the search window.
window.addEventListener('keydown', (event) => {
if (event.keyCode === 27) {
this.$store.commit('closeHovers')
}
})
},
methods: {
// Sets the search to active.
open (event) {
this.$store.commit('showHover', 'search')
},
// Closes the search and prevents the event
// of propagating so it doesn't trigger the
// click event on #search.
close (event) {
event.stopPropagation()
event.preventDefault()
this.$store.commit('closeHovers')
},
// Checks if the current input is a supported command.
supported () {
let pieces = this.value.split(' ')
for (let i = 0; i < this.user.commands.length; i++) {
if (pieces[0] === this.user.commands[i]) {
return true
}
}
return false
},
// Initializes the search with a default value.
init (string) {
this.value = string + ' '
this.$refs.input.focus()
},
// Resets the search box value.
reset () {
this.value = ''
this.active = false
this.ongoing = false
this.search = []
this.commands = []
},
// When the user presses a key, if it is ESC
// then it will close the search box. Otherwise,
// it will set the search box to active and clean
// the search results, as well as commands'.
keyup (event) {
if (event.keyCode === 27) {
this.close(event)
return
}
this.search.length = 0
this.commands.length = 0
},
// Submits the input to the server and sets ongoing to true.
submit (event) {
this.ongoing = true
let path = this.$route.path
if (this.$store.state.req.kind !== 'listing') {
path = url.removeLastDir(path) + '/'
}
// In case of being a command.
if (this.supported() && this.user.allowCommands) {
api.command(path, this.value,
(event) => {
this.commands.push(event.data)
this.scrollable.scrollTop = this.scrollable.scrollHeight
},
(event) => {
this.reload = true
this.ongoing = false
this.scrollable.scrollTop = this.scrollable.scrollHeight
}
)
return
}
// In case of being a search.
api.search(path, this.value,
(event) => {
let response = JSON.parse(event.data)
if (response.path[0] === '/') {
response.path = response.path.substring(1)
}
this.search.push(response)
this.scrollable.scrollTop = this.scrollable.scrollHeight
},
(event) => {
this.ongoing = false
this.scrollable.scrollTop = this.scrollable.scrollHeight
}
)
}
}
}
</script>

View File

@@ -1,90 +0,0 @@
<template>
<nav :class="{active}">
<router-link class="action" to="/files/" :aria-label="$t('sidebar.myFiles')" :title="$t('sidebar.myFiles')">
<i class="material-icons">folder</i>
<span>{{ $t('sidebar.myFiles') }}</span>
</router-link>
<div v-if="user.allowNew">
<button @click="$store.commit('showHover', 'newDir')" class="action" :aria-label="$t('sidebar.newFolder')" :title="$t('sidebar.newFolder')">
<i class="material-icons">create_new_folder</i>
<span>{{ $t('sidebar.newFolder') }}</span>
</button>
<button @click="$store.commit('showHover', 'newFile')" class="action" :aria-label="$t('sidebar.newFile')" :title="$t('sidebar.newFile')">
<i class="material-icons">note_add</i>
<span>{{ $t('sidebar.newFile') }}</span>
</button>
</div>
<div v-if="staticGen.length > 0">
<router-link to="/files/settings"
:aria-label="$t('sidebar.siteSettings')"
:title="$t('sidebar.siteSettings')"
class="action">
<i class="material-icons">settings</i>
<span>{{ $t('sidebar.siteSettings') }}</span>
</router-link>
<template v-if="staticGen === 'hugo'">
<button class="action"
:aria-label="$t('sidebar.hugoNew')"
:title="$t('sidebar.hugoNew')"
v-if="user.allowNew"
@click="$store.commit('showHover', 'new-archetype')">
<i class="material-icons">merge_type</i>
<span>{{ $t('sidebar.hugoNew') }}</span>
</button>
</template>
<button class="action"
:aria-label="$t('sidebar.preview')"
:title="$t('sidebar.preview')"
@click="preview">
<i class="material-icons">remove_red_eye</i>
<span>{{ $t('sidebar.preview') }}</span>
</button>
</div>
<div v-if="!$store.state.noAuth">
<router-link class="action" to="/settings" :aria-label="$t('sidebar.settings')" :title="$t('sidebar.settings')">
<i class="material-icons">settings_applications</i>
<span>{{ $t('sidebar.settings') }}</span>
</router-link>
<button @click="logout" class="action" id="logout" :aria-label="$t('sidebar.logout')" :title="$t('sidebar.logout')">
<i class="material-icons">exit_to_app</i>
<span>{{ $t('sidebar.logout') }}</span>
</button>
</div>
<p class="credits">
<span><a rel="noopener noreferrer" href="https://github.com/hacdias/filemanager">File Manager</a> v{{ version }}</span>
<span><a @click="help">{{ $t('sidebar.help') }}</a></span>
</p>
</nav>
</template>
<script>
import {mapState} from 'vuex'
import auth from '@/utils/auth'
export default {
name: 'sidebar',
computed: {
...mapState(['user', 'staticGen', 'version']),
active () {
return this.$store.state.show === 'sidebar'
}
},
methods: {
help () {
this.$store.commit('showHover', 'help')
},
preview () {
window.open(this.$store.state.baseURL + '/preview/')
},
logout: auth.logout
}
}
</script>

View File

@@ -1,17 +0,0 @@
<template>
<button @click="show" :aria-label="$t('buttons.copy')" :title="$t('buttons.copy')" class="action" id="copy-button">
<i class="material-icons">content_copy</i>
<span>{{ $t('buttons.copyFile') }}</span>
</button>
</template>
<script>
export default {
name: 'copy-button',
methods: {
show: function (event) {
this.$store.commit('showHover', 'copy')
}
}
}
</script>

View File

@@ -1,17 +0,0 @@
<template>
<button @click="show" :aria-label="$t('buttons.delete')" :title="$t('buttons.delete')" class="action" id="delete-button">
<i class="material-icons">delete</i>
<span>{{ $t('buttons.delete') }}</span>
</button>
</template>
<script>
export default {
name: 'delete-button',
methods: {
show: function (event) {
this.$store.commit('showHover', 'delete')
}
}
}
</script>

View File

@@ -1,39 +0,0 @@
<template>
<button @click="download" :aria-label="$t('buttons.download')" :title="$t('buttons.download')" id="download-button" class="action">
<i class="material-icons">file_download</i>
<span>{{ $t('buttons.download') }}</span>
<span v-if="selectedCount > 0" class="counter">{{ selectedCount }}</span>
</button>
</template>
<script>
import {mapGetters, mapState} from 'vuex'
import * as api from '@/utils/api'
export default {
name: 'download-button',
computed: {
...mapState(['req', 'selected']),
...mapGetters(['selectedCount'])
},
methods: {
download: function (event) {
// If we are not on a listing, download the current file.
if (this.req.kind !== 'listing') {
api.download(null, this.$route.path)
return
}
// If we are on a listing and there is one element selected,
// download it.
if (this.selectedCount === 1 && !this.req.items[this.selected[0]].isDir) {
api.download(null, this.req.items[this.selected[0]].url)
return
}
// Otherwise show the prompt to choose the formt of the download.
this.$store.commit('showHover', 'download')
}
}
}
</script>

View File

@@ -1,17 +0,0 @@
<template>
<button :title="$t('buttons.info')" :aria-label="$t('buttons.info')" class="action" @click="show">
<i class="material-icons">info</i>
<span>{{ $t('buttons.info') }}</span>
</button>
</template>
<script>
export default {
name: 'info-button',
methods: {
show: function (event) {
this.$store.commit('showHover', 'info')
}
}
}
</script>

View File

@@ -1,17 +0,0 @@
<template>
<button @click="show" :aria-label="$t('buttons.move')" :title="$t('buttons.move')" class="action" id="move-button">
<i class="material-icons">forward</i>
<span>{{ $t('buttons.moveFile') }}</span>
</button>
</template>
<script>
export default {
name: 'move-button',
methods: {
show: function (event) {
this.$store.commit('showHover', 'move')
}
}
}
</script>

View File

@@ -1,17 +0,0 @@
<template>
<button @click="show" :aria-label="$t('buttons.rename')" :title="$t('buttons.rename')" class="action" id="rename-button">
<i class="material-icons">mode_edit</i>
<span>{{ $t('buttons.rename') }}</span>
</button>
</template>
<script>
export default {
name: 'rename-button',
methods: {
show: function (event) {
this.$store.commit('showHover', 'rename')
}
}
}
</script>

View File

@@ -1,21 +0,0 @@
<template>
<button @click="show"
:aria-label="$t('buttons.schedule')"
:title="$t('buttons.schedule')"
id="schedule-button"
class="action">
<i class="material-icons">alarm</i>
<span>{{ $t('buttons.schedule') }}</span>
</button>
</template>
<script>
export default {
name: 'schedule-button',
methods: {
show: function (event) {
this.$store.commit('showHover', 'schedule')
}
}
}
</script>

View File

@@ -1,17 +0,0 @@
<template>
<button @click="show" :aria-label="$t('buttons.share')" :title="$t('buttons.share')" class="action">
<i class="material-icons">share</i>
<span>{{ $t('buttons.share') }}</span>
</button>
</template>
<script>
export default {
name: 'share-button',
methods: {
show (event) {
this.$store.commit('showHover', 'share')
}
}
}
</script>

View File

@@ -1,36 +0,0 @@
<template>
<button @click="change" :aria-label="$t('buttons.switchView')" :title="$t('buttons.switchView')" class="action" id="switch-view-button">
<i class="material-icons">{{ icon }}</i>
<span>{{ $t('buttons.switchView') }}</span>
</button>
</template>
<script>
import { mapState, mapMutations } from 'vuex'
import { updateUser } from '@/utils/api'
export default {
name: 'switch-button',
computed: {
...mapState(['user']),
icon: function () {
if (this.user.viewMode === 'mosaic') return 'view_list'
return 'view_module'
}
},
methods: {
...mapMutations(['updateUser']),
change: function (event) {
// If we are on mobile we should close the dropdown.
this.$store.commit('closeHovers')
let user = {...this.user}
user.viewMode = (this.icon === 'view_list') ? 'list' : 'mosaic'
updateUser(user, 'partial').then(() => {
this.updateUser({ viewMode: user.viewMode })
}).catch(this.$showError)
}
}
}
</script>

View File

@@ -1,17 +0,0 @@
<template>
<button @click="upload" :aria-label="$t('buttons.upload')" :title="$t('buttons.upload')" class="action" id="upload-button">
<i class="material-icons">file_upload</i>
<span>{{ $t('buttons.upload') }}</span>
</button>
</template>
<script>
export default {
name: 'upload-button',
methods: {
upload: function (event) {
document.getElementById('upload-input').click()
}
}
}
</script>

View File

@@ -1,143 +0,0 @@
<template>
<form id="editor" :class="req.language">
<div v-if="hasMetadata" id="metadata">
<h2>{{ $t('files.metadata') }}</h2>
</div>
<h2 v-if="hasMetadata">{{ $t('files.body') }}</h2>
</form>
</template>
<script>
import { mapState } from 'vuex'
import CodeMirror from '@/utils/codemirror'
import * as api from '@/utils/api'
import buttons from '@/utils/buttons'
export default {
name: 'editor',
computed: {
...mapState(['req', 'schedule']),
hasMetadata: function () {
return (this.req.metadata !== undefined && this.req.metadata !== null)
}
},
data: function () {
return {
metadata: null,
metalang: null,
content: null
}
},
created () {
window.addEventListener('keydown', this.keyEvent)
document.getElementById('save-button').addEventListener('click', this.save)
let publish = document.getElementById('publish-button')
if (publish !== null) {
publish.addEventListener('click', this.publish)
}
},
beforeDestroy () {
window.removeEventListener('keydown', this.keyEvent)
document.getElementById('save-button').removeEventListener('click', this.save)
let publish = document.getElementById('publish-button')
if (publish !== null) {
publish.removeEventListener('click', this.publish)
}
},
mounted: function () {
if (this.req.content === undefined || this.req.content === null) {
this.req.content = ''
}
// Set up the main content editor.
this.content = CodeMirror(document.getElementById('editor'), {
value: this.req.content,
lineNumbers: (this.req.language !== 'markdown'),
viewportMargin: 500,
autofocus: true,
mode: this.req.language,
theme: (this.req.language === 'markdown') ? 'markdown' : 'ttcn',
lineWrapping: (this.req.language === 'markdown')
})
CodeMirror.autoLoadMode(this.content, this.req.language)
// Prevent of going on if there is no metadata.
if (!this.hasMetadata) {
return
}
this.parseMetadata()
// Set up metadata editor.
this.metadata = CodeMirror(document.getElementById('metadata'), {
value: this.req.metadata,
viewportMargin: Infinity,
lineWrapping: true,
theme: 'markdown',
mode: this.metalang
})
CodeMirror.autoLoadMode(this.metadata, this.metalang)
},
methods: {
// Saves the content when the user presses CTRL-S.
keyEvent (event) {
if (!event.ctrlKey && !event.metaKey) {
return
}
if (String.fromCharCode(event.which).toLowerCase() !== 's') {
return
}
event.preventDefault()
this.save()
},
// Parses the metadata and gets the language in which
// it is written.
parseMetadata () {
if (this.req.metadata.startsWith('{')) {
this.metalang = 'json'
}
if (this.req.metadata.startsWith('---')) {
this.metalang = 'yaml'
}
if (this.req.metadata.startsWith('+++')) {
this.metalang = 'toml'
}
},
// Publishes the file.
publish (event) {
this.save(event, true)
},
// Saves the file.
save (event, regenerate = false) {
let button = regenerate ? 'publish' : 'save'
if (this.schedule !== '') button = 'schedule'
let content = this.content.getValue()
buttons.loading(button)
if (this.hasMetadata) {
content = this.metadata.getValue() + '\n\n' + content
}
api.put(this.$route.path, content, regenerate, this.schedule)
.then(() => {
buttons.success(button)
this.$store.commit('setSchedule', '')
})
.catch(error => {
buttons.done(button)
this.$showError(error)
this.$store.commit('setSchedule', '')
})
}
}
}
</script>

View File

@@ -1,381 +0,0 @@
<template>
<div v-if="(req.numDirs + req.numFiles) == 0">
<h2 class="message">
<i class="material-icons">sentiment_dissatisfied</i>
<span>{{ $t('files.lonely') }}</span>
</h2>
<input style="display:none" type="file" id="upload-input" @change="uploadInput($event)" multiple>
</div>
<div v-else id="listing"
:class="user.viewMode"
@dragenter="dragEnter"
@dragend="dragEnd">
<div>
<div class="item header">
<div></div>
<div>
<p :class="{ active: nameSorted }" class="name"
role="button"
tabindex="0"
@click="sort('name')"
:title="$t('files.sortByName')"
:aria-label="$t('files.sortByName')">
<span>{{ $t('files.name') }}</span>
<i class="material-icons">{{ nameIcon }}</i>
</p>
<p :class="{ active: sizeSorted }" class="size"
role="button"
tabindex="0"
@click="sort('size')"
:title="$t('files.sortBySize')"
:aria-label="$t('files.sortBySize')">
<span>{{ $t('files.size') }}</span>
<i class="material-icons">{{ sizeIcon }}</i>
</p>
<p :class="{ active: modifiedSorted }" class="modified"
role="button"
tabindex="0"
@click="sort('modified')"
:title="$t('files.sortByLastModified')"
:aria-label="$t('files.sortByLastModified')">
<span>{{ $t('files.lastModified') }}</span>
<i class="material-icons">{{ modifiedIcon }}</i>
</p>
</div>
</div>
</div>
<h2 v-if="req.numDirs > 0">{{ $t('files.folders') }}</h2>
<div v-if="req.numDirs > 0">
<item v-for="(item, index) in req.items"
v-if="item.isDir"
:key="base64(item.name)"
v-bind:index="index"
v-bind:name="item.name"
v-bind:isDir="item.isDir"
v-bind:url="item.url"
v-bind:modified="item.modified"
v-bind:type="item.type"
v-bind:size="item.size">
</item>
</div>
<h2 v-if="req.numFiles > 0">{{ $t('files.files') }}</h2>
<div v-if="req.numFiles > 0">
<item v-for="(item, index) in req.items"
v-if="!item.isDir"
:key="base64(item.name)"
v-bind:index="index"
v-bind:name="item.name"
v-bind:isDir="item.isDir"
v-bind:url="item.url"
v-bind:modified="item.modified"
v-bind:type="item.type"
v-bind:size="item.size">
</item>
</div>
<input style="display:none" type="file" id="upload-input" @change="uploadInput($event)" multiple>
<div v-show="$store.state.multiple" :class="{ active: $store.state.multiple }" id="multiple-selection">
<p>{{ $t('files.multipleSelectionEnabled') }}</p>
<div @click="$store.commit('multiple', false)" tabindex="0" role="button" :title="$t('files.clear')" :aria-label="$t('files.clear')" class="action">
<i class="material-icons">clear</i>
</div>
</div>
</div>
</template>
<script>
import {mapState} from 'vuex'
import Item from './ListingItem'
import css from '@/utils/css'
import * as api from '@/utils/api'
import buttons from '@/utils/buttons'
export default {
name: 'listing',
components: { Item },
computed: {
...mapState(['req', 'selected', 'user']),
nameSorted () {
return (this.req.sort === 'name')
},
sizeSorted () {
return (this.req.sort === 'size')
},
modifiedSorted () {
return (this.req.sort === 'modified')
},
ascOrdered () {
return (this.req.order === 'asc')
},
nameIcon () {
if (this.nameSorted && !this.ascOrdered) {
return 'arrow_upward'
}
return 'arrow_downward'
},
sizeIcon () {
if (this.sizeSorted && this.ascOrdered) {
return 'arrow_downward'
}
return 'arrow_upward'
},
modifiedIcon () {
if (this.modifiedSorted && this.ascOrdered) {
return 'arrow_downward'
}
return 'arrow_upward'
}
},
mounted: function () {
// Check the columns size for the first time.
this.resizeEvent()
// Add the needed event listeners to the window and document.
window.addEventListener('keydown', this.keyEvent)
window.addEventListener('resize', this.resizeEvent)
document.addEventListener('dragover', this.preventDefault)
document.addEventListener('drop', this.drop)
},
beforeDestroy () {
// Remove event listeners before destroying this page.
window.removeEventListener('keydown', this.keyEvent)
window.removeEventListener('resize', this.resizeEvent)
document.removeEventListener('dragover', this.preventDefault)
document.removeEventListener('drop', this.drop)
},
methods: {
base64: function (name) {
return window.btoa(unescape(encodeURIComponent(name)))
},
keyEvent (event) {
if (!event.ctrlKey && !event.metaKey) {
return
}
let key = String.fromCharCode(event.which).toLowerCase()
switch (key) {
case 'f':
event.preventDefault()
this.$store.commit('showHover', 'search')
break
case 'c':
case 'x':
this.copyCut(event, key)
break
case 'v':
this.paste(event)
break
}
},
preventDefault (event) {
// Wrapper around prevent default.
event.preventDefault()
},
copyCut (event, key) {
event.preventDefault()
let items = []
for (let i of this.selected) {
items.push({
from: this.req.items[i].url,
name: encodeURIComponent(this.req.items[i].name)
})
}
this.$store.commit('updateClipboard', {
key: key,
items: items
})
},
paste (event) {
if (event.target.tagName.toLowerCase() === 'input') {
return
}
event.preventDefault()
let items = []
for (let item of this.$store.state.clipboard.items) {
items.push({
from: item.from,
to: this.$route.path + item.name
})
}
if (this.$store.state.clipboard.key === 'x') {
api.move(items).then(() => {
this.$store.commit('setReload', true)
}).catch(this.$showError)
return
}
api.copy(items).then(() => {
this.$store.commit('setReload', true)
}).catch(this.$showError)
},
resizeEvent () {
// Update the columns size based on the window width.
let columns = Math.floor(document.querySelector('main').offsetWidth / 300)
let items = css(['#listing.mosaic .item', '.mosaic#listing .item'])
if (columns === 0) columns = 1
items.style.width = `calc(${100 / columns}% - 1em)`
},
dragEnter (event) {
// When the user starts dragging an item, put every
// file on the listing with 50% opacity.
let items = document.getElementsByClassName('item')
Array.from(items).forEach(file => {
file.style.opacity = 0.5
})
},
dragEnd (event) {
this.resetOpacity()
},
drop: function (event) {
event.preventDefault()
this.resetOpacity()
let dt = event.dataTransfer
let files = dt.files
let el = event.target
if (files.length <= 0) return
for (let i = 0; i < 5; i++) {
if (el !== null && !el.classList.contains('item')) {
el = el.parentElement
}
}
let base = ''
if (el !== null && el.classList.contains('item') && el.dataset.dir === 'true') {
base = el.querySelector('.name').innerHTML + '/'
}
if (base !== '') {
api.fetch(this.$route.path + base)
.then(req => {
this.checkConflict(files, req.items, base)
})
.catch(this.$showError)
return
}
this.checkConflict(files, this.req.items, base)
},
checkConflict (files, items, base) {
if (typeof items === 'undefined' || items === null) {
items = []
}
let conflict = false
for (let i = 0; i < files.length; i++) {
let res = items.findIndex(function hasConflict (element) {
return (element.name === this)
}, files[i].name)
if (res >= 0) {
conflict = true
break
}
}
if (!conflict) {
this.handleFiles(files, base)
return
}
this.$store.commit('showHover', {
prompt: 'replace',
confirm: (event) => {
event.preventDefault()
this.$store.commit('closeHovers')
this.handleFiles(files, base, true)
}
})
},
uploadInput (event) {
this.checkConflict(event.currentTarget.files, this.req.items, '')
},
resetOpacity () {
let items = document.getElementsByClassName('item')
Array.from(items).forEach(file => {
file.style.opacity = 1
})
},
handleFiles (files, base, overwrite = false) {
buttons.loading('upload')
let promises = []
let progress = new Array(files.length).fill(0)
let onupload = (id) => (event) => {
progress[id] = (event.loaded / event.total) * 100
let sum = 0
for (let i = 0; i < progress.length; i++) {
sum += progress[i]
}
this.$store.commit('setProgress', Math.ceil(sum / progress.length))
}
for (let i = 0; i < files.length; i++) {
let file = files[i]
promises.push(api.post(this.$route.path + base + file.name, file, overwrite, onupload(i)))
}
let finish = () => {
buttons.success('upload')
this.$store.commit('setProgress', 0)
}
Promise.all(promises)
.then(() => {
finish()
this.$store.commit('setReload', true)
})
.catch(error => {
finish()
this.$showError(error)
})
return false
},
sort (sort) {
let order = 'desc'
if (sort === 'name') {
if (this.nameIcon === 'arrow_upward') {
order = 'asc'
}
} else if (sort === 'size') {
if (this.sizeIcon === 'arrow_upward') {
order = 'asc'
}
} else if (sort === 'modified') {
if (this.modifiedIcon === 'arrow_upward') {
order = 'asc'
}
}
let path = this.$store.state.baseURL
if (path === '') path = '/'
document.cookie = `sort=${sort}; max-age=31536000; path=${path}`
document.cookie = `order=${order}; max-age=31536000; path=${path}`
this.$store.commit('setReload', true)
}
}
}
</script>

View File

@@ -1,158 +0,0 @@
<template>
<div class="item"
role="button"
tabindex="0"
draggable="true"
@dragstart="dragStart"
@dragover="dragOver"
@drop="drop"
@click="click"
@dblclick="open"
@touchstart="touchstart"
:data-dir="isDir"
:aria-label="name"
:aria-selected="isSelected">
<div>
<i class="material-icons">{{ icon }}</i>
</div>
<div>
<p class="name">{{ name }}</p>
<p v-if="isDir" class="size" data-order="-1">&mdash;</p>
<p v-else class="size" :data-order="humanSize()">{{ humanSize() }}</p>
<p class="modified">
<time :datetime="modified">{{ humanTime() }}</time>
</p>
</div>
</div>
</template>
<script>
import { mapMutations, mapGetters, mapState } from 'vuex'
import filesize from 'filesize'
import moment from 'moment'
import * as api from '@/utils/api'
export default {
name: 'item',
data: function () {
return {
touches: 0
}
},
props: ['name', 'isDir', 'url', 'type', 'size', 'modified', 'index'],
computed: {
...mapState(['selected', 'req']),
...mapGetters(['selectedCount']),
isSelected () {
return (this.selected.indexOf(this.index) !== -1)
},
icon () {
if (this.isDir) return 'folder'
if (this.type === 'image') return 'insert_photo'
if (this.type === 'audio') return 'volume_up'
if (this.type === 'video') return 'movie'
return 'insert_drive_file'
}
},
methods: {
...mapMutations(['addSelected', 'removeSelected', 'resetSelected']),
humanSize: function () {
return filesize(this.size)
},
humanTime: function () {
return moment(this.modified).fromNow()
},
dragStart: function (event) {
if (this.selectedCount === 0) {
this.addSelected(this.index)
return
}
if (!this.isSelected) {
this.resetSelected()
this.addSelected(this.index)
}
},
dragOver: function (event) {
if (!this.isDir) return
event.preventDefault()
let el = event.target
for (let i = 0; i < 5; i++) {
if (!el.classList.contains('item')) {
el = el.parentElement
}
}
el.style.opacity = 1
},
drop: function (event) {
if (!this.isDir) return
event.preventDefault()
if (this.selectedCount === 0) return
let items = []
for (let i of this.selected) {
items.push({
from: this.req.items[i].url,
to: this.url + encodeURIComponent(this.req.items[i].name)
})
}
api.move(items)
.then(() => {
this.$store.commit('setReload', true)
})
.catch(this.$showError)
},
click: function (event) {
if (this.selectedCount !== 0) event.preventDefault()
if (this.$store.state.selected.indexOf(this.index) !== -1) {
this.removeSelected(this.index)
return
}
if (event.shiftKey && this.selected.length === 1) {
let fi = 0
let la = 0
if (this.index > this.selected[0]) {
fi = this.selected[0] + 1
la = this.index
} else {
fi = this.index
la = this.selected[0] - 1
}
for (; fi <= la; fi++) {
this.addSelected(fi)
}
return
}
if (!event.ctrlKey && !this.$store.state.multiple) this.resetSelected()
this.addSelected(this.index)
},
touchstart (event) {
setTimeout(() => {
this.touches = 0
}, 300)
this.touches++
if (this.touches > 1) {
this.open()
}
},
open: function (event) {
this.$router.push({path: this.url})
}
}
}
</script>

View File

@@ -1,139 +0,0 @@
<template>
<div id="previewer">
<div class="bar">
<button @click="back" class="action" :title="$t('files.closePreview')" :aria-label="$t('files.closePreview')" id="close">
<i class="material-icons">close</i>
</button>
<rename-button v-if="allowEdit()"></rename-button>
<delete-button v-if="allowEdit()"></delete-button>
<download-button></download-button>
<info-button></info-button>
</div>
<button class="action" @click="prev" v-show="hasPrevious" :aria-label="$t('buttons.previous')" :title="$t('buttons.previous')">
<i class="material-icons">chevron_left</i>
</button>
<button class="action" @click="next" v-show="hasNext" :aria-label="$t('buttons.next')" :title="$t('buttons.next')">
<i class="material-icons">chevron_right</i>
</button>
<div class="preview">
<img v-if="req.type == 'image'" :src="raw()">
<audio v-else-if="req.type == 'audio'" :src="raw()" autoplay controls></audio>
<video v-else-if="req.type == 'video'" :src="raw()" autoplay controls>
Sorry, your browser doesn't support embedded videos,
but don't worry, you can <a :href="download()">download it</a>
and watch it with your favorite video player!
</video>
<object v-else-if="req.extension == '.pdf'" class="pdf" :data="raw()"></object>
<a v-else-if="req.type == 'blob'" :href="download()">
<h2 class="message">{{ $t('buttons.download') }} <i class="material-icons">file_download</i></h2>
</a>
<pre v-else >{{ req.content }}</pre>
</div>
</div>
</template>
<script>
import { mapState } from 'vuex'
import url from '@/utils/url'
import * as api from '@/utils/api'
import InfoButton from '@/components/buttons/Info'
import DeleteButton from '@/components/buttons/Delete'
import RenameButton from '@/components/buttons/Rename'
import DownloadButton from '@/components/buttons/Download'
export default {
name: 'preview',
components: {
InfoButton,
DeleteButton,
RenameButton,
DownloadButton
},
data: function () {
return {
previousLink: '',
nextLink: '',
listing: null
}
},
computed: {
...mapState(['req', 'oldReq']),
hasPrevious () {
return (this.previousLink !== '')
},
hasNext () {
return (this.nextLink !== '')
}
},
mounted () {
window.addEventListener('keyup', this.key)
api.fetch(url.removeLastDir(this.$route.path))
.then(req => {
this.listing = req
this.updateLinks()
})
.catch(this.$showError)
},
beforeDestroy () {
window.removeEventListener('keyup', this.key)
},
methods: {
download () {
let url = `${this.$store.state.baseURL}/api/download`
url += this.req.url.slice(6)
return url
},
raw () {
return `${this.download()}?&inline=true`
},
back (event) {
let uri = url.removeLastDir(this.$route.path) + '/'
this.$router.push({ path: uri })
},
prev () {
this.$router.push({ path: this.previousLink })
},
next () {
this.$router.push({ path: this.nextLink })
},
key (event) {
event.preventDefault()
if (event.which === 13 || event.which === 39) { // right arrow
if (this.hasNext) this.next()
} else if (event.which === 37) { // left arrow
if (this.hasPrevious) this.prev()
}
},
updateLinks () {
let pos = null
for (let i = 0; i < this.listing.items.length; i++) {
if (this.listing.items[i].name === this.req.name) {
pos = i
break
}
}
if (pos === null) {
return
}
if (pos !== 0) {
this.previousLink = this.listing.items[pos - 1].url
}
if (pos !== this.listing.items.length - 1) {
this.nextLink = this.listing.items[pos + 1].url
}
},
allowEdit (event) {
return this.$store.state.user.allowEdit
}
}
}
</script>

View File

@@ -1,69 +0,0 @@
<template>
<div class="card floating">
<div class="card-title">
<h2>{{ $t('prompts.copy') }}</h2>
</div>
<div class="card-content">
<p>{{ $t('prompts.copyMessage') }}</p>
<file-list @update:selected="val => dest = val"></file-list>
</div>
<div class="card-action">
<button class="cancel flat"
@click="$store.commit('closeHovers')"
:aria-label="$t('buttons.cancel')"
:title="$t('buttons.cancel')">{{ $t('buttons.cancel') }}</button>
<button class="flat"
@click="copy"
:disabled="$route.path === dest"
:aria-label="$t('buttons.copy')"
:title="$t('buttons.copy')">{{ $t('buttons.copy') }}</button>
</div>
</div>
</template>
<script>
import { mapState } from 'vuex'
import FileList from './FileList'
import * as api from '@/utils/api'
import buttons from '@/utils/buttons'
export default {
name: 'copy',
components: { FileList },
data: function () {
return {
current: window.location.pathname,
dest: null
}
},
computed: mapState(['req', 'selected']),
methods: {
copy: function (event) {
event.preventDefault()
buttons.loading('copy')
let items = []
// Create a new promise for each file.
for (let item of this.selected) {
items.push({
from: this.req.items[item].url,
to: this.dest + encodeURIComponent(this.req.items[item].name)
})
}
// Execute the promises.
api.copy(items)
.then(() => {
buttons.success('copy')
this.$router.push({ path: this.dest })
})
.catch(error => {
buttons.done('copy')
this.$showError(error)
})
}
}
}
</script>

View File

@@ -1,80 +0,0 @@
<template>
<div class="card floating">
<div class="card-content">
<p v-if="req.kind !== 'listing'">{{ $t('prompts.deleteMessageSingle') }}</p>
<p v-else>{{ $t('prompts.deleteMessageMultiple', { count: selectedCount}) }}</p>
</div>
<div class="card-action">
<button @click="$store.commit('closeHovers')"
class="flat cancel"
:aria-label="$t('buttons.cancel')"
:title="$t('buttons.cancel')">{{ $t('buttons.cancel') }}</button>
<button @click="submit"
class="flat"
:aria-label="$t('buttons.delete')"
:title="$t('buttons.delete')">{{ $t('buttons.delete') }}</button>
</div>
</div>
</template>
<script>
import {mapGetters, mapMutations, mapState} from 'vuex'
import { remove } from '@/utils/api'
import url from '@/utils/url'
import buttons from '@/utils/buttons'
export default {
name: 'delete',
computed: {
...mapGetters(['selectedCount']),
...mapState(['req', 'selected'])
},
methods: {
...mapMutations(['closeHovers']),
submit: function (event) {
this.closeHovers()
buttons.loading('delete')
// If we are not on a listing, delete the current
// opened file.
if (this.req.kind !== 'listing') {
remove(this.$route.path)
.then(() => {
buttons.success('delete')
this.$router.push({ path: url.removeLastDir(this.$route.path) + '/' })
})
.catch(error => {
buttons.done('delete')
this.$showError(error)
})
return
}
if (this.selectedCount === 0) {
// This shouldn't happen...
return
}
// Create the promises array and fill it with
// the delete request for every selected file.
let promises = []
for (let index of this.selected) {
promises.push(remove(this.req.items[index].url))
}
Promise.all(promises)
.then(() => {
buttons.success('delete')
this.$store.commit('setReload', true)
})
.catch(error => {
buttons.done('delete')
this.$store.commit('setReload', true)
this.$showError(error)
})
}
}
}
</script>

View File

@@ -1,47 +0,0 @@
<template>
<div class="card floating" id="download">
<div class="card-title">
<h2>{{ $t('prompts.download') }}</h2>
</div>
<div class="card-content">
<p>{{ $t('prompts.downloadMessage') }}</p>
<button class="block cancel" @click="download('zip')" autofocus>zip</button>
<button class="block cancel" @click="download('tar')" autofocus>tar</button>
<button class="block cancel" @click="download('targz')" autofocus>tar.gz</button>
<button class="block cancel" @click="download('tarbz2')" autofocus>tar.bz2</button>
<button class="block cancel" @click="download('tarxz')" autofocus>tar.xz</button>
</div>
</div>
</template>
<script>
import {mapGetters, mapState} from 'vuex'
import * as api from '@/utils/api'
export default {
name: 'download',
computed: {
...mapState(['selected', 'req']),
...mapGetters(['selectedCount'])
},
methods: {
download: function (format) {
if (this.selectedCount === 0) {
api.download(format, this.$route.path)
} else {
let files = []
for (let i of this.selected) {
files.push(this.req.items[i].url)
}
api.download(format, ...files)
}
this.$store.commit('closeHovers')
}
}
}
</script>

View File

@@ -1,140 +0,0 @@
<template>
<div>
<ul class="file-list">
<li @click="select"
@touchstart="touchstart"
@dblclick="next"
role="button"
tabindex="0"
:aria-label="item.name"
:aria-selected="selected == item.url"
:key="item.name" v-for="item in items"
:data-url="item.url">{{ item.name }}</li>
</ul>
<p>{{ $t('prompts.currentlyNavigating') }} <code>{{ nav }}</code>.</p>
</div>
</template>
<script>
import { mapState } from 'vuex'
import url from '@/utils/url'
import * as api from '@/utils/api'
export default {
name: 'file-list',
data: function () {
return {
items: [],
touches: {
id: '',
count: 0
},
selected: null,
current: window.location.pathname
}
},
computed: {
...mapState(['req']),
nav () {
return decodeURIComponent(this.current)
}
},
mounted () {
// If we're showing this on a listing,
// we can use the current request object
// to fill the move options.
if (this.req.kind === 'listing') {
this.fillOptions(this.req)
return
}
// Otherwise, we must be on a preview or editor
// so we fetch the data from the previous directory.
api.fetch(url.removeLastDir(this.$route.path))
.then(this.fillOptions)
.catch(this.$showError)
},
methods: {
fillOptions (req) {
// Sets the current path and resets
// the current items.
this.current = req.url
this.items = []
this.$emit('update:selected', this.current)
// If the path isn't the root path,
// show a button to navigate to the previous
// directory.
if (req.url !== '/files/') {
this.items.push({
name: '..',
url: url.removeLastDir(req.url) + '/'
})
}
// If this folder is empty, finish here.
if (req.items === null) return
// Otherwise we add every directory to the
// move options.
for (let item of req.items) {
if (!item.isDir) continue
this.items.push({
name: item.name,
url: item.url
})
}
},
next: function (event) {
// Retrieves the URL of the directory the user
// just clicked in and fill the options with its
// content.
let uri = event.currentTarget.dataset.url
api.fetch(uri)
.then(this.fillOptions)
.catch(this.$showError)
},
touchstart (event) {
let url = event.currentTarget.dataset.url
// In 300 milliseconds, we shall reset the count.
setTimeout(() => {
this.touches.count = 0
}, 300)
// If the element the user is touching
// is different from the last one he touched,
// reset the count.
if (this.touches.id !== url) {
this.touches.id = url
this.touches.count = 1
return
}
this.touches.count++
// If there is more than one touch already,
// open the next screen.
if (this.touches.count > 1) {
this.next(event)
}
},
select: function (event) {
// If the element is already selected, unselect it.
if (this.selected === event.currentTarget.dataset.url) {
this.selected = null
this.$emit('update:selected', this.current)
return
}
// Otherwise select the element.
this.selected = event.currentTarget.dataset.url
this.$emit('update:selected', this.selected)
}
}
}
</script>

View File

@@ -1,34 +0,0 @@
<template>
<div class="card floating help">
<div class="card-title">
<h2>{{ $t('help.help') }}</h2>
</div>
<div class="card-content">
<ul>
<li><strong>F1</strong> - {{ $t('help.f1') }}</li>
<li><strong>F2</strong> - {{ $t('help.f2') }}</li>
<li><strong>DEL</strong> - {{ $t('help.del') }}</li>
<li><strong>ESC</strong> - {{ $t('help.esc') }}</li>
<li><strong>CTRL + S</strong> - {{ $t('help.ctrl.s') }}</li>
<li><strong>CTRL + F</strong> - {{ $t('help.ctrl.f') }}</li>
<li><strong>CTRL + Click</strong> - {{ $t('help.ctrl.click') }}</li>
<li><strong>Click</strong> - {{ $t('help.click') }}</li>
<li><strong>Double click</strong> - {{ $t('help.doubleClick') }}</li>
</ul>
</div>
<div class="card-action">
<button type="submit"
@click="$store.commit('closeHovers')"
class="flat"
:aria-label="$t('buttons.ok')"
:title="$t('buttons.ok')">{{ $t('buttons.ok') }}</button>
</div>
</div>
</template>
<script>
export default {name: 'help'}
</script>

View File

@@ -1,122 +0,0 @@
<template>
<div class="card floating">
<div class="card-title">
<h2>{{ $t('prompts.fileInfo') }}</h2>
</div>
<div class="card-content">
<p v-if="selected.length > 1">{{ $t('prompts.filesSelected', { count: selected.length }) }}</p>
<p v-if="selected.length < 2"><strong>{{ $t('prompts.displayName') }}</strong> {{ name() }}</p>
<p><strong>{{ $t('prompts.size') }}:</strong> <span id="content_length"></span>{{ humanSize() }}</p>
<p v-if="selected.length < 2"><strong>{{ $t('prompts.lastModified') }}:</strong> {{ humanTime() }}</p>
<template v-if="dir() && selected.length === 0">
<p><strong>{{ $t('prompts.numberFiles') }}:</strong> {{ req.numFiles }}</p>
<p><strong>{{ $t('prompts.numberDirs') }}:</strong> {{ req.numDirs }}</p>
</template>
<template v-if="!dir()">
<p><strong>MD5:</strong> <code><a @click="checksum($event, 'md5')">{{ $t('prompts.show') }}</a></code></p>
<p><strong>SHA1:</strong> <code><a @click="checksum($event, 'sha1')">{{ $t('prompts.show') }}</a></code></p>
<p><strong>SHA256:</strong> <code><a @click="checksum($event, 'sha256')">{{ $t('prompts.show') }}</a></code></p>
<p><strong>SHA512:</strong> <code><a @click="checksum($event, 'sha512')">{{ $t('prompts.show') }}</a></code></p>
</template>
</div>
<div class="card-action">
<button type="submit"
@click="$store.commit('closeHovers')"
class="flat"
:aria-label="$t('buttons.ok')"
:title="$t('buttons.ok')">{{ $t('buttons.ok') }}</button>
</div>
</div>
</template>
<script>
import {mapState, mapGetters} from 'vuex'
import filesize from 'filesize'
import moment from 'moment'
import * as api from '@/utils/api'
export default {
name: 'info',
computed: {
...mapState(['req', 'selected']),
...mapGetters(['selectedCount'])
},
methods: {
humanSize: function () {
// If there are no files selected or this is not a listing
// show the human file size of the current request.
if (this.selectedCount === 0 || this.req.kind !== 'listing') {
return filesize(this.req.size)
}
// Otherwise, sum the sizes of each selected file and returns
// its human form.
var sum = 0
for (let i = 0; i < this.selectedCount; i++) {
sum += this.req.items[this.selected[i]].size
}
return filesize(sum)
},
humanTime: function () {
// If there are no selected files, return the current request
// modified time.
if (this.selectedCount === 0) {
return moment(this.req.modified).fromNow()
}
// Otherwise return the modified time of the first item
// that is selected since this should not appear when
// there is more than one file selected.
return moment(this.req.items[this.selected[0]]).fromNow()
},
name: function () {
// Return the name of the current opened file if there
// are no selected files.
if (this.selectedCount === 0) {
return this.req.name
}
// Otherwise, just return the name of the selected file.
// This field won't show when there is more than one
// file selected.
return this.req.items[this.selected[0]].name
},
dir: function () {
if (this.selectedCount > 1) {
// Don't show when multiple selected.
return true
}
if (this.selectedCount === 0) {
return this.req.isDir
}
return this.req.items[this.selected[0]].isDir
},
checksum: function (event, hash) {
// Gets the checksum of the current selected or
// opened file. Doesn't work for directories.
event.preventDefault()
let link
if (this.selectedCount) {
link = this.req.items[this.selected[0]].url
} else {
link = this.$route.path
}
api.checksum(link, hash)
.then((hash) => { event.target.innerHTML = hash })
.catch(this.$showError)
}
}
}
</script>

View File

@@ -1,70 +0,0 @@
<template>
<div class="card floating">
<div class="card-title">
<h2>{{ $t('prompts.move') }}</h2>
</div>
<div class="card-content">
<file-list @update:selected="val => dest = val"></file-list>
</div>
<div class="card-action">
<button class="flat cancel"
@click="$store.commit('closeHovers')"
:aria-label="$t('buttons.cancel')"
:title="$t('buttons.cancel')">{{ $t('buttons.cancel') }}</button>
<button class="flat"
@click="move"
:disabled="$route.path === dest"
:aria-label="$t('buttons.move')"
:title="$t('buttons.move')">{{ $t('buttons.move') }}</button>
</div>
</div>
</template>
<script>
import { mapState } from 'vuex'
import FileList from './FileList'
import * as api from '@/utils/api'
import buttons from '@/utils/buttons'
export default {
name: 'move',
components: { FileList },
data: function () {
return {
current: window.location.pathname,
dest: null
}
},
computed: mapState(['req', 'selected']),
methods: {
move: function (event) {
event.preventDefault()
buttons.loading('move')
let items = []
// Create a new promise for each file.
for (let item of this.selected) {
items.push({
from: this.req.items[item].url,
to: this.dest + encodeURIComponent(this.req.items[item].name)
})
}
// Execute the promises.
api.move(items)
.then(() => {
buttons.success('move')
this.$router.push({ path: this.dest })
})
.catch(error => {
buttons.done('move')
this.$showError(error)
})
event.preventDefault()
}
}
}
</script>

View File

@@ -1,72 +0,0 @@
<template>
<div class="card floating">
<div class="card-title">
<h2>{{ $t('prompts.newFile') }}</h2>
</div>
<div class="card-content">
<p>{{ $t('prompts.newArchetype') }}</p>
<input autofocus type="text" @keyup.enter="submit" v-model.trim="name">
<input type="text" @keyup.enter="submit" v-model.trim="archetype">
</div>
<div class="card-action">
<button class="flat cancel"
@click="$store.commit('closeHovers')"
:aria-label="$t('buttons.cancel')"
:title="$t('buttons.cancel')">{{ $t('buttons.cancel') }}</button>
<button class="flat"
@click="submit"
:aria-label="$t('buttons.create')"
:title="$t('buttons.create')">{{ $t('buttons.create') }}</button>
</div>
</div>
</template>
<script>
import { removePrefix } from '@/utils/api'
export default {
name: 'new-archetype',
data: function () {
return {
name: '',
archetype: 'default'
}
},
methods: {
submit: function (event) {
event.preventDefault()
this.$store.commit('closeHovers')
this.new('/' + this.name, this.archetype)
.then((url) => {
this.$router.push({ path: url })
})
.catch(this.$showError)
},
new (url, type) {
url = removePrefix(url)
return new Promise((resolve, reject) => {
let request = new window.XMLHttpRequest()
request.open('POST', `${this.$store.state.baseURL}/api/resource${url}`, true)
if (!this.$store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${this.$store.state.jwt}`)
request.setRequestHeader('Archetype', encodeURIComponent(type))
request.onload = () => {
if (request.status === 200) {
resolve(request.getResponseHeader('Location'))
} else {
reject(request.responseText)
}
}
request.onerror = (error) => reject(error)
request.send()
})
}
}
}
</script>

View File

@@ -1,60 +0,0 @@
<template>
<div class="card floating">
<div class="card-title">
<h2>{{ $t('prompts.newDir') }}</h2>
</div>
<div class="card-content">
<p>{{ $t('prompts.newDirMessage') }}</p>
<input autofocus type="text" @keyup.enter="submit" v-model.trim="name">
</div>
<div class="card-action">
<button class="cancel flat"
@click="$store.commit('closeHovers')"
:aria-label="$t('buttons.cancel')"
:title="$t('buttons.cancel')">{{ $t('buttons.cancel') }}</button>
<button class="flat"
:aria-label="$t('buttons.create')"
:title="$t('buttons.create')"
@click="submit">{{ $t('buttons.create') }}</button>
</div>
</div>
</template>
<script>
import url from '@/utils/url'
import * as api from '@/utils/api'
export default {
name: 'new-dir',
data: function () {
return {
name: ''
}
},
methods: {
submit: function (event) {
event.preventDefault()
if (this.new === '') return
// Build the path of the new directory.
let uri = this.$route.path
if (this.$store.state.req.kind !== 'listing') {
uri = url.removeLastDir(uri) + '/'
}
uri += this.name + '/'
uri = uri.replace('//', '/')
api.post(uri)
.then(() => { this.$router.push({ path: uri }) })
.catch(this.$showError)
// Close the prompt
this.$store.commit('closeHovers')
}
}
}
</script>

View File

@@ -1,61 +0,0 @@
<template>
<div class="card floating">
<div class="card-title">
<h2>{{ $t('prompts.newFile') }}</h2>
</div>
<div class="card-content">
<p>{{ $t('prompts.newFileMessage') }}</p>
<input autofocus type="text" @keyup.enter="submit" v-model.trim="name">
</div>
<div class="card-action">
<button class="cancel flat"
@click="$store.commit('closeHovers')"
:aria-label="$t('buttons.cancel')"
:title="$t('buttons.cancel')">{{ $t('buttons.cancel') }}</button>
<button class="flat"
@click="submit"
:aria-label="$t('buttons.create')"
:title="$t('buttons.create')">{{ $t('buttons.create') }}</button>
</div>
</div>
</template>
<script>
import url from '@/utils/url'
import * as api from '@/utils/api'
export default {
name: 'new-file',
data: function () {
return {
name: ''
}
},
methods: {
submit: function (event) {
event.preventDefault()
if (this.new === '') return
// Build the path of the new file.
let uri = this.$route.path
if (this.$store.state.req.kind !== 'listing') {
uri = url.removeLastDir(uri) + '/'
}
uri += this.name
uri = uri.replace('//', '/')
// Create the new file.
api.post(uri)
.then(() => { this.$router.push({ path: uri }) })
.catch(this.$showError)
// Close the prompt.
this.$store.commit('closeHovers')
}
}
}
</script>

View File

@@ -1,87 +0,0 @@
<template>
<div>
<help v-if="showHelp" ></help>
<download v-else-if="showDownload"></download>
<new-file v-else-if="showNewFile"></new-file>
<new-dir v-else-if="showNewDir"></new-dir>
<rename v-else-if="showRename"></rename>
<delete v-else-if="showDelete"></delete>
<info v-else-if="showInfo"></info>
<move v-else-if="showMove"></move>
<copy v-else-if="showCopy"></copy>
<replace v-else-if="showReplace"></replace>
<schedule v-else-if="show === 'schedule'"></schedule>
<new-archetype v-else-if="show === 'new-archetype'"></new-archetype>
<share v-else-if="show === 'share'"></share>
<div v-show="showOverlay" @click="resetPrompts" class="overlay"></div>
</div>
</template>
<script>
import Help from './Help'
import Info from './Info'
import Delete from './Delete'
import Rename from './Rename'
import Download from './Download'
import Move from './Move'
import Copy from './Copy'
import NewFile from './NewFile'
import NewDir from './NewDir'
import NewArchetype from './NewArchetype'
import Replace from './Replace'
import Schedule from './Schedule'
import Share from './Share'
import { mapState } from 'vuex'
import buttons from '@/utils/buttons'
import * as api from '@/utils/api'
export default {
name: 'prompts',
components: {
Info,
Delete,
NewArchetype,
Schedule,
Rename,
Download,
Move,
Copy,
Share,
NewFile,
NewDir,
Help,
Replace
},
data: function () {
return {
pluginData: {
api,
buttons,
'store': this.$store,
'router': this.$router
}
}
},
computed: {
...mapState(['show', 'plugins']),
showInfo: function () { return this.show === 'info' },
showHelp: function () { return this.show === 'help' },
showDelete: function () { return this.show === 'delete' },
showRename: function () { return this.show === 'rename' },
showMove: function () { return this.show === 'move' },
showCopy: function () { return this.show === 'copy' },
showNewFile: function () { return this.show === 'newFile' },
showNewDir: function () { return this.show === 'newDir' },
showDownload: function () { return this.show === 'download' },
showReplace: function () { return this.show === 'replace' },
showOverlay: function () {
return (this.show !== null && this.show !== 'search' && this.show !== 'more')
}
},
methods: {
resetPrompts () {
this.$store.commit('closeHovers')
}
}
}
</script>

View File

@@ -1,84 +0,0 @@
<template>
<div class="card floating">
<div class="card-title">
<h2>{{ $t('prompts.rename') }}</h2>
</div>
<div class="card-content">
<p>{{ $t('prompts.renameMessage') }} <code>{{ oldName() }}</code>:</p>
<input autofocus type="text" @keyup.enter="submit" v-model.trim="name">
</div>
<div class="card-action">
<button class="cancel flat"
@click="$store.commit('closeHovers')"
:aria-label="$t('buttons.cancel')"
:title="$t('buttons.cancel')">{{ $t('buttons.cancel') }}</button>
<button @click="submit"
class="flat"
type="submit"
:aria-label="$t('buttons.rename')"
:title="$t('buttons.rename')">{{ $t('buttons.rename') }}</button>
</div>
</div>
</template>
<script>
import { mapState } from 'vuex'
import url from '@/utils/url'
import * as api from '@/utils/api'
export default {
name: 'rename',
data: function () {
return {
name: ''
}
},
computed: mapState(['req', 'selected', 'selectedCount']),
methods: {
cancel: function (event) {
this.$store.commit('closeHovers')
},
oldName: function () {
// Get the current name of the file we are editing.
if (this.req.kind !== 'listing') {
return this.req.name
}
if (this.selectedCount === 0 || this.selectedCount > 1) {
// This shouldn't happen.
return
}
return this.req.items[this.selected[0]].name
},
submit: function (event) {
let oldLink = ''
let newLink = ''
if (this.req.kind !== 'listing') {
oldLink = this.req.url
} else {
oldLink = this.req.items[this.selected[0]].url
}
this.name = encodeURIComponent(this.name)
newLink = url.removeLastDir(oldLink) + '/' + this.name
api.move([{ from: oldLink, to: newLink }])
.then(() => {
if (this.req.kind !== 'listing') {
this.$router.push({ path: newLink })
return
}
this.$store.commit('setReload', true)
}).catch(error => {
this.$showError(error)
})
this.$store.commit('closeHovers')
}
}
}
</script>

View File

@@ -1,31 +0,0 @@
<template>
<div class="card floating">
<div class="card-title">
<h2>{{ $t('prompts.replace') }}</h2>
</div>
<div class="card-content">
<p>{{ $t('prompts.replaceMessage') }}</p>
</div>
<div class="card-action">
<button class="flat cancel"
@click="$store.commit('closeHovers')"
:aria-label="$t('buttons.cancel')"
:title="$t('buttons.cancel')">{{ $t('buttons.cancel') }}</button>
<button class="flat"
@click="showConfirm"
:aria-label="$t('buttons.replace')"
:title="$t('buttons.replace')">{{ $t('buttons.replace') }}</button>
</div>
</div>
</template>
<script>
import { mapState } from 'vuex'
export default {
name: 'replace',
computed: mapState(['showConfirm'])
}
</script>

View File

@@ -1,47 +0,0 @@
<template>
<div class="card floating">
<div class="card-title">
<h2>{{ $t('prompts.schedule') }}</h2>
</div>
<div class="card-content">
<p>{{ $t('prompts.scheduleMessage') }}</p>
<input autofocus type="datetime-local" v-model="date">
</div>
<div class="card-action">
<button class="cancel flat"
@click="close"
:aria-label="$t('buttons.cancel')"
:title="$t('buttons.cancel')">{{ $t('buttons.cancel') }}</button>
<button class="falt"
@click="submit"
:aria-label="$t('buttons.schedule')"
:title="$t('buttons.schedule')">{{ $t('buttons.schedule') }}</button>
</div>
</div>
</template>
<script>
export default {
name: 'schedule',
data: function () {
return {
date: ''
}
},
methods: {
close () {
this.$store.commit('closeHovers')
},
submit: function (event) {
event.preventDefault()
if (this.date === '') return
this.close()
this.$store.commit('setSchedule', this.date)
document.getElementById('save-button').click()
}
}
}
</script>

View File

@@ -1,162 +0,0 @@
<template>
<div class="card floating" id="share">
<div class="card-title">
<h2>{{ $t('buttons.share') }}</h2>
</div>
<div class="card-content">
<ul>
<li v-if="!hasPermanent">
<a @click="getPermalink" :aria-label="$t('buttons.permalink')">{{ $t('buttons.permalink') }}</a>
</li>
<li v-for="link in links" :key="link.hash">
<a :href="buildLink(link.hash)" target="_blank">
<template v-if="link.expires">{{ humanTime(link.expireDate) }}</template>
<template v-else>{{ $t('permanent') }}</template>
</a>
<button class="action"
@click="deleteLink($event, link)"
:aria-label="$t('buttons.delete')"
:title="$t('buttons.delete')"><i class="material-icons">delete</i></button>
<button class="action copy-clipboard"
:data-clipboard-text="buildLink(link.hash)"
:aria-label="$t('buttons.copyToClipboard')"
:title="$t('buttons.copyToClipboard')"><i class="material-icons">content_paste</i></button>
</li>
<li>
<input autofocus
type="number"
max="2147483647"
min="0"
@keyup.enter="submit"
v-model.trim="time">
<select v-model="unit" :aria-label="$t('time.unit')">
<option value="seconds">{{ $t('time.seconds') }}</option>
<option value="minutes">{{ $t('time.minutes') }}</option>
<option value="hours">{{ $t('time.hours') }}</option>
<option value="days">{{ $t('time.days') }}</option>
</select>
<button class="action"
@click="submit"
:aria-label="$t('buttons.create')"
:title="$t('buttons.create')"><i class="material-icons">add</i></button>
</li>
</ul>
</div>
<div class="card-action">
<button class="flat"
@click="$store.commit('closeHovers')"
:aria-label="$t('buttons.close')"
:title="$t('buttons.close')">{{ $t('buttons.close') }}</button>
</div>
</div>
</template>
<script>
import { mapState } from 'vuex'
import { getShare, deleteShare, share } from '@/utils/api'
import moment from 'moment'
import Clipboard from 'clipboard'
export default {
name: 'share',
data: function () {
return {
time: '',
unit: 'hours',
hasPermanent: false,
links: [],
clip: null
}
},
computed: {
...mapState([ 'baseURL', 'req', 'selected', 'selectedCount' ]),
url () {
// Get the current name of the file we are editing.
if (this.req.kind !== 'listing') {
return this.$route.path
}
if (this.selectedCount === 0 || this.selectedCount > 1) {
// This shouldn't happen.
return
}
return this.req.items[this.selected[0]].url
}
},
beforeMount () {
getShare(this.url)
.then(links => {
this.links = links
this.sort()
for (let link of this.links) {
if (!link.expires) {
this.hasPermanent = true
break
}
}
})
.catch(error => {
if (error === 404) return
this.$showError(error)
})
},
mounted () {
this.clip = new Clipboard('.copy-clipboard')
this.clip.on('success', (e) => {
this.$showSuccess(this.$t('success.linkCopied'))
})
},
beforeDestroy () {
this.clip.destroy()
},
methods: {
submit: function (event) {
if (!this.time) return
share(this.url, this.time, this.unit)
.then(result => { this.links.push(result); this.sort() })
.catch(this.$showError)
},
getPermalink (event) {
share(this.url)
.then(result => {
this.links.push(result)
this.sort()
this.hasPermanent = true
})
.catch(this.$showError)
},
deleteLink (event, link) {
event.preventDefault()
deleteShare(link.hash)
.then(() => {
if (!link.expires) this.hasPermanent = false
this.links = this.links.filter(item => item.hash !== link.hash)
})
.catch(this.$showError)
},
humanTime (time) {
return moment(time).fromNow()
},
buildLink (hash) {
return `${window.location.origin}${this.baseURL}/share/${hash}`
},
sort () {
this.links = this.links.sort((a, b) => {
if (!a.expires) return -1
if (!b.expires) return 1
return new Date(a.expireDate) - new Date(b.expireDate)
})
}
}
}
</script>

View File

@@ -1,214 +0,0 @@
body {
font-family: 'Roboto', sans-serif;
padding-top: 4em;
background-color: #fafafa;
color: #333333;
}
* {
box-sizing: border-box;
}
*,
*:hover,
*:active,
*:focus {
outline: 0
}
a {
text-decoration: none;
}
img {
max-width: 100%;
}
audio,
video {
width: 100%;
}
pre {
padding: 1em;
border: 1px solid #e6e6e6;
border-radius: 0.5em;
background-color: #f5f5f5;
white-space: pre-wrap;
white-space: -moz-pre-wrap;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;
}
input,
button {
outline: 0 !important;
}
input[type="submit"],
button {
border: 0;
padding: .5em 1em;
margin-left: .5em;
border-radius: .1em;
cursor: pointer;
background: #2196f3;
color: #fff;
border: 1px solid rgba(0, 0, 0, 0.05);
box-shadow: 0 0 5px rgba(0, 0, 0, 0.05);
transition: .1s ease all;
}
input[type="submit"]:hover,
button:hover {
background-color: #1E88E5;
}
input[type="submit"].block,
button.block {
display: block;
width: 100%;
margin: 0 0 1em;
}
button.delete {
background: #F44336;
}
button.delete:hover {
background: #D32F2F;
}
button.cancel {
background-color: #ECEFF1;
color: #37474F;
}
button.cancel:hover {
background-color: #e9eaeb;
}
button.flat,
input[type="submit"].flat {
color: #1E88E5;
background: transparent;
box-shadow: 0 0 0;
border: 0;
margin-left: 0;
text-transform: uppercase;
}
button.flat:hover,
input[type="submit"].flat:hover {
background: rgba(0,0,0,0.05)
}
button.flat.delete {
color: #F44336;
}
button.flat.cancel {
color: #ccc;
}
button.flat[disabled] {
color: #ccc;
cursor: not-allowed;
}
.mobile-only {
display: none !important;
}
.container {
width: 95%;
max-width: 960px;
margin: 1em auto 0;
}
i.spin {
animation: 1s spin linear infinite;
}
#app {
transition: .2s ease padding;
}
#app.multiple {
padding-bottom: 4em;
}
nav {
width: 16em;
position: fixed;
top: 4em;
left: 0;
}
nav .action {
width: 100%;
display: block;
border-radius: 0;
font-size: 1.1em;
padding: .5em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
nav>div {
border-top: 1px solid rgba(0, 0, 0, 0.05);
}
nav .action>* {
vertical-align: middle;
}
main {
min-height: 1em;
margin: 0 1em 1em auto;
width: calc(100% - 19em);
}
#breadcrumbs {
height: 3em;
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}
#breadcrumbs span,
#breadcrumbs {
display: flex;
align-items: center;
color: #6f6f6f;
}
#breadcrumbs a {
color: inherit;
transition: .1s ease-in;
border-radius: .125em;
}
#breadcrumbs a:hover {
background-color: rgba(0,0,0, 0.05);
}
#breadcrumbs span a {
padding: .2em;
}
#progress {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 3px;
z-index: 9999999999;
}
#progress div {
height: 100%;
background-color: #40c4ff;
width: 0;
transition: .2s ease width;
}

View File

@@ -1,420 +0,0 @@
.dashboard {
max-width: 600px;
margin: 1em 0;
}
a {
color: inherit
}
select,
textarea,
input[type="text"],
input[type="password"] {
padding: 0.5em 0;
line-height: 1;
display: block;
border: 0;
border-bottom: 1px solid #dddddd;
transition: .2s ease border;
width: 100%;
background: transparent;
}
textarea {
line-height: 1.15;
padding: .5em;
border: 1px solid #ddd;
font-family: monospace;
min-height: 10em;
resize: none;
border-radius: 2px;
}
.dashboard #locale,
.dashboard #username,
.dashboard #password,
.dashboard #scope {
max-width: 18em;
}
.dashboard #locale {
margin-top: .5em;
}
textarea:focus,
textarea:hover,
input[type="text"]:focus,
input[type="password"]:focus,
input[type="text"]:hover,
input[type="password"]:hover {
border-color: #2979ff;
}
input.red {
border-color: red;
}
input.green {
border-color: green;
}
.dashboard p label {
margin-bottom: .2em;
display: block;
font-size: .8em;
font-weight: 500;
color: rgba(0, 0, 0, 0.57);
}
li code,
p code {
background: rgba(0, 0, 0, 0.05);
padding: .1em;
border-radius: .2em;
}
.small {
font-size: .8em;
line-height: 1.5;
}
.dashboard #nav {
list-style: none;
display: flex;
color: rgb(84, 110, 122);
font-weight: 500;
margin: 0 0 1em;
font-size: .8em;
text-align: center;
justify-content: space-between;
padding: 0;
}
.dashboard #nav li {
width: 100%;
padding: 0 0 1em;
border-bottom: 2px solid rgba(0, 0, 0, 0.05);
}
.dashboard #nav li.active {
border-color: #2196f3
}
.dashboard #nav i {
font-size: 1em;
vertical-align: middle;
}
table {
border-collapse: collapse;
width: 100%;
}
table tr {
border-bottom: 1px solid #ccc;
}
table tr:last-child {
border: 0;
}
table th {
font-weight: 500;
color: #757575;
text-align: left;
}
table th,
table td {
padding: .5em 0;
}
table td.small {
width: 1em;
}
table tr>*:first-child {
padding-left: 1em;
}
table tr>*:last-child {
padding-right: 1em;
}
.card {
position: relative;
margin: .5rem 0 1rem 0;
background-color: #fff;
border-radius: 2px;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2);
}
.card.floating {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 99999;
max-width: 25em;
width: 90%;
max-height: 95%;
z-index: 99999;
animation: .1s show forwards;
}
.card>*>*:first-child {
margin-top: 0;
}
.card>*>*:last-child {
margin-bottom: 0;
}
.card .card-title {
padding: 1.5em 1em 1em;
display: flex;
}
.card .card-title>*:first-child {
margin-right: auto;
}
.card>div {
padding: 1em 1em;
}
.card>div:first-child {
padding-top: 1.5em;
}
.card>div:last-child {
padding-bottom: 1.5em;
}
.card .card-title * {
margin: 0;
}
.card .card-action {
text-align: right;
}
.card .card-content.full {
padding-bottom: 0;
}
.card h2 {
font-weight: 500;
}
.card h3 {
color: rgba(0, 0, 0, 0.53);
font-size: 1em;
font-weight: 500;
margin: 2em 0 1em;
}
.card-content table {
margin: 0 -1em;
width: calc(100% + 2em);
}
.card code {
word-wrap: break-word;
}
.card#download {
max-width: 15em;
}
.card#share ul {
list-style: none;
padding: 0;
margin: 0;
}
.card#share ul li {
display: flex;
justify-content: space-between;
align-items: center;
}
.card#share ul li a {
color: #2196F3;
cursor: pointer;
margin-right: auto;
}
.card#share ul li .action i {
font-size: 1em;
}
.card#share ul li input,
.card#share ul li select {
padding: .2em;
margin-right: .5em;
border: 1px solid #dadada;
}
.card#share .action.copy-clipboard::after {
content: 'Copied!';
position: absolute;
left: -25%;
width: 150%;
font-size: .6em;
text-align: center;
background: #44a6f5;
color: #fff;
padding: .5em .2em;
border-radius: .4em;
top: -2em;
transition: .1s ease opacity;
opacity: 0;
}
.card#share .action.copy-clipboard.active::after {
opacity: 1;
}
.overlay {
background-color: rgba(0, 0, 0, 0.5);
position: fixed;
top: 0;
left: 0;
height: 100%;
width: 100%;
z-index: 9999;
animation: .1s show forwards;
}
/* * * * * * * * * * * * * * * *
* PROMPT - MOVE *
* * * * * * * * * * * * * * * */
.file-list {
max-height: 50vh;
overflow: auto;
list-style: none;
margin: 0;
padding: 0;
width: 100%;
}
.file-list li {
width: 100%;
user-select: none;
border-radius: .2em;
padding: .3em;
}
.file-list li[aria-selected=true] {
background: #2196f3 !important;
color: #fff !important;
transition: .1s ease all;
}
.file-list li:hover {
background-color: #e9eaeb;
cursor: pointer;
}
.file-list li:before {
content: "folder";
color: #6f6f6f;
vertical-align: middle;
line-height: 1.4;
font-family: 'Material Icons';
font-size: 1.75em;
margin-right: .25em;
}
.file-list li[aria-selected=true]:before {
color: white;
}
.help {
max-width: 24em;
}
.help ul {
padding: 0;
margin: 1em 0;
list-style: none;
}
@keyframes show {
0% {
display: none;
opacity: 0;
}
1% {
display: block;
opacity: 0;
}
100% {
display: block;
opacity: 1;
}
}
.collapsible {
border-top: 1px solid rgba(0,0,0,0.1);
}
.collapsible:last-of-type {
border-bottom: 1px solid rgba(0,0,0,0.1);
}
.collapsible > input {
display: none;
}
.collapsible > label {
padding: 1em 0;
cursor: pointer;
border-right: 0;
border-left: 0;
display: flex;
justify-content: space-between;
}
.collapsible > label * {
margin: 0;
color: rgba(0,0,0,0.57);
}
.collapsible > label i {
transition: .2s ease transform;
user-select: none;
}
.collapsible .collapse {
max-height: 0;
overflow: hidden;
transition: .2s ease all;
}
.collapsible > input:checked ~ .collapse {
padding-top: 1em;
padding-bottom: 1em;
max-height: 20em;
}
.collapsible > input:checked ~ label i {
transform: rotate(180deg)
}
.card .collapsible {
width: calc(100% + 2em);
margin: 0 -1em;
}
.card .collapsible > label {
padding: 1em;
}
.card .collapsible .collapse {
padding: 0 1em;
}

View File

@@ -1,184 +0,0 @@
@import "~codemirror/lib/codemirror.css";
@import "~codemirror/theme/ttcn.css";
#editor {
max-width: 800px;
margin: 0 auto;
}
#editor .CodeMirror {
box-shadow: rgba(0, 0, 0, 0.06) 0px 1px 3px, rgba(0, 0, 0, 0.12) 0px 1px 2px;
margin: 2em 0;
border-radius: .5em;
}
#editor h2 {
color: rgba(0, 0, 0, 0.3);
font-weight: 500;
}
.CodeMirror {
height: auto;
}
.markdown .CodeMirror {
padding: .75em;
}
.cm-s-markdown .CodeMirror-gutter {
border-right: 1px solid #eff3f5;
padding-right: 5px;
margin-right: 15px;
min-width: 2.5em;
padding-bottom: 30px;
}
.cm-s-markdown .CodeMirror-cursor {
border-right: 2px solid #667880;
}
.cm-s-markdown .CodeMirror-lines {
margin: 0;
}
.cm-s-markdown {
color: #3D494E;
}
.cm-s-markdown span.cm-header {
color: #3D494E;
font-weight: bold;
}
.cm-s-markdown span.cm-variable-2 {
color: #3D494E;
}
.cm-s-markdown span.cm-meta {
color: #516066;
}
.cm-s-markdown span.cm-hr {
color: #516066;
}
.cm-s-markdown span.cm-comment {
color: #868f93;
}
.cm-s-markdown span.cm-qualifier {
color: #868f93;
}
.cm-s-markdown span.cm-number {
color: #197987;
}
.cm-s-markdown span.cm-variable {
color: #197987;
}
.cm-s-markdown span.cm-builtin {
color: #197987;
}
.cm-s-markdown span.cm-link {
color: #197987;
text-decoration: underline;
}
.cm-s-markdown span.cm-tag {
color: #197987;
}
.cm-s-markdown span.cm-string {
color: #48abb9;
}
.cm-s-markdown span.cm-string-2 {
color: #48abb9;
}
.cm-s-markdown span.cm-quote {
color: #48abb9;
}
.cm-s-markdown span.cm-atom {
color: #48abb9;
}
.cm-s-markdown span.cm-property {
color: #82a367;
}
.cm-s-markdown span.cm-operator {
color: #82a367;
}
.cm-s-markdown span.cm-variable-3 {
color: #82a367;
}
.cm-s-markdown span.cm-attribute {
color: #90bb74;
}
.cm-s-markdown span.cm-def {
color: #90bb74;
}
.cm-s-markdown span.cm-keyword {
color: #ec6c45;
}
.cm-s-markdown span.cm-bracket {
color: #ec6c45;
}
.cm-s-markdown span.cm-error {
color: #e45346;
}
.cm-s-markdown span.cm-em {
font-style: italic;
}
.cm-s-markdown span.cm-strong {
font-weight: bold;
}
.cm-s-markdown .cm-header-1 {
font-size: 200%;
line-height: 200%;
}
.cm-s-markdown .cm-header-2 {
font-size: 160%;
line-height: 160%;
}
.cm-s-markdown .cm-header-3 {
font-size: 125%;
line-height: 125%;
}
.cm-s-markdown .cm-header-4 {
font-size: 110%;
line-height: 110%;
}
.cm-s-markdown .cm-comment {
background: rgba(0, 0, 0, .05);
border-radius: 2px;
}
.cm-s-markdown .cm-link {
color: #7f8c8d;
}
.cm-s-markdown .cm-url {
color: #aab2b3;
}
.cm-s-markdown .cm-strikethrough {
text-decoration: line-through;
}

View File

@@ -1,137 +0,0 @@
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'), url(../assets/fonts/roboto/normal-cyrillic-ext.woff2) format('woff2');
unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'), url(../assets/fonts/roboto/normal-cyrillic.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'), url(../assets/fonts/roboto/normal-greek-ext.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'), url(../assets/fonts/roboto/normal-greek.woff2) format('woff2');
unicode-range: U+0370-03FF;
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'), url(../assets/fonts/roboto/normal-vietnamese.woff2) format('woff2');
unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB;
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'), url(../assets/fonts/roboto/normal-latin-ext.woff2) format('woff2');
unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'), url(../assets/fonts/roboto/normal-latin.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: local('Roboto Medium'), local('Roboto-Medium'), url(../assets/fonts/roboto/medium-cyrillic-ext.woff2) format('woff2');
unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: local('Roboto Medium'), local('Roboto-Medium'), url(../assets/fonts/roboto/medium-cyrillic.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: local('Roboto Medium'), local('Roboto-Medium'), url(../assets/fonts/roboto/medium-greek-ext.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: local('Roboto Medium'), local('Roboto-Medium'), url(../assets/fonts/roboto/medium-greek.woff2) format('woff2');
unicode-range: U+0370-03FF;
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: local('Roboto Medium'), local('Roboto-Medium'), url(../assets/fonts/roboto/medium-vietnamese.woff2) format('woff2');
unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB;
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: local('Roboto Medium'), local('Roboto-Medium'), url(../assets/fonts/roboto/medium-latin-ext.woff2) format('woff2');
unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: local('Roboto Medium'), local('Roboto-Medium'), url(../assets/fonts/roboto/medium-latin.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}
@font-face {
font-family: 'Material Icons';
font-style: normal;
font-weight: 400;
src: local('Material Icons'), local('MaterialIcons-Regular'), url(../assets/fonts/material/icons.woff2) format('woff2');
}
.prompt .file-list ul li:before,
.material-icons {
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
font-size: 24px;
line-height: 1;
letter-spacing: normal;
text-transform: none;
display: inline-block;
white-space: nowrap;
word-wrap: normal;
direction: ltr;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
-moz-osx-font-smoothing: grayscale;
font-feature-settings: 'liga';
}

View File

@@ -1,260 +0,0 @@
header {
z-index: 1000;
background-color: #fff;
border-bottom: 1px solid rgba(0, 0, 0, 0.075);
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
position: fixed;
top: 0;
left: 0;
width: 100%;
padding: 0;
display: flex;
}
header .overlay {
width: 0;
height: 0;
}
header a,
header a:hover {
color: inherit;
}
header>div:first-child>.action,
header img {
margin-right: 1em;
}
header img {
height: 2.5em;
}
header>div:first-child>.action {
display: none;
}
header>div {
display: flex;
width: 100%;
padding: 0.5em 0.5em 0.5em 1em;
align-items: center;
}
header .action span {
display: none;
}
header>div div {
vertical-align: middle;
position: relative;
}
header>div:last-child div {
display: flex;
}
header>div:first-child {
height: 4em;
}
header>div:last-child {
justify-content: flex-end;
}
header .search-button {
display: none;
}
#more {
display: none;
}
#search {
position: relative;
height: 100%;
width: 100%;
max-width: 25em;
}
#search.active {
position: fixed;
top: 0;
right: 0;
width: 100%;
max-width: 100%;
height: 100%;
z-index: 9999;
}
#search #input {
background-color: #f5f5f5;
display: flex;
padding: 0.75em;
border-radius: 0.3em;
transition: .1s ease all;
align-items: center;
z-index: 2;
}
#search.active #input {
border-bottom: 1px solid rgba(0, 0, 0, 0.075);
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
background-color: #fff;
height: 4em;
}
#search.active>div {
border-radius: 0 !important;
}
#search.active i,
#search.active input {
color: #212121;
}
#search #input>.action,
#search #input>i {
margin-right: 0.3em;
user-select: none;
}
#search input {
width: 100%;
border: 0;
background-color: transparent;
line-height: 0;
padding: 0;
}
#search #result {
visibility: visible;
max-height: none;
background-color: #f8f8f8;
text-align: left;
padding: 0;
color: rgba(0, 0, 0, 0.6);
height: 0;
transition: .1s ease height, .1s ease padding;
overflow-x: hidden;
overflow-y: auto;
z-index: 1;
}
#search #result>div>*:first-child {
margin-top: 0;
}
#search.active #result {
padding: .5em;
height: calc(100% - 4em);
}
#search ul {
padding: 0;
margin: 0;
list-style: none;
}
#search li {
margin-bottom: .5em;
}
#search #result>div {
max-width: 45em;
margin: 0 auto;
}
#search #result #renew {
width: 100%;
text-align: center;
display: none;
margin: 0;
max-width: none;
}
#search.ongoing #result #renew {
display: block;
}
#search.active #result i {
color: #ccc;
}
#search.active #result>p>i {
text-align: center;
margin: 0 auto;
display: table;
}
#search.active #result ul li a {
display: flex;
align-items: center;
padding: .3em 0;
}
#search.active #result ul li a i {
margin-right: .3em;
}
#search::-webkit-input-placeholder {
color: rgba(255, 255, 255, .5);
}
#search:-moz-placeholder {
opacity: 1;
color: rgba(255, 255, 255, .5);
}
#search::-moz-placeholder {
opacity: 1;
color: rgba(255, 255, 255, .5);
}
#search:-ms-input-placeholder {
color: rgba(255, 255, 255, .5);
}
#search .boxes {
border: 1px solid rgba(0, 0, 0, 0.075);
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
background: #fff;
margin: 1em 0;
}
#search .boxes h3 {
margin: 0;
font-weight: 500;
font-size: 1em;
color: #212121;
padding: .5em;
}
#search .boxes>div {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
margin-right: -1em;
margin-bottom: -1em;
}
#search .boxes>div>div {
background: #2196F3;
color: #fff;
text-align: center;
width: 10em;
padding: 1em;
cursor: pointer;
margin-bottom: 1em;
margin-right: 1em;
flex-grow: 1;
}
#search .boxes p {
margin: 1em 0 0;
}
#search .boxes i {
color: #fff !important;
font-size: 3.5em;
}

View File

@@ -1,237 +0,0 @@
#listing h2 {
margin: 0 0 0 0.5em;
font-size: .9em;
color: rgba(0, 0, 0, 0.38);
font-weight: 500;
}
#listing .item div:last-of-type * {
text-overflow: ellipsis;
overflow: hidden;
}
#listing>div {
display: flex;
padding: 0;
flex-wrap: wrap;
justify-content: flex-start;
position: relative;
}
#listing .item {
background-color: #fff;
position: relative;
display: flex;
flex-wrap: nowrap;
color: #6f6f6f;
transition: .1s ease background, .1s ease opacity;
align-items: center;
cursor: pointer;
}
#listing .item div:last-of-type {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
#listing .item p {
margin: 0;
}
#listing .item .size,
#listing .item .modified {
font-size: 0.9em;
}
#listing .item .name {
font-weight: bold;
}
#listing .item i {
font-size: 4em;
margin-right: 0.1em;
vertical-align: bottom;
}
.message {
text-align: center;
font-size: 2em;
margin: 1em auto;
display: block !important;
width: 95%;
color: rgba(0, 0, 0, 0.3);
font-weight: 500;
}
.message i {
font-size: 2.5em;
margin-bottom: .2em;
display: block;
}
#listing.mosaic {
padding-top: 1em;
margin: 0 -0.5em;
}
#listing.mosaic .item {
width: calc(33% - 1em);
margin: .5em;
padding: 0.5em;
border-radius: 0.2em;
box-shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .12);
}
#listing.mosaic .item:hover {
box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24) !important;
}
#listing.mosaic .header {
display: none;
}
#listing.mosaic .item div:first-of-type {
width: 5em;
}
#listing.mosaic .item div:last-of-type {
width: calc(100% - 5vw);
}
#listing.list {
flex-direction: column;
padding-top: 3.25em;
width: 100%;
max-width: 100%;
margin: 0;
}
#listing.list .item {
width: 100%;
margin: 0;
border: 1px solid rgba(0, 0, 0, 0.1);
padding: 1em;
border-top: 0;
}
#listing.list h2 {
display: none;
}
#listing .item[aria-selected=true] {
background: #2196f3 !important;
color: #fff !important;
}
#listing.list .item div:first-of-type {
width: 3em;
}
#listing.list .item div:first-of-type i {
font-size: 2em;
}
#listing.list .item div:last-of-type {
width: calc(100% - 3em);
display: flex;
align-items: center;
}
#listing.list .item .name {
width: 50%;
}
#listing.list .item .size {
width: 25%;
}
#listing .item.header {
display: none !important;
background-color: #ccc;
}
#listing.list .header i {
font-size: 1.5em;
vertical-align: middle;
margin-left: .2em;
}
#listing.list .item.header {
display: flex !important;
background: #fafafa;
position: fixed;
width: calc(100% - 19em);
top: 7em;
right: 1em;
z-index: 999;
padding: .85em;
border: 0;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}
#listing.list .item.header>div:first-child {
width: 0;
}
#listing.list .item.header .name {
margin-right: 3em;
}
#listing.list .header a {
color: inherit;
}
#listing.list .item.header>div:first-child {
width: 0;
}
#listing.list .name {
font-weight: normal;
}
#listing.list .item.header .name {
margin-right: 3em;
}
#listing.list .header span {
vertical-align: middle;
}
#listing.list .header i {
opacity: 0;
transition: .1s ease all;
}
#listing.list .header p:hover i,
#listing.list .header .active i {
opacity: 1;
}
#listing.list .item.header .active {
font-weight: bold;
}
#listing #multiple-selection {
position: fixed;
bottom: -4em;
left: 0;
z-index: 99999;
width: 100%;
background-color: #2196f3;
height: 4em;
display: flex !important;
padding: 0.5em 0.5em 0.5em 1em;
justify-content: space-between;
align-items: center;
transition: .2s ease bottom;
}
#listing #multiple-selection.active {
bottom: 0;
}
#listing #multiple-selection p,
#listing #multiple-selection i {
color: #fff;
}

View File

@@ -1,76 +0,0 @@
#login {
background: #fff;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
#login img {
width: 4em;
height: 4em;
margin: 0 auto;
display: block;
}
#login h1 {
text-align: center;
font-size: 2.5em;
margin: .4em 0 .67em;
}
#login form {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
max-width: 16em;
width: 90%;
}
#login.recaptcha form {
min-width: 304px;
}
#login #recaptcha {
margin: .5em 0 0;
}
#login input {
width: 100%;
width: 100%;
margin: .5em 0 0;
}
#login .wrong {
background: #F44336;
color: #fff;
padding: .5em;
text-align: center;
animation: .2s opac forwards;
}
@keyframes opac {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
#login input[type="text"],
#login input[type="password"] {
padding: .5em 1em;
border: 1px solid #e9e9e9;
transition: .2s ease border;
color: #333;
}
#login input[type="text"]:focus,
#login input[type="password"]:focus,
#login input[type="text"]:hover,
#login input[type="password"]:hover {
border-color: #9f9f9f;
}

View File

@@ -1,113 +0,0 @@
@media (max-width: 1024px) {
nav {
width: 10em
}
}
@media (max-width: 1024px) {
#listing.list .item.header,
main {
width: calc(100% - 13em)
}
}
@media (max-width: 736px) {
#more {
display: inherit
}
header .overlay {
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.1);
}
#dropdown {
position: fixed;
top: 1em;
right: 1em;
display: block;
background-color: #fff;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
transform: scale(0);
transition: .1s ease-in-out transform;
transform-origin: top right;
z-index: 99999;
}
#dropdown > div {
display: block;
}
#dropdown.active {
transform: scale(1);
}
#dropdown .action {
display: flex;
align-items: center;
border-radius: 0;
width: 100%;
}
#dropdown .action span:not(.counter) {
display: inline-block;
padding: .4em;
}
#dropdown .counter {
left: 2.25em;
}
#file-selection {
position: fixed;
bottom: 1em;
left: 50%;
transform: translateX(-50%);
display: flex;
align-items: center;
background: #fff;
box-shadow: rgba(0, 0, 0, 0.06) 0px 1px 3px, rgba(0, 0, 0, 0.12) 0px 1px 2px;
width: 95%;
max-width: 20em;
}
#file-selection .action {
border-radius: 50%;
width: auto;
}
#file-selection > span {
display: inline-block;
margin-left: 1em;
color: #6f6f6f;
margin-right: auto;
}
nav {
top: 0;
z-index: 99999;
background: #fff;
height: 100%;
width: 16em;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
transition: .1s ease left;
left: -17em;
}
nav.active {
left: 0;
}
header .search-button,
header>div:first-child>.action {
display: inherit;
}
header img {
display: none;
}
#listing {
margin-bottom: 5em;
}
#listing.list .item.header,
main {
width: calc(100% - 2em);
}
main {
margin: 0 1em;
width: calc(100% - 2em);
}
#search {
display: none;
}
#search.active {
display: block;
}
}

View File

@@ -1,228 +0,0 @@
@import "~normalize.css/normalize.css";
@import "~noty/lib/noty.css";
@import "./fonts.css";
@import "./base.css";
@import "./header.css";
@import "./listing.css";
@import "./editor.css";
@import "./dashboard.css";
@import "./login.css";
/* * * * * * * * * * * * * * * *
* ACTION *
* * * * * * * * * * * * * * * */
.action {
display: inline-block;
cursor: pointer;
transition: 0.2s ease all;
border: 0;
margin: 0;
color: #546E7A;
border-radius: 50%;
background: transparent;
padding: 0;
box-shadow: none;
vertical-align: middle;
text-align: left;
position: relative;
}
.action.disabled {
opacity: 0.2;
cursor: not-allowed;
}
.action i {
padding: 0.4em;
transition: .1s ease-in-out all;
border-radius: 50%;
}
.action:hover {
background-color: rgba(0, 0, 0, .1);
}
.action ul {
position: absolute;
top: 0;
color: #7d7d7d;
list-style: none;
margin: 0;
padding: 0;
flex-direction: column;
display: flex;
}
.action ul li {
line-height: 1;
padding: .7em;
transition: .1s ease background-color;
}
.action ul li:hover {
background-color: rgba(0, 0, 0, 0.04);
}
#click-overlay {
display: none;
position: fixed;
cursor: pointer;
top: 0;
left: 0;
height: 100%;
width: 100%;
}
#click-overlay.active {
display: block;
}
.action .counter {
display: block;
position: absolute;
bottom: 0;
right: 0;
background: #2196f3;
color: #fff;
border-radius: 50%;
font-size: .75em;
width: 1.5em;
height: 1.5em;
text-align: center;
line-height: 1.25em;
border: 2px solid white;
}
/* PREVIEWER */
#previewer {
background-color: rgba(0, 0, 0, 0.9);
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 9999;
overflow: hidden;
}
#previewer .bar {
width: 100%;
text-align: right;
display: flex;
padding: 0.5em;
height: 3.7em;
}
#previewer .action:first-of-type {
margin-right: auto;
}
#previewer .action i {
color: #fff;
}
#previewer .action:hover {
background-color: rgba(255, 255, 255, 0.3)
}
#previewer .action span {
display: none;
}
#previewer .preview {
margin: 2em auto 4em;
max-width: 80%;
text-align: center;
height: calc(100vh - 9.7em);
}
#previewer .preview pre {
text-align: left;
overflow: auto;
}
#previewer .preview pre,
#previewer .preview video,
#previewer .preview img {
max-height: 100%;
margin: 0;
}
#previewer .pdf {
width: 100%;
height: 100%;
}
#previewer h2.message {
color: rgba(255, 255, 255, 0.5)
}
#previewer>button {
margin: 0;
position: fixed;
top: 50%;
transform: translateY(-50%);
}
#previewer>button:first-of-type {
left: 0.5em;
}
#previewer>button:last-of-type {
right: 0.5em;
}
/* * * * * * * * * * * * * * * *
* PROMPT *
* * * * * * * * * * * * * * * */
.noty_buttons {
text-align: right;
padding: 0 10px 10px !important;
}
.noty_buttons button {
background: rgba(0, 0, 0, 0.05);
border: 1px solid rgba(0,0,0,0.1);
box-shadow: 0 0 0 0;
font-size: 14px;
}
/* * * * * * * * * * * * * * * *
* FOOTER *
* * * * * * * * * * * * * * * */
.credits {
font-size: 0.6em;
margin: 3em 2.5em;
color: #a5a5a5;
}
.credits span {
display: block;
margin: .3em 0;
}
.credits a,
.credits a:hover {
color: inherit;
cursor: pointer;
}
/* * * * * * * * * * * * * * * *
* ANIMATIONS *
* * * * * * * * * * * * * * * */
@keyframes spin {
100% {
-webkit-transform: rotate(-360deg);
transform: rotate(-360deg);
}
}
@import './mobile.css';

View File

@@ -1,200 +0,0 @@
permanent: Permanent
buttons:
cancel: Cancel
close: Close
copy: Copy
copyFile: Copy file
copyToClipboard: Copy to clipboard
create: Create
delete: Delete
download: Download
info: Info
more: More
move: Move
moveFile: Move file
new: New
next: Next
ok: OK
replace: Replace
previous: Previous
rename: Rename
reportIssue: Report Issue
save: Save
search: Search
select: Select
share: Share
publish: Publish
selectMultiple: Select multiple
schedule: Schedule
switchView: Switch view
toggleSidebar: Toggle sidebar
update: Update
upload: Upload
permalink: Get Permanent Link
success:
linkCopied: Link copied!
errors:
forbidden: You're not welcome here.
internal: Something really went wrong.
notFound: This location can't be reached.
files:
folders: Folders
files: Files
body: Body
clear: Clear
closePreview: Close preview
home: Home
lastModified: Last modified
loading: Loading...
lonely: It feels lonely here...
metadata: Metadata
multipleSelectionEnabled: Multiple selection enabled
name: Name
size: Size
sortByName: Sort by name
sortBySize: Sort by size
sortByLastModified: Sort by last modified
help:
click: select file or directory
ctrl:
click: select multiple files or directories
f: opens search
s: save a file or download the directory where you are
del: delete selected items
doubleClick: open a file or directory
esc: clear selection and/or close the prompt
f1: this information
f2: rename file
help: Help
login:
password: Password
submit: Login
username: Username
wrongCredentials: Wrong credentials
prompts:
copy: Copy
copyMessage: 'Choose the place to copy your files:'
currentlyNavigating: 'Currently navigating on:'
deleteMessageMultiple: Are you sure you want to delete {count} file(s)?
deleteMessageSingle: Are you sure you want to delete this file/folder?
deleteTitle: Delete files
displayName: 'Display Name:'
download: Download files
downloadMessage: Choose the format you want to download.
error: Something went wrong
fileInfo: File information
filesSelected: "{count} files selected."
lastModified: Last Modified
move: Move
moveMessage: 'Choose new house for your file(s)/folder(s):'
newDir: New directory
newDirMessage: Write the name of the new directory.
newFile: New file
newFileMessage: Write the name of the new file.
numberDirs: Number of directories
numberFiles: Number of files
replace: Replace
replaceMessage: >
One of the files you're trying to upload is conflicting because of its name.
Do you wish to replace the existing one?
rename: Rename
renameMessage: Insert a new name for
show: Show
size: Size
schedule: Schedule
scheduleMessage: Pick a date and time to schedule the publication of this post.
newArchetype: Create a new post based on an archetype. Your file will be created on content folder.
settings:
admin: Admin
administrator: Administrator
allowCommands: Execute commands
allowEdit: Edit, rename and delete files or directories
allowNew: Create new files and directories
allowPublish: Publish new posts and pages
avoidChanges: "(leave blank to avoid changes)"
changePassword: Change Password
commands: Commands
commandsHelp: >
Here you can set commands that are executed in the named events. You
write one command per line. If the event is related to files, such as before and
after saving, the environment variable "FILE" will be available with the path
of the file.
commandsUpdated: Commands updated!
customStylesheet: Custom Stylesheet
examples: Examples
globalSettings: Global Settings
language: Language
lockPassword: Prevent the user from changing the password
newPassword: Your new password
newPasswordConfirm: Confirm your new password
newUser: New User
password: Password
passwordUpdated: Password updated!
permissions: Permissions
permissionsHelp: >
You can set the user to be an administrator or choose the permissions
individually. If you select "Administrator", all of the other options will be
automatically checked. The management of users remains a privilege of an administrator.
profileSettings: Profile Settings
ruleExample1: >
prevents the access to any dot file (such as .git, .gitignore) in
every folder.
ruleExample2: blocks the access to the file named Caddyfile on the root of the scope.
rules: Rules
rulesHelp1: >
Here you can define a set of allow and disallow rules for this specific
user. The blocked files won't show up in the listings and they wont be accessible
to the user. We support regex and paths relative to the users scope.
rulesHelp2: >
Each rule goes in one different line and must start with the keyword
{0} or {1}. Then you should write {2} if you are using a regular expression and
then the expression or the path.
scope: Scope
settingsUpdated: Settings updated!
user: User
userCommands: Commands
userCommandsHelp: >
A space separated list with the available commands for this user.
Example:
userCreated: User created!
userDeleted: User deleted!
userManagement: User Management
username: Username
users: Users
userUpdated: User updated!
sidebar:
help: Help
logout: Logout
myFiles: My files
newFile: New file
newFolder: New folder
settings: Settings
siteSettings: Site Settings
hugoNew: Hugo New
preview: Preview
search:
images: Images
music: Music
pdf: PDF
pressToExecute: Press enter to execute.
pressToSearch: Press enter to search.
search: Search...
searchOrCommand: Search or execute a command...
searchOrSupportedCommand: 'Search or use one of your supported commands:'
type: Type and press enter to search.
types: Types
video: Video
writeToSearch: Write here to search
languages:
en: English
fr: Français
pt: Português
ja: 日本語
zhCN: 中文 (简体)
zhTW: 中文 (繁體)
time:
unit: Time Unit
seconds: Seconds
minutes: Minutes
hours: Hours
days: Days

View File

@@ -1,193 +0,0 @@
permanent: Permanent
buttons:
cancel: Annuler
close: Fermer
copy: Copier
copyFile: Copier le fichier
copyToClipboard: Copier dans le presse-papier
create: Créer
delete: Supprimer
download: Télécharger
info: Info
more: Plus
move: Déplacer
moveFile: Déplacer le fichier
new: Nouveau
next: Suivant
ok: OK
replace: Remplacer
previous: Précédent
rename: Renommer
reportIssue: Rapport d'erreur
save: Enregistrer
search: Chercher
select: Sélectionner
share: Partager
publish: Publier
selectMultiple: Sélection multiple
schedule: Fixer la date
switchView: Changer le mode d'affichage
toggleSidebar: Afficher/Masquer la barre latérale
update: Mettre à jour
upload: Importer
permalink: Obtenir un lien permanent
errors:
forbidden: Vous n'êtes pas autorisé à être ici.
internal: Aïe ! Quelque chose s'est mal passé.
notFound: Impossible d'accéder à cet emplacement.
files:
folders: Dossiers
files: Fichiers
body: Corps
clear: Fermer
closePreview: Fermer la prévisualisation
home: Accueil
lastModified: Dernière modification
loading: Chargement...
lonely: Il semble qu'il n'y ai rien par ici...
metadata: Metadonnées
multipleSelectionEnabled: Sélection multiple activée
name: Nom
size: Taille
sortByName: Trier par nom
sortBySize: Trier par taille
sortByLastModified: Trier par date de dernière modification
help:
click: Sélectionner un élément
ctrl:
click: Sélectionner plusieurs éléments
f: Ouvrir l'invité de recherche
s: Télécharger l'élément actuel
del: Supprimer les éléments sélectionnés
doubleClick: Ouvrir un élément
esc: Désélectionner et/ou fermer la boîte de dialogue
f1: Ouvrir l'aide
f2: Renommer le fichier
help: Aide
login:
password: Mot de passe
submit: Se connecter
username: Utilisateur
wrongCredentials: Identifiants incorrects !
prompts:
copy: Copier
copyMessage: 'Choisissez l''emplacement où copier la sélection :'
currentlyNavigating: 'Dossier courant :'
deleteMessageMultiple: Etes-vous sûr de vouloir supprimer ces {count} élément(s) ?
deleteMessageSingle: Etes-vous sûr de vouloir supprimer cet élément ?
deleteTitle: Supprimer
displayName: 'Nom :'
download: Télécharger
downloadMessage: 'Choisissez le format de téléchargement :'
error: Quelque chose s'est mal passé
fileInfo: Informations
filesSelected: "{count} éléments sélectionnés"
lastModified: Dernière modification
move: Déplacer
moveMessage: 'Choisissez l''emplacement où déplacer la sélection :'
newDir: Nouveau dossier
newDirMessage: 'Nom du nouveau dossier :'
newFile: Nouveau fichier
newFileMessage: 'Nom du nouveau fichier :'
numberDirs: Nombre de dossiers
numberFiles: Nombre de fichiers
replace: Remplacer
replaceMessage: >
Un des fichiers que vous êtes en train d'importer a le même nom qu'un autre déjà présent.
Voulez-vous remplacer le fichier actuel par le nouveau ?
rename: Renommer
renameMessage: Nouveau nom pour
show: Montrer
size: Taille
schedule: Fixer la date
scheduleMessage: Choisissez une date pour planifier la publication de ce post
newArchetype: Créer un nouveau post basé sur un archétype. Votre fichier sera créé dans le dossier de contenu.
settings:
admin: Admin
administrator: Administrateur
allowCommands: Exécuter des commandes
allowEdit: Editer, renommer et supprimer des fichiers ou des dossiers
allowNew: Créer de nouveaux fichiers et dossiers
allowPublish: Publier de nouveaux posts et pages
avoidChanges: "(Laisser vide pour conserver l'actuel)"
changePassword: Modifier le mot de passe
commands: Commandes
commandsHelp: >
Ici vous pouvez définir des commandes qui seront exécutées lors de l'évènement correspondant.
Vous devez indiquer une commande par ligne. Si l'évènement est en rapport avec des fichiers,
par exemple avant et après enregistrement, la variable d'environement "FILE" sera disponible
et contiendra le chemin d'accès vers le fichier.
commandsUpdated: Commandes mises à jour !
customStylesheet: Feuille de style personnalisée
examples: Exemples
globalSettings: Paramètres généraux
language: Langue
newPassword: Votre nouveau mot de passe
newPasswordConfirm: Confirmation du nouveau mot de passe
newUser: Nouvel Utilisateur
password: Mot de passe
passwordUpdated: Mot de passe mis à jour !
permissions: Permissions
permissionsHelp: >
Vous pouvez définir l'utilisateur comme étant un administrateur ou encore choisir les
permissions individuellement. Si vous sélectionnez "Administrateur", toutes les autres
options seront automatiquement activées. La gestion des utilisateurs est un privilège que
seul l'administrateur possède.
profileSettings: Paramètres du profil
ruleExample1: Bloque l'accès à tous les fichiers commençant par un point (comme par exemple .git, .gitignore) dans tous les dossiers
ruleExample2: Bloque l'accès au fichier nommé "Caddyfile" à la racine du dossier utilisateur
rules: Règles
rulesHelp1: >
Vous pouvez définir ici un ensemble de règles pour cet utilisateur.
Les fichiers bloqués ne seront pas affichés et ne seront pas accessibles par l'utilisateur.
Les expressions régulières sont supportées et les chemins d'accès sont relatifs par rapport au dossier de l'utilisateur.
rulesHelp2: >
Chaque règle est définie sur une ligne différente et doit commencer par le mot clé {0} ou {1}.
Vous devez ensuite ajouter {2} si vous utilisez une expression régulière puis l'expression en question ou bien seulement le chemin d'accès.
scope: Portée du dossier utilisateur
settingsUpdated: Les paramètres ont été mis à jour !
user: Utilisateur
userCommands: Commandes
userCommandsHelp: 'Une liste séparée par des espaces des commandes permises pour l''utilisateur. Exemple :'
userCreated: Utilisateur créé !
userDeleted: Utilisateur supprimé !
userManagement: Gestion des utilisateurs
username: Nom d'utilisateur
users: Utilisateurs
userUpdated: Utilisateur mis à jour !
sidebar:
help: Aide
logout: Se déconnecter
myFiles: Mes fichiers
newFile: Nouveau fichier
newFolder: Nouveau dossier
settings: Paramètres
siteSettings: Paramètres du site
hugoNew: Nouveau Hugo
preview: Prévisualiser
search:
images: Images
music: Musique
pdf: PDF
pressToExecute: Appuyez sur Entrée pour exécuter
pressToSearch: Appuyez sur Entrée pour lancer la recherche
search: Recherche en cours...
searchOrCommand: Rechercher ou exécuter une commande...
searchOrSupportedCommand: 'Lancez une recherche ou exécutez une commande parmis les suivantes :'
type: Tapez votre recherche et appuyez sur Entrée
types: Types
video: Video
writeToSearch: Ecrivez ici pour lancer une recherche
languages:
en: English
fr: Français
pt: Português
ja: 日本語
zhCN: 中文 (简体)
zhTW: 中文 (繁體)
time:
unit: Unité de temps
seconds: Secondes
minutes: Minutes
hours: Heures
days: Jours

View File

@@ -1,56 +0,0 @@
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import en from './en.yaml'
import fr from './fr.yaml'
import pt from './pt.yaml'
import ja from './ja.yaml'
import zhCN from './zh-cn.yaml'
import zhTW from './zh-tw.yaml'
Vue.use(VueI18n)
export function detectLocale () {
let locale = (navigator.language || navigator.browserLangugae).toLowerCase()
switch (true) {
case /^en.*/i.test(locale):
locale = 'en'
break
case /^fr.*/i.test(locale):
locale = 'fr'
break
case /^pt.*/i.test(locale):
locale = 'pt'
break
case /^ja.*/i.test(locale):
locale = 'ja'
break
case /^zh-CN/i.test(locale):
locale = 'zh-cn'
break
case /^zh-TW/i.test(locale):
locale = 'zh-tw'
break
case /^zh.*/i.test(locale):
locale = 'zh-cn'
break
default:
locale = 'en'
}
return locale
}
const i18n = new VueI18n({
locale: detectLocale(),
fallbackLocale: 'en',
messages: {
'en': en,
'fr': fr,
'pt': pt,
'ja': ja,
'zh-cn': zhCN,
'zh-tw': zhTW
}
})
export default i18n

View File

@@ -1,200 +0,0 @@
permanent: 永久
buttons:
cancel: キャンセル
close: 閉じる
copy: コピー
copyFile: ファイルをコピー
copyToClipboard: クリップボードにコピー
create: 作成
delete: 削除
download: ダウンロード
info: 情報
more: More
move: 移動
moveFile: ファイルを移動
new: 新規
next:
ok: OK
replace: 置き換える
previous:
rename: 名前を変更
reportIssue: 問題を報告
save: 保存
search: 検索
select: 選択
share: シェア
publish: 発表
selectMultiple: 複数選択
schedule: スケジュール
switchView: 表示を切り替わる
toggleSidebar: サイドバーを表示する
update: 更新
upload: アップロード
permalink: 固定リンク
success:
linkCopied: リンクがコピーされました!
errors:
forbidden: アクセスが拒否されました。
internal: 内部エラーが発生しました。
notFound: リソースが見つからなりませんでした。
files:
folders: フォルダ
files: ファイル
body: 本文
clear: クリアー
closePreview: プレビューを閉じる
home: ホーム
lastModified: 最終変更
loading: ローディング...
lonely: ここには何もない...
metadata: メタデータ
multipleSelectionEnabled: 複数選択有効
name: 名前
size: サイズ
sortByName: 名前によるソート
sortBySize: サイズによるソート
sortByLastModified: 最終変更日付によるソート
help:
click: ファイルやディレクトリを選択
ctrl:
click: 複数のファイルやディレクトリを選択
f: 検索を有効にする
s: ファイルを保存またはカレントディレクトリをダウンロード
del: 選択した項目を削除
doubleClick: ファイルやディレクトリをオープン
esc: 選択をクリアーまたはプロンプトを閉じる
f1: このヘルプを表示
f2: ファイルの名前を変更
help: ヘルプ
login:
password: パスワード
submit: ログイン
username: ユーザ名
wrongCredentials: ユーザ名またはパスワードが間違っています。
prompts:
copy: コピー
copyMessage: コピーの目標ディレクトリを選択してください:
currentlyNavigating: 現在閲覧しているディレクトリ:
deleteMessageMultiple: '{count} つのファイルを本当に削除してよろしいですか。'
deleteMessageSingle: このファイル/フォルダを本当に削除してよろしいですか。
deleteTitle: ファイルを削除
displayName: 名前:
download: ファイルをダウンロード
downloadMessage: 圧縮形式を選択してください。
error: あるエラーが発生しました。
fileInfo: ファイル情報
filesSelected: '{count} つのファイルは選択されました。'
lastModified: 最終変更
move: 移動
moveMessage: 移動の目標ディレクトリを選択してください:
newDir: 新しいディレクトリを作成
newDirMessage: 新しいディレクトリの名前を入力してください。
newFile: 新しいファイルを作成
newFileMessage: 新しいファイルの名前を入力してください。
numberDirs: ディレクトリ個数
numberFiles: ファイル個数
replace: 置き換える
replaceMessage: >
アップロードするファイルの中でかち合う名前が一つあります。
既存のファイルを置き換えりませんか。
rename: 名前を変更
renameMessage: 名前を変更しようファイルは:
show: 表示
size: サイズ
schedule: スケジュール
scheduleMessage: このポストの発表日付をスケジュールしてください。
newArchetype: ある元型に基づいて新しいポストを作成します。ファイルは コンテンツフォルダに作成されます。
settings:
admin: 管理者
administrator: 管理者
allowCommands: コマンドの実行
allowEdit: ファイルやディレクトリの編集、名前変更と削除
allowNew: ファイルとディレクトリの作成
allowPublish: ポストとぺーじの発表
avoidChanges: "(変更を避けるために空白にしてください)"
changePassword: パスワードを変更
commands: コマンド
commandsHelp: "\
ここで、名前付きイベントに実行するコマンドを設定することができます。\
一行にコマンド一つを入力してください。\
イベントはファイルに関連する場合、例えばファイル保存の前にまたは後で、\
環境変数 FILE はファイルのパスに割り当てられます。"
commandsUpdated: コマンドは更新されました!
customStylesheet: カスタムスタイルシ ート
examples:
globalSettings: グローバル設定
language: 言語
lockPassword: 新しいパスワードを変更に禁止
newPassword: 新しいパスワード
newPasswordConfirm: 新しいパスワードを確認します
newUser: 新しいユーザー
password: パスワード
passwordUpdated: パスワードは更新されました!
permissions: 権限
permissionsHelp: "\
あなたはユーザーを管理者に設定し、または権限を個々に設定しできます。\
\"管理者\"を選択する場合、その他のすべての選択肢は自動的に設定されます。\
ユーザーの管理は管理者の権限として保留されました。"
profileSettings: プロファイル設定
ruleExample1: "\
各フォルダに名前はドットで始まるファイル(例えば、.git、.gitignore\
へのアクセスを制限します。"
ruleExample2: 範囲のルートパスに名前は Caddyfile のファイルへのアクセスを制限します。
rules: 規則
rulesHelp1: "\
ここに、あなたはこのユーザーの許可または拒否規則を設定できます。\
ブロックされたファイルはリストに表示されません、それではアクセスも制限されます。\
正規表現(regex)のサポートと範囲に相対のパスが提供されています。"
rulesHelp2: "\
一行に規則一つを入力してください、\
その間に規則はキーワード {0} や {1} で始める必要があります。\
そして正規表現を使う場合、{2} と入力し、表現やパスを入力してください。"
scope: 範囲
settingsUpdated: 設定は更新されました!
user: ユーザー
userCommands: ユーザーのコマンド
userCommandsHelp: "\
空白区切りの有効のコマンドのリストを指定してください。\
例:"
userCreated: ユーザーは作成されました!
userDeleted: ユーザーは削除されました!
userManagement: ユーザー管理
username: ユーザー名
users: ユーザー
userUpdated: ユーザーは更新されました!
sidebar:
help: ヘルプ
logout: ログアウト
myFiles: 私のファイル
newFile: 新しいファイルを作成
newFolder: 新しいフォルダを作成
settings: 設定
siteSettings: サイト設定
hugoNew: Hugo New
preview: プレビュー
search:
images: 画像
music: 音楽
pdf: PDF
pressToExecute: Enter を押して実行します。
pressToSearch: Enter を押して検索します。
search: 検索...
searchOrCommand: コマンドを検索または実行します。
searchOrSupportedCommand: サポートしているコマンドを検索または実行します:
type: キーワードを入力し、Enter を押して検索します。
types: 種類
video: ビデオ
writeToSearch: ここにキーワードを入力してください
languages:
en: English
fr: Français
pt: Português
ja: 日本語
zhCN: 中文 (简体)
zhTW: 中文 (繁體)
time:
unit: 時間単位
seconds:
minutes:
hours: 時間
days:

View File

@@ -1,203 +0,0 @@
permanent: Permanente
buttons:
cancel: Cancelar
close: Fechar
copy: Copiar
copyFile: Copiar ficheiro
copyToClipboard: Copiar
create: Criar
delete: Eliminar
download: Descarregar
info: Info
more: Mais
move: Mover
moveFile: Mover ficheiro
new: Novo
next: Próximo
ok: OK
previous: Anterior
publish: Publicar
rename: Renomear
replace: Substituir
reportIssue: Reportar Erro
save: Guardar
share: Partilhar
schedule: Agendar
search: Pesquisar
select: Selecionar
selectMultiple: Selecionar múltiplos
switchView: Alterar modo de visão
toggleSidebar: Alternar barra lateral
update: Atualizar
upload: Enviar
permalink: Obter link permanente
success:
linkCopied: Link copiado!
errors:
forbidden: Tu não és bem-vindo aqui.
internal: Algo correu bastante mal.
notFound: Não conseguimos chegar a esta localização.
files:
body: Corpo
clear: Limpar
closePreview: Fechar pré-visualização
files: Ficheiros
folders: Pastas
home: Início
lastModified: Última modificação
loading: A carregar...
lonely: Sinto-me sozinho...
metadata: Metadados
multipleSelectionEnabled: Seleção múltipla ativada
name: Nome
size: Tamanho
sortByLastModified: Ordenar pela última modificação
sortByName: Ordenar pelo nome
sortBySize: Ordenar pelo tamanho
help:
click: selecionar pasta ou ficheiro
ctrl:
click: selecionar várias pastas e ficheiros
f: pesquisar
s: guardar um ficheiro ou descarregar a pasta em que estás a navegar
del: eliminar os ficheiros selecionados
doubleClick: abrir pasta ou ficheiro
esc: limpar seleção e/ou fechar menu
f1: esta informação
f2: renomear ficheiro
help: Ajuda
languages:
en: English
fr: Français
pt: Português
ja: 日本語
zhCN: 中文 (简体)
zhTW: 中文 (繁體)
login:
password: Palavra-passe
submit: Login
username: Nome de utilizador
wrongCredentials: Dados errados
prompts:
copy: Copiar
copyMessage: 'Escolhe um lugar para copiar os ficheiros:'
currentlyNavigating: 'A navegar em:'
deleteMessageMultiple: Deseja eliminar {count} ficheiro(s)?
deleteMessageSingle: Deseja eliminar esta pasta/ficheiro?
deleteTitle: Eliminar ficheiros
displayName: 'Nome:'
download: Descarregar ficheiros
downloadMessage: Escolha o formato do ficheiro.
error: Algo correu mal
fileInfo: Informação do ficheiro
filesSelected: "{count} ficheiros selecionados."
lastModified: Última Modificação
move: Mover
moveMessage: 'Escolha uma nova casa para os seus ficheiros:'
newArchetype: Criar um novo post baseado num "archetype". O seu ficheiro será criado
na pasta "content".
newDir: Nova pasta
newDirMessage: Escreva o nome da nova pasta.
newFile: Novo ficheiro
newFileMessage: Escreva o nome do novo ficheiro.
numberDirs: Número de pastas
numberFiles: Número de ficheiros
rename: Renomear
renameMessage: Insira um novo nome para
replace: Substituir
replaceMessage: >
Já existe um ficheiro com nome igual a um dos que está a tentar
enviar. Deseja substituir?
schedule: Agendar
scheduleMessage: Escolha uma data para publicar este post.
show: Mostrar
size: Tamanho
search:
images: Imagens
music: Música
pdf: PDF
pressToExecute: Prima enter para executar.
pressToSearch: Prima enter para pesquisar.
search: Pesquise...
searchOrCommand: Pesquise ou execute um comando...
searchOrSupportedCommand: 'Pesquise ou utilize um dos seus comandos:'
type: Escreva e prima enter para pesquisar.
types: Tipos
video: Vídeos
writeToSearch: Escreva aqui para pesquisar
settings:
admin: Admin
administrator: Administrador
allowCommands: Executar comandos
allowEdit: Editar, renomear e eliminar ficheiros ou pastas
allowNew: Criar novos ficheiros e pastas
allowPublish: Publicar novas páginas e conteúdos
avoidChanges: "(deixe em branco para manter)"
changePassword: Alterar Password
commands: Comandos
commandsHelp: >
Pode definir um conjunto de comandos a executar em determiandos eventos.
Deve escrever um comando por linha. Se o evento estiver relacionado com ficheiros,
como antes e depois de guardar, irá existir uma variável de ambiente denominada
"FILE" com o caminho do ficheiro.
commandsUpdated: Comandos atualizados!
customStylesheet: Estilos Personalizados
examples: Exemplos
globalSettings: Configurações Globais
language: Linguagem
lockPassword: Não permitir que o utilizador altere a palavra-passe
newPassword: Nova palavra-passe
newPasswordConfirm: Confirme a nova palavra-passe
newUser: Novo Utilizador
password: Palavra-passe
passwordUpdated: Palavra-passe atualizada!
permissions: Permissões
permissionsHelp: >
Pode definir o utilizador como administrador ou escolher as permissões
manualmente. Se selecionar a opção "Administrador", todas as outras opções serão
automaticamente selecionadas. A gestão dos utilizadores é um privilégio restringido
aos administradores.
profileSettings: Configurações do Utilizador
ruleExample1: >
previne o acesso a qualquer "dotfile" (como .git, .gitignore) em
qualquer pasta
ruleExample2: bloqueia o acesso ao ficheiro chamado Caddyfile.
rules: Regras
rulesHelp1: >
Aqui pode definir um conjunto de regras para permitir ou bloquear o
acesso do utilizador a determinados ficheiros ou pastas. Os ficheiros bloqueados
não irão aparecer durante a navegação. Suportamos expressões regulares e os caminhos
dos ficheiros devem ser relativos à base do utilizador.
rulesHelp2: >
Cada regra deve ser colocada numa linha diferente e deve começar com
as palavras {0} (permite) ou {1} (bloqueia). Deve escrever, logo de seguida, {2},
caso queira utilizar uma expressão regular. Depois, escreva o caminho do ficheiro/pasta
ou a expressão regular.
scope: Base
settingsUpdated: Configurações atualizadas!
user: Utilizador
userCommands: Comandos
userCommandsHelp: 'Uma lista, separada com espaços, de comandos disponíveis para
este utilizados. Exemplo:'
userCreated: Utilizador criado!
userDeleted: Utilizador eliminado!
userManagement: Gestão de Utilizadores
username: Nome de utilizador
users: Utilizadores
userUpdated: Utilizador atualizado!
sidebar:
help: Ajuda
hugoNew: Hugo New
logout: Sair
myFiles: Ficheiros
newFile: Novo ficheiro
newFolder: Nova pasta
preview: Pré-visualizar
settings: Configurações
siteSettings: Configurações do Site
time:
unit: Unidades de Tempo
seconds: Segundos
minutes: Minutos
hours: Horas
days: Dias

Some files were not shown because too many files have changed in this diff Show More