Compare commits
943 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3f7a28de84 | |||
| c17d1ab033 | |||
| 3bed2e440e | |||
| 3625833b2c | |||
| 03663530ed | |||
| ca990600da | |||
| bb8ad42b27 | |||
| d4466a37fe | |||
| 3a2d4cf9fd | |||
| 5e1f27767b | |||
| dac93644e8 | |||
| ad5ef8bca0 | |||
| af83d05ce2 | |||
| 4944703edc | |||
| f810834623 | |||
| 30cf72bf55 | |||
| edd1825b58 | |||
| 063d5e7bda | |||
| 5de17117a1 | |||
| d2aec7096d | |||
| bf22266a62 | |||
| 7f8630b91c | |||
| 35983eb9bb | |||
| 8f5c4b083c | |||
| 9f8f188d92 | |||
| 2378fd6347 | |||
| 6c40d7fc85 | |||
| 2a0e0a47d8 | |||
| 0ee9848231 | |||
| 6708bf238d | |||
| bafb9744c8 | |||
| 5becf260fa | |||
| 4d0c632c70 | |||
| 4fd5f670fe | |||
| 45e26a7fc8 | |||
| a1272ab84d | |||
| 4840d618c2 | |||
| ac20dc6155 | |||
| 8bb381e78c | |||
| 63fb9d6f07 | |||
| 20898d5ef4 | |||
| 72efc8ceeb | |||
| 6f2287da69 | |||
| 8896f0f988 | |||
| bf483b628e | |||
| b34b489cfd | |||
| 13d94929ec | |||
| e5de9917fd | |||
| a03c4d90b2 | |||
| 038fccd244 | |||
| bffe65478d | |||
| 5a4cbf5b70 | |||
| ea60d76e60 | |||
| d470f817ac | |||
| dc90eab32b | |||
| e01b00298a | |||
| 2daae77094 | |||
| 59a31ed07f | |||
| 060f3ce34c | |||
| ccc3b0a531 | |||
| 0ddfb2956c | |||
| b3bcc6aa06 | |||
| a22b8043b4 | |||
| 078d54411b | |||
| c7e9610b3f | |||
| 3a69628007 | |||
| 3f0dd0f0bc | |||
| da7b8e256f | |||
| 0452e869ec | |||
| 385dac6d31 | |||
| 96823682f9 | |||
| a6e4e83809 | |||
| 1b220426e2 | |||
| 6059967951 | |||
| 44e63667d9 | |||
| 5ba5e22a09 | |||
| b49c87acf1 | |||
| fc040c749d | |||
| e07fadea76 | |||
| 781864b954 | |||
| 4a81360efc | |||
| ae4f7dceec | |||
| c2bd272cf3 | |||
| 0658ce4f11 | |||
| cefbe6a87f | |||
| fbdc665487 | |||
| 0ebf595c11 | |||
| ba69c04c27 | |||
| 78ef840eda | |||
| d73bfdbddb | |||
| f5c862640b | |||
| 9e83c3bdf0 | |||
| 23aa47d828 | |||
| 0f5c15d543 | |||
| 28cc645b93 | |||
| 83f1c3274f | |||
| d64139d812 | |||
| 7a65c2017b | |||
| c01d953292 | |||
| f80f16dfc8 | |||
| 8648f0c005 | |||
| d76a5a6d60 | |||
| 759c91940b | |||
| 84b3bdaac0 | |||
| 8013f35d96 | |||
| c0b65ad1c9 | |||
| 4408ebd40a | |||
| 8d109df851 | |||
| 17476f4d8d | |||
| 495f83c925 | |||
| eb5e3f1d1d | |||
| 04f85fd9a8 | |||
| b8115ff46b | |||
| 0636697289 | |||
| b7c5fda512 | |||
| 69b563948d | |||
| ada5d5b269 | |||
| 2a1ceb67b4 | |||
| 685a5d745e | |||
| 72efc80fdc | |||
| fea06d19f3 | |||
| 681e04b060 | |||
| 2bf568ff46 | |||
| 1421236800 | |||
| e0a9791412 | |||
| 7fd4ad6564 | |||
| d29b18e82e | |||
| e6f12c0734 | |||
| 0f36a88e16 | |||
| e93f37206a | |||
| 4c78612eb4 | |||
| 2fdd512488 | |||
| 9b12f822e1 | |||
| d02e6850c2 | |||
| 6337b46e80 | |||
| 9216bab8c9 | |||
| 9bc086071a | |||
| 80336f77fd | |||
| 200392b462 | |||
| 9c48053b14 | |||
| 18167b9a24 | |||
| 3fbbe0d9f1 | |||
| 6cf7f21dcb | |||
| 8d09f57c0d | |||
| e586d65b64 | |||
| 7ddba67745 | |||
| 7ebd4bdcf7 | |||
| 49b4c87598 | |||
| bfe7a69226 | |||
| 36054f5dd4 | |||
| c00a691019 | |||
| 778543311f | |||
| a550a64c84 | |||
| def73759ae | |||
| 03f2cacb58 | |||
| fea68d1a72 | |||
| 8fe73e076c | |||
| c15bb5ad72 | |||
| 9707ac4661 | |||
| 53ec80be94 | |||
| f136d288d6 | |||
| 1d770f9867 | |||
| a6e5637507 | |||
| 65f499b4ac | |||
| 4745ca3fde | |||
| 7c3184376c | |||
| 609adaca9b | |||
| 9562a8aca8 | |||
| b2e7b8b600 | |||
| 11f15430ff | |||
| a0f126b973 | |||
| 08d6bedcaa | |||
| 8e5b91180e | |||
| 3b46d0f947 | |||
| 80d4260a8e | |||
| 739a4024fa | |||
| 3be96dcb17 | |||
| f400aa1281 | |||
| ed148f6685 | |||
| 10f31ac572 | |||
| 35ce4d5e5f | |||
| 727880c950 | |||
| 2ff26deaf8 | |||
| ad77c3451f | |||
| bf283db8e6 | |||
| 228d317204 | |||
| 4d9128ded9 | |||
| cc09434ea4 | |||
| f24e9bfab0 | |||
| ac1811f83e | |||
| fd637b9a5a | |||
| 5614df19cf | |||
| 91f5992423 | |||
| 2831e77cce | |||
| 63771b9ae3 | |||
| f86c2b5fa6 | |||
| e9e3f93805 | |||
| 99e8c2785b | |||
| 410216f435 | |||
| f3e71b5dd5 | |||
| b8568662bd | |||
| e0a862b626 | |||
| 2679eb9d84 | |||
| 8fa6d62197 | |||
| 8e15ece7df | |||
| 3473e600b1 | |||
| c04bde29a3 | |||
| 11ed735c09 | |||
| f83e9e32fc | |||
| 8ffcee8aff | |||
| 5e0c44a2ac | |||
| 49fb9e7cab | |||
| a8541089be | |||
| ac8489f5f7 | |||
| 3c9548257c | |||
| 726e2cf3c6 | |||
| 0d9c8081fe | |||
| 575d1d03d9 | |||
| e8694faad6 | |||
| 887073dedc | |||
| a9d274424f | |||
| ef5c8a7d01 | |||
| 01ea7f5855 | |||
| ad880894a8 | |||
| acc0a80179 | |||
| 5661e8d42a | |||
| 7185fbff62 | |||
| 4b6942d2d8 | |||
| 26e2f07419 | |||
| eb3754509d | |||
| bd91bd5c32 | |||
| 3ccf086391 | |||
| 9e89bf7aca | |||
| f5ea67e4cf | |||
| a5849ac956 | |||
| d1f260e2d7 | |||
| ccb52fb461 | |||
| d1224bf9f6 | |||
| b10be65ec7 | |||
| 65d885da00 | |||
| f565e10817 | |||
| 64e7c90ae9 | |||
| 9b606725fe | |||
| e4ae6b976f | |||
| caf719f163 | |||
| f1f2cf2bce | |||
| a68a80f654 | |||
| b457d7bd32 | |||
| 300f293cb1 | |||
| af29e1bf07 | |||
| 70265817ae | |||
| 08d6497c9c | |||
| cef72d87a6 | |||
| d80e9931f5 | |||
| 71318d6103 | |||
| 1f198256ed | |||
| 0ef1ffbf71 | |||
| 629f913b8d | |||
| 3fadf42a1c | |||
| ad46f2fb46 | |||
| 2e9747a59a | |||
| a1661af17c | |||
| 43e1711eb6 | |||
| f209798368 | |||
| 60f53cf46f | |||
| cabadf169b | |||
| 63e6ee1293 | |||
| bd527a9f4c | |||
| 42f4f11ef0 | |||
| 98869090f6 | |||
| c31daf4725 | |||
| 12e7599b35 | |||
| a40a8038d3 | |||
| 70d73bdd86 | |||
| 40a63c8b11 | |||
| 6c5904ba7f | |||
| e9a4231d4f | |||
| 55bd59962c | |||
| f072829ce3 | |||
| da2a5fe222 | |||
| 4ac0e65963 | |||
| e99be2c134 | |||
| 7475924eac | |||
| c235cb75cd | |||
| 3e7d86b2c5 | |||
| 77a53ea724 | |||
| 93e3329c58 | |||
| a6beec1bd2 | |||
| 39217f3108 | |||
| 613a8ec312 | |||
| aeab8b342e | |||
| 1f84aa903d | |||
| f836b98fa6 | |||
| b9be1cf1ee | |||
| 2784f674ea | |||
| 970e107524 | |||
| e2ee70f477 | |||
| ca8d3ed598 | |||
| 1d91f14516 | |||
| 893fd6434f | |||
| 773ac5b0f7 | |||
| ceff312db8 | |||
| 2020b4456c | |||
| f818f64145 | |||
| ef2b4041fb | |||
| f4e7a0df0e | |||
| e36c85eb79 | |||
| 4c0ac1d10b | |||
| 18865cec86 | |||
| 2680b0bc8c | |||
| 2054740fdb | |||
| 18fb777b89 | |||
| d3d0defabc | |||
| 95b7d92ea5 | |||
| fb258aeef0 | |||
| 709e21a3f4 | |||
| 64a5a6cfc5 | |||
| b3d85e69e9 | |||
| f4f7994c40 | |||
| 16b1939827 | |||
| 8a21985474 | |||
| b495929c0d | |||
| eae8138b33 | |||
| 65152fcb89 | |||
| 97444566db | |||
| ecf41ab3fa | |||
| 3b771f51a6 | |||
| 8425f5cc3d | |||
| 6de4cd35b5 | |||
| 00f2368f7a | |||
| 3198ea9682 | |||
| f0f162b8d2 | |||
| e50e45d6fa | |||
| 03b020eb20 | |||
| e0ef1a1c8b | |||
| e585dde46c | |||
| 8bde7de1ee | |||
| f6988b5aa3 | |||
| 00d66d39fc | |||
| c8ac32cf17 | |||
| 2c437e930c | |||
| 3c6b00dc28 | |||
| 13e677648c | |||
| d0c596461b | |||
| 2a4a861b34 | |||
| cc79712738 | |||
| d81bf605af | |||
| f39cfa4690 | |||
| 2f510787e7 | |||
| 8abb6c1321 | |||
| 46ee68ea48 | |||
| 3d46eeeb33 | |||
| b0f9e52b7e | |||
| dccec95401 | |||
| 5872cd191c | |||
| c20327fc72 | |||
| 8801764583 | |||
| 494b47f299 | |||
| 15a6402f75 | |||
| 385e651684 | |||
| c779373f2c | |||
| a6e9ad0b7d | |||
| efbbfe0135 | |||
| 0b3ab03782 | |||
| 9ff628ca56 | |||
| 1953a87293 | |||
| 702f2d67d6 | |||
| b4da3ee8e5 | |||
| 8a30241dc5 | |||
| 3828f525e1 | |||
| 1c5081cdc5 | |||
| 91f9bacf73 | |||
| 7f5d03a98d | |||
| 3f29386cb7 | |||
| 7a1e1247cb | |||
| ef7f187fa8 | |||
| 3930201003 | |||
| 64f4112cae | |||
| 9ca069a6fe | |||
| 3c9fbb4e32 | |||
| 0978bd849e | |||
| abce2f05dd | |||
| 705d3c38dc | |||
| 88bac4a33e | |||
| bb86dc6486 | |||
| d03b72f405 | |||
| fafdf17117 | |||
| f44a927530 | |||
| 9dd67fa342 | |||
| 8f187e280f | |||
| dc7fa8dfc6 | |||
| b1428a1cf8 | |||
| d8dc7372ab | |||
| 21bdbb2d5e | |||
| 4bea44da92 | |||
| ef5fcdee20 | |||
| 28af2989ec | |||
| f645d371ce | |||
| 3ef055ced3 | |||
| f40c88eb1f | |||
| ed5e175c20 | |||
| 79ea33c9d3 | |||
| 23246a5da6 | |||
| f764407daf | |||
| 061fca8c6e | |||
| f6d042f56d | |||
| 9c4a7388da | |||
| 33264c2d02 | |||
| 7c04b7396a | |||
| e317a5ab60 | |||
| 78b36d4dbe | |||
| b9c26b6330 | |||
| e85657fb10 | |||
| f3e688207d | |||
| 3af5d41759 | |||
| 9c4d1eb56a | |||
| bcb10aeef8 | |||
| 973392cc48 | |||
| 6c2a56458b | |||
| 442147d923 | |||
| a09136d2d2 | |||
| de4bbe4968 | |||
| 9f33293b7e | |||
| 119e6c5edb | |||
| 854616ac6d | |||
| 7b4f66881d | |||
| e437ad810b | |||
| bd164a75c4 | |||
| 7036d91fe7 | |||
| c660878388 | |||
| a991c46eed | |||
| 2490f61dca | |||
| 54171dd796 | |||
| dbf1188c5b | |||
| 215409a8b2 | |||
| 511f1ce1e8 | |||
| d83d25dade | |||
| aa29fc4ec6 | |||
| 73b3d449b1 | |||
| d0804524a1 | |||
| 4d2758dfa0 | |||
| 0d7d472c91 | |||
| 86ecd2b543 | |||
| aff1dd4ff1 | |||
| e86ee7fd1e | |||
| 935e9fffb4 | |||
| f11a3cf21c | |||
| 1aa5b75804 | |||
| efeaadcf9d | |||
| fccc3a2e07 | |||
| 162740b798 | |||
| 86de3eb766 | |||
| 5942d358b7 | |||
| a4fcb2e5c6 | |||
| 5385fda8ab | |||
| 8b5bef48d5 | |||
| f7a4b44136 | |||
| af31cfed76 | |||
| 882da5c5eb | |||
| 4fc7eba349 | |||
| e492f8da13 | |||
| fe312015d2 | |||
| 52b84c11a5 | |||
| e1b33efb3d | |||
| d69a66a58e | |||
| bde23a44f8 | |||
| 233eb91be4 | |||
| e56f82142a | |||
| 6f9aba78a7 | |||
| 04f19537e7 | |||
| a19e212f43 | |||
| d58199f362 | |||
| 383215866f | |||
| 839edf32cc | |||
| 35c1f1376c | |||
| ff9f89fd23 | |||
| b236d3f627 | |||
| 9ab45e6813 | |||
| ea127a401b | |||
| 459374022f | |||
| c6c45673af | |||
| f39152ad6e | |||
| c7fcca533d | |||
| 9aa11176b8 | |||
| eeabca8090 | |||
| 337e807297 | |||
| c57f69d967 | |||
| 2e6239bb9f | |||
| 07320a2bd2 | |||
| 2e5b2fa808 | |||
| 927c9e796f | |||
| b5d7eb148c | |||
| 896f981ff5 | |||
| c18a2476b6 | |||
| d0ec2ddd23 | |||
| a05b61159e | |||
| e50d7d31c0 | |||
| 9114615adc | |||
| 71e1cbc8eb | |||
| 38520658ad | |||
| f808b01692 | |||
| 822c877949 | |||
| 331e5b0261 | |||
| 39ffaba323 | |||
| 42708d1121 | |||
| 53e1892eb6 | |||
| 559cbfdc2f | |||
| 18696f77fd | |||
| 29714661b1 | |||
| 151f45db0e | |||
| 77255d6688 | |||
| 6b1b148d65 | |||
| 789c46821d | |||
| 38dd2def20 | |||
| 5642d1a150 | |||
| 77c5140bed | |||
| 9416053bfc | |||
| d0702f9fbd | |||
| 1adab57426 | |||
| 8c3d7875b2 | |||
| e2a038d653 | |||
| 8c68acff2a | |||
| bd40f1af88 | |||
| ebf2d92327 | |||
| 8c59809432 | |||
| 11b8695663 | |||
| 03ce43d466 | |||
| 18c38dffc6 | |||
| 25203e5081 | |||
| 80784b782b | |||
| f44dba22fc | |||
| bead8b42da | |||
| 906424c1b6 | |||
| 9de9f1e5ce | |||
| fd7fde9515 | |||
| b8427f22f0 | |||
| 5a9bc00726 | |||
| fc6d92c63d | |||
| f92fcb53ca | |||
| 604cca1f42 | |||
| fbb39b61bd | |||
| 508f248676 | |||
| 7e271553fe | |||
| f99ebec0f2 | |||
| caa0b1765b | |||
| f93a3109a5 | |||
| 6cc1d32454 | |||
| dfd821dcfb | |||
| 4dc9fb705f | |||
| 41d45c6122 | |||
| b662c65e57 | |||
| 977ac0a1d6 | |||
| d9da186fb8 | |||
| a9c6577f0c | |||
| 1112e54772 | |||
| e8911f7c09 | |||
| 873f6b8e03 | |||
| f6d45eca76 | |||
| de9445cd25 | |||
| a3477df5c9 | |||
| 8da86b3f93 | |||
| 679aaf0836 | |||
| 3fd6790893 | |||
| a9b984feee | |||
| a899399989 | |||
| 491371a051 | |||
| 1f7018e1fe | |||
| 80e49ba7b0 | |||
| 42f3bb2c63 | |||
| 5c762616c3 | |||
| 1a94252831 | |||
| f81a34e379 | |||
| fa1c9d7cc7 | |||
| e9056dd96f | |||
| 63f9f22fa3 | |||
| be54dfe4e6 | |||
| 0d349ea670 | |||
| 80f4d85ac9 | |||
| 3f474025d8 | |||
| a8d3fe50df | |||
| 2da8f071cf | |||
| b0f323c976 | |||
| eb570e49c8 | |||
| 0c00e52516 | |||
| 7bb3aa3177 | |||
| c0d756f67d | |||
| db0c48af36 | |||
| 4e4a5b534f | |||
| a3f16a5685 | |||
| c406cef5b6 | |||
| c07ec4b682 | |||
| e48b238a3e | |||
| d6c4c484c4 | |||
| be9d693e74 | |||
| 6ed2627bb3 | |||
| 9fe87bc2e2 | |||
| 577c0b6dd8 | |||
| 0d8ecb82a3 | |||
| 2c3e148b00 | |||
| 438329be46 | |||
| 645291e8fe | |||
| a1e6187406 | |||
| d0f7b0cc60 | |||
| d143fa243d | |||
| 044079967b | |||
| bf7f0cb5a3 | |||
| 1b9cd91782 | |||
| 426bb453d2 | |||
| a687c8d915 | |||
| d06a1ebdfb | |||
| 14b8a7c950 | |||
| 9bf7752f73 | |||
| fcad69a427 | |||
| f5924e9547 | |||
| 5901516805 | |||
| 701d3066fb | |||
| ec97072152 | |||
| 6acadf8e98 | |||
| 5d03e2d1a5 | |||
| 843182c7cf | |||
| d5c2cc54b5 | |||
| 432a24f502 | |||
| 704803e182 | |||
| d0e9b3d640 | |||
| 1c5da417e4 | |||
| 7aba665e48 | |||
| 3a6af6c580 | |||
| 10bf812a9e | |||
| c3f7a2ca70 | |||
| 53da8ad844 | |||
| ec42e697ea | |||
| 2a0eec07a5 | |||
| 46825cfffb | |||
| 7d5e84fec1 | |||
| 2e05858e1a | |||
| 757ec837be | |||
| 84b041e87f | |||
| ec8e7ffad4 | |||
| 7ab5eb9508 | |||
| 91775f36fe | |||
| 4368a27152 | |||
| 695af58857 | |||
| 38a04dee34 | |||
| f0378b4d7c | |||
| 9e349f08a6 | |||
| 0d6cfb884c | |||
| cf05a1ae34 | |||
| 74a75f7d43 | |||
| fb436e8ca0 | |||
| e668a8124c | |||
| 812c980fa5 | |||
| 4423b88c5b | |||
| d61fd8be4f | |||
| 3f8578ded3 | |||
| 31485bddb9 | |||
| bad7df8c00 | |||
| 7a8ed3cee1 | |||
| 7aa5607f29 | |||
| d716495f6c | |||
| 78de00e831 | |||
| 5dbf3f2326 | |||
| 047fdc767a | |||
| 2150576d86 | |||
| ff24cf9c1d | |||
| 4ec53ab74c | |||
| 26650fdbf8 | |||
| 5fe65baee5 | |||
| d181bd7285 | |||
| fe6461e4aa | |||
| 21242a02a1 | |||
| 7a90ca6171 | |||
| 7e8b90d1ed | |||
| d069bff4f6 | |||
| 5709ecb368 | |||
| 6eb463c4ab | |||
| 2740fc525e | |||
| 2251045901 | |||
| b788add087 | |||
| de8d2a9005 | |||
| 5d3deafd3e | |||
| 6bc6fb1f60 | |||
| fa0f5ee12b | |||
| 4c707d087b | |||
| 35941d57ee | |||
| 82a590fddd | |||
| ac1509a66b | |||
| 216dee4d8a | |||
| e869ee7d7f | |||
| 9d521dbfee | |||
| be085c3d18 | |||
| 1f155b29db | |||
| 4ab0d25f65 | |||
| f87e6547e8 | |||
| 5f82fc23a7 | |||
| 1dd76ac650 | |||
| 21f78f4d4b | |||
| 6830d92558 | |||
| c0e8e6037b | |||
| e893e33e9b | |||
| afc9875f28 | |||
| 6b94ee51b8 | |||
| 4e88a6a651 | |||
| 8581fcae90 | |||
| 092ed4a787 | |||
| 8544c7e4b6 | |||
| 322c270b65 | |||
| d168fff7a9 | |||
| ef204e45b0 | |||
| 60c522899b | |||
| 3b792787d7 | |||
| 75045d6462 | |||
| a1146b6551 | |||
| 3554364bed | |||
| 0a033767db | |||
| 06568b15bb | |||
| 1517d5772d | |||
| dda6a6addc | |||
| 7987816d1e | |||
| 09edbff336 | |||
| 8c3158eba8 | |||
| 150d9ec1dc | |||
| 147cae223b | |||
| 91ba9a5975 | |||
| e538c85ba7 | |||
| 58f5a39ce6 | |||
| a9357a8311 | |||
| 1594a79fc5 | |||
| 94b232bbb8 | |||
| c44d13f9ea | |||
| 0eb8220204 | |||
| a2ae05a61c | |||
| 54c2d164a3 | |||
| 1b1647175d | |||
| b28c5430ef | |||
| d047530dc0 | |||
| efac66cb56 | |||
| c829b06ed8 | |||
| 9d7d549712 | |||
| 832fbd94c0 | |||
| b60a666df2 | |||
| 08f29ae7b6 | |||
| ff5cdbdc95 | |||
| 4c6ee89c9c | |||
| 34806fab1b | |||
| f2beee5185 | |||
| f3c300e485 | |||
| 43f81a62e9 | |||
| ab742ee9c6 | |||
| 4eeb29ff78 | |||
| 7d2d1d6859 | |||
| 89f108b45a | |||
| d09fe4d233 | |||
| 6980304968 | |||
| 72db15ca5d | |||
| 14f58edd80 | |||
| 6603a9d649 | |||
| ab9eb5cdb7 | |||
| 662db41bae | |||
| 5b914b0422 | |||
| 2003ffa97e | |||
| cebed9c01f | |||
| 18e1da6277 | |||
| 4cea76b0cf | |||
| 42a2139b8f | |||
| 17cc3aacb7 | |||
| e35f8439a7 | |||
| 8655913ebf | |||
| 64f81bc316 | |||
| d1e5059ea0 | |||
| 6b76ae3d1f | |||
| 3b4502e0e6 | |||
| 79d8f0d459 | |||
| 56f9a60f49 | |||
| 9c09c253fe | |||
| 1267905d28 | |||
| a162b1a99b | |||
| dfa0822f19 | |||
| 0e6509c3d8 | |||
| a40029f9d6 | |||
| a7c8f54570 | |||
| 96e4398072 | |||
| b5b6877976 | |||
| d01dc5a81e | |||
| a2daa32d0c | |||
| 50cfd8108b | |||
| c37515f880 | |||
| 0f26c285d4 | |||
| e1d64050ad | |||
| c613df0e25 | |||
| 3d57d625f8 | |||
| e2f3800ccb | |||
| efd351c98f | |||
| 7fa844a349 | |||
| 719ba257d3 | |||
| a7abcc7b7a | |||
| 1eca7831a6 | |||
| 3cbb0cc3ef | |||
| 9579003045 | |||
| d49cdfe2ef | |||
| 8ee18fdabc | |||
| dcbebc17aa | |||
| ef88b37eb5 | |||
| c5e04b0109 | |||
| e6ec001c6a | |||
| 283aca210a | |||
| 6f01c10c88 | |||
| b40c479a40 | |||
| 83bf04f09e | |||
| 138c352cd7 | |||
| 80299ed282 | |||
| d1fc590211 | |||
| f972af3f5b | |||
| b8acf672c0 | |||
| a375fed7bf | |||
| 21d955f703 | |||
| fdd725f58c | |||
| 64f1d8f77a | |||
| c5ba478dc3 | |||
| 177ef14c15 | |||
| 531828ca44 | |||
| 01736b5a2e | |||
| 15e4aea678 | |||
| 3e7a843aa9 | |||
| e9c80c99bd | |||
| 3aa655e44a | |||
| 7b0b3622ab | |||
| 5e9009ce86 | |||
| 656395fde6 | |||
| 1b70990b01 | |||
| 19122cf660 | |||
| 13a592a128 | |||
| e682a70f88 | |||
| 9102851f59 | |||
| 73f28afb19 | |||
| 6da1aebc94 | |||
| fa884b30ba | |||
| 5633b32f0a | |||
| 273b6f0658 | |||
| 548e608870 | |||
| 7a3260ae9e | |||
| 1680c95c27 | |||
| 6f296a789c | |||
| 106e0160f2 | |||
| 3ea184ffc0 | |||
| f76bcf6705 | |||
| b5a5377af1 | |||
| fb9f100e8f | |||
| 7d1d961267 | |||
| 6ae579e43f | |||
| de0ab52a47 | |||
| 90f95027a8 | |||
| 56f9adc431 | |||
| 7423ed4766 | |||
| 3f5f303e7f | |||
| cee28dc6d4 | |||
| 8c565e3b73 | |||
| 8ef1df8157 | |||
| 0fe64f1fdd | |||
| bae1f9dfba | |||
| 6c79aaf432 | |||
| 1d13376df6 | |||
| 71460a8ba5 | |||
| e1cc8fd799 | |||
| 3529ce35e4 | |||
| 29969f854c | |||
| 78bce602cb | |||
| 85b4b6e0cd | |||
| 5a73f94590 | |||
| ca9a83ee51 | |||
| 0a82d6e23c | |||
| a737f4b58e | |||
| 5301d664d9 | |||
| e316d4bd34 | |||
| 227a009da5 | |||
| ac47889928 | |||
| 6914fdd8d8 | |||
| b45b6b6707 | |||
| 48be826ea9 | |||
| b17cb92e9b | |||
| 38fe541997 | |||
| bba94d7458 | |||
| b678d0f55c | |||
| 2b8f274b8a | |||
| 5d858d21de | |||
| 628f9d31de | |||
| 9d8975f6b6 | |||
| 2edc539581 | |||
| 2ac8e2c5b5 | |||
| eac09b48b0 | |||
| 9dd68dae77 | |||
| aedd385e10 | |||
| 6c1c433903 | |||
| 8b42e75f68 | |||
| 82749439ac | |||
| a92718dba2 | |||
| 2414eb12c6 | |||
| f3c7e055f2 | |||
| e04d656f5a | |||
| d60c38edf9 | |||
| 7d1c19c021 | |||
| f17b89fadc | |||
| eef47c0ead | |||
| 5601b4536c | |||
| 6d1e97f564 | |||
| c772c473a1 | |||
| 0ae5297699 | |||
| 5e4b9b2321 | |||
| 947ccd075c | |||
| 4a953a250c | |||
| 7bf6b555f5 | |||
| 4cb9e0aad1 | |||
| 8148675cb7 | |||
| abba55cdd6 | |||
| 41ed68d5b0 | |||
| 99cc170b0e | |||
| 10caff9875 | |||
| 177c5510ff | |||
| 7d9a67de14 | |||
| 20da238413 | |||
| 664621955d | |||
| 15a4d52833 | |||
| 5397d820fe | |||
| 6837c3989a | |||
| 7db1bdf1e4 | |||
| 205c6f0c66 | |||
| 289ce94bd8 | |||
| 5b9cf67529 | |||
| 1bb7bdc8b3 | |||
| 8138fd390b | |||
| 3cc0cc0ae7 | |||
| 8a098044bf | |||
| 20fa5ca02a | |||
| c7d05059ca | |||
| d3ef28c092 | |||
| f217cf48d9 | |||
| ab5c68facc | |||
| 51ca217d2e | |||
| f41b085c76 | |||
| 74ba949d7e | |||
| 013f426d10 | |||
| d3a8322a64 | |||
| 1a6e0725d3 | |||
| 605f82d9c4 |
@ -12,3 +12,6 @@ insert_final_newline = true
|
|||||||
[*.{js,css}]
|
[*.{js,css}]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
|
[Makefile]
|
||||||
|
indent_style = tab
|
||||||
|
|||||||
4
.github/ISSUE_TEMPLATE.md
vendored
@ -1,9 +1,9 @@
|
|||||||
:warning: If your issue is about an error during fetching a link, please read: http://doc.wallabag.org/en/master/user/errors_during_fetching.html#how-can-i-help-to-fix-that
|
:warning: If your issue is about an error during fetching a link, please read: http://doc.wallabag.org/en/user/errors_during_fetching.html#how-can-i-help-to-fix-that
|
||||||
|
|
||||||
### Issue details
|
### Issue details
|
||||||
|
|
||||||
Please provide issue details here.
|
Please provide issue details here.
|
||||||
Remember, this is _not_ a place to ask questions. For that, go to http://gitter.im/wallabag/wallabag.
|
Remember, this is _not_ a place to ask questions. For that, go to https://community.wallabag.org/ (forum) or http://gitter.im/wallabag/wallabag (chat).
|
||||||
|
|
||||||
### Environment
|
### Environment
|
||||||
|
|
||||||
|
|||||||
9
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -7,9 +7,16 @@
|
|||||||
| Tests pass? | yes/no
|
| Tests pass? | yes/no
|
||||||
| Documentation | yes/no
|
| Documentation | yes/no
|
||||||
| Translation | yes/no
|
| Translation | yes/no
|
||||||
| Fixed tickets | #...
|
| CHANGELOG.md | yes/no
|
||||||
| License | MIT
|
| License | MIT
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Please list the issues your PR fixes using special keywords, see
|
||||||
|
https://help.github.com/articles/closing-issues-using-keywords/
|
||||||
|
|
||||||
|
Fixes #…
|
||||||
|
-->
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
- Please fill in this template according to the PR you're about to submit.
|
- Please fill in this template according to the PR you're about to submit.
|
||||||
- Replace this comment by a description of what your PR is solving.
|
- Replace this comment by a description of what your PR is solving.
|
||||||
|
|||||||
12
.gitignore
vendored
@ -13,6 +13,7 @@
|
|||||||
/bin/*
|
/bin/*
|
||||||
!/bin/console
|
!/bin/console
|
||||||
!/bin/symfony_requirements
|
!/bin/symfony_requirements
|
||||||
|
.php_cs.cache
|
||||||
|
|
||||||
# Parameters
|
# Parameters
|
||||||
/app/config/parameters.yml
|
/app/config/parameters.yml
|
||||||
@ -22,11 +23,11 @@
|
|||||||
|
|
||||||
# Assets and user uploads
|
# Assets and user uploads
|
||||||
web/uploads/
|
web/uploads/
|
||||||
!web/bundles
|
/web/bundles/*
|
||||||
web/bundles/*
|
!/web/bundles/.gitkeep
|
||||||
!web/bundles/wallabagcore
|
|
||||||
/web/assets/images/*
|
/web/assets/images/*
|
||||||
!web/assets/images/.gitkeep
|
!web/assets/images/.gitkeep
|
||||||
|
/web/wallassets/*.dev.js
|
||||||
|
|
||||||
# Build
|
# Build
|
||||||
/app/build
|
/app/build
|
||||||
@ -51,3 +52,8 @@ bin
|
|||||||
app/Resources/build/
|
app/Resources/build/
|
||||||
!/src/Wallabag/CoreBundle/Resources/public
|
!/src/Wallabag/CoreBundle/Resources/public
|
||||||
/src/Wallabag/CoreBundle/Resources/public/*
|
/src/Wallabag/CoreBundle/Resources/public/*
|
||||||
|
|
||||||
|
# Test-generated files
|
||||||
|
admin-export.json
|
||||||
|
specialexport.json
|
||||||
|
/data/site-credentials-secret-key.txt
|
||||||
|
|||||||
47
.php_cs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return PhpCsFixer\Config::create()
|
||||||
|
->setRiskyAllowed(true)
|
||||||
|
->setRules([
|
||||||
|
'@Symfony' => true,
|
||||||
|
'@Symfony:risky' => true,
|
||||||
|
'array_syntax' => [
|
||||||
|
'syntax' => 'short'
|
||||||
|
],
|
||||||
|
'combine_consecutive_unsets' => true,
|
||||||
|
'heredoc_to_nowdoc' => true,
|
||||||
|
'no_extra_consecutive_blank_lines' => [
|
||||||
|
'break',
|
||||||
|
'continue',
|
||||||
|
'extra',
|
||||||
|
'return',
|
||||||
|
'throw',
|
||||||
|
'use',
|
||||||
|
'parenthesis_brace_block',
|
||||||
|
'square_brace_block',
|
||||||
|
'curly_brace_block'
|
||||||
|
],
|
||||||
|
'no_unreachable_default_argument_value' => true,
|
||||||
|
'no_useless_else' => true,
|
||||||
|
'no_useless_return' => true,
|
||||||
|
'ordered_class_elements' => true,
|
||||||
|
'ordered_imports' => true,
|
||||||
|
'php_unit_strict' => true,
|
||||||
|
'phpdoc_order' => true,
|
||||||
|
// 'psr4' => true,
|
||||||
|
'strict_comparison' => true,
|
||||||
|
'strict_param' => true,
|
||||||
|
'concat_space' => [
|
||||||
|
'spacing' => 'one'
|
||||||
|
],
|
||||||
|
])
|
||||||
|
->setFinder(
|
||||||
|
PhpCsFixer\Finder::create()
|
||||||
|
->exclude([
|
||||||
|
'vendor',
|
||||||
|
'var',
|
||||||
|
'web'
|
||||||
|
])
|
||||||
|
->in(__DIR__)
|
||||||
|
)
|
||||||
|
;
|
||||||
@ -26,3 +26,18 @@ tools:
|
|||||||
checks:
|
checks:
|
||||||
php:
|
php:
|
||||||
code_rating: true
|
code_rating: true
|
||||||
|
|
||||||
|
# use the new PHP analysis engine
|
||||||
|
# https://scrutinizer-ci.com/docs/tools/php/php-analyzer/guides/migrate_to_new_php_analysis
|
||||||
|
build:
|
||||||
|
nodes:
|
||||||
|
analysis:
|
||||||
|
tests:
|
||||||
|
override:
|
||||||
|
- php-scrutinizer-run
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
override:
|
||||||
|
- npm install -g 'yarn'
|
||||||
|
- yarn install --force
|
||||||
|
- COMPOSER_MEMORY_LIMIT=-1 composer install -o --no-interaction --no-progress --prefer-dist
|
||||||
|
|||||||
47
.travis.yml
@ -4,9 +4,6 @@ services:
|
|||||||
- rabbitmq
|
- rabbitmq
|
||||||
- redis
|
- redis
|
||||||
|
|
||||||
# faster builds on docker-container setup
|
|
||||||
sudo: false
|
|
||||||
|
|
||||||
# used for HHVM
|
# used for HHVM
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
@ -20,14 +17,14 @@ cache:
|
|||||||
- vendor
|
- vendor
|
||||||
- $HOME/.composer/cache
|
- $HOME/.composer/cache
|
||||||
- node_modules
|
- node_modules
|
||||||
- $HOME/.cache/bower
|
|
||||||
- $HOME/.npm
|
- $HOME/.npm
|
||||||
|
- $HOME/.yarn-cache
|
||||||
|
|
||||||
php:
|
php:
|
||||||
- 5.5
|
|
||||||
- 5.6
|
- 5.6
|
||||||
- 7.0
|
- 7.0
|
||||||
- 7.1
|
- 7.1
|
||||||
|
- 7.2
|
||||||
- nightly
|
- nightly
|
||||||
|
|
||||||
node_js:
|
node_js:
|
||||||
@ -44,7 +41,6 @@ matrix:
|
|||||||
- php: 7.0
|
- php: 7.0
|
||||||
env: CS_FIXER=run VALIDATE_TRANSLATION_FILE=run ASSETS=build DB=sqlite
|
env: CS_FIXER=run VALIDATE_TRANSLATION_FILE=run ASSETS=build DB=sqlite
|
||||||
allow_failures:
|
allow_failures:
|
||||||
- php: 7.1
|
|
||||||
- php: nightly
|
- php: nightly
|
||||||
|
|
||||||
# exclude v1 branches
|
# exclude v1 branches
|
||||||
@ -52,6 +48,14 @@ branches:
|
|||||||
except:
|
except:
|
||||||
- legacy
|
- legacy
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
- if [[ $TRAVIS_REPO_SLUG = wallabag/wallabag ]]; then cp .composer-auth.json ~/.composer/auth.json; fi;
|
||||||
|
|
||||||
|
install:
|
||||||
|
- if [[ $ASSETS = build ]]; then source ~/.nvm/nvm.sh && nvm install 6.10; fi;
|
||||||
|
- if [[ $ASSETS = build ]]; then npm install -g yarn@latest; fi;
|
||||||
|
- if [[ $ASSETS = build ]]; then yarn install; fi;
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- PHP=$TRAVIS_PHP_VERSION
|
- PHP=$TRAVIS_PHP_VERSION
|
||||||
- if [[ ! $PHP = hhvm* ]]; then echo "memory_limit=-1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; fi;
|
- if [[ ! $PHP = hhvm* ]]; then echo "memory_limit=-1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; fi;
|
||||||
@ -59,21 +63,28 @@ before_script:
|
|||||||
- if [[ ! $PHP = hhvm* ]]; then phpenv config-rm xdebug.ini || echo "xdebug not available"; fi
|
- if [[ ! $PHP = hhvm* ]]; then phpenv config-rm xdebug.ini || echo "xdebug not available"; fi
|
||||||
- composer self-update --no-progress
|
- composer self-update --no-progress
|
||||||
- if [[ $DB = pgsql ]]; then psql -c 'create database wallabag_test;' -U postgres; fi;
|
- if [[ $DB = pgsql ]]; then psql -c 'create database wallabag_test;' -U postgres; fi;
|
||||||
|
# increase swap to avoid "proc_open(): fork failed - Cannot allocate memory"
|
||||||
install:
|
# this should be removed when no more PHP 5 build will be defined
|
||||||
- if [[ $ASSETS = build ]]; then source ~/.nvm/nvm.sh && nvm install 6.7; fi;
|
- sudo swapon -s
|
||||||
- if [[ $ASSETS = build ]]; then npm install -g npm@latest; fi;
|
- sudo fallocate -l 4G /swapfile
|
||||||
- if [[ $ASSETS = build ]]; then npm install; fi;
|
- sudo chmod 600 /swapfile
|
||||||
|
- sudo mkswap /swapfile
|
||||||
before_install:
|
- sudo swapon /swapfile
|
||||||
- if [[ $TRAVIS_REPO_SLUG = wallabag/wallabag ]]; then cp .composer-auth.json ~/.composer/auth.json; fi;
|
- sudo swapon -s
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- travis_wait composer update --no-interaction --no-progress
|
- travis_wait bash composer update -o --no-interaction --no-progress --prefer-dist
|
||||||
- ant prepare-$DB
|
- echo "travis_fold:start:prepare"
|
||||||
|
- make prepare DB=$DB
|
||||||
|
- echo "travis_fold:end:prepare"
|
||||||
|
|
||||||
|
- echo "travis_fold:start:fixtures"
|
||||||
|
- php bin/console doctrine:fixtures:load --no-interaction --env=test
|
||||||
|
- echo "travis_fold:end:fixtures"
|
||||||
|
|
||||||
- if [[ $VALIDATE_TRANSLATION_FILE = '' ]]; then ./bin/simple-phpunit -v ; fi;
|
- if [[ $VALIDATE_TRANSLATION_FILE = '' ]]; then ./bin/simple-phpunit -v ; fi;
|
||||||
- if [[ $CS_FIXER = run ]]; then php bin/php-cs-fixer fix src/ --verbose --dry-run ; fi;
|
- if [[ $CS_FIXER = run ]]; then php bin/php-cs-fixer fix --verbose --dry-run ; fi;
|
||||||
- if [[ $VALIDATE_TRANSLATION_FILE = run ]]; then php bin/console lint:yaml src/Wallabag/CoreBundle/Resources/translations -v ; fi;
|
- if [[ $VALIDATE_TRANSLATION_FILE = run ]]; then php bin/console lint:yaml src/Wallabag/CoreBundle/Resources/translations -v ; fi;
|
||||||
- if [[ $VALIDATE_TRANSLATION_FILE = run ]]; then php bin/console lint:yaml app/Resources/CraueConfigBundle/translations -v ; fi;
|
- if [[ $VALIDATE_TRANSLATION_FILE = run ]]; then php bin/console lint:yaml app/Resources/CraueConfigBundle/translations -v ; fi;
|
||||||
- if [[ $VALIDATE_TRANSLATION_FILE = run ]]; then php bin/console lint:yaml src/Wallabag/UserBundle/Resources/translations -v ; fi;
|
- if [[ $VALIDATE_TRANSLATION_FILE = run ]]; then php bin/console lint:yaml src/Wallabag/UserBundle/Resources/translations -v ; fi;
|
||||||
- if [[ $ASSETS = build ]]; then ./node_modules/grunt-cli/bin/grunt tests; fi;
|
- if [[ $ASSETS = build ]]; then yarn run build:prod; fi;
|
||||||
|
|||||||
1207
CHANGELOG.md
53
GNUmakefile
Executable file
@ -0,0 +1,53 @@
|
|||||||
|
SHELL=bash
|
||||||
|
TMP_FOLDER=/tmp
|
||||||
|
RELEASE_FOLDER=wllbg-release
|
||||||
|
|
||||||
|
ENV ?= prod
|
||||||
|
|
||||||
|
help: ## Display this help menu
|
||||||
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
||||||
|
|
||||||
|
clean: ## Clear the application cache
|
||||||
|
rm -rf var/cache/*
|
||||||
|
|
||||||
|
install: ## Install wallabag with the latest version
|
||||||
|
@./scripts/install.sh $(ENV)
|
||||||
|
|
||||||
|
update: ## Update the wallabag installation to the latest version
|
||||||
|
@./scripts/update.sh $(ENV)
|
||||||
|
|
||||||
|
dev: ## Install the latest dev version
|
||||||
|
@./scripts/dev.sh
|
||||||
|
|
||||||
|
run: ## Run the wallabag built-in server
|
||||||
|
@php bin/console server:run --env=dev
|
||||||
|
|
||||||
|
build: ## Run webpack
|
||||||
|
@npm run build:$(ENV)
|
||||||
|
|
||||||
|
prepare: clean ## Prepare database for testsuite
|
||||||
|
ifdef DB
|
||||||
|
cp app/config/tests/parameters_test.$(DB).yml app/config/parameters_test.yml
|
||||||
|
endif
|
||||||
|
-php bin/console doctrine:database:drop --force --env=test
|
||||||
|
php bin/console doctrine:database:create --env=test
|
||||||
|
php bin/console doctrine:migrations:migrate --no-interaction --env=test
|
||||||
|
|
||||||
|
fixtures: ## Load fixtures into database
|
||||||
|
php bin/console doctrine:fixtures:load --no-interaction --env=test
|
||||||
|
|
||||||
|
test: prepare fixtures ## Launch wallabag testsuite
|
||||||
|
bin/simple-phpunit -v
|
||||||
|
|
||||||
|
release: ## Create a package. Need a VERSION parameter (eg: `make release VERSION=master`).
|
||||||
|
ifndef VERSION
|
||||||
|
$(error VERSION is not set)
|
||||||
|
endif
|
||||||
|
@./scripts/release.sh $(VERSION) $(TMP_FOLDER) $(RELEASE_FOLDER) $(ENV)
|
||||||
|
|
||||||
|
deploy: ## Deploy wallabag
|
||||||
|
@bundle exec cap staging deploy
|
||||||
|
|
||||||
|
.PHONY: help clean prepare install fixtures update build test release deploy run dev
|
||||||
|
|
||||||
|
.DEFAULT_GOAL := install
|
||||||
230
Gruntfile.js
@ -1,230 +0,0 @@
|
|||||||
module.exports = function (grunt) {
|
|
||||||
require('load-grunt-tasks')(grunt);
|
|
||||||
|
|
||||||
grunt.initConfig({
|
|
||||||
appDir: 'app/Resources/static',
|
|
||||||
buildDir: 'app/Resources/build',
|
|
||||||
modulesDir: 'node_modules',
|
|
||||||
releaseDir: 'web/bundles/wallabagcore',
|
|
||||||
|
|
||||||
postcss: {
|
|
||||||
material: {
|
|
||||||
options: {
|
|
||||||
processors: [
|
|
||||||
require('pixrem')(),
|
|
||||||
require('autoprefixer')({ browsers: 'last 2 versions' }),
|
|
||||||
require('cssnano')(),
|
|
||||||
],
|
|
||||||
},
|
|
||||||
src: '<%= buildDir %>/material.css',
|
|
||||||
dest: '<%= releaseDir %>/themes/material/css/style.min.css',
|
|
||||||
},
|
|
||||||
baggy: {
|
|
||||||
options: {
|
|
||||||
processors: [
|
|
||||||
require('pixrem')(),
|
|
||||||
require('autoprefixer')({ browsers: 'last 2 versions' }),
|
|
||||||
require('cssnano')(),
|
|
||||||
],
|
|
||||||
},
|
|
||||||
src: '<%= buildDir %>/baggy.css',
|
|
||||||
dest: '<%= releaseDir %>/themes/baggy/css/style.min.css',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
concat: {
|
|
||||||
options: {
|
|
||||||
separator: ';',
|
|
||||||
},
|
|
||||||
cssMaterial: {
|
|
||||||
src: [
|
|
||||||
'node_modules/materialize-css/bin/materialize.css',
|
|
||||||
'<%= appDir %>/themes/material/css/*.css',
|
|
||||||
],
|
|
||||||
dest: '<%= buildDir %>/material.css',
|
|
||||||
},
|
|
||||||
cssBaggy: {
|
|
||||||
src: [
|
|
||||||
'<%= appDir %>/themes/baggy/css/*.css',
|
|
||||||
],
|
|
||||||
dest: '<%= buildDir %>/baggy.css',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
browserify: {
|
|
||||||
dist: {
|
|
||||||
files: {
|
|
||||||
'<%= buildDir %>/material.browser.js': ['<%= appDir %>/themes/material/js/init.js'],
|
|
||||||
'<%= buildDir %>/baggy.browser.js': ['<%= appDir %>/themes/baggy/js/init.js']
|
|
||||||
}
|
|
||||||
},
|
|
||||||
options: {
|
|
||||||
sourceType: "module",
|
|
||||||
transform: [
|
|
||||||
["babelify", {
|
|
||||||
presets: ["es2015"]
|
|
||||||
}], ["browserify-shim", {
|
|
||||||
"jquery": {
|
|
||||||
"exports": "$"
|
|
||||||
},
|
|
||||||
"materialize": "materialize",
|
|
||||||
"jquery-ui": {
|
|
||||||
"depends": "jquery",
|
|
||||||
"exports": null
|
|
||||||
}
|
|
||||||
}]
|
|
||||||
],
|
|
||||||
browserifyOptions: {
|
|
||||||
browser: {
|
|
||||||
"jQuery": "./node_modules/jquery/dist/jquery.js",
|
|
||||||
"jquery.tinydot": "./node_modules/jquery.tinydot/src/jquery.tinydot.js",
|
|
||||||
"jquery.ui": "./node_modules/jquery-ui-browserify/dist/jquery-ui.js"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
|
||||||
uglify: {
|
|
||||||
material: {
|
|
||||||
files: {
|
|
||||||
'<%= releaseDir %>/themes/material/js/material.min.js':
|
|
||||||
['<%= buildDir %>/material.browser.js'],
|
|
||||||
}
|
|
||||||
},
|
|
||||||
baggy: {
|
|
||||||
files: {
|
|
||||||
'<%= releaseDir %>/themes/baggy/js/baggy.min.js':
|
|
||||||
['<%= buildDir %>/baggy.browser.js'],
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
copy: {
|
|
||||||
pickerjs: {
|
|
||||||
expand: true,
|
|
||||||
cwd: '<%= modulesDir %>/pickadate/lib',
|
|
||||||
src: 'picker.js',
|
|
||||||
dest: '<%= buildDir %>',
|
|
||||||
},
|
|
||||||
annotator: {
|
|
||||||
expand: true,
|
|
||||||
cwd: '<%= modulesDir %>/annotator/pkg',
|
|
||||||
src: 'annotator.min.js',
|
|
||||||
dest: '<%= buildDir %>/themes/_global/js/',
|
|
||||||
},
|
|
||||||
baggyfonts: {
|
|
||||||
files: [
|
|
||||||
{
|
|
||||||
expand: true,
|
|
||||||
cwd: '<%= modulesDir %>/icomoon-free-npm/Font',
|
|
||||||
src: 'IcoMoon-Free.ttf',
|
|
||||||
dest: '<%= releaseDir %>/themes/baggy/fonts/',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
expand: true,
|
|
||||||
cwd: '<%= modulesDir %>/ptsans-npm-webfont/fonts',
|
|
||||||
src: 'ptsansbold.woff',
|
|
||||||
dest: '<%= releaseDir %>/themes/baggy/fonts/',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
expand: true,
|
|
||||||
cwd: '<%= modulesDir %>/material-design-icons-iconfont/dist/fonts/',
|
|
||||||
src: ['MaterialIcons-Regular.eot', 'MaterialIcons-Regular.woff2', 'MaterialIcons-Regular.woff', 'MaterialIcons-Regular.ttf'],
|
|
||||||
dest: '<%= releaseDir %>/themes/baggy/fonts/',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
materialfonts: {
|
|
||||||
files: [
|
|
||||||
{
|
|
||||||
expand: true,
|
|
||||||
overwrite: true,
|
|
||||||
cwd: '<%= modulesDir %>/icomoon-free-npm/Font',
|
|
||||||
src: 'IcoMoon-Free.ttf',
|
|
||||||
dest: '<%= releaseDir %>/themes/material/fonts',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
expand: true,
|
|
||||||
overwrite: true,
|
|
||||||
cwd: '<%= modulesDir %>/roboto-fontface/fonts/Roboto',
|
|
||||||
src: '*',
|
|
||||||
dest: '<%= releaseDir %>/themes/material/font/roboto',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
expand: true,
|
|
||||||
overwrite: true,
|
|
||||||
cwd: '<%= modulesDir %>/material-design-icons-iconfont/dist/fonts/',
|
|
||||||
src: ['MaterialIcons-Regular.eot', 'MaterialIcons-Regular.woff2', 'MaterialIcons-Regular.woff', 'MaterialIcons-Regular.ttf'],
|
|
||||||
dest: '<%= releaseDir %>/themes/material/fonts/',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
symlink: {
|
|
||||||
pics: {
|
|
||||||
files: [
|
|
||||||
{
|
|
||||||
expand: true,
|
|
||||||
overwrite: true,
|
|
||||||
cwd: '<%= appDir %>/themes/_global/',
|
|
||||||
src: 'img',
|
|
||||||
dest: '<%= releaseDir %>/themes/_global/',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
clean: {
|
|
||||||
css: {
|
|
||||||
src: ['<%= buildDir %>/**/*.css'],
|
|
||||||
},
|
|
||||||
js: {
|
|
||||||
src: ['<%= buildDir %>/**/*.js', '<%= buildDir %>/**/*.map'],
|
|
||||||
},
|
|
||||||
all: {
|
|
||||||
src: ['./<%= buildDir %>'],
|
|
||||||
},
|
|
||||||
release: {
|
|
||||||
src: ['./<%= releaseDir %>/*'],
|
|
||||||
}
|
|
||||||
},
|
|
||||||
eslint: {
|
|
||||||
target: ['<%= appDir %>/themes/material/js/init.js', '<%= appDir %>/themes/baggy/js/init.js']
|
|
||||||
},
|
|
||||||
stylelint: {
|
|
||||||
target: ['<%= appDir %>/themes/material/css/*.css', '<%= appDir %>/themes/baggy/css/*.css']
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
files: ['<%= appDir %>/**/*.css', '<%= appDir %>/**/*.js'],
|
|
||||||
tasks: ['css', 'js']
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
grunt.registerTask(
|
|
||||||
'fonts',
|
|
||||||
'Install fonts',
|
|
||||||
['copy:baggyfonts', 'copy:materialfonts']
|
|
||||||
);
|
|
||||||
|
|
||||||
grunt.registerTask(
|
|
||||||
'js',
|
|
||||||
'Build and install js files',
|
|
||||||
['clean:js', 'copy:pickerjs', 'browserify', 'uglify']
|
|
||||||
);
|
|
||||||
|
|
||||||
grunt.registerTask(
|
|
||||||
'default',
|
|
||||||
'Build and install everything',
|
|
||||||
['clean', 'copy:pickerjs', 'concat', 'browserify', 'uglify', 'postcss', 'copy', 'symlink']
|
|
||||||
);
|
|
||||||
|
|
||||||
grunt.registerTask(
|
|
||||||
'css',
|
|
||||||
'Compiles the stylesheets.',
|
|
||||||
['clean:css', 'concat:cssMaterial', 'concat:cssBaggy', 'postcss']
|
|
||||||
);
|
|
||||||
|
|
||||||
grunt.registerTask(
|
|
||||||
'tests',
|
|
||||||
'Test css and js style conformity',
|
|
||||||
['eslint', 'stylelint', 'default']
|
|
||||||
),
|
|
||||||
|
|
||||||
grunt.loadNpmTasks('grunt-contrib-watch');
|
|
||||||
};
|
|
||||||
47
Makefile
Executable file → Normal file
@ -1,45 +1,2 @@
|
|||||||
TMP_FOLDER=/tmp
|
.DEFAULT:
|
||||||
RELEASE_FOLDER=wllbg-release
|
gmake $@
|
||||||
|
|
||||||
ifndef ENV
|
|
||||||
ENV=prod
|
|
||||||
endif
|
|
||||||
|
|
||||||
help: ## Display this help menu
|
|
||||||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
|
||||||
|
|
||||||
clean: ## Clear the application cache
|
|
||||||
@rm -rf var/cache/*
|
|
||||||
|
|
||||||
install: ## Install wallabag with the latest version
|
|
||||||
@sh scripts/install.sh $(ENV)
|
|
||||||
|
|
||||||
update: ## Update the wallabag installation to the latest version
|
|
||||||
@sh scripts/update.sh $(ENV)
|
|
||||||
|
|
||||||
dev: ## Install the latest dev version
|
|
||||||
@sh scripts/dev.sh
|
|
||||||
|
|
||||||
run: ## Run the wallabag built-in server
|
|
||||||
@php bin/console server:run --env=$(ENV)
|
|
||||||
|
|
||||||
build: ## Run grunt
|
|
||||||
@grunt
|
|
||||||
|
|
||||||
test: ## Launch wallabag testsuite
|
|
||||||
@ant prepare && bin/simple-phpunit -v
|
|
||||||
|
|
||||||
release: ## Create a package. Need a VERSION parameter (eg: `make release VERSION=master`).
|
|
||||||
ifndef VERSION
|
|
||||||
$(error VERSION is not set)
|
|
||||||
endif
|
|
||||||
@sh scripts/release.sh $(VERSION) $(TMP_FOLDER) $(RELEASE_FOLDER) $(ENV)
|
|
||||||
|
|
||||||
travis: ## Make some stuff for Travis-CI
|
|
||||||
|
|
||||||
deploy: ## Deploy wallabag
|
|
||||||
@bundle exec cap staging deploy
|
|
||||||
|
|
||||||
.PHONY: help clean install update build test release travis deploy run dev
|
|
||||||
|
|
||||||
.DEFAULT_GOAL := install
|
|
||||||
|
|||||||
16
README.md
@ -3,25 +3,33 @@
|
|||||||
[](https://gitter.im/wallabag/wallabag)
|
[](https://gitter.im/wallabag/wallabag)
|
||||||
|
|
||||||
# What is wallabag?
|
# What is wallabag?
|
||||||
wallabag is a self hostable application allowing you to not miss any content anymore.
|
wallabag is a self-hostable PHP application allowing you to not miss any content anymore.
|
||||||
Click, save and read it when you can. It extracts content so that you can read it when you have time.
|
Click, save and read it when you can. It extracts content so that you can read it when you have time.
|
||||||
|
|
||||||
More information on our website: [wallabag.org](https://wallabag.org).
|
More information on our website: [wallabag.org](https://wallabag.org).
|
||||||
|
|
||||||
|
If you do not have your own server, consider [the wallabag.it hosting solution](https://wallabag.it).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
# Install wallabag
|
# Install wallabag
|
||||||
Please read [the documentation to see the wallabag requirements](http://doc.wallabag.org/en/master/user/installation.html#requirements).
|
Please read [the documentation to see the wallabag requirements](https://doc.wallabag.org/en/admin/installation/requirements.html).
|
||||||
|
|
||||||
Then you can install wallabag by executing the following commands:
|
Then you can install wallabag by executing the following commands:
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/wallabag/wallabag.git
|
git clone https://github.com/wallabag/wallabag.git
|
||||||
cd wallabag && make install
|
cd wallabag && make install
|
||||||
make run
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Now, [configure a virtual host](https://doc.wallabag.org/en/admin/installation/virtualhosts.html) to use your wallabag.
|
||||||
|
|
||||||
|
# Run on YunoHost
|
||||||
|
[](https://install-app.yunohost.org/?app=wallabag2)
|
||||||
|
|
||||||
|
Wallabag app for [YunoHost](https://yunohost.org). See [here](https://github.com/YunoHost-Apps/wallabag2_ynh)
|
||||||
|
|
||||||
# License
|
# License
|
||||||
Copyright © 2013-2017 Nicolas Lœuillet <nicolas@loeuillet.org>
|
Copyright © 2013-2018 Nicolas Lœuillet <nicolas@loeuillet.org>
|
||||||
This work is free. You can redistribute it and/or modify it under the
|
This work is free. You can redistribute it and/or modify it under the
|
||||||
terms of the MIT License. See the COPYING file for more details.
|
terms of the MIT License. See the COPYING file for more details.
|
||||||
|
|||||||
@ -4,14 +4,17 @@ A release is mostly a git tag of http://github.com/wallabag/wallabag, following
|
|||||||
|
|
||||||
### Steps to release
|
### Steps to release
|
||||||
|
|
||||||
During this documentation, we assume the release is `$LAST_WALLABAG_RELEASE`.
|
During this documentation, we assume the release is `$LAST_WALLABAG_RELEASE` (like 2.3.4).
|
||||||
|
|
||||||
#### Files to edit
|
#### Prepare the release
|
||||||
|
|
||||||
- `app/config/config.yml` (`wallabag_core.version`)
|
- Update these files with new information
|
||||||
- `CHANGELOG.md` (by using this command `github-changes -o wallabag -r wallabag -k YOURGITHUBTOKEN --only-pulls --use-commit-body --title Changelog --date-format YYYY/MM/DD --between-tags 2.0.0-alpha.0...master -n 2.1.3`. [github-changes is available here](https://github.com/lalitkapoor/github-changes))
|
- `app/config/wallabag.yml` (`wallabag_core.version`)
|
||||||
|
- `CHANGELOG.md`
|
||||||
|
- Create a PR named "Prepare $LAST_WALLABAG_RELEASE release".
|
||||||
|
- Wait for test to be ok, merge it.
|
||||||
|
|
||||||
#### Create release on GitHub
|
#### Create a new release on GitHub
|
||||||
|
|
||||||
- Run these commands to create the tag:
|
- Run these commands to create the tag:
|
||||||
|
|
||||||
@ -27,7 +30,7 @@ SYMFONY_ENV=prod composer up --no-dev
|
|||||||
```diff
|
```diff
|
||||||
script:
|
script:
|
||||||
- - travis_wait bash composer install -o --no-interaction --no-progress --prefer-dist
|
- - travis_wait bash composer install -o --no-interaction --no-progress --prefer-dist
|
||||||
+ - travis_wait composer update --no-interaction --no-progress
|
+ - travis_wait bash composer update -o --no-interaction --no-progress --prefer-dist
|
||||||
```
|
```
|
||||||
|
|
||||||
- Then continue with these commands:
|
- Then continue with these commands:
|
||||||
@ -42,16 +45,15 @@ git push origin release-$LAST_WALLABAG_RELEASE
|
|||||||
- Run these command to create the package:
|
- Run these command to create the package:
|
||||||
|
|
||||||
```
|
```
|
||||||
make release master /tmp wllbg-release prod
|
make release VERSION=$LAST_WALLABAG_RELEASE
|
||||||
```
|
```
|
||||||
|
|
||||||
- [Create the new release on GitHub](https://github.com/wallabag/wallabag/releases/new). You have to upload on this page the package.
|
- [Create the new release on GitHub](https://github.com/wallabag/wallabag/releases/new) by targetting the `release-$LAST_WALLABAG_RELEASE` branch. You have to upload the package (generated previously).
|
||||||
- Delete the `release-$LAST_WALLABAG_RELEASE` branch and close the pull request (**DO NOT MERGE IT**).
|
- Close the previously created pull request (**DO NOT MERGE IT**) and delete the `release-$LAST_WALLABAG_RELEASE` branch.
|
||||||
- Update the URL shortener (used on `wllbg.org` to generate links like `http://wllbg.org/latest-v2-package` or `http://wllbg.org/latest-v2`)
|
- Update the URL shortener (used on `wllbg.org` to generate links like `https://wllbg.org/latest-v2-package` or `http://wllbg.org/latest-v2`)
|
||||||
- Update [the downloads page](https://github.com/wallabag/wallabag.org/blob/master/content/pages/download.md) on the website (MD5 sum, release date)
|
|
||||||
- Update Dockerfile https://github.com/wallabag/docker (and create a new tag)
|
- Update Dockerfile https://github.com/wallabag/docker (and create a new tag)
|
||||||
- Update wallabag.org website (downloads, releases and new blog post)
|
- Update wallabag.org website (downloads, MD5 sum, releases and new blog post)
|
||||||
- Put the next patch version suffixed with `-dev` in `app/config/config.yml` (`wallabag_core.version`)
|
- Put the next patch version suffixed with `-dev` in `app/config/wallabag.yml` (`wallabag_core.version`)
|
||||||
- Drink a :beer:!
|
- Drink a :beer:!
|
||||||
|
|
||||||
### `composer.lock`
|
### `composer.lock`
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Symfony\Component\HttpKernel\Kernel;
|
|
||||||
use Symfony\Component\Config\Loader\LoaderInterface;
|
use Symfony\Component\Config\Loader\LoaderInterface;
|
||||||
|
use Symfony\Component\HttpKernel\Kernel;
|
||||||
|
|
||||||
class AppKernel extends Kernel
|
class AppKernel extends Kernel
|
||||||
{
|
{
|
||||||
@ -48,16 +48,16 @@ class AppKernel extends Kernel
|
|||||||
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
|
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
|
||||||
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
|
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
|
||||||
$bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle();
|
$bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle();
|
||||||
|
$bundles[] = new Symfony\Bundle\WebServerBundle\WebServerBundle();
|
||||||
|
|
||||||
|
if ('test' === $this->getEnvironment()) {
|
||||||
|
$bundles[] = new DAMA\DoctrineTestBundle\DAMADoctrineTestBundle();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $bundles;
|
return $bundles;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getRootDir()
|
|
||||||
{
|
|
||||||
return __DIR__;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getCacheDir()
|
public function getCacheDir()
|
||||||
{
|
{
|
||||||
return dirname(__DIR__) . '/var/cache/' . $this->getEnvironment();
|
return dirname(__DIR__) . '/var/cache/' . $this->getEnvironment();
|
||||||
@ -70,6 +70,21 @@ class AppKernel extends Kernel
|
|||||||
|
|
||||||
public function registerContainerConfiguration(LoaderInterface $loader)
|
public function registerContainerConfiguration(LoaderInterface $loader)
|
||||||
{
|
{
|
||||||
$loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
|
$loader->load($this->getProjectDir() . '/app/config/config_' . $this->getEnvironment() . '.yml');
|
||||||
|
$loader->load(function ($container) {
|
||||||
|
if ($container->getParameter('use_webpack_dev_server')) {
|
||||||
|
$container->loadFromExtension('framework', [
|
||||||
|
'assets' => [
|
||||||
|
'base_url' => 'http://localhost:8080/',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
$container->loadFromExtension('framework', [
|
||||||
|
'assets' => [
|
||||||
|
'base_url' => $container->getParameter('domain_name'),
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
188
app/DoctrineMigrations/Version20160401000000.php
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initial database structure.
|
||||||
|
*/
|
||||||
|
class Version20160401000000 extends WallabagMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf($schema->hasTable($this->getTable('entry')), 'Database already initialized');
|
||||||
|
|
||||||
|
switch ($this->connection->getDatabasePlatform()->getName()) {
|
||||||
|
case 'sqlite':
|
||||||
|
$sql = <<<SQL
|
||||||
|
CREATE TABLE {$this->getTable('craue_config_setting')} (name VARCHAR(255) NOT NULL, value VARCHAR(255) DEFAULT NULL, section VARCHAR(255) DEFAULT NULL, PRIMARY KEY(name));
|
||||||
|
CREATE UNIQUE INDEX UNIQ_5D9649505E237E06 ON {$this->getTable('craue_config_setting')} (name);
|
||||||
|
CREATE TABLE {$this->getTable('tagging_rule')} (id INTEGER NOT NULL, config_id INTEGER DEFAULT NULL, rule VARCHAR(255) NOT NULL, tags CLOB NOT NULL, PRIMARY KEY(id), CONSTRAINT FK_2D9B3C5424DB0683 FOREIGN KEY (config_id) REFERENCES {$this->getTable('config')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE);
|
||||||
|
CREATE INDEX IDX_2D9B3C5424DB0683 ON {$this->getTable('tagging_rule')} (config_id);
|
||||||
|
CREATE TABLE {$this->getTable('tag')} (id INTEGER NOT NULL, label CLOB NOT NULL, slug VARCHAR(128) NOT NULL, PRIMARY KEY(id));
|
||||||
|
CREATE UNIQUE INDEX UNIQ_4CA58A8C989D9B62 ON {$this->getTable('tag')} (slug);
|
||||||
|
CREATE TABLE {$this->getTable('entry')} (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, title CLOB DEFAULT NULL, url CLOB DEFAULT NULL, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content CLOB DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype CLOB DEFAULT NULL, language CLOB DEFAULT NULL, reading_time INTEGER DEFAULT NULL, domain_name CLOB DEFAULT NULL, preview_picture CLOB DEFAULT NULL, is_public BOOLEAN DEFAULT '0', PRIMARY KEY(id), CONSTRAINT FK_F4D18282A76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE);
|
||||||
|
CREATE INDEX IDX_F4D18282A76ED395 ON {$this->getTable('entry')} (user_id);
|
||||||
|
CREATE TABLE {$this->getTable('entry_tag')} (entry_id INTEGER NOT NULL, tag_id INTEGER NOT NULL, PRIMARY KEY(entry_id, tag_id), CONSTRAINT FK_C9F0DD7CBA364942 FOREIGN KEY (entry_id) REFERENCES {$this->getTable('entry')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_C9F0DD7CBAD26311 FOREIGN KEY (tag_id) REFERENCES {$this->getTable('tag')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE);
|
||||||
|
CREATE INDEX IDX_C9F0DD7CBA364942 ON {$this->getTable('entry_tag')} (entry_id);
|
||||||
|
CREATE INDEX IDX_C9F0DD7CBAD26311 ON {$this->getTable('entry_tag')} (tag_id);
|
||||||
|
CREATE TABLE {$this->getTable('config')} (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, theme VARCHAR(255) NOT NULL, items_per_page INTEGER NOT NULL, language VARCHAR(255) NOT NULL, rss_token VARCHAR(255) DEFAULT NULL, rss_limit INTEGER DEFAULT NULL, reading_speed DOUBLE PRECISION DEFAULT NULL, PRIMARY KEY(id), CONSTRAINT FK_87E64C53A76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE);
|
||||||
|
CREATE UNIQUE INDEX UNIQ_87E64C53A76ED395 ON {$this->getTable('config')} (user_id);
|
||||||
|
CREATE TABLE {$this->getTable('oauth2_refresh_tokens')} (id INTEGER NOT NULL, client_id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, token VARCHAR(255) NOT NULL, expires_at INTEGER DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id), CONSTRAINT FK_20C9FB2419EB6921 FOREIGN KEY (client_id) REFERENCES {$this->getTable('oauth2_clients')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_20C9FB24A76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE);
|
||||||
|
CREATE UNIQUE INDEX UNIQ_20C9FB245F37A13B ON {$this->getTable('oauth2_refresh_tokens')} (token);
|
||||||
|
CREATE INDEX IDX_20C9FB2419EB6921 ON {$this->getTable('oauth2_refresh_tokens')} (client_id);
|
||||||
|
CREATE INDEX IDX_20C9FB24A76ED395 ON {$this->getTable('oauth2_refresh_tokens')} (user_id);
|
||||||
|
CREATE TABLE {$this->getTable('oauth2_access_tokens')} (id INTEGER NOT NULL, client_id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, token VARCHAR(255) NOT NULL, expires_at INTEGER DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id), CONSTRAINT FK_368A420919EB6921 FOREIGN KEY (client_id) REFERENCES {$this->getTable('oauth2_clients')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_368A4209A76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE);
|
||||||
|
CREATE UNIQUE INDEX UNIQ_368A42095F37A13B ON {$this->getTable('oauth2_access_tokens')} (token);
|
||||||
|
CREATE INDEX IDX_368A420919EB6921 ON {$this->getTable('oauth2_access_tokens')} (client_id);
|
||||||
|
CREATE INDEX IDX_368A4209A76ED395 ON {$this->getTable('oauth2_access_tokens')} (user_id);
|
||||||
|
CREATE TABLE {$this->getTable('oauth2_auth_codes')} (id INTEGER NOT NULL, client_id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, token VARCHAR(255) NOT NULL, redirect_uri CLOB NOT NULL, expires_at INTEGER DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id), CONSTRAINT FK_EE52E3FA19EB6921 FOREIGN KEY (client_id) REFERENCES {$this->getTable('oauth2_clients')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_EE52E3FAA76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE);
|
||||||
|
CREATE UNIQUE INDEX UNIQ_EE52E3FA5F37A13B ON {$this->getTable('oauth2_auth_codes')} (token);
|
||||||
|
CREATE INDEX IDX_EE52E3FA19EB6921 ON {$this->getTable('oauth2_auth_codes')} (client_id);
|
||||||
|
CREATE INDEX IDX_EE52E3FAA76ED395 ON {$this->getTable('oauth2_auth_codes')} (user_id);
|
||||||
|
CREATE TABLE {$this->getTable('oauth2_clients')} (id INTEGER NOT NULL, random_id VARCHAR(255) NOT NULL, redirect_uris CLOB NOT NULL, secret VARCHAR(255) NOT NULL, allowed_grant_types CLOB NOT NULL, PRIMARY KEY(id));
|
||||||
|
CREATE TABLE {$this->getTable('user')} (id INTEGER NOT NULL, username VARCHAR(180) NOT NULL, username_canonical VARCHAR(180) NOT NULL, email VARCHAR(180) NOT NULL, email_canonical VARCHAR(180) NOT NULL, enabled BOOLEAN NOT NULL, salt VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, last_login DATETIME DEFAULT NULL, locked BOOLEAN NOT NULL, expired BOOLEAN NOT NULL, expires_at DATETIME DEFAULT NULL, confirmation_token VARCHAR(255) DEFAULT NULL, password_requested_at DATETIME DEFAULT NULL, roles CLOB NOT NULL, credentials_expired BOOLEAN NOT NULL, credentials_expire_at DATETIME DEFAULT NULL, name CLOB DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, authCode INTEGER DEFAULT NULL, twoFactorAuthentication BOOLEAN NOT NULL, trusted CLOB DEFAULT NULL, PRIMARY KEY(id));
|
||||||
|
CREATE UNIQUE INDEX UNIQ_1D63E7E592FC23A8 ON {$this->getTable('user')} (username_canonical);
|
||||||
|
CREATE UNIQUE INDEX UNIQ_1D63E7E5A0D96FBF ON {$this->getTable('user')} (email_canonical);
|
||||||
|
CREATE UNIQUE INDEX UNIQ_1D63E7E5C05FB297 ON {$this->getTable('user')} (confirmation_token);
|
||||||
|
CREATE TABLE {$this->getTable('annotation')} (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, entry_id INTEGER DEFAULT NULL, text CLOB NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, quote VARCHAR(255) NOT NULL, ranges CLOB NOT NULL, PRIMARY KEY(id), CONSTRAINT FK_A7AED006A76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_A7AED006BA364942 FOREIGN KEY (entry_id) REFERENCES {$this->getTable('entry')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE);
|
||||||
|
CREATE INDEX IDX_A7AED006A76ED395 ON {$this->getTable('annotation')} (user_id);
|
||||||
|
CREATE INDEX IDX_A7AED006BA364942 ON {$this->getTable('annotation')} (entry_id);
|
||||||
|
SQL
|
||||||
|
;
|
||||||
|
|
||||||
|
foreach (explode("\n", $sql) as $query) {
|
||||||
|
$this->addSql($query);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'mysql':
|
||||||
|
$sql = <<<SQL
|
||||||
|
CREATE TABLE {$this->getTable('craue_config_setting')} (name VARCHAR(255) NOT NULL, value VARCHAR(255) DEFAULT NULL, section VARCHAR(255) DEFAULT NULL, UNIQUE INDEX UNIQ_5D9649505E237E06 (name), PRIMARY KEY(name)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
|
||||||
|
CREATE TABLE {$this->getTable('entry')} (id INT AUTO_INCREMENT NOT NULL, user_id INT DEFAULT NULL, title LONGTEXT DEFAULT NULL, url LONGTEXT DEFAULT NULL, is_archived TINYINT(1) NOT NULL, is_starred TINYINT(1) NOT NULL, content LONGTEXT DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, mimetype LONGTEXT DEFAULT NULL, language LONGTEXT DEFAULT NULL, reading_time INT DEFAULT NULL, domain_name LONGTEXT DEFAULT NULL, preview_picture LONGTEXT DEFAULT NULL, is_public TINYINT(1) DEFAULT '0', INDEX IDX_F4D18282A76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
|
||||||
|
CREATE TABLE {$this->getTable('entry_tag')} (entry_id INT NOT NULL, tag_id INT NOT NULL, INDEX IDX_C9F0DD7CBA364942 (entry_id), INDEX IDX_C9F0DD7CBAD26311 (tag_id), PRIMARY KEY(entry_id, tag_id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
|
||||||
|
CREATE TABLE {$this->getTable('config')} (id INT AUTO_INCREMENT NOT NULL, user_id INT DEFAULT NULL, theme VARCHAR(255) NOT NULL, items_per_page INT NOT NULL, language VARCHAR(255) NOT NULL, rss_token VARCHAR(255) DEFAULT NULL, rss_limit INT DEFAULT NULL, reading_speed DOUBLE PRECISION DEFAULT NULL, UNIQUE INDEX UNIQ_87E64C53A76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
|
||||||
|
CREATE TABLE {$this->getTable('tagging_rule')} (id INT AUTO_INCREMENT NOT NULL, config_id INT DEFAULT NULL, rule VARCHAR(255) NOT NULL, tags LONGTEXT NOT NULL COMMENT '(DC2Type:simple_array)', INDEX IDX_2D9B3C5424DB0683 (config_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
|
||||||
|
CREATE TABLE {$this->getTable('tag')} (id INT AUTO_INCREMENT NOT NULL, `label` LONGTEXT NOT NULL, slug VARCHAR(128) NOT NULL, UNIQUE INDEX UNIQ_4CA58A8C989D9B62 (slug), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
|
||||||
|
CREATE TABLE {$this->getTable('oauth2_clients')} (id INT AUTO_INCREMENT NOT NULL, random_id VARCHAR(255) NOT NULL, redirect_uris LONGTEXT NOT NULL COMMENT '(DC2Type:array)', secret VARCHAR(255) NOT NULL, allowed_grant_types LONGTEXT NOT NULL COMMENT '(DC2Type:array)', PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
|
||||||
|
CREATE TABLE {$this->getTable('oauth2_access_tokens')} (id INT AUTO_INCREMENT NOT NULL, client_id INT NOT NULL, user_id INT DEFAULT NULL, token VARCHAR(255) NOT NULL, expires_at INT DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, UNIQUE INDEX UNIQ_368A42095F37A13B (token), INDEX IDX_368A420919EB6921 (client_id), INDEX IDX_368A4209A76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
|
||||||
|
CREATE TABLE {$this->getTable('oauth2_refresh_tokens')} (id INT AUTO_INCREMENT NOT NULL, client_id INT NOT NULL, user_id INT DEFAULT NULL, token VARCHAR(255) NOT NULL, expires_at INT DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, UNIQUE INDEX UNIQ_20C9FB245F37A13B (token), INDEX IDX_20C9FB2419EB6921 (client_id), INDEX IDX_20C9FB24A76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
|
||||||
|
CREATE TABLE {$this->getTable('oauth2_auth_codes')} (id INT AUTO_INCREMENT NOT NULL, client_id INT NOT NULL, user_id INT DEFAULT NULL, token VARCHAR(255) NOT NULL, redirect_uri LONGTEXT NOT NULL, expires_at INT DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, UNIQUE INDEX UNIQ_EE52E3FA5F37A13B (token), INDEX IDX_EE52E3FA19EB6921 (client_id), INDEX IDX_EE52E3FAA76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
|
||||||
|
CREATE TABLE {$this->getTable('user')} (id INT AUTO_INCREMENT NOT NULL, username VARCHAR(180) NOT NULL, username_canonical VARCHAR(180) NOT NULL, email VARCHAR(180) NOT NULL, email_canonical VARCHAR(180) NOT NULL, enabled TINYINT(1) NOT NULL, salt VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, last_login DATETIME DEFAULT NULL, locked TINYINT(1) NOT NULL, expired TINYINT(1) NOT NULL, expires_at DATETIME DEFAULT NULL, confirmation_token VARCHAR(255) DEFAULT NULL, password_requested_at DATETIME DEFAULT NULL, roles LONGTEXT NOT NULL COMMENT '(DC2Type:array)', credentials_expired TINYINT(1) NOT NULL, credentials_expire_at DATETIME DEFAULT NULL, name LONGTEXT DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, authCode INT DEFAULT NULL, twoFactorAuthentication TINYINT(1) NOT NULL, trusted LONGTEXT DEFAULT NULL COMMENT '(DC2Type:json_array)', UNIQUE INDEX UNIQ_1D63E7E592FC23A8 (username_canonical), UNIQUE INDEX UNIQ_1D63E7E5A0D96FBF (email_canonical), UNIQUE INDEX UNIQ_1D63E7E5C05FB297 (confirmation_token), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
|
||||||
|
CREATE TABLE {$this->getTable('annotation')} (id INT AUTO_INCREMENT NOT NULL, user_id INT DEFAULT NULL, entry_id INT DEFAULT NULL, text LONGTEXT NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, quote VARCHAR(255) NOT NULL, ranges LONGTEXT NOT NULL COMMENT '(DC2Type:array)', INDEX IDX_A7AED006A76ED395 (user_id), INDEX IDX_A7AED006BA364942 (entry_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
|
||||||
|
ALTER TABLE {$this->getTable('entry')} ADD CONSTRAINT FK_F4D18282A76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id);
|
||||||
|
ALTER TABLE {$this->getTable('entry_tag')} ADD CONSTRAINT FK_C9F0DD7CBA364942 FOREIGN KEY (entry_id) REFERENCES {$this->getTable('entry')} (id);
|
||||||
|
ALTER TABLE {$this->getTable('entry_tag')} ADD CONSTRAINT FK_C9F0DD7CBAD26311 FOREIGN KEY (tag_id) REFERENCES {$this->getTable('tag')} (id);
|
||||||
|
ALTER TABLE {$this->getTable('config')} ADD CONSTRAINT FK_87E64C53A76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id);
|
||||||
|
ALTER TABLE {$this->getTable('tagging_rule')} ADD CONSTRAINT FK_2D9B3C5424DB0683 FOREIGN KEY (config_id) REFERENCES {$this->getTable('config')} (id);
|
||||||
|
ALTER TABLE {$this->getTable('oauth2_access_tokens')} ADD CONSTRAINT FK_368A420919EB6921 FOREIGN KEY (client_id) REFERENCES {$this->getTable('oauth2_clients')} (id);
|
||||||
|
ALTER TABLE {$this->getTable('oauth2_access_tokens')} ADD CONSTRAINT FK_368A4209A76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id);
|
||||||
|
ALTER TABLE {$this->getTable('oauth2_refresh_tokens')} ADD CONSTRAINT FK_20C9FB2419EB6921 FOREIGN KEY (client_id) REFERENCES {$this->getTable('oauth2_clients')} (id);
|
||||||
|
ALTER TABLE {$this->getTable('oauth2_refresh_tokens')} ADD CONSTRAINT FK_20C9FB24A76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id);
|
||||||
|
ALTER TABLE {$this->getTable('oauth2_auth_codes')} ADD CONSTRAINT FK_EE52E3FA19EB6921 FOREIGN KEY (client_id) REFERENCES {$this->getTable('oauth2_clients')} (id);
|
||||||
|
ALTER TABLE {$this->getTable('oauth2_auth_codes')} ADD CONSTRAINT FK_EE52E3FAA76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id);
|
||||||
|
ALTER TABLE {$this->getTable('annotation')} ADD CONSTRAINT FK_A7AED006A76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id);
|
||||||
|
ALTER TABLE {$this->getTable('annotation')} ADD CONSTRAINT FK_A7AED006BA364942 FOREIGN KEY (entry_id) REFERENCES {$this->getTable('entry')} (id);
|
||||||
|
SQL
|
||||||
|
;
|
||||||
|
foreach (explode("\n", $sql) as $query) {
|
||||||
|
$this->addSql($query);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'postgresql':
|
||||||
|
$sql = <<<SQL
|
||||||
|
CREATE TABLE {$this->getTable('craue_config_setting')} (name VARCHAR(255) NOT NULL, value VARCHAR(255) DEFAULT NULL, section VARCHAR(255) DEFAULT NULL, PRIMARY KEY(name));
|
||||||
|
CREATE UNIQUE INDEX UNIQ_5D9649505E237E06 ON {$this->getTable('craue_config_setting')} (name);
|
||||||
|
CREATE TABLE {$this->getTable('entry')} (id INT NOT NULL, user_id INT DEFAULT NULL, title TEXT DEFAULT NULL, url TEXT DEFAULT NULL, is_archived BOOLEAN NOT NULL, is_starred BOOLEAN NOT NULL, content TEXT DEFAULT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, mimetype TEXT DEFAULT NULL, language TEXT DEFAULT NULL, reading_time INT DEFAULT NULL, domain_name TEXT DEFAULT NULL, preview_picture TEXT DEFAULT NULL, is_public BOOLEAN DEFAULT 'false', PRIMARY KEY(id));
|
||||||
|
CREATE INDEX IDX_F4D18282A76ED395 ON {$this->getTable('entry')} (user_id);
|
||||||
|
CREATE TABLE {$this->getTable('entry_tag')} (entry_id INT NOT NULL, tag_id INT NOT NULL, PRIMARY KEY(entry_id, tag_id));
|
||||||
|
CREATE INDEX IDX_C9F0DD7CBA364942 ON {$this->getTable('entry_tag')} (entry_id);
|
||||||
|
CREATE INDEX IDX_C9F0DD7CBAD26311 ON {$this->getTable('entry_tag')} (tag_id);
|
||||||
|
CREATE TABLE {$this->getTable('config')} (id INT NOT NULL, user_id INT DEFAULT NULL, theme VARCHAR(255) NOT NULL, items_per_page INT NOT NULL, language VARCHAR(255) NOT NULL, rss_token VARCHAR(255) DEFAULT NULL, rss_limit INT DEFAULT NULL, reading_speed DOUBLE PRECISION DEFAULT NULL, PRIMARY KEY(id));
|
||||||
|
CREATE UNIQUE INDEX UNIQ_87E64C53A76ED395 ON {$this->getTable('config')} (user_id);
|
||||||
|
CREATE TABLE {$this->getTable('tagging_rule')} (id INT NOT NULL, config_id INT DEFAULT NULL, rule VARCHAR(255) NOT NULL, tags TEXT NOT NULL, PRIMARY KEY(id));
|
||||||
|
CREATE INDEX IDX_2D9B3C5424DB0683 ON {$this->getTable('tagging_rule')} (config_id);
|
||||||
|
COMMENT ON COLUMN {$this->getTable('tagging_rule')}.tags IS '(DC2Type:simple_array)';
|
||||||
|
CREATE TABLE {$this->getTable('tag')} (id INT NOT NULL, label TEXT NOT NULL, slug VARCHAR(128) NOT NULL, PRIMARY KEY(id));
|
||||||
|
CREATE UNIQUE INDEX UNIQ_4CA58A8C989D9B62 ON {$this->getTable('tag')} (slug);
|
||||||
|
CREATE TABLE {$this->getTable('oauth2_clients')} (id INT NOT NULL, random_id VARCHAR(255) NOT NULL, redirect_uris TEXT NOT NULL, secret VARCHAR(255) NOT NULL, allowed_grant_types TEXT NOT NULL, PRIMARY KEY(id));
|
||||||
|
COMMENT ON COLUMN {$this->getTable('oauth2_clients')}.redirect_uris IS '(DC2Type:array)';
|
||||||
|
COMMENT ON COLUMN {$this->getTable('oauth2_clients')}.allowed_grant_types IS '(DC2Type:array)';
|
||||||
|
CREATE TABLE {$this->getTable('oauth2_access_tokens')} (id INT NOT NULL, client_id INT NOT NULL, user_id INT DEFAULT NULL, token VARCHAR(255) NOT NULL, expires_at INT DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id));
|
||||||
|
CREATE UNIQUE INDEX UNIQ_368A42095F37A13B ON {$this->getTable('oauth2_access_tokens')} (token);
|
||||||
|
CREATE INDEX IDX_368A420919EB6921 ON {$this->getTable('oauth2_access_tokens')} (client_id);
|
||||||
|
CREATE INDEX IDX_368A4209A76ED395 ON {$this->getTable('oauth2_access_tokens')} (user_id);
|
||||||
|
CREATE TABLE {$this->getTable('oauth2_refresh_tokens')} (id INT NOT NULL, client_id INT NOT NULL, user_id INT DEFAULT NULL, token VARCHAR(255) NOT NULL, expires_at INT DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id));
|
||||||
|
CREATE UNIQUE INDEX UNIQ_20C9FB245F37A13B ON {$this->getTable('oauth2_refresh_tokens')} (token);
|
||||||
|
CREATE INDEX IDX_20C9FB2419EB6921 ON {$this->getTable('oauth2_refresh_tokens')} (client_id);
|
||||||
|
CREATE INDEX IDX_20C9FB24A76ED395 ON {$this->getTable('oauth2_refresh_tokens')} (user_id);
|
||||||
|
CREATE TABLE {$this->getTable('oauth2_auth_codes')} (id INT NOT NULL, client_id INT NOT NULL, user_id INT DEFAULT NULL, token VARCHAR(255) NOT NULL, redirect_uri TEXT NOT NULL, expires_at INT DEFAULT NULL, scope VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id));
|
||||||
|
CREATE UNIQUE INDEX UNIQ_EE52E3FA5F37A13B ON {$this->getTable('oauth2_auth_codes')} (token);
|
||||||
|
CREATE INDEX IDX_EE52E3FA19EB6921 ON {$this->getTable('oauth2_auth_codes')} (client_id);
|
||||||
|
CREATE INDEX IDX_EE52E3FAA76ED395 ON {$this->getTable('oauth2_auth_codes')} (user_id);
|
||||||
|
CREATE TABLE {$this->getTable('user')} (id INT NOT NULL, username VARCHAR(180) NOT NULL, username_canonical VARCHAR(180) NOT NULL, email VARCHAR(180) NOT NULL, email_canonical VARCHAR(180) NOT NULL, enabled BOOLEAN NOT NULL, salt VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, last_login TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, locked BOOLEAN NOT NULL, expired BOOLEAN NOT NULL, expires_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, confirmation_token VARCHAR(255) DEFAULT NULL, password_requested_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, roles TEXT NOT NULL, credentials_expired BOOLEAN NOT NULL, credentials_expire_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, name TEXT DEFAULT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, authCode INT DEFAULT NULL, twoFactorAuthentication BOOLEAN NOT NULL, trusted TEXT DEFAULT NULL, PRIMARY KEY(id));
|
||||||
|
CREATE UNIQUE INDEX UNIQ_1D63E7E592FC23A8 ON {$this->getTable('user')} (username_canonical);
|
||||||
|
CREATE UNIQUE INDEX UNIQ_1D63E7E5A0D96FBF ON {$this->getTable('user')} (email_canonical);
|
||||||
|
CREATE UNIQUE INDEX UNIQ_1D63E7E5C05FB297 ON {$this->getTable('user')} (confirmation_token);
|
||||||
|
COMMENT ON COLUMN {$this->getTable('user')}.roles IS '(DC2Type:array)';
|
||||||
|
COMMENT ON COLUMN {$this->getTable('user')}.trusted IS '(DC2Type:json_array)';
|
||||||
|
CREATE TABLE {$this->getTable('annotation')} (id INT NOT NULL, user_id INT DEFAULT NULL, entry_id INT DEFAULT NULL, text TEXT NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, quote VARCHAR(255) NOT NULL, ranges TEXT NOT NULL, PRIMARY KEY(id));
|
||||||
|
CREATE INDEX IDX_A7AED006A76ED395 ON {$this->getTable('annotation')} (user_id);
|
||||||
|
CREATE INDEX IDX_A7AED006BA364942 ON {$this->getTable('annotation')} (entry_id);
|
||||||
|
COMMENT ON COLUMN {$this->getTable('annotation')}.ranges IS '(DC2Type:array)';
|
||||||
|
CREATE SEQUENCE "entry_id_seq" INCREMENT BY 1 MINVALUE 1 START 1;
|
||||||
|
CREATE SEQUENCE "config_id_seq" INCREMENT BY 1 MINVALUE 1 START 1;
|
||||||
|
CREATE SEQUENCE "tagging_rule_id_seq" INCREMENT BY 1 MINVALUE 1 START 1;
|
||||||
|
CREATE SEQUENCE "tag_id_seq" INCREMENT BY 1 MINVALUE 1 START 1;
|
||||||
|
CREATE SEQUENCE oauth2_clients_id_seq INCREMENT BY 1 MINVALUE 1 START 1;
|
||||||
|
CREATE SEQUENCE oauth2_access_tokens_id_seq INCREMENT BY 1 MINVALUE 1 START 1;
|
||||||
|
CREATE SEQUENCE oauth2_refresh_tokens_id_seq INCREMENT BY 1 MINVALUE 1 START 1;
|
||||||
|
CREATE SEQUENCE oauth2_auth_codes_id_seq INCREMENT BY 1 MINVALUE 1 START 1;
|
||||||
|
CREATE SEQUENCE "user_id_seq" INCREMENT BY 1 MINVALUE 1 START 1;
|
||||||
|
CREATE SEQUENCE annotation_id_seq INCREMENT BY 1 MINVALUE 1 START 1;
|
||||||
|
ALTER TABLE {$this->getTable('entry')} ADD CONSTRAINT FK_F4D18282A76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
|
||||||
|
ALTER TABLE {$this->getTable('entry_tag')} ADD CONSTRAINT FK_C9F0DD7CBA364942 FOREIGN KEY (entry_id) REFERENCES {$this->getTable('entry')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
|
||||||
|
ALTER TABLE {$this->getTable('entry_tag')} ADD CONSTRAINT FK_C9F0DD7CBAD26311 FOREIGN KEY (tag_id) REFERENCES {$this->getTable('tag')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
|
||||||
|
ALTER TABLE {$this->getTable('config')} ADD CONSTRAINT FK_87E64C53A76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
|
||||||
|
ALTER TABLE {$this->getTable('tagging_rule')} ADD CONSTRAINT FK_2D9B3C5424DB0683 FOREIGN KEY (config_id) REFERENCES {$this->getTable('config')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
|
||||||
|
ALTER TABLE {$this->getTable('oauth2_access_tokens')} ADD CONSTRAINT FK_368A420919EB6921 FOREIGN KEY (client_id) REFERENCES {$this->getTable('oauth2_clients')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
|
||||||
|
ALTER TABLE {$this->getTable('oauth2_access_tokens')} ADD CONSTRAINT FK_368A4209A76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
|
||||||
|
ALTER TABLE {$this->getTable('oauth2_refresh_tokens')} ADD CONSTRAINT FK_20C9FB2419EB6921 FOREIGN KEY (client_id) REFERENCES {$this->getTable('oauth2_clients')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
|
||||||
|
ALTER TABLE {$this->getTable('oauth2_refresh_tokens')} ADD CONSTRAINT FK_20C9FB24A76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
|
||||||
|
ALTER TABLE {$this->getTable('oauth2_auth_codes')} ADD CONSTRAINT FK_EE52E3FA19EB6921 FOREIGN KEY (client_id) REFERENCES {$this->getTable('oauth2_clients')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
|
||||||
|
ALTER TABLE {$this->getTable('oauth2_auth_codes')} ADD CONSTRAINT FK_EE52E3FAA76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
|
||||||
|
ALTER TABLE {$this->getTable('annotation')} ADD CONSTRAINT FK_A7AED006A76ED395 FOREIGN KEY (user_id) REFERENCES {$this->getTable('user')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
|
||||||
|
ALTER TABLE {$this->getTable('annotation')} ADD CONSTRAINT FK_A7AED006BA364942 FOREIGN KEY (entry_id) REFERENCES {$this->getTable('entry')} (id) NOT DEFERRABLE INITIALLY IMMEDIATE;
|
||||||
|
SQL
|
||||||
|
;
|
||||||
|
foreach (explode("\n", $sql) as $query) {
|
||||||
|
$this->addSql($query);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->addSql("DROP TABLE {$this->getTable('craue_config_setting')}");
|
||||||
|
$this->addSql("DROP TABLE {$this->getTable('tagging_rule')}");
|
||||||
|
$this->addSql("DROP TABLE {$this->getTable('config')}");
|
||||||
|
$this->addSql("DROP TABLE {$this->getTable('entry')}");
|
||||||
|
$this->addSql("DROP TABLE {$this->getTable('entry_tag')}");
|
||||||
|
$this->addSql("DROP TABLE {$this->getTable('tag')}");
|
||||||
|
$this->addSql("DROP TABLE {$this->getTable('oauth2_refresh_tokens')}");
|
||||||
|
$this->addSql("DROP TABLE {$this->getTable('oauth2_access_tokens')}");
|
||||||
|
$this->addSql("DROP TABLE {$this->getTable('oauth2_clients')}");
|
||||||
|
$this->addSql("DROP TABLE {$this->getTable('oauth2_auth_codes')}");
|
||||||
|
$this->addSql("DROP TABLE {$this->getTable('user')}");
|
||||||
|
$this->addSql("DROP TABLE {$this->getTable('annotation')}");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,31 +2,14 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Added foreign keys for account resetting
|
* Added foreign keys for account resetting.
|
||||||
*/
|
*/
|
||||||
class Version20160410190541 extends AbstractMigration implements ContainerAwareInterface
|
class Version20160410190541 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -2,31 +2,14 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Added name field on wallabag_oauth2_clients
|
* Added name field on wallabag_oauth2_clients.
|
||||||
*/
|
*/
|
||||||
class Version20160812120952 extends AbstractMigration implements ContainerAwareInterface
|
class Version20160812120952 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
@ -35,8 +18,21 @@ class Version20160812120952 extends AbstractMigration implements ContainerAwareI
|
|||||||
$clientsTable = $schema->getTable($this->getTable('oauth2_clients'));
|
$clientsTable = $schema->getTable($this->getTable('oauth2_clients'));
|
||||||
$this->skipIf($clientsTable->hasColumn('name'), 'It seems that you already played this migration.');
|
$this->skipIf($clientsTable->hasColumn('name'), 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
if ('sqlite' === $this->connection->getDatabasePlatform()->getName()) {
|
||||||
|
// Can't use $clientsTable->addColumn('name', 'blob');
|
||||||
|
// because of the error:
|
||||||
|
// SQLSTATE[HY000]: General error: 1 Cannot add a NOT NULL column with default value NULL
|
||||||
|
$databaseTablePrefix = $this->container->getParameter('database_table_prefix');
|
||||||
|
$this->addSql('CREATE TEMPORARY TABLE __temp__' . $databaseTablePrefix . 'oauth2_clients AS SELECT id, random_id, redirect_uris, secret, allowed_grant_types FROM ' . $databaseTablePrefix . 'oauth2_clients');
|
||||||
|
$this->addSql('DROP TABLE ' . $databaseTablePrefix . 'oauth2_clients');
|
||||||
|
$this->addSql('CREATE TABLE ' . $databaseTablePrefix . 'oauth2_clients (id INTEGER NOT NULL, user_id INTEGER DEFAULT NULL, random_id VARCHAR(255) NOT NULL COLLATE BINARY, secret VARCHAR(255) NOT NULL COLLATE BINARY, redirect_uris CLOB NOT NULL, allowed_grant_types CLOB NOT NULL, name CLOB NOT NULL, PRIMARY KEY(id), CONSTRAINT FK_635D765EA76ED395 FOREIGN KEY (user_id) REFERENCES "' . $databaseTablePrefix . 'user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
|
||||||
|
$this->addSql('INSERT INTO ' . $databaseTablePrefix . 'oauth2_clients (id, random_id, redirect_uris, secret, allowed_grant_types) SELECT id, random_id, redirect_uris, secret, allowed_grant_types FROM __temp__' . $databaseTablePrefix . 'oauth2_clients');
|
||||||
|
$this->addSql('DROP TABLE __temp__' . $databaseTablePrefix . 'oauth2_clients');
|
||||||
|
$this->addSql('CREATE INDEX IDX_635D765EA76ED395 ON ' . $databaseTablePrefix . 'oauth2_clients (user_id)');
|
||||||
|
} else {
|
||||||
$clientsTable->addColumn('name', 'blob');
|
$clientsTable->addColumn('name', 'blob');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
@ -44,6 +40,17 @@ class Version20160812120952 extends AbstractMigration implements ContainerAwareI
|
|||||||
public function down(Schema $schema)
|
public function down(Schema $schema)
|
||||||
{
|
{
|
||||||
$clientsTable = $schema->getTable($this->getTable('oauth2_clients'));
|
$clientsTable = $schema->getTable($this->getTable('oauth2_clients'));
|
||||||
|
|
||||||
|
if ('sqlite' === $this->connection->getDatabasePlatform()->getName()) {
|
||||||
|
$databaseTablePrefix = $this->container->getParameter('database_table_prefix');
|
||||||
|
$this->addSql('DROP INDEX IDX_635D765EA76ED395');
|
||||||
|
$this->addSql('CREATE TEMPORARY TABLE __temp__' . $databaseTablePrefix . 'oauth2_clients AS SELECT id, random_id, redirect_uris, secret, allowed_grant_types FROM ' . $databaseTablePrefix . 'oauth2_clients');
|
||||||
|
$this->addSql('DROP TABLE ' . $databaseTablePrefix . 'oauth2_clients');
|
||||||
|
$this->addSql('CREATE TABLE ' . $databaseTablePrefix . 'oauth2_clients (id INTEGER NOT NULL, random_id VARCHAR(255) NOT NULL, secret VARCHAR(255) NOT NULL, redirect_uris CLOB NOT NULL COLLATE BINARY, allowed_grant_types CLOB NOT NULL COLLATE BINARY, PRIMARY KEY(id))');
|
||||||
|
$this->addSql('INSERT INTO ' . $databaseTablePrefix . 'oauth2_clients (id, random_id, redirect_uris, secret, allowed_grant_types) SELECT id, random_id, redirect_uris, secret, allowed_grant_types FROM __temp__' . $databaseTablePrefix . 'oauth2_clients');
|
||||||
|
$this->addSql('DROP TABLE __temp__' . $databaseTablePrefix . 'oauth2_clients');
|
||||||
|
} else {
|
||||||
$clientsTable->dropColumn('name');
|
$clientsTable->dropColumn('name');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -2,31 +2,14 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Added settings for RabbitMQ and Redis imports
|
* Added settings for RabbitMQ and Redis imports.
|
||||||
*/
|
*/
|
||||||
class Version20160911214952 extends AbstractMigration implements ContainerAwareInterface
|
class Version20160911214952 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -2,31 +2,14 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Added pocket_consumer_key field on wallabag_config
|
* Added pocket_consumer_key field on wallabag_config.
|
||||||
*/
|
*/
|
||||||
class Version20160916201049 extends AbstractMigration implements ContainerAwareInterface
|
class Version20160916201049 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -2,38 +2,21 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
use Doctrine\DBAL\Migrations\SkipMigrationException;
|
use Doctrine\DBAL\Migrations\SkipMigrationException;
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Added pocket_consumer_key field on wallabag_config
|
* Added pocket_consumer_key field on wallabag_config.
|
||||||
*/
|
*/
|
||||||
class Version20161001072726 extends AbstractMigration implements ContainerAwareInterface
|
class Version20161001072726 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
public function up(Schema $schema)
|
public function up(Schema $schema)
|
||||||
{
|
{
|
||||||
$this->skipIf($this->connection->getDatabasePlatform()->getName() == 'sqlite', 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.');
|
$this->skipIf('sqlite' === $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.');
|
||||||
|
|
||||||
// remove all FK from entry_tag
|
// remove all FK from entry_tag
|
||||||
switch ($this->connection->getDatabasePlatform()->getName()) {
|
switch ($this->connection->getDatabasePlatform()->getName()) {
|
||||||
@ -41,7 +24,7 @@ class Version20161001072726 extends AbstractMigration implements ContainerAwareI
|
|||||||
$query = $this->connection->query("
|
$query = $this->connection->query("
|
||||||
SELECT CONSTRAINT_NAME
|
SELECT CONSTRAINT_NAME
|
||||||
FROM information_schema.key_column_usage
|
FROM information_schema.key_column_usage
|
||||||
WHERE TABLE_NAME = '".$this->getTable('entry_tag')."' AND CONSTRAINT_NAME LIKE 'FK_%'
|
WHERE TABLE_NAME = '" . $this->getTable('entry_tag', WallabagMigration::UN_ESCAPED_TABLE) . "' AND CONSTRAINT_NAME LIKE 'FK_%'
|
||||||
AND TABLE_SCHEMA = '" . $this->connection->getDatabase() . "'"
|
AND TABLE_SCHEMA = '" . $this->connection->getDatabase() . "'"
|
||||||
);
|
);
|
||||||
$query->execute();
|
$query->execute();
|
||||||
@ -50,7 +33,6 @@ class Version20161001072726 extends AbstractMigration implements ContainerAwareI
|
|||||||
$this->addSql('ALTER TABLE ' . $this->getTable('entry_tag') . ' DROP FOREIGN KEY ' . $fk['CONSTRAINT_NAME']);
|
$this->addSql('ALTER TABLE ' . $this->getTable('entry_tag') . ' DROP FOREIGN KEY ' . $fk['CONSTRAINT_NAME']);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'postgresql':
|
case 'postgresql':
|
||||||
// http://dba.stackexchange.com/questions/36979/retrieving-all-pk-and-fk
|
// http://dba.stackexchange.com/questions/36979/retrieving-all-pk-and-fk
|
||||||
$query = $this->connection->query("
|
$query = $this->connection->query("
|
||||||
@ -60,7 +42,7 @@ class Version20161001072726 extends AbstractMigration implements ContainerAwareI
|
|||||||
FROM pg_constraint c
|
FROM pg_constraint c
|
||||||
JOIN pg_namespace n ON n.oid = c.connamespace
|
JOIN pg_namespace n ON n.oid = c.connamespace
|
||||||
WHERE contype = 'f'
|
WHERE contype = 'f'
|
||||||
AND conrelid::regclass::text = '".$this->getTable('entry_tag')."'
|
AND conrelid::regclass::text = '" . $this->getTable('entry_tag', WallabagMigration::UN_ESCAPED_TABLE) . "'
|
||||||
AND n.nspname = 'public';"
|
AND n.nspname = 'public';"
|
||||||
);
|
);
|
||||||
$query->execute();
|
$query->execute();
|
||||||
@ -81,7 +63,7 @@ class Version20161001072726 extends AbstractMigration implements ContainerAwareI
|
|||||||
$query = $this->connection->query("
|
$query = $this->connection->query("
|
||||||
SELECT CONSTRAINT_NAME
|
SELECT CONSTRAINT_NAME
|
||||||
FROM information_schema.key_column_usage
|
FROM information_schema.key_column_usage
|
||||||
WHERE TABLE_NAME = '".$this->getTable('annotation')."'
|
WHERE TABLE_NAME = '" . $this->getTable('annotation', WallabagMigration::UN_ESCAPED_TABLE) . "'
|
||||||
AND CONSTRAINT_NAME LIKE 'FK_%'
|
AND CONSTRAINT_NAME LIKE 'FK_%'
|
||||||
AND COLUMN_NAME = 'entry_id'
|
AND COLUMN_NAME = 'entry_id'
|
||||||
AND TABLE_SCHEMA = '" . $this->connection->getDatabase() . "'"
|
AND TABLE_SCHEMA = '" . $this->connection->getDatabase() . "'"
|
||||||
@ -92,7 +74,6 @@ class Version20161001072726 extends AbstractMigration implements ContainerAwareI
|
|||||||
$this->addSql('ALTER TABLE ' . $this->getTable('annotation') . ' DROP FOREIGN KEY ' . $fk['CONSTRAINT_NAME']);
|
$this->addSql('ALTER TABLE ' . $this->getTable('annotation') . ' DROP FOREIGN KEY ' . $fk['CONSTRAINT_NAME']);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'postgresql':
|
case 'postgresql':
|
||||||
// http://dba.stackexchange.com/questions/36979/retrieving-all-pk-and-fk
|
// http://dba.stackexchange.com/questions/36979/retrieving-all-pk-and-fk
|
||||||
$query = $this->connection->query("
|
$query = $this->connection->query("
|
||||||
@ -102,7 +83,7 @@ class Version20161001072726 extends AbstractMigration implements ContainerAwareI
|
|||||||
FROM pg_constraint c
|
FROM pg_constraint c
|
||||||
JOIN pg_namespace n ON n.oid = c.connamespace
|
JOIN pg_namespace n ON n.oid = c.connamespace
|
||||||
WHERE contype = 'f'
|
WHERE contype = 'f'
|
||||||
AND conrelid::regclass::text = '".$this->getTable('annotation')."'
|
AND conrelid::regclass::text = '" . $this->getTable('annotation', WallabagMigration::UN_ESCAPED_TABLE) . "'
|
||||||
AND n.nspname = 'public'
|
AND n.nspname = 'public'
|
||||||
AND pg_get_constraintdef(c.oid) LIKE '%entry_id%';"
|
AND pg_get_constraintdef(c.oid) LIKE '%entry_id%';"
|
||||||
);
|
);
|
||||||
|
|||||||
@ -2,39 +2,22 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converted database to utf8mb4 encoding (for MySQL only)
|
* Converted database to utf8mb4 encoding (for MySQL only).
|
||||||
*/
|
*/
|
||||||
class Version20161022134138 extends AbstractMigration implements ContainerAwareInterface
|
class Version20161022134138 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
public function up(Schema $schema)
|
public function up(Schema $schema)
|
||||||
{
|
{
|
||||||
$this->skipIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'This migration only apply to MySQL');
|
$this->skipIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration only apply to MySQL');
|
||||||
|
|
||||||
$this->addSql('ALTER DATABASE '.$this->connection->getParams()['dbname'].' CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;');
|
$this->addSql('ALTER DATABASE `' . $this->connection->getParams()['dbname'] . '` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;');
|
||||||
|
|
||||||
// convert field length for utf8mb4
|
// convert field length for utf8mb4
|
||||||
// http://stackoverflow.com/a/31474509/569101
|
// http://stackoverflow.com/a/31474509/569101
|
||||||
@ -63,9 +46,9 @@ class Version20161022134138 extends AbstractMigration implements ContainerAwareI
|
|||||||
*/
|
*/
|
||||||
public function down(Schema $schema)
|
public function down(Schema $schema)
|
||||||
{
|
{
|
||||||
$this->skipIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'This migration only apply to MySQL');
|
$this->skipIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration only apply to MySQL');
|
||||||
|
|
||||||
$this->addSql('ALTER DATABASE '.$this->connection->getParams()['dbname'].' CHARACTER SET = utf8 COLLATE = utf8_unicode_ci;');
|
$this->addSql('ALTER DATABASE `' . $this->connection->getParams()['dbname'] . '` CHARACTER SET = utf8 COLLATE = utf8_unicode_ci;');
|
||||||
|
|
||||||
$this->addSql('ALTER TABLE ' . $this->getTable('annotation') . ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;');
|
$this->addSql('ALTER TABLE ' . $this->getTable('annotation') . ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;');
|
||||||
$this->addSql('ALTER TABLE ' . $this->getTable('entry') . ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;');
|
$this->addSql('ALTER TABLE ' . $this->getTable('entry') . ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;');
|
||||||
|
|||||||
@ -2,33 +2,16 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Added user_id column on oauth2_clients to prevent users to delete API clients from other users
|
* Added user_id column on oauth2_clients to prevent users to delete API clients from other users.
|
||||||
*/
|
*/
|
||||||
class Version20161024212538 extends AbstractMigration implements ContainerAwareInterface
|
class Version20161024212538 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
private $constraintName = 'IDX_user_oauth_client';
|
private $constraintName = 'IDX_user_oauth_client';
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
@ -60,7 +43,7 @@ class Version20161024212538 extends AbstractMigration implements ContainerAwareI
|
|||||||
|
|
||||||
$clientsTable->dropColumn('user_id', 'integer');
|
$clientsTable->dropColumn('user_id', 'integer');
|
||||||
|
|
||||||
if ($this->connection->getDatabasePlatform()->getName() != 'sqlite') {
|
if ('sqlite' !== $this->connection->getDatabasePlatform()->getName()) {
|
||||||
$clientsTable->removeForeignKey($this->constraintName);
|
$clientsTable->removeForeignKey($this->constraintName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,31 +2,14 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Added the internal setting to enable/disable downloading pictures
|
* Added the internal setting to enable/disable downloading pictures.
|
||||||
*/
|
*/
|
||||||
class Version20161031132655 extends AbstractMigration implements ContainerAwareInterface
|
class Version20161031132655 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -2,33 +2,16 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Added created_at index on entry table
|
* Added created_at index on entry table.
|
||||||
*/
|
*/
|
||||||
class Version20161104073720 extends AbstractMigration implements ContainerAwareInterface
|
class Version20161104073720 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
private $indexName = 'IDX_entry_created_at';
|
private $indexName = 'IDX_entry_created_at';
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -2,31 +2,14 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Added action_mark_as_read field on config table
|
* Added action_mark_as_read field on config table.
|
||||||
*/
|
*/
|
||||||
class Version20161106113822 extends AbstractMigration implements ContainerAwareInterface
|
class Version20161106113822 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -2,31 +2,14 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Added the internal setting to share articles to unmark.it
|
* Added the internal setting to share articles to unmark.it.
|
||||||
*/
|
*/
|
||||||
class Version20161117071626 extends AbstractMigration implements ContainerAwareInterface
|
class Version20161117071626 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -2,31 +2,14 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add http_status in `entry_table`.
|
* Add http_status in `entry_table`.
|
||||||
*/
|
*/
|
||||||
class Version20161118134328 extends AbstractMigration implements ContainerAwareInterface
|
class Version20161118134328 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -2,31 +2,14 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add the restricted_access internal setting for articles with paywall.
|
* Add the restricted_access internal setting for articles with paywall.
|
||||||
*/
|
*/
|
||||||
class Version20161122144743 extends AbstractMigration implements ContainerAwareInterface
|
class Version20161122144743 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -2,10 +2,8 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Methods and properties removed from `FOS\UserBundle\Model\User`.
|
* Methods and properties removed from `FOS\UserBundle\Model\User`.
|
||||||
@ -18,23 +16,8 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
|
|||||||
* You need to drop the fields `expired` and `credentials_expired` from your database
|
* You need to drop the fields `expired` and `credentials_expired` from your database
|
||||||
* schema, because they aren't mapped anymore.
|
* schema, because they aren't mapped anymore.
|
||||||
*/
|
*/
|
||||||
class Version20161122203647 extends AbstractMigration implements ContainerAwareInterface
|
class Version20161122203647 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -2,31 +2,14 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Added list_mode in user config.
|
* Added list_mode in user config.
|
||||||
*/
|
*/
|
||||||
class Version20161128084725 extends AbstractMigration implements ContainerAwareInterface
|
class Version20161128084725 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -2,15 +2,13 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removed locked, credentials_expire_at and expires_at.
|
* Removed locked, credentials_expire_at and expires_at.
|
||||||
*/
|
*/
|
||||||
class Version20161128131503 extends AbstractMigration implements ContainerAwareInterface
|
class Version20161128131503 extends WallabagMigration
|
||||||
{
|
{
|
||||||
private $fields = [
|
private $fields = [
|
||||||
'locked' => 'smallint',
|
'locked' => 'smallint',
|
||||||
@ -18,21 +16,6 @@ class Version20161128131503 extends AbstractMigration implements ContainerAwareI
|
|||||||
'expires_at' => 'datetime',
|
'expires_at' => 'datetime',
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -2,31 +2,14 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renamed uuid to uid in entry table
|
* Renamed uuid to uid in entry table.
|
||||||
*/
|
*/
|
||||||
class Version20161214094402 extends AbstractMigration implements ContainerAwareInterface
|
class Version20161214094402 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -2,33 +2,16 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Added index on wallabag_entry.uid
|
* Added index on wallabag_entry.uid.
|
||||||
*/
|
*/
|
||||||
class Version20161214094403 extends AbstractMigration implements ContainerAwareInterface
|
class Version20161214094403 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
private $indexName = 'IDX_entry_uid';
|
private $indexName = 'IDX_entry_uid';
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -2,34 +2,17 @@
|
|||||||
|
|
||||||
namespace Application\Migrations;
|
namespace Application\Migrations;
|
||||||
|
|
||||||
use Doctrine\DBAL\Migrations\AbstractMigration;
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Added indexes on wallabag_entry.is_starred and wallabag_entry.is_archived
|
* Added indexes on wallabag_entry.is_starred and wallabag_entry.is_archived.
|
||||||
*/
|
*/
|
||||||
class Version20170127093841 extends AbstractMigration implements ContainerAwareInterface
|
class Version20170127093841 extends WallabagMigration
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var ContainerInterface
|
|
||||||
*/
|
|
||||||
private $container;
|
|
||||||
|
|
||||||
private $indexStarredName = 'IDX_entry_starred';
|
private $indexStarredName = 'IDX_entry_starred';
|
||||||
private $indexArchivedName = 'IDX_entry_archived';
|
private $indexArchivedName = 'IDX_entry_archived';
|
||||||
|
|
||||||
public function setContainer(ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getTable($tableName)
|
|
||||||
{
|
|
||||||
return $this->container->getParameter('database_table_prefix').$tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Schema $schema
|
* @param Schema $schema
|
||||||
*/
|
*/
|
||||||
|
|||||||
37
app/DoctrineMigrations/Version20170327194233.php
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the share_scuttle internal setting.
|
||||||
|
*/
|
||||||
|
class Version20170327194233 extends WallabagMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$scuttle = $this->container
|
||||||
|
->get('doctrine.orm.default_entity_manager')
|
||||||
|
->getConnection()
|
||||||
|
->fetchArray('SELECT * FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'share_scuttle'");
|
||||||
|
|
||||||
|
$this->skipIf(false !== $scuttle, 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$this->addSql('INSERT INTO ' . $this->getTable('craue_config_setting') . " (name, value, section) VALUES ('share_scuttle', '1', 'entry')");
|
||||||
|
$this->addSql('INSERT INTO ' . $this->getTable('craue_config_setting') . " (name, value, section) VALUES ('scuttle_url', 'http://scuttle.org', 'entry')");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'share_scuttle';");
|
||||||
|
$this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'scuttle_url';");
|
||||||
|
}
|
||||||
|
}
|
||||||
48
app/DoctrineMigrations/Version20170405182620.php
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add published_at and published_by in `entry` table.
|
||||||
|
*/
|
||||||
|
class Version20170405182620 extends WallabagMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$entryTable = $schema->getTable($this->getTable('entry'));
|
||||||
|
|
||||||
|
$this->skipIf($entryTable->hasColumn('published_at'), 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$entryTable->addColumn('published_at', 'datetime', [
|
||||||
|
'notnull' => false,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->skipIf($entryTable->hasColumn('published_by'), 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$entryTable->addColumn('published_by', 'text', [
|
||||||
|
'notnull' => false,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$entryTable = $schema->getTable($this->getTable('entry'));
|
||||||
|
|
||||||
|
$this->skipIf(!$entryTable->hasColumn('published_at'), 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$entryTable->dropColumn('published_at');
|
||||||
|
|
||||||
|
$this->skipIf(!$entryTable->hasColumn('published_by'), 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$entryTable->dropColumn('published_by');
|
||||||
|
}
|
||||||
|
}
|
||||||
34
app/DoctrineMigrations/Version20170407200919.php
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove isPublic in Entry Table.
|
||||||
|
*/
|
||||||
|
class Version20170407200919 extends WallabagMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$entryTable = $schema->getTable($this->getTable('entry'));
|
||||||
|
$this->skipIf(!$entryTable->hasColumn('is_public'), 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$entryTable->dropColumn('is_public');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$entryTable = $schema->getTable($this->getTable('entry'));
|
||||||
|
$this->skipIf($entryTable->hasColumn('is_public'), 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$entryTable->addColumn('is_public', 'boolean', ['notnull' => false, 'default' => 0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
35
app/DoctrineMigrations/Version20170420134133.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove download_pictures in craue_config_setting.
|
||||||
|
*/
|
||||||
|
class Version20170420134133 extends WallabagMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'download_pictures';");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$downloadPictures = $this->container
|
||||||
|
->get('doctrine.orm.default_entity_manager')
|
||||||
|
->getConnection()
|
||||||
|
->fetchArray('SELECT * FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'download_pictures'");
|
||||||
|
|
||||||
|
$this->skipIf(false !== $downloadPictures, 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$this->addSql('INSERT INTO ' . $this->getTable('craue_config_setting') . " (name, value, section) VALUES ('download_pictures', '1', 'entry')");
|
||||||
|
}
|
||||||
|
}
|
||||||
44
app/DoctrineMigrations/Version20170501115751.php
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add site credential table to store username & password for some website (behind authentication or paywall).
|
||||||
|
*/
|
||||||
|
class Version20170501115751 extends WallabagMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf($schema->hasTable($this->getTable('site_credential')), 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$table = $schema->createTable($this->getTable('site_credential'));
|
||||||
|
$table->addColumn('id', 'integer', ['autoincrement' => true]);
|
||||||
|
$table->addColumn('user_id', 'integer');
|
||||||
|
$table->addColumn('host', 'string', ['length' => 255]);
|
||||||
|
$table->addColumn('username', 'text');
|
||||||
|
$table->addColumn('password', 'text');
|
||||||
|
$table->addColumn('createdAt', 'datetime');
|
||||||
|
$table->addIndex(['user_id'], 'idx_user');
|
||||||
|
$table->setPrimaryKey(['id']);
|
||||||
|
$table->addForeignKeyConstraint($this->getTable('user'), ['user_id'], ['id'], [], 'fk_user');
|
||||||
|
|
||||||
|
if ('postgresql' === $this->connection->getDatabasePlatform()->getName()) {
|
||||||
|
$schema->dropSequence('site_credential_id_seq');
|
||||||
|
$schema->createSequence('site_credential_id_seq');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$schema->dropTable($this->getTable('site_credential'));
|
||||||
|
}
|
||||||
|
}
|
||||||
43
app/DoctrineMigrations/Version20170510082609.php
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changed length for username, username_canonical, email and email_canonical fields in wallabag_user table.
|
||||||
|
*/
|
||||||
|
class Version20170510082609 extends WallabagMigration
|
||||||
|
{
|
||||||
|
private $fields = [
|
||||||
|
'username',
|
||||||
|
'username_canonical',
|
||||||
|
'email',
|
||||||
|
'email_canonical',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration only apply to MySQL');
|
||||||
|
|
||||||
|
foreach ($this->fields as $field) {
|
||||||
|
$this->addSql('ALTER TABLE ' . $this->getTable('user') . ' CHANGE ' . $field . ' ' . $field . ' VARCHAR(180) NOT NULL;');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration only apply to MySQL');
|
||||||
|
|
||||||
|
foreach ($this->fields as $field) {
|
||||||
|
$this->addSql('ALTER TABLE ' . $this->getTable('user') . ' CHANGE ' . $field . ' ' . $field . ' VARCHAR(255) NOT NULL;');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
38
app/DoctrineMigrations/Version20170511115400.php
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Added `headers` field in entry table.
|
||||||
|
*/
|
||||||
|
class Version20170511115400 extends WallabagMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$entryTable = $schema->getTable($this->getTable('entry'));
|
||||||
|
|
||||||
|
$this->skipIf($entryTable->hasColumn('headers'), 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$entryTable->addColumn('headers', 'text', [
|
||||||
|
'notnull' => false,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$entryTable = $schema->getTable($this->getTable('entry'));
|
||||||
|
|
||||||
|
$this->skipIf(!$entryTable->hasColumn('headers'), 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$entryTable->dropColumn('headers');
|
||||||
|
}
|
||||||
|
}
|
||||||
79
app/DoctrineMigrations/Version20170511211659.php
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Migrations\SkipMigrationException;
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Increase the length of the "quote" column of "annotation" table.
|
||||||
|
*/
|
||||||
|
class Version20170511211659 extends WallabagMigration
|
||||||
|
{
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$tableName = $this->getTable('annotation');
|
||||||
|
|
||||||
|
switch ($this->connection->getDatabasePlatform()->getName()) {
|
||||||
|
case 'sqlite':
|
||||||
|
$this->addSql(<<<EOD
|
||||||
|
CREATE TEMPORARY TABLE __temp__wallabag_annotation AS
|
||||||
|
SELECT id, user_id, entry_id, text, created_at, updated_at, quote, ranges
|
||||||
|
FROM ${tableName}
|
||||||
|
EOD
|
||||||
|
);
|
||||||
|
$this->addSql('DROP TABLE ' . $tableName);
|
||||||
|
$this->addSql(<<<EOD
|
||||||
|
CREATE TABLE ${tableName}
|
||||||
|
(
|
||||||
|
id INTEGER PRIMARY KEY NOT NULL,
|
||||||
|
user_id INTEGER DEFAULT NULL,
|
||||||
|
entry_id INTEGER DEFAULT NULL,
|
||||||
|
text CLOB NOT NULL,
|
||||||
|
created_at DATETIME NOT NULL,
|
||||||
|
updated_at DATETIME NOT NULL,
|
||||||
|
quote CLOB NOT NULL,
|
||||||
|
ranges CLOB NOT NULL,
|
||||||
|
CONSTRAINT FK_A7AED006A76ED395 FOREIGN KEY (user_id) REFERENCES wallabag_user (id),
|
||||||
|
CONSTRAINT FK_A7AED006BA364942 FOREIGN KEY (entry_id) REFERENCES wallabag_entry (id) ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
CREATE INDEX IDX_A7AED006A76ED395 ON wallabag_annotation (user_id);
|
||||||
|
CREATE INDEX IDX_A7AED006BA364942 ON wallabag_annotation (entry_id);
|
||||||
|
EOD
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->addSql(<<<EOD
|
||||||
|
INSERT INTO ${tableName} (id, user_id, entry_id, text, created_at, updated_at, quote, ranges)
|
||||||
|
SELECT id, user_id, entry_id, text, created_at, updated_at, quote, ranges
|
||||||
|
FROM __temp__wallabag_annotation;
|
||||||
|
EOD
|
||||||
|
);
|
||||||
|
$this->addSql('DROP TABLE __temp__wallabag_annotation');
|
||||||
|
break;
|
||||||
|
case 'mysql':
|
||||||
|
$this->addSql('ALTER TABLE ' . $tableName . ' MODIFY quote TEXT NOT NULL');
|
||||||
|
break;
|
||||||
|
case 'postgresql':
|
||||||
|
$this->addSql('ALTER TABLE ' . $tableName . ' ALTER COLUMN quote TYPE TEXT');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$tableName = $this->getTable('annotation');
|
||||||
|
|
||||||
|
switch ($this->connection->getDatabasePlatform()->getName()) {
|
||||||
|
case 'sqlite':
|
||||||
|
throw new SkipMigrationException('Too complex ...');
|
||||||
|
break;
|
||||||
|
case 'mysql':
|
||||||
|
$this->addSql('ALTER TABLE ' . $tableName . ' MODIFY quote VARCHAR(255) NOT NULL');
|
||||||
|
break;
|
||||||
|
case 'postgresql':
|
||||||
|
$this->addSql('ALTER TABLE ' . $tableName . ' ALTER COLUMN quote TYPE VARCHAR(255)');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
35
app/DoctrineMigrations/Version20170602075214.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add api_user_registration in craue_config_setting.
|
||||||
|
*/
|
||||||
|
class Version20170602075214 extends WallabagMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$apiUserRegistration = $this->container
|
||||||
|
->get('doctrine.orm.default_entity_manager')
|
||||||
|
->getConnection()
|
||||||
|
->fetchArray('SELECT * FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'api_user_registration'");
|
||||||
|
|
||||||
|
$this->skipIf(false !== $apiUserRegistration, 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$this->addSql('INSERT INTO ' . $this->getTable('craue_config_setting') . " (name, value, section) VALUES ('api_user_registration', '0', 'api')");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'api_user_registration';");
|
||||||
|
}
|
||||||
|
}
|
||||||
36
app/DoctrineMigrations/Version20170606155640.php
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove wallabag_url from craue_config_setting.
|
||||||
|
* It has been moved into the parameters.yml.
|
||||||
|
*/
|
||||||
|
class Version20170606155640 extends WallabagMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$apiUserRegistration = $this->container
|
||||||
|
->get('doctrine.orm.default_entity_manager')
|
||||||
|
->getConnection()
|
||||||
|
->fetchArray('SELECT * FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'wallabag_url'");
|
||||||
|
|
||||||
|
$this->skipIf(false === $apiUserRegistration, 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'wallabag_url'");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->addSql('INSERT INTO ' . $this->getTable('craue_config_setting') . " (name, value, section) VALUES ('wallabag_url', 'wallabag.me', 'misc')");
|
||||||
|
}
|
||||||
|
}
|
||||||
99
app/DoctrineMigrations/Version20170719231144.php
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changed tags to lowercase.
|
||||||
|
*/
|
||||||
|
class Version20170719231144 extends WallabagMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf('sqlite' === $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.');
|
||||||
|
|
||||||
|
// Find tags which need to be merged
|
||||||
|
$dupTags = $this->connection->query('
|
||||||
|
SELECT LOWER(label) AS lower_label
|
||||||
|
FROM ' . $this->getTable('tag') . '
|
||||||
|
GROUP BY LOWER(label)
|
||||||
|
HAVING COUNT(*) > 1'
|
||||||
|
);
|
||||||
|
$dupTags->execute();
|
||||||
|
|
||||||
|
foreach ($dupTags->fetchAll() as $duplicates) {
|
||||||
|
$label = $duplicates['lower_label'];
|
||||||
|
|
||||||
|
// Retrieve all duplicate tags for a given tag
|
||||||
|
$tags = $this->connection->executeQuery('
|
||||||
|
SELECT id
|
||||||
|
FROM ' . $this->getTable('tag') . '
|
||||||
|
WHERE LOWER(label) = :label
|
||||||
|
ORDER BY id ASC',
|
||||||
|
[
|
||||||
|
'label' => $label,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$first = true;
|
||||||
|
$newId = null;
|
||||||
|
$ids = [];
|
||||||
|
|
||||||
|
foreach ($tags->fetchAll() as $tag) {
|
||||||
|
// Ignore the first tag as we use it as the new reference tag
|
||||||
|
if ($first) {
|
||||||
|
$first = false;
|
||||||
|
$newId = $tag['id'];
|
||||||
|
} else {
|
||||||
|
$ids[] = $tag['id'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Just in case...
|
||||||
|
if (\count($ids) > 0) {
|
||||||
|
// Merge tags
|
||||||
|
$this->addSql('
|
||||||
|
UPDATE ' . $this->getTable('entry_tag') . '
|
||||||
|
SET tag_id = ' . $newId . '
|
||||||
|
WHERE tag_id IN (' . implode(',', $ids) . ')
|
||||||
|
AND entry_id NOT IN (
|
||||||
|
SELECT entry_id
|
||||||
|
FROM (SELECT * FROM ' . $this->getTable('entry_tag') . ') AS _entry_tag
|
||||||
|
WHERE tag_id = ' . $newId . '
|
||||||
|
)'
|
||||||
|
);
|
||||||
|
|
||||||
|
// Delete links to unused tags
|
||||||
|
$this->addSql('
|
||||||
|
DELETE FROM ' . $this->getTable('entry_tag') . '
|
||||||
|
WHERE tag_id IN (' . implode(',', $ids) . ')'
|
||||||
|
);
|
||||||
|
|
||||||
|
// Delete unused tags
|
||||||
|
$this->addSql('
|
||||||
|
DELETE FROM ' . $this->getTable('tag') . '
|
||||||
|
WHERE id IN (' . implode(',', $ids) . ')'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Iterate over all tags to lowercase them
|
||||||
|
$this->addSql('
|
||||||
|
UPDATE ' . $this->getTable('tag') . '
|
||||||
|
SET label = LOWER(label)'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
throw new SkipMigrationException('Too complex ...');
|
||||||
|
}
|
||||||
|
}
|
||||||
51
app/DoctrineMigrations/Version20170824113337.php
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add starred_at column and set its value to updated_at for is_starred entries.
|
||||||
|
*/
|
||||||
|
class Version20170824113337 extends WallabagMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$entryTable = $schema->getTable($this->getTable('entry'));
|
||||||
|
|
||||||
|
$this->skipIf($entryTable->hasColumn('starred_at'), 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$entryTable->addColumn('starred_at', 'datetime', [
|
||||||
|
'notnull' => false,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function postUp(Schema $schema)
|
||||||
|
{
|
||||||
|
$entryTable = $schema->getTable($this->getTable('entry'));
|
||||||
|
$this->skipIf(!$entryTable->hasColumn('starred_at'), 'Unable to add starred_at colum');
|
||||||
|
|
||||||
|
$this->connection->executeQuery(
|
||||||
|
'UPDATE ' . $this->getTable('entry') . ' SET starred_at = updated_at WHERE is_starred = :is_starred',
|
||||||
|
[
|
||||||
|
'is_starred' => true,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$entryTable = $schema->getTable($this->getTable('entry'));
|
||||||
|
|
||||||
|
$this->skipIf(!$entryTable->hasColumn('starred_at'), 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$entryTable->dropColumn('starred_at');
|
||||||
|
}
|
||||||
|
}
|
||||||
48
app/DoctrineMigrations/Version20171008195606.php
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changed reading_time field to prevent null value.
|
||||||
|
*/
|
||||||
|
class Version20171008195606 extends WallabagMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf('sqlite' === $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.');
|
||||||
|
|
||||||
|
switch ($this->connection->getDatabasePlatform()->getName()) {
|
||||||
|
case 'mysql':
|
||||||
|
$this->addSql('UPDATE ' . $this->getTable('entry') . ' SET reading_time = 0 WHERE reading_time IS NULL;');
|
||||||
|
$this->addSql('ALTER TABLE ' . $this->getTable('entry') . ' CHANGE reading_time reading_time INT(11) NOT NULL;');
|
||||||
|
break;
|
||||||
|
case 'postgresql':
|
||||||
|
$this->addSql('UPDATE ' . $this->getTable('entry') . ' SET reading_time = 0 WHERE reading_time IS NULL;');
|
||||||
|
$this->addSql('ALTER TABLE ' . $this->getTable('entry') . ' ALTER COLUMN reading_time SET NOT NULL;');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->skipIf('sqlite' === $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.');
|
||||||
|
|
||||||
|
switch ($this->connection->getDatabasePlatform()->getName()) {
|
||||||
|
case 'mysql':
|
||||||
|
$this->addSql('ALTER TABLE ' . $this->getTable('entry') . ' CHANGE reading_time reading_time INT(11);');
|
||||||
|
break;
|
||||||
|
case 'postgresql':
|
||||||
|
$this->addSql('ALTER TABLE ' . $this->getTable('entry') . ' ALTER COLUMN reading_time DROP NOT NULL;');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
38
app/DoctrineMigrations/Version20171105202000.php
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add origin_url column.
|
||||||
|
*/
|
||||||
|
class Version20171105202000 extends WallabagMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$entryTable = $schema->getTable($this->getTable('entry'));
|
||||||
|
|
||||||
|
$this->skipIf($entryTable->hasColumn('origin_url'), 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$entryTable->addColumn('origin_url', 'text', [
|
||||||
|
'notnull' => false,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$entryTable = $schema->getTable($this->getTable('entry'));
|
||||||
|
|
||||||
|
$this->skipIf(!$entryTable->hasColumn('origin_url'), 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$entryTable->dropColumn('origin_url');
|
||||||
|
}
|
||||||
|
}
|
||||||
35
app/DoctrineMigrations/Version20171120163128.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add store_article_headers in craue_config_setting.
|
||||||
|
*/
|
||||||
|
class Version20171120163128 extends WallabagMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$storeArticleHeaders = $this->container
|
||||||
|
->get('doctrine.orm.default_entity_manager')
|
||||||
|
->getConnection()
|
||||||
|
->fetchArray('SELECT * FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'store_article_headers'");
|
||||||
|
|
||||||
|
$this->skipIf(false !== $storeArticleHeaders, 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$this->addSql('INSERT INTO ' . $this->getTable('craue_config_setting') . " (name, value, section) VALUES ('store_article_headers', '0', 'entry')");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'store_article_headers';");
|
||||||
|
}
|
||||||
|
}
|
||||||
35
app/DoctrineMigrations/Version20171125164500.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Application\Migrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Wallabag\CoreBundle\Doctrine\WallabagMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add shaarli_share_origin_url in craue_config_setting.
|
||||||
|
*/
|
||||||
|
class Version20171125164500 extends WallabagMigration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function up(Schema $schema)
|
||||||
|
{
|
||||||
|
$shaarliShareOriginUrl = $this->container
|
||||||
|
->get('doctrine.orm.default_entity_manager')
|
||||||
|
->getConnection()
|
||||||
|
->fetchArray('SELECT * FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'shaarli_share_origin_url'");
|
||||||
|
|
||||||
|
$this->skipIf(false !== $shaarliShareOriginUrl, 'It seems that you already played this migration.');
|
||||||
|
|
||||||
|
$this->addSql('INSERT INTO ' . $this->getTable('craue_config_setting') . " (name, value, section) VALUES ('shaarli_share_origin_url', '0', 'entry')");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Schema $schema
|
||||||
|
*/
|
||||||
|
public function down(Schema $schema)
|
||||||
|
{
|
||||||
|
$this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'shaarli_share_origin_url';");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -12,14 +12,16 @@ export_xml: Aktiver eksport til XML
|
|||||||
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
|
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
|
||||||
# import_with_redis: Enable Redis to import data asynchronously
|
# import_with_redis: Enable Redis to import data asynchronously
|
||||||
shaarli_url: Shaarli-URL, hvis tjenesten er aktiv
|
shaarli_url: Shaarli-URL, hvis tjenesten er aktiv
|
||||||
|
scuttle_url: Scuttle-URL, hvis tjenesten er aktiv
|
||||||
|
unmark_url: Unmark-URL, hvis tjenesten er aktiv
|
||||||
share_diaspora: Aktiver deling til Diaspora
|
share_diaspora: Aktiver deling til Diaspora
|
||||||
share_mail: Aktiver deling med email
|
share_mail: Aktiver deling med email
|
||||||
share_shaarli: Aktiver deling gennem Shaarli
|
share_shaarli: Aktiver deling gennem Shaarli
|
||||||
|
share_scuttle: Aktiver deling gennem Scuttle
|
||||||
share_twitter: Aktiver deling gennem Twitter
|
share_twitter: Aktiver deling gennem Twitter
|
||||||
share_unmark: Aktiver deling gennem Unmark.it
|
share_unmark: Aktiver deling gennem Unmark.it
|
||||||
show_printlink: Vis et link til print-indhold
|
show_printlink: Vis et link til print-indhold
|
||||||
wallabag_support_url: Support-URL for wallabag
|
wallabag_support_url: Support-URL for wallabag
|
||||||
wallabag_url: URL for *sin* wallabag-installation
|
|
||||||
entry: "artikel"
|
entry: "artikel"
|
||||||
export: "eksport"
|
export: "eksport"
|
||||||
import: "import"
|
import: "import"
|
||||||
@ -33,3 +35,6 @@ demo_mode_username: "Demobruger"
|
|||||||
# share_public: Allow public url for entries
|
# share_public: Allow public url for entries
|
||||||
# download_images_enabled: Download images locally
|
# download_images_enabled: Download images locally
|
||||||
# restricted_access: Enable authentication for websites with paywall
|
# restricted_access: Enable authentication for websites with paywall
|
||||||
|
# api_user_registration: Enable user to be registered using the API
|
||||||
|
# store_article_headers: Enable if wallabag stores HTTP headers for each article
|
||||||
|
# shaarli_share_origin_url: Enable sharing origin url to Shaarli, if the service is enabled
|
||||||
|
|||||||
@ -1,35 +1,40 @@
|
|||||||
# settings_changed: Configuration updated
|
settings_changed: 'Konfiguration aktualisiert'
|
||||||
download_pictures: Bilder auf den Server herunterladen
|
download_pictures: 'Bilder auf den Server herunterladen'
|
||||||
carrot: Teilen zu Carrot aktivieren
|
carrot: 'Teilen zu Carrot aktivieren'
|
||||||
diaspora_url: Diaspora-URL, sofern der Service aktiviert ist
|
diaspora_url: 'Diaspora-URL, sofern der Service aktiviert ist'
|
||||||
export_epub: ePUB-Export aktivieren
|
export_epub: 'ePUB-Export aktivieren'
|
||||||
export_mobi: mobi-Export aktivieren
|
export_mobi: 'mobi-Export aktivieren'
|
||||||
export_pdf: PDF-Export aktivieren
|
export_pdf: 'PDF-Export aktivieren'
|
||||||
export_csv: CSV-Export aktivieren
|
export_csv: 'CSV-Export aktivieren'
|
||||||
export_json: JSON-Export aktivieren
|
export_json: 'JSON-Export aktivieren'
|
||||||
export_txt: TXT-Export aktivieren
|
export_txt: 'TXT-Export aktivieren'
|
||||||
export_xml: XML-Export aktivieren
|
export_xml: 'XML-Export aktivieren'
|
||||||
import_with_rabbitmq: Aktiviere RabbitMQ, um Artikel asynchron zu importieren
|
import_with_rabbitmq: 'Aktiviere RabbitMQ, um Artikel asynchron zu importieren'
|
||||||
import_with_redis: Aktiviere Redis, um Artikel asynchron zu importieren
|
import_with_redis: 'Aktiviere Redis, um Artikel asynchron zu importieren'
|
||||||
shaarli_url: Shaarli-URL, sofern der Service aktiviert ist
|
shaarli_url: 'Shaarli-URL, sofern der Service aktiviert ist'
|
||||||
share_diaspora: Teilen zu Diaspora aktiveren
|
scuttle_url: 'Scuttle-URL, sofern der Service aktiviert ist'
|
||||||
share_mail: Teilen via E-Mail aktiveren
|
unmark_url: 'Unmark-URL, sofern der Service aktiviert ist'
|
||||||
share_shaarli: Teilen zu Shaarli aktiveren
|
share_diaspora: 'Teilen zu Diaspora aktiveren'
|
||||||
share_twitter: Teilen zu Twitter aktiveren
|
share_mail: 'Teilen via E-Mail aktiveren'
|
||||||
share_unmark: Teilen zu Unmark.it aktiveren
|
share_shaarli: 'Teilen zu Shaarli aktiveren'
|
||||||
show_printlink: Link anzeigen, um den Inhalt auszudrucken
|
share_twitter: 'Teilen zu Twitter aktiveren'
|
||||||
wallabag_support_url: Support-URL für wallabag
|
share_unmark: 'Teilen zu Unmark.it aktiveren'
|
||||||
wallabag_url: URL von *deiner* wallabag-Instanz
|
show_printlink: 'Link anzeigen, um den Inhalt auszudrucken'
|
||||||
entry: "Artikel"
|
wallabag_support_url: 'Support-URL für wallabag'
|
||||||
export: "Export"
|
wallabag_url: 'URL von *deiner* wallabag-Instanz'
|
||||||
import: "Import"
|
entry: 'Artikel'
|
||||||
misc: "Verschiedenes"
|
export: 'Export'
|
||||||
modify_settings: "Übernehmen"
|
import: 'Import'
|
||||||
piwik_host: Host deiner Webseite in Piwik (ohne http:// oder https://)
|
misc: 'Verschiedenes'
|
||||||
piwik_site_id: ID deiner Webseite in Piwik
|
modify_settings: 'Übernehmen'
|
||||||
piwik_enabled: Piwik aktivieren
|
piwik_host: 'Host deiner Webseite in Piwik (ohne http:// oder https://)'
|
||||||
demo_mode_enabled: "Test-Modus aktivieren? (nur für die öffentliche wallabag-Demo genutzt)"
|
piwik_site_id: 'ID deiner Webseite in Piwik'
|
||||||
demo_mode_username: "Test-Benutzer"
|
piwik_enabled: 'Piwik aktivieren'
|
||||||
share_public: Erlaube eine öffentliche URL für Einträge
|
demo_mode_enabled: 'Test-Modus aktivieren? (nur für die öffentliche wallabag-Demo genutzt)'
|
||||||
# download_images_enabled: Download images locally
|
demo_mode_username: 'Test-Benutzer'
|
||||||
# restricted_access: Enable authentication for websites with paywall
|
share_public: 'Erlaube eine öffentliche URL für Einträge'
|
||||||
|
download_images_enabled: 'Bilder lokal herunterladen'
|
||||||
|
restricted_access: 'Authentifizierung für Webseiten mit Paywall aktivieren'
|
||||||
|
api_user_registration: 'Registrierung eines Benutzers über die API ermöglichen'
|
||||||
|
store_article_headers: 'Speichern von HTTP-Headern für jeden Artikel aktivieren'
|
||||||
|
shaarli_share_origin_url: 'Original-URL mit Shaarli teilen, wenn der Service aktiviert ist'
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
settings_changed: Configuration updated
|
settings_changed: Configuration updated
|
||||||
download_pictures: Download pictures on your server
|
download_pictures: Download pictures on your server
|
||||||
carrot: Enable share to Carrot
|
carrot: Enable share to Carrot
|
||||||
diaspora_url: Diaspora URL, if the service is enabled
|
diaspora_url: diaspora* URL, if the service is enabled
|
||||||
export_epub: Enable ePub export
|
export_epub: Enable ePub export
|
||||||
export_mobi: Enable .mobi export
|
export_mobi: Enable .mobi export
|
||||||
export_pdf: Enable PDF export
|
export_pdf: Enable PDF export
|
||||||
@ -12,24 +12,29 @@ export_xml: Enable XML export
|
|||||||
import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
|
import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
|
||||||
import_with_redis: Enable Redis to import data asynchronously
|
import_with_redis: Enable Redis to import data asynchronously
|
||||||
shaarli_url: Shaarli URL, if the service is enabled
|
shaarli_url: Shaarli URL, if the service is enabled
|
||||||
share_diaspora: Enable share to Diaspora
|
scuttle_url: Scuttle URL, if the service is enabled
|
||||||
share_mail: Enable share by email
|
unmark_url: Unmark URL, if the service is enabled
|
||||||
share_shaarli: Enable share to Shaarli
|
share_diaspora: Enable share to diaspora*
|
||||||
share_twitter: Enable share to Twitter
|
share_mail: Enable share by e-mail
|
||||||
share_unmark: Enable share to Unmark.it
|
share_shaarli: Enable sharing to Shaarli
|
||||||
|
share_scuttle: Enable sharing to Scuttle
|
||||||
|
share_twitter: Enable sharing to Twitter
|
||||||
|
share_unmark: Enable sharing to Unmark.it
|
||||||
show_printlink: Display a link to print content
|
show_printlink: Display a link to print content
|
||||||
wallabag_support_url: Support URL for wallabag
|
wallabag_support_url: Support URL for wallabag
|
||||||
wallabag_url: URL of *your* wallabag instance
|
|
||||||
entry: "article"
|
entry: "article"
|
||||||
export: "export"
|
export: "export"
|
||||||
import: "import"
|
import: "import"
|
||||||
misc: "misc"
|
misc: "misc"
|
||||||
modify_settings: "apply"
|
modify_settings: "apply"
|
||||||
piwik_host: Host of your website in Piwik (without http:// ou https://)
|
piwik_host: Host of your website in Piwik (without http:// or https://)
|
||||||
piwik_site_id: ID of your website in Piwik
|
piwik_site_id: ID of your website in Piwik
|
||||||
piwik_enabled: Enable Piwik
|
piwik_enabled: Enable Piwik
|
||||||
demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)"
|
demo_mode_enabled: "Enable demo mode? (Only used for the public wallabag demo)"
|
||||||
demo_mode_username: "Demo user"
|
demo_mode_username: "Demo user"
|
||||||
share_public: Allow public url for entries
|
share_public: Allow public URL for entries
|
||||||
download_images_enabled: Download images locally
|
download_images_enabled: Download images locally
|
||||||
restricted_access: Enable authentication for websites with paywall
|
restricted_access: Enable authentication for paywalled websites
|
||||||
|
api_user_registration: Enable user to be registered using the API
|
||||||
|
store_article_headers: Enable if wallabag stores HTTP headers for each article
|
||||||
|
shaarli_share_origin_url: Enable sharing origin url to Shaarli, if the service is enabled
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
# settings_changed: Configuration updated
|
settings_changed: Configuración actualizada
|
||||||
download_pictures: Descargar imágenes
|
download_pictures: Descargar imágenes en el servidor
|
||||||
carrot: Activar compartir con Carrot
|
carrot: Activar compartir con Carrot
|
||||||
diaspora_url: Diaspora URL, si el servicio está activado
|
diaspora_url: URL de Diaspora, si el servicio está activado
|
||||||
export_epub: Activar exportación a ePub
|
export_epub: Activar exportación a ePub
|
||||||
export_mobi: Activar exportación a .mobi
|
export_mobi: Activar exportación a .mobi
|
||||||
export_pdf: Activar exportación a PDF
|
export_pdf: Activar exportación a PDF
|
||||||
@ -9,27 +9,32 @@ export_csv: Activar exportación a CSV
|
|||||||
export_json: Activar exportación a JSON
|
export_json: Activar exportación a JSON
|
||||||
export_txt: Activar exportación a TXT
|
export_txt: Activar exportación a TXT
|
||||||
export_xml: Activar exportación a XML
|
export_xml: Activar exportación a XML
|
||||||
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
|
import_with_rabbitmq: Activar RabbitMQ para importar datos de forma asíncrona
|
||||||
# import_with_redis: Enable Redis to import data asynchronously
|
import_with_redis: Activar Redis para importar datos de forma asíncrona
|
||||||
shaarli_url: Shaarli URL, si el servicio está activado
|
shaarli_url: URL de Shaarli, si el servicio está activado
|
||||||
|
scuttle_url: URL de Scuttle, si el servicio está activado
|
||||||
|
unmark_url: URL de Unmark, si el servicio está activado
|
||||||
share_diaspora: Activar compartir con Diaspora
|
share_diaspora: Activar compartir con Diaspora
|
||||||
share_mail: Activar compartir con email
|
share_mail: Activar compartir con Email
|
||||||
share_shaarli: Activar compartir con Shaarli
|
share_shaarli: Activar compartir con Shaarli
|
||||||
|
share_scuttle: Activar compartir con Scuttle
|
||||||
share_twitter: Activar compartir con Twitter
|
share_twitter: Activar compartir con Twitter
|
||||||
share_unmark: Activar compartir con Unmark.it
|
share_unmark: Activar compartir con Unmark.it
|
||||||
show_printlink: Mostrar un enlace para imprimir contenido
|
show_printlink: Mostrar un enlace para imprimir contenido
|
||||||
wallabag_support_url: URL de soporte de wallabag
|
wallabag_support_url: URL de soporte de wallabag
|
||||||
wallabag_url: URL de *tu* instancia de wallabag
|
|
||||||
entry: "artículo"
|
entry: "artículo"
|
||||||
export: "exportar"
|
export: "exportar"
|
||||||
import: "importar"
|
import: "importar"
|
||||||
misc: "misc"
|
misc: "misc"
|
||||||
modify_settings: "modificar configuración"
|
modify_settings: "guardar"
|
||||||
piwik_host: Host de tu website de Piwik (sin http:// o https://)
|
piwik_host: Host de tu website en Piwik (sin http:// o https://)
|
||||||
piwik_site_id: ID de tu website de Piwik
|
piwik_site_id: ID de tu website en Piwik
|
||||||
piwik_enabled: Activar Piwik
|
piwik_enabled: Activar Piwik
|
||||||
demo_mode_enabled: "Activar modo demo (sólo usado para la demo de wallabag)"
|
demo_mode_enabled: "Activar modo demo (sólo usado en la demo pública de wallabag)"
|
||||||
demo_mode_username: "Nombre de usuario demo"
|
demo_mode_username: "Nombre de usuario demo"
|
||||||
# share_public: Allow public url for entries
|
share_public: Permitir URL pública para los artículos
|
||||||
# download_images_enabled: Download images locally
|
download_images_enabled: Descargar imágenes localmente
|
||||||
# restricted_access: Enable authentication for websites with paywall
|
restricted_access: Activar autenticación para websites con paywall
|
||||||
|
# api_user_registration: Enable user to be registered using the API
|
||||||
|
# store_article_headers: Enable if wallabag stores HTTP headers for each article
|
||||||
|
# shaarli_share_origin_url: Enable sharing origin url to Shaarli, if the service is enabled
|
||||||
|
|||||||
@ -12,14 +12,16 @@ export_xml: فعالسازی برونسپاری به XML
|
|||||||
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
|
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
|
||||||
# import_with_redis: Enable Redis to import data asynchronously
|
# import_with_redis: Enable Redis to import data asynchronously
|
||||||
shaarli_url: نشانی Shaarli، اگر فعال بود
|
shaarli_url: نشانی Shaarli، اگر فعال بود
|
||||||
|
scuttle_url: نشانی Scuttle، اگر فعال بود
|
||||||
|
unmark_url: نشانی Unmark، اگر فعال بود
|
||||||
share_diaspora: فعالسازی همرسانی به Diaspora
|
share_diaspora: فعالسازی همرسانی به Diaspora
|
||||||
share_mail: فعالسازی همرسانی با ایمیل
|
share_mail: فعالسازی همرسانی با ایمیل
|
||||||
share_shaarli: فعالسازی همرسانی به Shaarli
|
share_shaarli: فعالسازی همرسانی به Shaarli
|
||||||
|
share_scuttle: فعالسازی همرسانی به Scuttle
|
||||||
share_twitter: فعالسازی همرسانی به Twitter
|
share_twitter: فعالسازی همرسانی به Twitter
|
||||||
share_unmark: فعالسازی همرسانی به Unmark.it
|
share_unmark: فعالسازی همرسانی به Unmark.it
|
||||||
show_printlink: نمایش پیوندی برای چاپ مطلب
|
show_printlink: نمایش پیوندی برای چاپ مطلب
|
||||||
wallabag_support_url: نشانی صفحهٔ پشتیبانی wallabag
|
wallabag_support_url: نشانی صفحهٔ پشتیبانی wallabag
|
||||||
wallabag_url: نشانی صفحهٔ wallabag *شما*
|
|
||||||
entry: "مقاله"
|
entry: "مقاله"
|
||||||
export: "برونسپاری"
|
export: "برونسپاری"
|
||||||
import: "درونریزی"
|
import: "درونریزی"
|
||||||
@ -33,3 +35,6 @@ modify_settings: "اعمال"
|
|||||||
# share_public: Allow public url for entries
|
# share_public: Allow public url for entries
|
||||||
# download_images_enabled: Download images locally
|
# download_images_enabled: Download images locally
|
||||||
# restricted_access: Enable authentication for websites with paywall
|
# restricted_access: Enable authentication for websites with paywall
|
||||||
|
# api_user_registration: Enable user to be registered using the API
|
||||||
|
# store_article_headers: Enable if wallabag stores HTTP headers for each article
|
||||||
|
# shaarli_share_origin_url: Enable sharing origin url to Shaarli, if the service is enabled
|
||||||
|
|||||||
@ -12,14 +12,16 @@ export_xml: Activer l'export XML
|
|||||||
import_with_rabbitmq: Activer RabbitMQ pour gérer les imports de façon asynchrone
|
import_with_rabbitmq: Activer RabbitMQ pour gérer les imports de façon asynchrone
|
||||||
import_with_redis: Activer Redis pour gérer les imports de façon asynchrone
|
import_with_redis: Activer Redis pour gérer les imports de façon asynchrone
|
||||||
shaarli_url: URL de Shaarli, si le service Shaarli est activé
|
shaarli_url: URL de Shaarli, si le service Shaarli est activé
|
||||||
|
scuttle_url: URL de Scuttle, si le service Scuttle est activé
|
||||||
|
unmark_url: URL de Unmark, si le service Unmark est activé
|
||||||
share_diaspora: Activer le partage vers Diaspora
|
share_diaspora: Activer le partage vers Diaspora
|
||||||
share_mail: Activer le partage par email
|
share_mail: Activer le partage par email
|
||||||
share_shaarli: Activer le partage vers Shaarli
|
share_shaarli: Activer le partage vers Shaarli
|
||||||
|
share_scuttle: Activer le partage vers Scuttle
|
||||||
share_twitter: Activer le partage vers Twitter
|
share_twitter: Activer le partage vers Twitter
|
||||||
share_unmark: Activer le partage vers Unmark.it
|
share_unmark: Activer le partage vers Unmark.it
|
||||||
show_printlink: Afficher un lien pour imprimer
|
show_printlink: Afficher un lien pour imprimer
|
||||||
wallabag_support_url: URL de support de wallabag
|
wallabag_support_url: URL de support de wallabag
|
||||||
wallabag_url: URL de *votre* instance de wallabag
|
|
||||||
entry: "article"
|
entry: "article"
|
||||||
export: "export"
|
export: "export"
|
||||||
import: "import"
|
import: "import"
|
||||||
@ -33,3 +35,6 @@ demo_mode_username: "Utilisateur de la démo"
|
|||||||
share_public: Autoriser une URL publique pour les articles
|
share_public: Autoriser une URL publique pour les articles
|
||||||
download_images_enabled: Télécharger les images en local
|
download_images_enabled: Télécharger les images en local
|
||||||
restricted_access: Activer l'authentification pour les articles derrière un paywall
|
restricted_access: Activer l'authentification pour les articles derrière un paywall
|
||||||
|
api_user_registration: Activer la création de compte depuis l'API
|
||||||
|
store_article_headers: Activer le stockage des en-têtes HTTP de chaque article
|
||||||
|
shaarli_share_origin_url: Activer le partage de l'adresse d'origine vers Shaarli, si le service est activé
|
||||||
|
|||||||
@ -12,14 +12,16 @@ export_xml: Abilita esportazione XML
|
|||||||
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
|
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
|
||||||
# import_with_redis: Enable Redis to import data asynchronously
|
# import_with_redis: Enable Redis to import data asynchronously
|
||||||
shaarli_url: Shaarli URL, se il servizio è abilitato
|
shaarli_url: Shaarli URL, se il servizio è abilitato
|
||||||
|
scuttle_url: Scuttle URL, se il servizio è abilitato
|
||||||
|
unmark_url: Unmark URL, se il servizio è abilitato
|
||||||
share_diaspora: Abilita la condivisione con Diaspora
|
share_diaspora: Abilita la condivisione con Diaspora
|
||||||
share_mail: Abilita la condivisione per email
|
share_mail: Abilita la condivisione per email
|
||||||
share_shaarli: Abilita la condivisione con Shaarli
|
share_shaarli: Abilita la condivisione con Shaarli
|
||||||
|
share_scuttle: Abilita la condivisione con Scuttle
|
||||||
share_twitter: Abilita la condivisione con Twitter
|
share_twitter: Abilita la condivisione con Twitter
|
||||||
share_unmark: Abilita la condivisione con Unmark.it
|
share_unmark: Abilita la condivisione con Unmark.it
|
||||||
show_printlink: Mostra un collegamento per stampare il contenuto
|
show_printlink: Mostra un collegamento per stampare il contenuto
|
||||||
wallabag_support_url: URL di supporto per wallabag
|
wallabag_support_url: URL di supporto per wallabag
|
||||||
wallabag_url: URL della *tua* installazione di wallabag
|
|
||||||
entry: "contenuto"
|
entry: "contenuto"
|
||||||
export: "esporta"
|
export: "esporta"
|
||||||
import: "importa"
|
import: "importa"
|
||||||
@ -33,3 +35,6 @@ demo_mode_username: "Utente Demo"
|
|||||||
# share_public: Allow public url for entries
|
# share_public: Allow public url for entries
|
||||||
# download_images_enabled: Download images locally
|
# download_images_enabled: Download images locally
|
||||||
# restricted_access: Enable authentication for websites with paywall
|
# restricted_access: Enable authentication for websites with paywall
|
||||||
|
api_user_registration: Abilita la registrazione dell'utente attraverso l'API
|
||||||
|
# store_article_headers: Enable if wallabag stores HTTP headers for each article
|
||||||
|
# shaarli_share_origin_url: Enable sharing origin url to Shaarli, if the service is enabled
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# settings_changed: Configuration updated
|
settings_changed: Configuracion mesa a jorn
|
||||||
download_pictures: Telecargar los imatges sul servidor
|
download_pictures: Telecargar los imatges sul servidor
|
||||||
carrot: Activar lo partatge cap a Carrot
|
carrot: Activar lo partatge cap a Carrot
|
||||||
diaspora_url: URL de Diaspora, se lo servici Diaspora es activat
|
diaspora_url: URL de Diaspora, se lo servici Diaspora es activat
|
||||||
@ -9,17 +9,19 @@ export_csv: Activar l'expòrt CSV
|
|||||||
export_json: Activar l'expòrt JSON
|
export_json: Activar l'expòrt JSON
|
||||||
export_txt: Activar l'expòrt TXT
|
export_txt: Activar l'expòrt TXT
|
||||||
export_xml: Activar l'expòrt XML
|
export_xml: Activar l'expòrt XML
|
||||||
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
|
import_with_rabbitmq: Activar RabbitMQ per importar de donadas de manièra asincròna
|
||||||
# import_with_redis: Enable Redis to import data asynchronously
|
import_with_redis: Activar Redis per importar de donadas de manièra asincròna
|
||||||
shaarli_url: URL de Shaarli, se lo servici Shaarli es activat
|
shaarli_url: URL de Shaarli, se lo servici Shaarli es activat
|
||||||
share_diaspora: Activar lo partatge cap a Diaspora
|
scuttle_url: URL de Scuttle, se lo servici Scuttle es activat
|
||||||
|
unmark_url: URL de Unmark, se lo servici Scuttle es activat
|
||||||
|
share_diaspora: Activar lo partatge cap a Diaspora*
|
||||||
share_mail: Activar lo partatge per corrièl
|
share_mail: Activar lo partatge per corrièl
|
||||||
share_shaarli: Activar lo partatge cap a Shaarli
|
share_shaarli: Activar lo partatge cap a Shaarli
|
||||||
|
share_scuttle: Activar lo partatge cap a Scuttle
|
||||||
share_twitter: Activar lo partatge cap a Twitter
|
share_twitter: Activar lo partatge cap a Twitter
|
||||||
share_unmark: Activar lo partatge cap a Unmark.it
|
share_unmark: Activar lo partatge cap a Unmark.it
|
||||||
show_printlink: Afichar un ligam per imprimir
|
show_printlink: Afichar un ligam per imprimir
|
||||||
wallabag_support_url: URL d'assisténcia de wallabag
|
wallabag_support_url: URL d'assisténcia de wallabag
|
||||||
wallabag_url: URL de *vòstra* instància de wallabag
|
|
||||||
entry: "article"
|
entry: "article"
|
||||||
export: "expòrt"
|
export: "expòrt"
|
||||||
import: "impòrt"
|
import: "impòrt"
|
||||||
@ -30,6 +32,9 @@ piwik_site_id: ID de vòstre site dins Piwik
|
|||||||
piwik_enabled: Activar Piwik
|
piwik_enabled: Activar Piwik
|
||||||
demo_mode_enabled: "Activar lo mode demostracion ? (utilizar solament per la demostracion publica de wallabag)"
|
demo_mode_enabled: "Activar lo mode demostracion ? (utilizar solament per la demostracion publica de wallabag)"
|
||||||
demo_mode_username: "Utilizaire de la demostracion"
|
demo_mode_username: "Utilizaire de la demostracion"
|
||||||
# share_public: Allow public url for entries
|
share_public: Autorizar una URL publica pels articles
|
||||||
# download_images_enabled: Download images locally
|
download_images_enabled: Telecargar los imatges en local
|
||||||
# restricted_access: Enable authentication for websites with paywall
|
restricted_access: Activar l'autenticacion pels sites amb peatge
|
||||||
|
api_user_registration: Autorizar los utilizaires a se marcar amb l'API
|
||||||
|
store_article_headers: Activar se wallabag garda las entèstas HTTP per cada article
|
||||||
|
shaarli_share_origin_url: Activar lo partatge de l’url amb Shaarli, se lo servici es activat
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# settings_changed: Configuration updated
|
settings_changed: Konfiguracja zaktualizowana
|
||||||
download_pictures: Pobierz obrazy na swój serwer
|
download_pictures: Pobierz obrazy na swój serwer
|
||||||
carrot: Włącz udostępnianie dla Carrot
|
carrot: Włącz udostępnianie dla Carrot
|
||||||
diaspora_url: Adres URL Diaspora, jeżeli usługa jest włączona
|
diaspora_url: Adres URL Diaspora, jeżeli usługa jest włączona
|
||||||
@ -12,24 +12,28 @@ export_xml: Włącz eksport do XML
|
|||||||
import_with_rabbitmq: Włącz RabbitMQ dla asynchronicznego importu danych
|
import_with_rabbitmq: Włącz RabbitMQ dla asynchronicznego importu danych
|
||||||
import_with_redis: Włącz Redis dla asynchronicznego importu danych
|
import_with_redis: Włącz Redis dla asynchronicznego importu danych
|
||||||
shaarli_url: Adress URL Shaarli, jeżeli usługa jest włączona
|
shaarli_url: Adress URL Shaarli, jeżeli usługa jest włączona
|
||||||
|
scuttle_url: Adress URL Scuttle, jeżeli usługa jest włączona
|
||||||
share_diaspora: Włącz udostępnianie dla Diaspora
|
share_diaspora: Włącz udostępnianie dla Diaspora
|
||||||
share_mail: Włącz udostępnianie przez email
|
share_mail: Włącz udostępnianie przez email
|
||||||
share_shaarli: Włącz udostępnianie dla Shaarli
|
share_shaarli: Włącz udostępnianie dla Shaarli
|
||||||
|
share_scuttle: Włącz udostępnianie dla Scuttle
|
||||||
share_twitter: Włącz udostępnianie dla Twitter
|
share_twitter: Włącz udostępnianie dla Twitter
|
||||||
share_unmark: Włącz udostępnianie dla Unmark.it
|
share_unmark: Włącz udostępnianie dla Unmark.it
|
||||||
show_printlink: Pokaż link do wydrukowania zawartości
|
show_printlink: Pokaż link do wydrukowania zawartości
|
||||||
wallabag_support_url: Adres URL wsparcia dla wallabag
|
wallabag_support_url: Adres URL wsparcia dla wallabag
|
||||||
wallabag_url: Adres *twojej* instacji wallabag
|
|
||||||
entry: "artykuł"
|
entry: "artykuł"
|
||||||
export: "eksport"
|
export: "eksport"
|
||||||
import: "import"
|
import: "import"
|
||||||
misc: "różne"
|
misc: "różne"
|
||||||
modify_settings: "zatwierdz"
|
modify_settings: "zatwierdź"
|
||||||
piwik_host: Host twojej strony Piwik (bez http:// lub https://)
|
piwik_host: Host twojej strony Piwik (bez http:// lub https://)
|
||||||
piwik_site_id: ID twojej strony Piwik
|
piwik_site_id: ID twojej strony Piwik
|
||||||
piwik_enabled: Włacz Piwik
|
piwik_enabled: Włacz Piwik
|
||||||
demo_mode_enabled: "Włacz tryb demo? (używany wyłącznie dla publicznej demonstracji Wallabag)"
|
demo_mode_enabled: "Włacz tryb demo? (używany wyłącznie dla publicznej demonstracji Wallabag)"
|
||||||
demo_mode_username: "Użytkownik Demonstracyjny"
|
demo_mode_username: "Użytkownik Demonstracyjny"
|
||||||
share_public: Zezwalaj na publiczny adres url dla wpisow
|
share_public: Zezwalaj na publiczny adres url dla wpisow
|
||||||
# download_images_enabled: Download images locally
|
download_images_enabled: Pobierz obrazy lokalnie
|
||||||
# restricted_access: Enable authentication for websites with paywall
|
restricted_access: Włącz autoryzację dla stron z paywallem
|
||||||
|
api_user_registration: Włącz rejestrację użytkownika przy użyciu API
|
||||||
|
# store_article_headers: Enable if wallabag stores HTTP headers for each article
|
||||||
|
# shaarli_share_origin_url: Enable sharing origin url to Shaarli, if the service is enabled
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
# settings_changed: Configuration updated
|
# settings_changed: Configuration updated
|
||||||
download_pictures: Download imagens no seu servidor
|
download_pictures: Download imagens no seu servidor
|
||||||
carrot: Habilitar compartilhamento para o Carrot
|
carrot: Habilitar compartilhamento para o Carrot
|
||||||
diaspora_url: URL Diaspora, se o serviço está habilitado
|
diaspora_url: URL Diaspora caso o serviço esteja habilitado
|
||||||
export_epub: Habilita exportação para ePub
|
export_epub: Habilita exportação para ePub
|
||||||
export_mobi: Habilita exportação para .mobi
|
export_mobi: Habilita exportação para .mobi
|
||||||
export_pdf: Habilita exportação para PDF
|
export_pdf: Habilita exportação para PDF
|
||||||
@ -11,15 +11,18 @@ export_txt: Habilita exportação para TXT
|
|||||||
export_xml: Habilita exportação para XML
|
export_xml: Habilita exportação para XML
|
||||||
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
|
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
|
||||||
# import_with_redis: Enable Redis to import data asynchronously
|
# import_with_redis: Enable Redis to import data asynchronously
|
||||||
shaarli_url: URL Shaarli, se o serviço está habilitado
|
shaarli_url: URL Shaarli caso o serviço esteja habilitado
|
||||||
|
scuttle_url: URL Scuttle caso o serviço esteja habilitado
|
||||||
|
unmark_url: URL Unmark caso o serviço esteja habilitado
|
||||||
|
pocket_consumer_key: Chave de consumidor do Pocket para importar conteúdo (https://getpocket.com/developer/docs/authentication)
|
||||||
share_diaspora: Habilitar compartilhamento para o Diaspora
|
share_diaspora: Habilitar compartilhamento para o Diaspora
|
||||||
share_mail: Habilitar compartilhamento por e-mail
|
share_mail: Habilitar compartilhamento por e-mail
|
||||||
share_shaarli: Habilitar compartilhamento para o Shaarli
|
share_shaarli: Habilitar compartilhamento para o Shaarli
|
||||||
|
share_scuttle: Habilitar compartilhamento para o Scuttle
|
||||||
share_twitter: Habilitar compartilhamento para o Twitter
|
share_twitter: Habilitar compartilhamento para o Twitter
|
||||||
share_unmark: Habilitar compartilhamento para o Unmark.it
|
share_unmark: Habilitar compartilhamento para o Unmark.it
|
||||||
show_printlink: Mostrar um link para imprimir o conteúdo
|
show_printlink: Mostrar um link para imprimir o conteúdo
|
||||||
wallabag_support_url: URL de Suporte do wallabag
|
wallabag_support_url: URL de Suporte do wallabag
|
||||||
wallabag_url: URL de *sua* instância do wallabag
|
|
||||||
entry: "artigo"
|
entry: "artigo"
|
||||||
export: "exportar"
|
export: "exportar"
|
||||||
import: "importar"
|
import: "importar"
|
||||||
@ -33,3 +36,6 @@ demo_mode_username: "Usuário demo"
|
|||||||
# share_public: Allow public url for entries
|
# share_public: Allow public url for entries
|
||||||
# download_images_enabled: Download images locally
|
# download_images_enabled: Download images locally
|
||||||
# restricted_access: Enable authentication for websites with paywall
|
# restricted_access: Enable authentication for websites with paywall
|
||||||
|
# api_user_registration: Enable user to be registered using the API
|
||||||
|
# store_article_headers: Enable if wallabag stores HTTP headers for each article
|
||||||
|
# shaarli_share_origin_url: Enable sharing origin url to Shaarli, if the service is enabled
|
||||||
|
|||||||
@ -12,14 +12,16 @@ export_xml: Permite exportare XML
|
|||||||
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
|
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
|
||||||
# import_with_redis: Enable Redis to import data asynchronously
|
# import_with_redis: Enable Redis to import data asynchronously
|
||||||
shaarli_url: Shaarli URL, dacă serviciul este permis
|
shaarli_url: Shaarli URL, dacă serviciul este permis
|
||||||
|
scuttle_url: Scuttle URL, dacă serviciul este permis
|
||||||
|
unmark_url: Unmark URL, dacă serviciul este permis
|
||||||
share_diaspora: Permite share către Diaspora
|
share_diaspora: Permite share către Diaspora
|
||||||
share_mail: Permite share prin email
|
share_mail: Permite share prin email
|
||||||
share_shaarli: Permite share către Shaarli
|
share_shaarli: Permite share către Shaarli
|
||||||
|
share_scuttle: Permite share către Scuttle
|
||||||
share_twitter: Permite share către Twitter
|
share_twitter: Permite share către Twitter
|
||||||
share_unmark: Permite share către Unmark.it
|
share_unmark: Permite share către Unmark.it
|
||||||
show_printlink: Afișează un link pentru a printa content-ul
|
show_printlink: Afișează un link pentru a printa content-ul
|
||||||
wallabag_support_url: URL-ul de suport pentru wallabag
|
wallabag_support_url: URL-ul de suport pentru wallabag
|
||||||
wallabag_url: URL-ul instanței tale wallabag
|
|
||||||
entry: "alticol"
|
entry: "alticol"
|
||||||
export: "exportă"
|
export: "exportă"
|
||||||
import: "importă"
|
import: "importă"
|
||||||
@ -33,3 +35,6 @@ modify_settings: "aplică"
|
|||||||
# share_public: Allow public url for entries
|
# share_public: Allow public url for entries
|
||||||
# download_images_enabled: Download images locally
|
# download_images_enabled: Download images locally
|
||||||
# restricted_access: Enable authentication for websites with paywall
|
# restricted_access: Enable authentication for websites with paywall
|
||||||
|
# api_user_registration: Enable user to be registered using the API
|
||||||
|
# store_article_headers: Enable if wallabag stores HTTP headers for each article
|
||||||
|
# shaarli_share_origin_url: Enable sharing origin url to Shaarli, if the service is enabled
|
||||||
|
|||||||
@ -0,0 +1,40 @@
|
|||||||
|
settings_changed: "Настройки обновлены"
|
||||||
|
download_pictures: "Скачивать картинки на Ваш сервер"
|
||||||
|
carrot: "Включить возможность отслеживания событий через Carrot"
|
||||||
|
diaspora_url: "Diaspora URL, если сервис включен"
|
||||||
|
export_epub: "Включить ePub экспорт"
|
||||||
|
export_mobi: "Включить .mobi экспорт"
|
||||||
|
export_pdf: "Включить PDF экспорт"
|
||||||
|
export_csv: "Включить CSV экспорт"
|
||||||
|
export_json: "Включить JSON экспорт"
|
||||||
|
export_txt: "Включить TXT экспорт"
|
||||||
|
export_xml: "Включить XML экспорт"
|
||||||
|
import_with_rabbitmq: "Включить RabbitMQ для импорта данных(асинхронно)"
|
||||||
|
import_with_redis: "Включить Redis для импорта данных(асинхронно)"
|
||||||
|
shaarli_url: "Shaarli URL, если сервис включен"
|
||||||
|
scuttle_url: "Scuttle URL, если сервис включен"
|
||||||
|
unmark_url: "Unmark URL, если сервис включен"
|
||||||
|
share_diaspora: "Включить возможность поделиться в соц.сети Diaspora"
|
||||||
|
share_mail: "Включить возможность поделиться по email"
|
||||||
|
share_shaarli: "Включить возможность поделиться в Shaarli"
|
||||||
|
share_twitter: "Включить возможность поделиться в Twitter"
|
||||||
|
share_unmark: "Включить возможность поделиться в Unmark.it"
|
||||||
|
show_printlink: "Отображать ссылки в версии для печати"
|
||||||
|
wallabag_support_url: "Поддержка URL для wallabag"
|
||||||
|
wallabag_url: "URL *вашего* wallabag сервиса"
|
||||||
|
entry: "запись"
|
||||||
|
export: "экспорт"
|
||||||
|
import: "импорт"
|
||||||
|
misc: "разное"
|
||||||
|
modify_settings: "применить"
|
||||||
|
piwik_host: "Ссылка на Ваш сайт на Piwik (с http:// или https://)"
|
||||||
|
piwik_site_id: "ID Вашего сайта на Piwik"
|
||||||
|
piwik_enabled: "Включить Piwik"
|
||||||
|
demo_mode_enabled: "Включить демо режим ? (только для публичной демонстрации wallabag)"
|
||||||
|
demo_mode_username: "Демо пользователь"
|
||||||
|
share_public: "Разрешить публичные ссылки на записи"
|
||||||
|
download_images_enabled: "Скачивать изображения локально"
|
||||||
|
restricted_access: "Включить авторизацию на сайте с помощью paywall"
|
||||||
|
# api_user_registration: Enable user to be registered using the API
|
||||||
|
# store_article_headers: Enable if wallabag stores HTTP headers for each article
|
||||||
|
# shaarli_share_origin_url: Enable sharing origin url to Shaarli, if the service is enabled
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
settings_changed: ปรับปรุงองค์ประกอบ
|
||||||
|
download_pictures: ดาวน์โหลดรูปภาพผ่านเซิฟเวอร์ของคุณ
|
||||||
|
carrot: เปิดการแชร์ Carrot
|
||||||
|
diaspora_url: Diaspora-URL, ถ้าเซิฟเวอร์ถูกเปิดใช้งาน
|
||||||
|
export_epub: เปิดใช้งานการนำเข้าข้อมูลแบบ ePub
|
||||||
|
export_mobi: เปิดใช้งานการนำเข้าข้อมูลแบบ .mobi
|
||||||
|
export_pdf: เปิดใช้งานการนำเข้าข้อมูลแบบ PDF
|
||||||
|
export_csv: เปิดใช้งานการนำเข้าข้อมูลแบบ CSV
|
||||||
|
export_json: เปิดใช้งานการนำเข้าข้อมูลแบบ JSON
|
||||||
|
export_txt: เปิดใช้งานการนำเข้าข้อมูลแบบ TXT
|
||||||
|
export_xml: เปิดใช้งานการนำเข้าข้อมูลแบบ XML
|
||||||
|
import_with_rabbitmq: เปิดใช้งาน RabbitMQ เพื่อดึงข้อมูลแบบ asynchronous
|
||||||
|
import_with_redis: เปิดใช้งาน Redis เพื่อดึงข้อมูลแบบ asynchronous
|
||||||
|
shaarli_url: Shaarli-URL, ถ้าเซิฟเวอร์ถูกเปิดใช้งาน
|
||||||
|
share_diaspora: เปิดการแชร์ Diaspora
|
||||||
|
share_mail: เปิดการแชร์ผ่าน email
|
||||||
|
share_shaarli: เปิดการแชร์ Shaarli
|
||||||
|
share_scuttle: เปิดการแชร์ Scuttle
|
||||||
|
share_twitter: เปิดการแชร์ Twitter
|
||||||
|
share_unmark: เปิดการแชร์ Unmark.it
|
||||||
|
show_printlink: แสดงลิงค์เพื่อปรินท์เนื้อหา
|
||||||
|
wallabag_support_url: URL ที่สนับสนุนจาก wallabag
|
||||||
|
entry: "บทความ"
|
||||||
|
export: "นำข้อมูลออก"
|
||||||
|
import: "นำเข้าข้อมูล"
|
||||||
|
misc: "เบ็ดเตล็ด"
|
||||||
|
modify_settings: "ปรับใช้"
|
||||||
|
piwik_host: โฮสบนเว็บไซต์ของคุณใน Piwik (ยกเว้น http:// หรือ https://)
|
||||||
|
piwik_site_id: ไอดีบนเว็บไซต์ของคุณใน Piwik
|
||||||
|
piwik_enabled: เปิดการใช้ Piwik
|
||||||
|
demo_mode_enabled: "เปิดการใช้งานโหมดเดโม ? (เฉพาะการใช้สำหรับเดโมสาธารณะของ wallabag)"
|
||||||
|
demo_mode_username: "ผู้ใช้ส่วนเดโม"
|
||||||
|
share_public: ยอมรับ URL สาธารณะจากการเข้าถึงข้อมูล
|
||||||
|
download_images_enabled: ดาวน์โหลดรูปภาพเฉพาะ
|
||||||
|
restricted_access: เปิดใช้งานการรองรับบนเว็บไซต์กับ paywall
|
||||||
|
api_user_registration: เปิดใช้งานให้ผู้ใช้ลงทะเบียนการใช้ API
|
||||||
|
# shaarli_share_origin_url: Enable sharing origin url to Shaarli, if the service is enabled
|
||||||
@ -12,9 +12,12 @@
|
|||||||
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
|
# import_with_rabbitmq: Enable RabbitMQ to import data asynchronously
|
||||||
# import_with_redis: Enable Redis to import data asynchronously
|
# import_with_redis: Enable Redis to import data asynchronously
|
||||||
# shaarli_url: Shaarli URL, if the service is enabled
|
# shaarli_url: Shaarli URL, if the service is enabled
|
||||||
|
# scuttle_url: Scuttle URL, if the service is enabled
|
||||||
|
# unmark_url: Unmark URL, if the service is enabled
|
||||||
# share_diaspora: Enable share to Diaspora
|
# share_diaspora: Enable share to Diaspora
|
||||||
# share_mail: Enable share by email
|
# share_mail: Enable share by email
|
||||||
# share_shaarli: Enable share to Shaarli
|
# share_shaarli: Enable share to Shaarli
|
||||||
|
# share_scuttle: Enable share to Scuttle
|
||||||
# share_twitter: Enable share to Twitter
|
# share_twitter: Enable share to Twitter
|
||||||
# share_unmark: Enable share to Unmark.it
|
# share_unmark: Enable share to Unmark.it
|
||||||
# show_printlink: Display a link to print content
|
# show_printlink: Display a link to print content
|
||||||
@ -33,3 +36,6 @@
|
|||||||
# share_public: Allow public url for entries
|
# share_public: Allow public url for entries
|
||||||
# download_images_enabled: Download images locally
|
# download_images_enabled: Download images locally
|
||||||
# restricted_access: Enable authentication for websites with paywall
|
# restricted_access: Enable authentication for websites with paywall
|
||||||
|
# api_user_registration: Enable user to be registered using the API
|
||||||
|
# store_article_headers: Enable if wallabag stores HTTP headers for each article
|
||||||
|
# shaarli_share_origin_url: Enable sharing origin url to Shaarli, if the service is enabled
|
||||||
|
|||||||
@ -20,11 +20,9 @@
|
|||||||
|
|
||||||
{% for section in sections | craue_sortSections %}
|
{% for section in sections | craue_sortSections %}
|
||||||
<div id="set-{{ section }}" class="col s12">
|
<div id="set-{{ section }}" class="col s12">
|
||||||
{% for setting in form.settings if setting.section.vars.value == section %}
|
{% for setting in form.settings if setting.vars.value.section == section %}
|
||||||
{{ form_row(setting.name) }}
|
|
||||||
{{ form_row(setting.section) }}
|
|
||||||
{{ form_row(setting.value, {
|
{{ form_row(setting.value, {
|
||||||
'label': setting.name.vars.value | trans({}, 'CraueConfigBundle'),
|
'label': setting.vars.value.name | trans({}, 'CraueConfigBundle'),
|
||||||
}) }}
|
}) }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
@ -35,8 +33,7 @@
|
|||||||
{{ 'modify_settings' | trans({}, 'CraueConfigBundle') }}
|
{{ 'modify_settings' | trans({}, 'CraueConfigBundle') }}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
{{ form_rest(form) }}
|
{{ form_widget(form._token) }}
|
||||||
{{ form_end(form) }}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
13
app/Resources/static/themes/_global/global.scss
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
/* Rules for sizing the icon. */
|
||||||
|
.material-icons.md-18 { font-size: 18px; }
|
||||||
|
.material-icons.md-24 { font-size: 24px; }
|
||||||
|
.material-icons.md-36 { font-size: 36px; }
|
||||||
|
.material-icons.md-48 { font-size: 48px; }
|
||||||
|
|
||||||
|
/* Rules for using icons as black on a light background. */
|
||||||
|
.material-icons.md-dark { color: rgba(0, 0, 0, 0.54); }
|
||||||
|
.material-icons.md-dark.md-inactive { color: rgba(0, 0, 0, 0.26); }
|
||||||
|
|
||||||
|
/* Rules for using icons as white on a dark background. */
|
||||||
|
.material-icons.md-light { color: rgba(255, 255, 255, 1); }
|
||||||
|
.material-icons.md-light.md-inactive { color: rgba(255, 255, 255, 0.3); }
|
||||||
@ -0,0 +1,334 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="800"
|
||||||
|
height="770"
|
||||||
|
id="svg4004"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.4 r9939"
|
||||||
|
sodipodi:docname="New document 11">
|
||||||
|
<defs
|
||||||
|
id="defs4006" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#000"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.7"
|
||||||
|
inkscape:cx="359.23155"
|
||||||
|
inkscape:cy="349.10374"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-width="1631"
|
||||||
|
inkscape:window-height="1026"
|
||||||
|
inkscape:window-x="49"
|
||||||
|
inkscape:window-y="24"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata4009">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(21.42857,-101.6479)">
|
||||||
|
<image
|
||||||
|
y="101.6479"
|
||||||
|
x="-21.42857"
|
||||||
|
id="image4071"
|
||||||
|
xlink:href="data:image/png;base64,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
|
||||||
|
"
|
||||||
|
height="770"
|
||||||
|
width="800" />
|
||||||
|
<path
|
||||||
|
style="fill:#FFF"
|
||||||
|
d="m 482.45517,806.8979 c -21.575,-30.1125 -55.23748,-77.12866 -74.80551,-104.48035 -19.98598,-27.9359 -36.2457,-49.73896 -37.10125,-49.75 -0.87914,-0.0113 -32.32337,42.25713 -74.37706,99.98035 -40.06973,55 -73.18741,100 -73.59485,100 -1.1396,0 -144.46068,-100.94983 -144.829571,-102.01235 -0.178476,-0.51406 32.221521,-48.07611 72.000001,-105.69344 39.77847,-57.61732 72.3245,-105.66675 72.3245,-106.77649 0,-1.78957 -12.89022,-6.31508 -114,-40.0232 -62.7,-20.90302 -114.613999,-38.24519 -115.364443,-38.53815 -1.043816,-0.4075 4.925559,-20.38013 25.402971,-84.99452 14.722078,-46.45402 27.100359,-84.84113 27.507293,-85.3047 0.406933,-0.46357 54.900599,16.97442 121.097029,38.75107 66.19643,21.77666 120.91108,39.59345 121.5881,39.59285 0.67702,-5.9e-4 1.44284,-1.01357 1.70181,-2.25107 0.25898,-1.2375 0.83006,-57.6 1.26906,-125.25 0.439,-67.65 1.16224,-123.5625 1.6072,-124.25 0.63709,-0.98436 19.23178,-1.24675 87.5,-1.23469 47.68004,0.008 87.18776,0.34593 87.79493,0.75 0.76529,0.50931 2.07325,37.70117 4.26357,121.23469 3.5965,137.16189 3.67401,139 5.86123,139 0.84816,0 53.3106,-17.56056 116.58321,-39.02347 63.2726,-21.46291 115.34958,-38.67541 115.72663,-38.25 1.27822,1.44219 53.1745,170.39371 52.53554,171.03267 -0.34901,0.34901 -53.15524,18.43347 -117.34717,40.18769 -88.30357,29.92548 -116.78951,39.96068 -117.02855,41.22754 -0.17651,0.93542 30.19001,46.31568 68.80279,102.8201 38.0153,55.63011 68.97925,101.56053 68.80877,102.06759 -0.39157,1.16463 -142.63129,105.93788 -143.82081,105.93788 -0.48298,0 -18.53042,-24.6375 -40.10542,-54.75 z"
|
||||||
|
id="path4093"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 23 KiB |
BIN
app/Resources/static/themes/_global/img/icons/scuttle.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 3.2 KiB |
1
app/Resources/static/themes/_global/img/logo-square.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"><path fill="none" d="M0 0h200v200H0z"/><path d="M75.899 72.438c1.597-.981 10.207-5.556 24.098.178 14.289 5.897 23.154.776 24.253.079-3.454-5.678-7.562-10.62-12.104-13.943.303-.083.612-.167.939-.263 6.023-1.742 7.553-6.842 7.875-11.21.364-4.954.616-5.03 1.692-9.487 1.032-4.281-.119-5.137-1.181-4.273-.572.465-5.552 1.616-8.505 3.919-4.768 3.72-7.707 10.794-9.039 14.706-.025.06-.205.604-.265.792-.621 1.498-1.857 1.494-1.857 1.494v.001c-.6-.065-1.202-.1-1.809-.1-.54 0-1.079.029-1.616.081-.012.002-.019 0-.031.001-1.581.233-2.45-1.697-2.632-2.157-1.847-5.304-6.816-15.763-17.984-18.577 0 0-2.028-1.554-1.41 1.074.588 2.511 1.804 5.049 1.534 8.741-.124 1.704-1.181 10.442 6.85 14.99.763.432 1.441.795 2.051 1.101-4.042 3.235-7.716 7.74-10.859 12.853zM128.626 152.353c-9.842-6.098-13.153-8.242-12.946-10.575 0 0 .002-.379.099-.957.239-1.236.995-3.348 3.407-4.552.079-.039.146-.084.208-.129 7.668-4.45 13.27-11.614 15.246-20.56-1.99 4.941-16.735 8.78-34.645 8.78-17.903 0-32.651-3.839-34.641-8.78.442 2.008 1.073 3.923 1.864 5.742.666 3.745 1.562 12.563-2.673 20.282-3.731 6.8-22.15 16.069-49.485 10.748 0 0-1.096-.766-1.428-.136-.491.932 1.517 1.685 3.583 2.229 19.031 5.04 47.756 2.989 56.777-4.443 4.116-3.388 5.704-7.953 6.107-12.865l.003.008s.11-1.287 1.719-.32c.461.277 2.125 1.36 2.39 2.585.232 1.743.248 3.883-.652 5.382-1.287 2.144-1.301 2.452.393 3.662 1.04.742 5.287 3.864 11.198 7.415.015.01.023.019.038.027 1.25.753 2.987 2.597 2.987 2.597 2.662 3.079 8.452 9.275 10.972 8.108 1.19-.551-.051-3.032-.051-3.032s1.98 2.571 3.043 1.694c.809-.668-.473-3.229-.473-3.229s1.729 1.499 2.757.944c1.258-.679-.187-4.614-10.079-10.627-9.896-6.018-12.578-6.94-12.814-9.626 0 0-.004-.135.004-.366.077-.593.414-1.847 1.852-1.712 2.141.346 4.348.531 6.608.531 2.587 0 5.107-.237 7.536-.69l.001.003s.127-.025.164-.031c.284-.036.838-.018.84.671-.09.873-.331 1.751-.845 2.519-1.447 2.168-.972 2.466.54 3.859.933.859 5.211 4.622 11.07 8.264.012.009.017.016.031.023 1.249.752 3.41 2.816 3.41 2.816v-.001c2.428 2.466 6.894 6.596 9.327 6.347 1.646-.168.306-3.002.306-3.002s2.078 2.006 3.099 1.416c1.142-.659-.474-2.755-.474-2.755s1.338.708 2.283.473c.948-.236 1.185-2.644-8.656-8.737z"/><path d="M117.631 83.452c-1.181 0-2.161.355-2.912 1.057-.76.71-1.144 1.531-1.144 2.438v16.056c0 2.154-.382 3.742-1.135 4.721-.728.946-1.892 1.406-3.556 1.406-1.703 0-2.863-.457-3.549-1.396-.716-.979-1.078-2.571-1.078-4.731V86.884c0-1.098-.5-1.996-1.448-2.596-1.289-.812-2.57-1.105-4.129-.587-.476.159-.924.366-1.333.615-.435.265-.802.597-1.093.985-.322.432-.486.901-.486 1.396v16.307c0 2.158-.363 3.75-1.079 4.73-.688.939-1.849 1.396-3.548 1.396-1.705 0-2.877-.459-3.584-1.401-.734-.979-1.107-2.57-1.107-4.726V86.947c0-.908-.384-1.728-1.145-2.438-.751-.702-1.751-1.057-2.973-1.057-1.258 0-2.296.352-3.085 1.045-.811.71-1.222 1.535-1.222 2.45v15.806c0 1.988.194 3.869.575 5.588.393 1.758 1.077 3.3 2.035 4.586.968 1.299 2.282 2.323 3.906 3.05 1.607.716 3.617 1.079 5.975 1.079 2.457 0 4.515-.455 6.115-1.354 1.342-.754 2.473-1.744 3.371-2.951.866 1.207 1.971 2.197 3.294 2.95 1.58.899 3.669 1.354 6.211 1.354 2.357 0 4.359-.364 5.947-1.081 1.601-.726 2.902-1.751 3.872-3.048.96-1.29 1.645-2.833 2.034-4.586.381-1.719.575-3.6.575-5.588V86.947c0-.911-.398-1.733-1.184-2.445-.767-.697-1.818-1.05-3.12-1.05z"/></svg>
|
||||||
|
After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 9.2 KiB |
73
app/Resources/static/themes/_global/index.js
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/* jQuery */
|
||||||
|
import $ from 'jquery';
|
||||||
|
|
||||||
|
/* Annotations */
|
||||||
|
import annotator from 'annotator';
|
||||||
|
|
||||||
|
/* Fonts */
|
||||||
|
import 'material-design-icons-iconfont/dist/material-design-icons.css';
|
||||||
|
import 'lato-font/css/lato-font.css';
|
||||||
|
import './global.scss';
|
||||||
|
|
||||||
|
/* Shortcuts */
|
||||||
|
import './js/shortcuts/entry';
|
||||||
|
import './js/shortcuts/main';
|
||||||
|
|
||||||
|
/* Hightlight */
|
||||||
|
import './js/highlight';
|
||||||
|
|
||||||
|
import { savePercent, retrievePercent } from './js/tools';
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Annotations & Remember position
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
$(document).ready(() => {
|
||||||
|
if ($('article').length) {
|
||||||
|
const app = new annotator.App();
|
||||||
|
|
||||||
|
app.include(annotator.ui.main, {
|
||||||
|
element: document.querySelector('article'),
|
||||||
|
});
|
||||||
|
|
||||||
|
const authorization = {
|
||||||
|
permits() { return true; },
|
||||||
|
};
|
||||||
|
app.registry.registerUtility(authorization, 'authorizationPolicy');
|
||||||
|
|
||||||
|
const x = JSON.parse($('#annotationroutes').html());
|
||||||
|
app.include(annotator.storage.http, $.extend({}, x, {
|
||||||
|
onError(msg, xhr) {
|
||||||
|
if (!Object.prototype.hasOwnProperty.call(xhr, 'responseJSON')) {
|
||||||
|
annotator.notification.banner('An error occurred', 'error');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$.each(xhr.responseJSON.children, (k, v) => {
|
||||||
|
if (v.errors) {
|
||||||
|
$.each(v.errors, (n, errorText) => {
|
||||||
|
annotator.notification.banner(errorText, 'error');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
|
app.start().then(() => {
|
||||||
|
app.annotations.load({ entry: x.entryId });
|
||||||
|
});
|
||||||
|
|
||||||
|
$(window).scroll(() => {
|
||||||
|
const scrollTop = $(window).scrollTop();
|
||||||
|
const docHeight = $(document).height();
|
||||||
|
const scrollPercent = (scrollTop) / (docHeight);
|
||||||
|
const scrollPercentRounded = Math.round(scrollPercent * 100) / 100;
|
||||||
|
savePercent(x.entryId, scrollPercentRounded);
|
||||||
|
});
|
||||||
|
|
||||||
|
retrievePercent(x.entryId);
|
||||||
|
|
||||||
|
$(window).resize(() => {
|
||||||
|
retrievePercent(x.entryId, true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
8
app/Resources/static/themes/_global/js/highlight.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import 'highlight.js/styles/atom-one-light.css';
|
||||||
|
import * as hljs from 'highlight.js';
|
||||||
|
|
||||||
|
window.addEventListener('load', () => {
|
||||||
|
document.querySelectorAll('pre').forEach((node) => {
|
||||||
|
hljs.highlightBlock(node);
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -1,6 +1,6 @@
|
|||||||
import Mousetrap from 'mousetrap';
|
import Mousetrap from 'mousetrap';
|
||||||
|
|
||||||
/** Shortcuts **/
|
/* Shortcuts */
|
||||||
|
|
||||||
/* Go to */
|
/* Go to */
|
||||||
Mousetrap.bind('g u', () => { window.location.href = Routing.generate('homepage'); });
|
Mousetrap.bind('g u', () => { window.location.href = Routing.generate('homepage'); });
|
||||||
|
|||||||
@ -19,37 +19,18 @@ function savePercent(id, percent) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function retrievePercent(id) {
|
function retrievePercent(id, resized) {
|
||||||
if (!supportsLocalStorage()) { return false; }
|
if (!supportsLocalStorage()) { return false; }
|
||||||
|
|
||||||
const bheight = $(document).height();
|
const bheight = $(document).height();
|
||||||
const percent = localStorage[`wallabag.article.${id}.percent`];
|
const percent = localStorage[`wallabag.article.${id}.percent`];
|
||||||
const scroll = bheight * percent;
|
const scroll = bheight * percent;
|
||||||
|
|
||||||
|
if (!resized) {
|
||||||
$('html,body').animate({ scrollTop: scroll }, 'fast');
|
$('html,body').animate({ scrollTop: scroll }, 'fast');
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function initFilters() {
|
export { savePercent, retrievePercent };
|
||||||
// no display if filters not available
|
|
||||||
if ($('div').is('#filters')) {
|
|
||||||
$('#button_filters').show();
|
|
||||||
$('.js-filters-action').sideNav({ edge: 'right' });
|
|
||||||
$('#clear_form_filters').on('click', () => {
|
|
||||||
$('#filters input').val('');
|
|
||||||
$('#filters :checked').removeAttr('checked');
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function initExport() {
|
|
||||||
// no display if export not available
|
|
||||||
if ($('div').is('#export')) {
|
|
||||||
$('#button_export').show();
|
|
||||||
$('.js-export-action').sideNav({ edge: 'right' });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export { savePercent, retrievePercent, initFilters, initExport };
|
|
||||||
|
|||||||
4
app/Resources/static/themes/_global/share.js
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
import './share.scss';
|
||||||
|
|
||||||
|
function requireAll(r) { r.keys().forEach(r); }
|
||||||
|
requireAll(require.context('./img/', true, /\.(jpg|png|gif|svg|ico)$/));
|
||||||
430
app/Resources/static/themes/_global/share.scss
Normal file
@ -0,0 +1,430 @@
|
|||||||
|
/* -------------------------- Reset ------------------- */
|
||||||
|
|
||||||
|
html,
|
||||||
|
body,
|
||||||
|
div,
|
||||||
|
span,
|
||||||
|
applet,
|
||||||
|
object,
|
||||||
|
iframe,
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6,
|
||||||
|
p,
|
||||||
|
blockquote,
|
||||||
|
pre,
|
||||||
|
a,
|
||||||
|
abbr,
|
||||||
|
acronym,
|
||||||
|
address,
|
||||||
|
big,
|
||||||
|
cite,
|
||||||
|
code,
|
||||||
|
del,
|
||||||
|
dfn,
|
||||||
|
em,
|
||||||
|
img,
|
||||||
|
ins,
|
||||||
|
kbd,
|
||||||
|
q,
|
||||||
|
s,
|
||||||
|
samp,
|
||||||
|
small,
|
||||||
|
strike,
|
||||||
|
strong,
|
||||||
|
sub,
|
||||||
|
sup,
|
||||||
|
tt,
|
||||||
|
b,
|
||||||
|
u,
|
||||||
|
i,
|
||||||
|
dl,
|
||||||
|
dt,
|
||||||
|
dd,
|
||||||
|
ol,
|
||||||
|
ul,
|
||||||
|
li,
|
||||||
|
fieldset,
|
||||||
|
form,
|
||||||
|
label,
|
||||||
|
legend,
|
||||||
|
table,
|
||||||
|
caption,
|
||||||
|
tbody,
|
||||||
|
tfoot,
|
||||||
|
thead,
|
||||||
|
tr,
|
||||||
|
th,
|
||||||
|
td,
|
||||||
|
article,
|
||||||
|
aside,
|
||||||
|
canvas,
|
||||||
|
details,
|
||||||
|
embed,
|
||||||
|
figure,
|
||||||
|
figcaption,
|
||||||
|
footer,
|
||||||
|
header,
|
||||||
|
hgroup,
|
||||||
|
menu,
|
||||||
|
nav,
|
||||||
|
output,
|
||||||
|
section,
|
||||||
|
summary,
|
||||||
|
time,
|
||||||
|
mark,
|
||||||
|
audio,
|
||||||
|
video {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
font-size: 100%;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
article,
|
||||||
|
aside,
|
||||||
|
details,
|
||||||
|
figcaption,
|
||||||
|
figure,
|
||||||
|
footer,
|
||||||
|
header,
|
||||||
|
hgroup,
|
||||||
|
menu,
|
||||||
|
nav,
|
||||||
|
section {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote,
|
||||||
|
q {
|
||||||
|
quotes: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote::before,
|
||||||
|
blockquote::after,
|
||||||
|
q::before,
|
||||||
|
q::after {
|
||||||
|
content: '';
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------------- General properties ------------------- */
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: white;
|
||||||
|
color: #444;
|
||||||
|
font-family: Georgia;
|
||||||
|
line-height: 1.7;
|
||||||
|
-ms-content-zooming: none;
|
||||||
|
margin-bottom: 64px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
font-weight: 600;
|
||||||
|
margin: 0.2em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
article h1,
|
||||||
|
article h2,
|
||||||
|
article h3,
|
||||||
|
article h4,
|
||||||
|
article h5,
|
||||||
|
article h6 {
|
||||||
|
text-align: left;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 1.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 1.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3,
|
||||||
|
h4 {
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
font-size: 1.1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-bottom: 0.75em;
|
||||||
|
}
|
||||||
|
|
||||||
|
b,
|
||||||
|
strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
i,
|
||||||
|
em {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #444;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:active,
|
||||||
|
a:hover {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
p,
|
||||||
|
ul,
|
||||||
|
ol,
|
||||||
|
dl {
|
||||||
|
margin: 0 0 1.75em;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul,
|
||||||
|
ol {
|
||||||
|
padding-left: 1.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
padding-bottom: 0.2em;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
li p:last-child,
|
||||||
|
li li:last-child {
|
||||||
|
margin-bottom: -0.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul li:last-child,
|
||||||
|
ol li:last-child {
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
iframe,
|
||||||
|
video {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
mark {
|
||||||
|
padding: 0 0.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
mark a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
font-style: italic;
|
||||||
|
border-left: 0.25em solid black;
|
||||||
|
margin-left: -20px;
|
||||||
|
padding-left: 17px;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
margin-top: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote cite {
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 0.8em;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote cite::before {
|
||||||
|
content: "—";
|
||||||
|
margin-right: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
display: block;
|
||||||
|
height: auto;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure figcaption {
|
||||||
|
display: block;
|
||||||
|
margin-top: 0.3em;
|
||||||
|
font-style: italic;
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
display: block;
|
||||||
|
height: 1px;
|
||||||
|
border: solid #666;
|
||||||
|
border-width: 1px 0 0;
|
||||||
|
margin: 1.6em 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
small {
|
||||||
|
font-size: 0.7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl {
|
||||||
|
margin: 1.6em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl dt {
|
||||||
|
float: left;
|
||||||
|
width: 11.25em;
|
||||||
|
overflow: hidden;
|
||||||
|
clear: left;
|
||||||
|
text-align: right;
|
||||||
|
-ms-text-overflow: ellipsis;
|
||||||
|
-o-text-overflow: ellipsis;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl dd {
|
||||||
|
margin-left: 12.5em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin: 4em 0;
|
||||||
|
border: 0.0625em solid #efefef;
|
||||||
|
width: 100%;
|
||||||
|
padding: 1em;
|
||||||
|
font-family: Consolas, monospace;
|
||||||
|
white-space: pre;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre code {
|
||||||
|
font-size: 0.8em;
|
||||||
|
line-height: 1.6em;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
padding: 0;
|
||||||
|
vertical-align: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
padding: 0.125em 0.375em;
|
||||||
|
margin: 0 0.2em;
|
||||||
|
font-family: Consolas, monospace;
|
||||||
|
font-size: 0.8em;
|
||||||
|
white-space: pre;
|
||||||
|
border: 1px solid lightgray;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
audio,
|
||||||
|
video {
|
||||||
|
max-width: 43.75em;
|
||||||
|
}
|
||||||
|
|
||||||
|
::selection,
|
||||||
|
mark {
|
||||||
|
background: #666;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
margin-bottom: 2em;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
padding: 0.25em;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
thead tr {
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 0.85em;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
font-family: "Segoe UI", sans-serif;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
tbody tr:nth-child(2n+1) {
|
||||||
|
background: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
tbody {
|
||||||
|
border: solid #999;
|
||||||
|
border-width: 1px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure > * {
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.shared-by {
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --------------------- Responsive design ------------------------- */
|
||||||
|
|
||||||
|
@media (max-width: 719px) {
|
||||||
|
header > *:not(.preview),
|
||||||
|
article {
|
||||||
|
padding: 0 1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 720px) {
|
||||||
|
blockquote {
|
||||||
|
margin-left: -1.4375em;
|
||||||
|
padding-left: 1.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
margin-top: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.block {
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
max-width: 43.75em;
|
||||||
|
padding: 0 1.25em;
|
||||||
|
}
|
||||||
|
}
|
||||||
165
app/Resources/static/themes/baggy/css/article.scss
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
|
||||||
|
#article {
|
||||||
|
width: 70%;
|
||||||
|
margin-bottom: 3em;
|
||||||
|
text-align: justify;
|
||||||
|
|
||||||
|
.tags {
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
i {
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2::after {
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4 {
|
||||||
|
text-transform: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
border: 1px solid #999;
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 1em;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.topPosF {
|
||||||
|
position: fixed;
|
||||||
|
right: 20%;
|
||||||
|
bottom: 2em;
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#article_toolbar {
|
||||||
|
margin-bottom: 1em;
|
||||||
|
|
||||||
|
li {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 3px auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
background-color: #000;
|
||||||
|
padding: 0.3em 0.5em 0.2em;
|
||||||
|
color: #fff;
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
background-color: #999;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-btn-add-tag {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.shaarli::before {
|
||||||
|
content: "*";
|
||||||
|
}
|
||||||
|
|
||||||
|
.return {
|
||||||
|
text-decoration: none;
|
||||||
|
margin-top: 1em;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.return::before {
|
||||||
|
margin-right: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notags {
|
||||||
|
font-style: italic;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-rss {
|
||||||
|
background-color: #000;
|
||||||
|
color: #fff;
|
||||||
|
padding: 0.2em 0.5em;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
position: relative;
|
||||||
|
top: 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-tags {
|
||||||
|
li {
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-rss:hover,
|
||||||
|
.icon-rss:focus {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #000;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pre code {
|
||||||
|
font-family: "Courier New", Courier, monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
#filters {
|
||||||
|
position: fixed;
|
||||||
|
width: 20%;
|
||||||
|
height: 100%;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 30px 30px 15px 15px;
|
||||||
|
border-left: 1px #333 solid;
|
||||||
|
z-index: 12;
|
||||||
|
min-width: 300px;
|
||||||
|
|
||||||
|
form .filter-group {
|
||||||
|
margin: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#download-form {
|
||||||
|
position: fixed;
|
||||||
|
width: 10%;
|
||||||
|
height: 100%;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 30px 30px 15px 15px;
|
||||||
|
border-left: 1px #333 solid;
|
||||||
|
z-index: 12;
|
||||||
|
min-width: 200px;
|
||||||
|
|
||||||
|
li {
|
||||||
|
display: block;
|
||||||
|
padding: 0.5em 2em 0.5em 1em;
|
||||||
|
color: #fff;
|
||||||
|
position: relative;
|
||||||
|
text-transform: uppercase;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: 400;
|
||||||
|
font-family: PT Sans, sans-serif;
|
||||||
|
transition: all 0.5s ease;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,6 +0,0 @@
|
|||||||
@font-face {
|
|
||||||
font-family: "PT Sans";
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 700;
|
|
||||||
src: local("PT Sans Bold"), local("PTSans-Bold"), url("../fonts/ptsansbold.woff") format("woff");
|
|
||||||
}
|
|
||||||
263
app/Resources/static/themes/baggy/css/guide.scss
Normal file
@ -0,0 +1,263 @@
|
|||||||
|
|
||||||
|
::selection {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.desktopHide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
position: fixed;
|
||||||
|
z-index: 20;
|
||||||
|
top: 0.4em;
|
||||||
|
left: 0.6em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4 {
|
||||||
|
font-family: "PT Sans", sans-serif;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
p,
|
||||||
|
li,
|
||||||
|
label {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #000;
|
||||||
|
font-weight: bold;
|
||||||
|
|
||||||
|
&.nostyle {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
form fieldset {
|
||||||
|
border: 0;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
form input[type="text"],
|
||||||
|
form input[type="number"],
|
||||||
|
select,
|
||||||
|
form input[type="password"],
|
||||||
|
form input[type="url"],
|
||||||
|
form input[type="email"] {
|
||||||
|
border: 1px solid #999;
|
||||||
|
padding: 0.5em 1em;
|
||||||
|
min-width: 12em;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (-webkit-min-device-pixel-ratio: 0) {
|
||||||
|
select {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
border-radius: 0;
|
||||||
|
background: #fff url("../../_global/img/bg-select.png") no-repeat right center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline {
|
||||||
|
.row {
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
min-width: 6em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset label {
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 12.5em;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
margin-right: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
form .row {
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
form button,
|
||||||
|
input[type="submit"] {
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #000;
|
||||||
|
color: #fff;
|
||||||
|
padding: 0.5em 1em;
|
||||||
|
display: inline-block;
|
||||||
|
border: 1px solid #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
form button:hover,
|
||||||
|
form button:focus,
|
||||||
|
input[type="submit"]:hover,
|
||||||
|
input[type="submit"]:focus {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #000;
|
||||||
|
-webkit-transition: all 0.5s ease;
|
||||||
|
-moz-transition: all 0.5s ease;
|
||||||
|
-ms-transition: all 0.5s ease;
|
||||||
|
-o-transition: all 0.5s ease;
|
||||||
|
transition: all 0.5s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
#bookmarklet {
|
||||||
|
cursor: move;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2::after {
|
||||||
|
content: "";
|
||||||
|
height: 4px;
|
||||||
|
width: 20%;
|
||||||
|
background-color: #000;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.links {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
li {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#links {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
width: 10em;
|
||||||
|
left: 0;
|
||||||
|
text-align: right;
|
||||||
|
background-color: #333;
|
||||||
|
padding-top: 9.5em;
|
||||||
|
height: 100%;
|
||||||
|
box-shadow: inset -4px 0 20px rgba(0, 0, 0, 0.6);
|
||||||
|
z-index: 15;
|
||||||
|
|
||||||
|
> li > a {
|
||||||
|
display: block;
|
||||||
|
padding: 0.5em 2em 0.5em 1em;
|
||||||
|
color: #fff;
|
||||||
|
position: relative;
|
||||||
|
text-transform: uppercase;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
font-family: "PT Sans", sans-serif;
|
||||||
|
transition: all 0.5s ease;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
background-color: #999;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.current::after {
|
||||||
|
content: "";
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
position: absolute;
|
||||||
|
border: 10px solid transparent;
|
||||||
|
border-right-color: #eee;
|
||||||
|
right: 0;
|
||||||
|
top: 50%;
|
||||||
|
margin-top: -10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li:last-child {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 1em;
|
||||||
|
width: 10em;
|
||||||
|
|
||||||
|
a::before {
|
||||||
|
font-size: 1.2em;
|
||||||
|
position: relative;
|
||||||
|
top: 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#main {
|
||||||
|
margin-left: 12em;
|
||||||
|
position: relative;
|
||||||
|
z-index: 10;
|
||||||
|
padding-right: 5%;
|
||||||
|
padding-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sort {
|
||||||
|
padding: 0;
|
||||||
|
list-style-type: none;
|
||||||
|
opacity: 0.5;
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
li {
|
||||||
|
display: inline;
|
||||||
|
font-size: 0.9em;
|
||||||
|
|
||||||
|
& + li {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
padding: 2px 2px 0;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
vertical-align: baseline;
|
||||||
|
|
||||||
|
:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#display-mode {
|
||||||
|
float: right;
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
#listmode {
|
||||||
|
width: 16px;
|
||||||
|
display: inline-block;
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&.tablemode {
|
||||||
|
background: url("../../_global/img/table.png") no-repeat bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
.listmode {
|
||||||
|
background: url("../../_global/img/list.png") no-repeat bottom;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#warning_message {
|
||||||
|
position: fixed;
|
||||||
|
background-color: #ff6347;
|
||||||
|
z-index: 1000;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
13
app/Resources/static/themes/baggy/css/index.scss
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
/* Style */
|
||||||
|
@import 'guide';
|
||||||
|
@import 'layout';
|
||||||
|
@import 'article';
|
||||||
|
@import 'pictos';
|
||||||
|
@import 'login';
|
||||||
|
@import 'save';
|
||||||
|
@import 'messages';
|
||||||
|
|
||||||
|
/* Tools */
|
||||||
|
@import 'media_queries';
|
||||||
|
@import 'print';
|
||||||
|
@import 'ratatouille';
|
||||||
300
app/Resources/static/themes/baggy/css/layout.scss
Normal file
@ -0,0 +1,300 @@
|
|||||||
|
#content {
|
||||||
|
margin-top: 2em;
|
||||||
|
min-height: 30em;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
text-align: right;
|
||||||
|
position: relative;
|
||||||
|
bottom: 0;
|
||||||
|
right: 5em;
|
||||||
|
color: #999;
|
||||||
|
font-size: 0.8em;
|
||||||
|
font-style: italic;
|
||||||
|
z-index: 20;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #999;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-entries {
|
||||||
|
letter-spacing: -5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.listmode.entry {
|
||||||
|
width: 100%;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-entry-tags {
|
||||||
|
max-height: 2em;
|
||||||
|
overflow-y: hidden;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-entry-tags li,
|
||||||
|
.card-entry-tags span {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 5px;
|
||||||
|
padding: 5px 12px;
|
||||||
|
background-color: rgba(0, 0, 0, 0.6);
|
||||||
|
border-radius: 3px;
|
||||||
|
max-height: 2em;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-entry-tags a,
|
||||||
|
.card-entry-labels a {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-panel-add-tag {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-entries + .results {
|
||||||
|
margin-bottom: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reading-time,
|
||||||
|
.created-at {
|
||||||
|
color: #999;
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.estimatedTime small {
|
||||||
|
position: relative;
|
||||||
|
top: -1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry {
|
||||||
|
background-color: #fff;
|
||||||
|
letter-spacing: normal;
|
||||||
|
box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
|
||||||
|
display: inline-block;
|
||||||
|
width: 32%;
|
||||||
|
margin-bottom: 1.5em;
|
||||||
|
vertical-align: top;
|
||||||
|
margin-right: 1%;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 1.5em 0 3em;
|
||||||
|
height: 440px;
|
||||||
|
|
||||||
|
img.preview {
|
||||||
|
width: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: "";
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
border: 10px solid transparent;
|
||||||
|
border-bottom-color: #000;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0.7em;
|
||||||
|
z-index: 10;
|
||||||
|
right: 1.5em;
|
||||||
|
transition: all 0.5s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
height: 7px;
|
||||||
|
width: 100%;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
background-color: #000;
|
||||||
|
transition: all 0.5s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow: 0 3px 10px rgba(0, 0, 0, 1);
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
bottom: 2.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 a {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tools {
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
text-transform: none;
|
||||||
|
margin-bottom: 0;
|
||||||
|
line-height: 1.2;
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
display: block;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #000;
|
||||||
|
word-wrap: break-word;
|
||||||
|
transition: all 0.5s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
color: #666;
|
||||||
|
font-size: 0.9em;
|
||||||
|
line-height: 1.7;
|
||||||
|
margin: 5px 5px auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 a::first-letter {
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tools {
|
||||||
|
position: absolute;
|
||||||
|
bottom: -40px;
|
||||||
|
left: 0;
|
||||||
|
background: #000;
|
||||||
|
width: 100%;
|
||||||
|
z-index: 10;
|
||||||
|
padding-right: 0.5em;
|
||||||
|
text-align: right;
|
||||||
|
transition: all 0.5s ease;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #666;
|
||||||
|
text-decoration: none;
|
||||||
|
display: block;
|
||||||
|
padding: 0.4em;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li:first-child {
|
||||||
|
float: left;
|
||||||
|
font-size: 0.9em;
|
||||||
|
max-width: calc(100% - 40px * 4);
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
max-height: 2em;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-entry-labels {
|
||||||
|
position: absolute;
|
||||||
|
top: 100px;
|
||||||
|
left: -1em;
|
||||||
|
z-index: 90;
|
||||||
|
max-width: 50%;
|
||||||
|
padding-left: 0;
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin: 10px 10px 10px auto;
|
||||||
|
padding: 5px 12px 5px 25px;
|
||||||
|
background-color: rgba(0, 0, 0, 0.6);
|
||||||
|
border-radius: 0 3px 3px 0;
|
||||||
|
color: #fff;
|
||||||
|
cursor: default;
|
||||||
|
max-height: 2em;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry:nth-child(3n+1) {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.results {
|
||||||
|
letter-spacing: -5px;
|
||||||
|
padding: 0 0 0.5em;
|
||||||
|
|
||||||
|
> * {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: top;
|
||||||
|
letter-spacing: normal;
|
||||||
|
width: 50%;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
div.pagination ul {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nb-results {
|
||||||
|
text-align: left;
|
||||||
|
font-style: italic;
|
||||||
|
color: #999;
|
||||||
|
display: inline-flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.pagination ul {
|
||||||
|
a {
|
||||||
|
color: #999;
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
> * {
|
||||||
|
display: inline-block;
|
||||||
|
margin-left: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prev.disabled,
|
||||||
|
.next.disabled {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.current {
|
||||||
|
height: 25px;
|
||||||
|
padding: 4px 8px;
|
||||||
|
border: 1px solid #d5d5d5;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #000;
|
||||||
|
background-color: #ccc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
26
app/Resources/static/themes/baggy/css/login.scss
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
.login {
|
||||||
|
background-color: #333;
|
||||||
|
|
||||||
|
#main {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
form {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 1.5em;
|
||||||
|
box-shadow: 0 1px 8px rgba(0, 0, 0, 0.9);
|
||||||
|
width: 20em;
|
||||||
|
position: absolute;
|
||||||
|
top: 8em;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -10em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
position: absolute;
|
||||||
|
top: 2em;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -55px;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -912,6 +912,14 @@ a.add-to-wallabag-link-after::after {
|
|||||||
content: "\e953";
|
content: "\e953";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.icon-pencil2::before {
|
||||||
|
content: "\e906";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-users::before {
|
||||||
|
content: "\e972";
|
||||||
|
}
|
||||||
|
|
||||||
.icon-time::before {
|
.icon-time::before {
|
||||||
content: "\e952";
|
content: "\e952";
|
||||||
}
|
}
|
||||||
@ -947,6 +955,11 @@ a.add-to-wallabag-link-after::after {
|
|||||||
background-image: url("../../_global/img/icons/shaarli.png");
|
background-image: url("../../_global/img/icons/shaarli.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* scuttle */
|
||||||
|
.icon-image--scuttle {
|
||||||
|
background-image: url("../../_global/img/icons/scuttle.png");
|
||||||
|
}
|
||||||
|
|
||||||
/* ==========================================================================
|
/* ==========================================================================
|
||||||
Icon selected
|
Icon selected
|
||||||
========================================================================== */
|
========================================================================== */
|
||||||
@ -1063,6 +1076,10 @@ blockquote {
|
|||||||
content: "*";
|
content: "*";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.scuttle::before {
|
||||||
|
content: "*";
|
||||||
|
}
|
||||||
|
|
||||||
.return {
|
.return {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
|
|||||||
172
app/Resources/static/themes/baggy/css/media_queries.scss
Executable file
@ -0,0 +1,172 @@
|
|||||||
|
|
||||||
|
@media screen and (max-width: 1050px) {
|
||||||
|
.entry {
|
||||||
|
width: 49%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry:nth-child(3n+1) {
|
||||||
|
margin-left: 1.5%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.entry:nth-child(2n+1) {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 900px) {
|
||||||
|
#article {
|
||||||
|
width: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.topPosF {
|
||||||
|
right: 2.5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 700px) {
|
||||||
|
.entry {
|
||||||
|
width: 100%;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#display-mode {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-height: 770px) {
|
||||||
|
.menu.users,
|
||||||
|
.menu.internal,
|
||||||
|
.menu.developer {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 500px) {
|
||||||
|
.entry {
|
||||||
|
width: 100%;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
body > header {
|
||||||
|
background-color: #333;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 3em;
|
||||||
|
z-index: 11;
|
||||||
|
}
|
||||||
|
|
||||||
|
#links li:last-child {
|
||||||
|
position: static;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#links li:last-child a::before {
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
width: 1.25em;
|
||||||
|
height: 1.25em;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login > header {
|
||||||
|
position: static;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login form {
|
||||||
|
width: 100%;
|
||||||
|
position: static;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login .logo {
|
||||||
|
height: auto;
|
||||||
|
top: 0.5em;
|
||||||
|
width: 75px;
|
||||||
|
margin-left: -37.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.desktopHide {
|
||||||
|
display: block;
|
||||||
|
position: fixed;
|
||||||
|
z-index: 20;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
border: 0;
|
||||||
|
width: 2.5em;
|
||||||
|
height: 2.5em;
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #999;
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.desktopHide:hover,
|
||||||
|
.desktopHide:focus {
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#links {
|
||||||
|
display: none;
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
padding-top: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#links.menu--open {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
position: static;
|
||||||
|
margin-right: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main {
|
||||||
|
margin-left: 1.5em;
|
||||||
|
padding-right: 1.5em;
|
||||||
|
position: static;
|
||||||
|
margin-top: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-entry-labels {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#article_toolbar .topPosF {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#article {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#article h1 {
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#article_toolbar a {
|
||||||
|
padding: 0.3em 0.4em 0.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#display-mode {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-form,
|
||||||
|
#bagit-form,
|
||||||
|
#search-form {
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-form form,
|
||||||
|
#bagit-form form,
|
||||||
|
#search-form form {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,19 +0,0 @@
|
|||||||
.messages.error.install {
|
|
||||||
border: 1px solid #c42608;
|
|
||||||
color: #c00 !important;
|
|
||||||
background: #fff0ef;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.messages.notice.install {
|
|
||||||
border: 1px solid #ebcd41;
|
|
||||||
color: #000;
|
|
||||||
background: #fffcd3;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.messages.success.install {
|
|
||||||
border: 1px solid #6dc70c;
|
|
||||||
background: #e0fbcc !important;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
50
app/Resources/static/themes/baggy/css/messages.scss
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
/* ==========================================================================
|
||||||
|
Messages
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
.messages {
|
||||||
|
text-align: left;
|
||||||
|
width: 60%;
|
||||||
|
margin: auto 17%;
|
||||||
|
|
||||||
|
> * {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.install {
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
|
&.error {
|
||||||
|
border: 1px solid #c42608;
|
||||||
|
color: #c00 !important;
|
||||||
|
background: #fff0ef;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.notice {
|
||||||
|
border: 1px solid #ebcd41;
|
||||||
|
color: #000;
|
||||||
|
background: #fffcd3;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.success {
|
||||||
|
border: 1px solid #6dc70c;
|
||||||
|
background: #e0fbcc !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning {
|
||||||
|
font-weight: bold;
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.more-info {
|
||||||
|
font-size: 0.85em;
|
||||||
|
line-height: 1.5;
|
||||||
|
color: #aaa;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #aaa;
|
||||||
|
}
|
||||||
|
}
|
||||||
210
app/Resources/static/themes/baggy/css/pictos.scss
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
/* ==========================================================================
|
||||||
|
Pictos
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: icomoon;
|
||||||
|
src: url('~icomoon-free-npm/Font/IcoMoon-Free.ttf');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.material-icons {
|
||||||
|
font-family: 'Material Icons';
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 1em; /* Preferred icon size */
|
||||||
|
width: 1em;
|
||||||
|
height: 1em;
|
||||||
|
display: inline-block;
|
||||||
|
line-height: 1;
|
||||||
|
text-transform: none;
|
||||||
|
letter-spacing: normal;
|
||||||
|
word-wrap: normal;
|
||||||
|
white-space: nowrap;
|
||||||
|
direction: ltr;
|
||||||
|
|
||||||
|
/* Support for all WebKit browsers. */
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
|
||||||
|
/* Support for Safari and Chrome. */
|
||||||
|
text-rendering: optimizeLegibility;
|
||||||
|
|
||||||
|
/* Support for Firefox. */
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
|
||||||
|
/* Support for IE. */
|
||||||
|
font-feature-settings: 'liga';
|
||||||
|
|
||||||
|
.md-18 { font-size: 18px; }
|
||||||
|
.md-24 { font-size: 24px; }
|
||||||
|
.md-36 { font-size: 36px; }
|
||||||
|
.md-48 { font-size: 48px; }
|
||||||
|
|
||||||
|
.vertical-align-middle {
|
||||||
|
vertical-align: middle !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon span,
|
||||||
|
.icon-image span {
|
||||||
|
position: absolute;
|
||||||
|
top: -9999px;
|
||||||
|
}
|
||||||
|
|
||||||
|
[class^="icon-"]::before,
|
||||||
|
[class*=" icon-"]::before {
|
||||||
|
font-family: icomoon;
|
||||||
|
speak: none;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
font-variant: normal;
|
||||||
|
text-transform: none;
|
||||||
|
line-height: 1;
|
||||||
|
|
||||||
|
/* Enable Ligatures ================ */
|
||||||
|
letter-spacing: 0;
|
||||||
|
-webkit-font-feature-settings: "liga";
|
||||||
|
-moz-font-feature-settings: "liga=1";
|
||||||
|
-moz-font-feature-settings: "liga";
|
||||||
|
-ms-font-feature-settings: "liga" 1;
|
||||||
|
-o-font-feature-settings: "liga";
|
||||||
|
font-feature-settings: "liga";
|
||||||
|
|
||||||
|
/* Better Font Rendering =========== */
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-flattr::before {
|
||||||
|
content: "\ead4";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-mail::before {
|
||||||
|
content: "\ea86";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-up-open::before {
|
||||||
|
content: "\e80b";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-star::before {
|
||||||
|
content: "\e9d9";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-check::before {
|
||||||
|
content: "\ea10";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-link::before {
|
||||||
|
content: "\e9cb";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-reply::before {
|
||||||
|
content: "\e806";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-menu::before {
|
||||||
|
content: "\e9bd";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-clock::before {
|
||||||
|
content: "\e803";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-twitter::before {
|
||||||
|
content: "\ea96";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-down-open::before {
|
||||||
|
content: "\e809";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-trash::before {
|
||||||
|
content: "\e9ac";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-delete::before {
|
||||||
|
content: "\ea0d";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-power::before {
|
||||||
|
content: "\ea14";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-arrow-up-thick::before {
|
||||||
|
content: "\ea3a";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-rss::before {
|
||||||
|
content: "\e808";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-print::before {
|
||||||
|
content: "\e954";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-reload::before {
|
||||||
|
content: "\ea2e";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-price-tags::before {
|
||||||
|
content: "\e936";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-eye::before {
|
||||||
|
content: "\e9ce";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-no-eye::before {
|
||||||
|
content: "\e9d1";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-calendar::before {
|
||||||
|
content: "\e953";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-time::before {
|
||||||
|
content: "\e952";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* .icon-image class, for image-based icons
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
.icon-image {
|
||||||
|
background: no-repeat center/80%;
|
||||||
|
padding-right: 1em !important;
|
||||||
|
padding-left: 1em !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Carrot (http://carrot.org) */
|
||||||
|
.icon-image--carrot {
|
||||||
|
background-image: url("../../_global/img/icons/carrot-icon--white.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Diaspora */
|
||||||
|
.icon-image--diaspora {
|
||||||
|
background-image: url("../../_global/img/icons/Diaspora-asterisk.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Unmark.it */
|
||||||
|
.icon-image--unmark {
|
||||||
|
background-image: url("../../_global/img/icons/unmark-icon--black.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* shaarli */
|
||||||
|
.icon-image--shaarli {
|
||||||
|
background-image: url("../../_global/img/icons/shaarli.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Icon selected
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
.icon-star.fav::before {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-check.archive::before {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
@ -17,7 +17,7 @@
|
|||||||
/* ### Content ### */
|
/* ### Content ### */
|
||||||
|
|
||||||
/* Hide useless blocks */
|
/* Hide useless blocks */
|
||||||
body > header,
|
body > .logo,
|
||||||
#article_toolbar,
|
#article_toolbar,
|
||||||
#links,
|
#links,
|
||||||
#sort,
|
#sort,
|
||||||
@ -53,11 +53,8 @@
|
|||||||
|
|
||||||
#main {
|
#main {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
margin-left: 0;
|
padding: 0;
|
||||||
padding-right: 0;
|
|
||||||
padding-bottom: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#article {
|
#article {
|
||||||
115
app/Resources/static/themes/baggy/css/save.scss
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
/* ==========================================================================
|
||||||
|
"save a link" related styles
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
.popup-form {
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 10em;
|
||||||
|
z-index: 20;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
margin-top: -30% !important;
|
||||||
|
padding: 2em;
|
||||||
|
display: none;
|
||||||
|
border-left: 1px #eee solid;
|
||||||
|
|
||||||
|
form {
|
||||||
|
background-color: #fff;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
z-index: 20;
|
||||||
|
border: 10px solid #000;
|
||||||
|
width: 400px;
|
||||||
|
height: 200px;
|
||||||
|
padding: 2em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#bagit-form-form .addurl {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.closeMessage,
|
||||||
|
.close-button {
|
||||||
|
background-color: #000;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 1.2em;
|
||||||
|
line-height: 1.6;
|
||||||
|
width: 1.6em;
|
||||||
|
height: 1.6em;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
background-color: #999;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-button--popup {
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
font-size: 1.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active-current {
|
||||||
|
background-color: #999;
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
content: "";
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
position: absolute;
|
||||||
|
border: 10px solid transparent;
|
||||||
|
border-right-color: #eee;
|
||||||
|
right: 0;
|
||||||
|
top: 50%;
|
||||||
|
margin-top: -10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.opacity03 {
|
||||||
|
opacity: 0.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.add-to-wallabag-link-after {
|
||||||
|
background-color: #000;
|
||||||
|
color: #fff;
|
||||||
|
padding: 0 3px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.add-to-wallabag-link-after {
|
||||||
|
visibility: hidden;
|
||||||
|
position: absolute;
|
||||||
|
opacity: 0;
|
||||||
|
transition-duration: 2s;
|
||||||
|
transition-timing-function: ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
#article article a:hover + a.add-to-wallabag-link-after,
|
||||||
|
a.add-to-wallabag-link-after:hover {
|
||||||
|
opacity: 1;
|
||||||
|
visibility: visible;
|
||||||
|
transition-duration: 0.3s;
|
||||||
|
transition-timing-function: ease-in;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.add-to-wallabag-link-after::after {
|
||||||
|
content: "w";
|
||||||
|
}
|
||||||
|
|
||||||
|
#add-link-result {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-clickable {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 307 KiB |
@ -1,31 +1,19 @@
|
|||||||
/* jQuery */
|
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
|
|
||||||
/* eslint-disable no-unused-vars */
|
/* Global imports */
|
||||||
/* jquery has default scope */
|
import '../_global/index';
|
||||||
import cookie from 'jquery.cookie';
|
|
||||||
import ui from 'jquery-ui-browserify';
|
|
||||||
/* eslint-enable no-unused-vars */
|
|
||||||
|
|
||||||
/* Annotations */
|
|
||||||
import annotator from 'annotator';
|
|
||||||
|
|
||||||
/* Shortcuts */
|
/* Shortcuts */
|
||||||
import './shortcuts/main';
|
import './js/shortcuts/main';
|
||||||
import './shortcuts/entry';
|
import './js/shortcuts/entry';
|
||||||
import '../../_global/js/shortcuts/main';
|
|
||||||
import '../../_global/js/shortcuts/entry';
|
|
||||||
|
|
||||||
/* Tools */
|
/* Tools */
|
||||||
import { savePercent, retrievePercent } from '../../_global/js/tools';
|
import toggleSaveLinkForm from './js/uiTools';
|
||||||
import toggleSaveLinkForm from './uiTools';
|
|
||||||
|
|
||||||
global.jquery = $;
|
/* Theme style */
|
||||||
|
import './css/index.scss';
|
||||||
$.fn.ready(() => {
|
|
||||||
const $listmode = $('#listmode');
|
|
||||||
const $listentries = $('#list-entries');
|
|
||||||
|
|
||||||
|
$(document).ready(() => {
|
||||||
/* ==========================================================================
|
/* ==========================================================================
|
||||||
Menu
|
Menu
|
||||||
========================================================================== */
|
========================================================================== */
|
||||||
@ -38,45 +26,12 @@ $.fn.ready(() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/* ==========================================================================
|
|
||||||
List mode or Table Mode
|
|
||||||
========================================================================== */
|
|
||||||
|
|
||||||
$listmode.click(() => {
|
|
||||||
if ($.cookie('listmode') === 1) {
|
|
||||||
// Cookie
|
|
||||||
$.removeCookie('listmode');
|
|
||||||
|
|
||||||
$listentries.removeClass('listmode');
|
|
||||||
$listmode.removeClass('tablemode');
|
|
||||||
$listmode.addClass('listmode');
|
|
||||||
} else {
|
|
||||||
// Cookie
|
|
||||||
$.cookie('listmode', 1, { expires: 365 });
|
|
||||||
|
|
||||||
$listentries.addClass('listmode');
|
|
||||||
$listmode.removeClass('listmode');
|
|
||||||
$listmode.addClass('tablemode');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
/* ==========================================================================
|
|
||||||
Cookie listmode
|
|
||||||
========================================================================== */
|
|
||||||
|
|
||||||
if ($.cookie('listmode') === 1) {
|
|
||||||
$listentries.addClass('listmode');
|
|
||||||
$listmode.removeClass('listmode');
|
|
||||||
$listmode.addClass('tablemode');
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ==========================================================================
|
/* ==========================================================================
|
||||||
Add tag panel
|
Add tag panel
|
||||||
========================================================================== */
|
========================================================================== */
|
||||||
|
|
||||||
|
|
||||||
$('#nav-btn-add-tag').on('click', () => {
|
$('#nav-btn-add-tag').on('click', () => {
|
||||||
$('.nav-panel-add-tag').toggle(100);
|
$('.baggy-add-tag').toggle(100);
|
||||||
$('.nav-panel-menu').addClass('hidden');
|
$('.nav-panel-menu').addClass('hidden');
|
||||||
$('#tag_label').focus();
|
$('#tag_label').focus();
|
||||||
return false;
|
return false;
|
||||||
@ -95,39 +50,6 @@ $.fn.ready(() => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ==========================================================================
|
|
||||||
Annotations & Remember position
|
|
||||||
========================================================================== */
|
|
||||||
|
|
||||||
if ($('article').length) {
|
|
||||||
const app = new annotator.App();
|
|
||||||
|
|
||||||
app.include(annotator.ui.main, {
|
|
||||||
element: document.querySelector('article'),
|
|
||||||
});
|
|
||||||
|
|
||||||
const x = JSON.parse($('#annotationroutes').html());
|
|
||||||
app.include(annotator.storage.http, x);
|
|
||||||
|
|
||||||
app.start().then(() => {
|
|
||||||
app.annotations.load({ entry: x.entryId });
|
|
||||||
});
|
|
||||||
|
|
||||||
$(window).scroll(() => {
|
|
||||||
const scrollTop = $(window).scrollTop();
|
|
||||||
const docHeight = $(document).height();
|
|
||||||
const scrollPercent = (scrollTop) / (docHeight);
|
|
||||||
const scrollPercentRounded = Math.round(scrollPercent * 100) / 100;
|
|
||||||
savePercent(x.entryId, scrollPercentRounded);
|
|
||||||
});
|
|
||||||
|
|
||||||
retrievePercent(x.entryId);
|
|
||||||
|
|
||||||
$(window).resize(() => {
|
|
||||||
retrievePercent(x.entryId);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close window after adding entry if popup
|
* Close window after adding entry if popup
|
||||||
*/
|
*/
|
||||||
@ -136,6 +58,23 @@ $.fn.ready(() => {
|
|||||||
window.close();
|
window.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
if ($('article').size() > 0) {
|
||||||
|
const waypoint = new Waypoint({
|
||||||
|
element: $('.wallabag-title').get(0),
|
||||||
|
handler: (direction) => {
|
||||||
|
console.log(direction);
|
||||||
|
if (direction === 'down') {
|
||||||
|
$('aside.tags').fadeIn('slow');
|
||||||
|
} else {
|
||||||
|
$('aside.tags').fadeOut('slow');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
offset: 250,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tags autocomplete
|
* Tags autocomplete
|
||||||
*/
|
*/
|
||||||
@ -283,25 +222,24 @@ $.fn.ready(() => {
|
|||||||
toggleBagit();
|
toggleBagit();
|
||||||
});
|
});
|
||||||
|
|
||||||
const $bagitFormForm = $('#bagit-form-form');
|
const bagitFormForm = $('#bagit-form-form');
|
||||||
|
|
||||||
/* ==========================================================================
|
/* ==========================================================================
|
||||||
bag it link and close button
|
bag it link and close button
|
||||||
========================================================================== */
|
========================================================================== */
|
||||||
|
|
||||||
// send 'bag it link' form request via ajax
|
// send 'bag it link' form request via ajax
|
||||||
$bagitFormForm.submit((event) => {
|
bagitFormForm.submit((event) => {
|
||||||
$('body').css('cursor', 'wait');
|
$('body').css('cursor', 'wait');
|
||||||
$('#add-link-result').empty();
|
$('#add-link-result').empty();
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: $bagitFormForm.attr('method'),
|
type: bagitFormForm.attr('method'),
|
||||||
url: $bagitFormForm.attr('action'),
|
url: bagitFormForm.attr('action'),
|
||||||
data: $bagitFormForm.serialize(),
|
data: bagitFormForm.serialize(),
|
||||||
success: function success() {
|
success: function success() {
|
||||||
$('#add-link-result').html('Done!');
|
$('#add-link-result').html('Done!');
|
||||||
$('#plainurl').val('');
|
$('#plainurl').val('').blur('');
|
||||||
$('#plainurl').blur('');
|
|
||||||
$('body').css('cursor', 'auto');
|
$('body').css('cursor', 'auto');
|
||||||
},
|
},
|
||||||
error: function error() {
|
error: function error() {
|
||||||
@ -318,8 +256,7 @@ $.fn.ready(() => {
|
|||||||
========================================================================== */
|
========================================================================== */
|
||||||
|
|
||||||
$('article a[href^="http"]').after(
|
$('article a[href^="http"]').after(
|
||||||
() => `<a href="${$(this).attr('href')}" class="add-to-wallabag-link-after" ` +
|
() => `<a href="${$(this).attr('href')}" class="add-to-wallabag-link-after" title="add to wallabag"></a>`,
|
||||||
'alt="add to wallabag" title="add to wallabag"></a>'
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$('.add-to-wallabag-link-after').click((event) => {
|
$('.add-to-wallabag-link-after').click((event) => {
|
||||||
@ -1,3 +1,6 @@
|
|||||||
|
import $ from 'jquery';
|
||||||
|
import Mousetrap from 'mousetrap';
|
||||||
|
|
||||||
$(document).ready(() => {
|
$(document).ready(() => {
|
||||||
Mousetrap.bind('s', () => {
|
Mousetrap.bind('s', () => {
|
||||||
$('#search').trigger('click');
|
$('#search').trigger('click');
|
||||||
|
|||||||
196
app/Resources/static/themes/material/css/article.scss
Normal file
@ -0,0 +1,196 @@
|
|||||||
|
/* ==========================================================================
|
||||||
|
Article
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
#article {
|
||||||
|
font-size: 20px;
|
||||||
|
margin: 0 auto;
|
||||||
|
max-width: 45em;
|
||||||
|
|
||||||
|
article {
|
||||||
|
color: #424242;
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 1.7em;
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
color: #212121;
|
||||||
|
|
||||||
|
strong {
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h5 {
|
||||||
|
font-size: 1.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
font-size: 1.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 2.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 2.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 2.7rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
border-bottom: 1px dotted #03a9f4;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
border-bottom-style: solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
padding-left: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul,
|
||||||
|
ul li {
|
||||||
|
list-style-type: disc;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
img,
|
||||||
|
figure {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin: 0 0 1.75em;
|
||||||
|
border: #e3f2fd 1px solid;
|
||||||
|
width: 100%;
|
||||||
|
padding: 10px;
|
||||||
|
font-family: monospace;
|
||||||
|
font-size: 0.8em;
|
||||||
|
white-space: pre;
|
||||||
|
overflow: auto;
|
||||||
|
background: #f5f5f5;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
> header > h1 {
|
||||||
|
font-size: 2em;
|
||||||
|
margin: 2.1rem 0 0.68rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
aside {
|
||||||
|
.tools {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row wrap;
|
||||||
|
|
||||||
|
.stats {
|
||||||
|
font-size: 0.8em;
|
||||||
|
margin: 8px 5px 5px;
|
||||||
|
|
||||||
|
li {
|
||||||
|
display: inline-flex;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin: 3px 5px;
|
||||||
|
|
||||||
|
i.material-icons {
|
||||||
|
color: #3e3e3e;
|
||||||
|
margin-right: 3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #000;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.tags {
|
||||||
|
float: right;
|
||||||
|
margin: 5px 15px 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.chip {
|
||||||
|
background-color: $blueAccentColor;
|
||||||
|
padding: 0 15px 0 10px;
|
||||||
|
margin: auto 2px;
|
||||||
|
border-radius: 6px;
|
||||||
|
|
||||||
|
a,
|
||||||
|
i {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
i.material-icons {
|
||||||
|
float: right;
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 32px;
|
||||||
|
padding-left: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.reader-mode {
|
||||||
|
width: 70px !important;
|
||||||
|
transition: width 0.2s ease;
|
||||||
|
|
||||||
|
.collapsible-body {
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
width: 260px !important;
|
||||||
|
|
||||||
|
.collapsible-body {
|
||||||
|
height: auto;
|
||||||
|
|
||||||
|
li a i.material-icons {
|
||||||
|
margin: auto 5px auto -8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 3px;
|
||||||
|
margin: 0;
|
||||||
|
z-index: 9999;
|
||||||
|
}
|
||||||