Compare commits
1220 Commits
v4.2.8
...
v5.0.0-alpha1
| Author | SHA1 | Date | |
|---|---|---|---|
| 7b60b140c0 | |||
| 306f3abd01 | |||
| f049dca048 | |||
| 2d396891b8 | |||
| 99fbd648a0 | |||
| 283ac0f8bb | |||
| 4913762d70 | |||
| c338aee30a | |||
| 9935654a22 | |||
| 063533ab1e | |||
| f165e04436 | |||
| 84e12210cc | |||
| 32ff947a87 | |||
| 5f1b719810 | |||
| 0801ef1b30 | |||
| 5182055c1f | |||
| 4d60d19fd9 | |||
| 14dc963f3d | |||
| 9daf562e54 | |||
| c39e6f3f5d | |||
| af2f29322e | |||
| e84f09b55e | |||
| 4dcd03f13c | |||
| 2211fe947f | |||
| 6cb621c6a3 | |||
| 3e04d97b8b | |||
| dae9db51be | |||
| 3255904acc | |||
| 3c7e357bd1 | |||
| ab50490617 | |||
| 75ffd7c41b | |||
| 0b22891858 | |||
| c4cab2e007 | |||
| b66a7a93c2 | |||
| 91b40c88bf | |||
| 363e8a0081 | |||
| 9aa371617d | |||
| e3f002179f | |||
| 51d21522ce | |||
| 43550a9a52 | |||
| c469240c65 | |||
| ef0b2b8aea | |||
| 93803fb519 | |||
| a75dca13c9 | |||
| edd9dda7ce | |||
| 08c99f2929 | |||
| 0cfc375a27 | |||
| 3f32c012f2 | |||
| e2a5fe8e12 | |||
| 5ef38e2a57 | |||
| 8cda91a377 | |||
| 2596aba875 | |||
| 1611340dca | |||
| 6454b87672 | |||
| 898bfb4eae | |||
| 0820e70499 | |||
| ffd58ccd9f | |||
| 3af7ff4e9b | |||
| 758d63c0fa | |||
| 7649f03c70 | |||
| 7ea7850331 | |||
| 5e89b0a417 | |||
| 7646d41774 | |||
| 7851d3bdfb | |||
| 9a516b1058 | |||
| f92c35d797 | |||
| 4413c7c88b | |||
| e30f4e329b | |||
| 7d2a7b71d0 | |||
| 7a33b08185 | |||
| 23a0a492d4 | |||
| 50708d4097 | |||
| ca1863984b | |||
| 9ab27bf83b | |||
| 3ea4b0d109 | |||
| 75d4f05185 | |||
| 7f6803f9f6 | |||
| 6c2eac9e05 | |||
| f5233fbe7c | |||
| 05ea21690d | |||
| 443043a8e2 | |||
| 151677fb7e | |||
| 10629b16b8 | |||
| 7c45e78e95 | |||
| 7ffb2403a2 | |||
| 55d2141476 | |||
| a70f7eb58f | |||
| aed80fc725 | |||
| ea4a4cd464 | |||
| 28b722b92d | |||
| 15fcf1ed85 | |||
| fe6c5895b2 | |||
| 7b22c6af1b | |||
| 82f60dcb2b | |||
| fc52d200a0 | |||
| 8921b1ad21 | |||
| b438b9789e | |||
| 28bbb019a1 | |||
| dff65e6e91 | |||
| fcddb03ef1 | |||
| 3b3c2e5d34 | |||
| b2e0f437f4 | |||
| 3831a02ede | |||
| 471a6b42d0 | |||
| 1e81d9d11f | |||
| 05dcde4c8e | |||
| 84e89b35ee | |||
| dab835a646 | |||
| 7ade71945e | |||
| aa9246dde4 | |||
| 86f826a79b | |||
| 878d9f08ca | |||
| e3ddcad88e | |||
| dd7724eca2 | |||
| df18fdebea | |||
| 636903bbc7 | |||
| 2763d925f0 | |||
| c7914367b7 | |||
| e2b781a221 | |||
| 9424539930 | |||
| e76a27ddd3 | |||
| f688a96e9a | |||
| 5a72efc387 | |||
| ad98b811b3 | |||
| ab79b26bec | |||
| b308d97bed | |||
| 1a05aadca7 | |||
| 79362d7086 | |||
| d094925c42 | |||
| 84a5c369f6 | |||
| 3facab1e18 | |||
| 34c8cfdec4 | |||
| c4106617ba | |||
| 25627dac07 | |||
| e8636a1dcc | |||
| 0455cb90ce | |||
| af487de69a | |||
| ac0fbecc4b | |||
| f266ad2a99 | |||
| 3ce8c12ae6 | |||
| e2ae70a2dd | |||
| 3e827c230e | |||
| f00a355110 | |||
| d9154a75e1 | |||
| 6e539f5000 | |||
| c0203ec342 | |||
| f694f76b17 | |||
| a2f40fbf67 | |||
| 6d95cd5dd3 | |||
| 61c2ed3240 | |||
| 1fa604645c | |||
| e8caa9997b | |||
| f3b57fda0a | |||
| 471aadc513 | |||
| a0d5485088 | |||
| f83716b6bd | |||
| 5b26bd6c03 | |||
| 47cee7bb1e | |||
| bfe900f7cf | |||
| 1272506afd | |||
| bd00f36ff1 | |||
| 9a097d05da | |||
| 56d98f2734 | |||
| c3874bdaed | |||
| efe5323e1a | |||
| ba6921c91d | |||
| 8a6d766b06 | |||
| 8350859c0c | |||
| 59bad09650 | |||
| 032af37136 | |||
| 331e6d4668 | |||
| 9ab7b6cfc1 | |||
| 099e88eef3 | |||
| 503eca8315 | |||
| bb6ce5dc64 | |||
| d0e60f9201 | |||
| 7e570b6724 | |||
| 0bbf52b4aa | |||
| 8b5cad3c5a | |||
| d4e8e21e50 | |||
| c8f3c25d84 | |||
| 780a4be62c | |||
| 9d5322103e | |||
| 3c9cbb25b0 | |||
| 01fe16ccb9 | |||
| 949d620277 | |||
| c7d957f26b | |||
| fdadfbd836 | |||
| a257311f5f | |||
| f1644e48a6 | |||
| 0a0a450b45 | |||
| 1c06a07156 | |||
| 19e0bdeb3d | |||
| db6cd7e318 | |||
| 8f77d6db9f | |||
| 9690c20cbc | |||
| cec4bd7a15 | |||
| 820e981012 | |||
| e54b557f82 | |||
| 1c0823bc23 | |||
| 28e99008e0 | |||
| 3f329cbf24 | |||
| 7368bc7127 | |||
| 33f8aa4d3d | |||
| 235383e349 | |||
| baa199cf63 | |||
| f460927a3b | |||
| ed324676f0 | |||
| 2f31096abd | |||
| af995ad48b | |||
| 94030eab5f | |||
| d268ddcab2 | |||
| a9dfc6633e | |||
| aa69ffb174 | |||
| e9065f3b21 | |||
| 674571f3e3 | |||
| b1617fa51e | |||
| 4bea2c098a | |||
| 45445609dc | |||
| e571a35e26 | |||
| 2ac7c5baa7 | |||
| 723d8ea1f6 | |||
| b21eb6f693 | |||
| eb4b4d083f | |||
| 59793536ed | |||
| af9baca35e | |||
| d40ce7f050 | |||
| 35b160ca0b | |||
| 1e3730b47b | |||
| cfd322c5df | |||
| 95c39a9e1d | |||
| 761cf8f428 | |||
| 542dad0fc5 | |||
| d4d0f5bdc2 | |||
| a577e5561e | |||
| d85bd534d3 | |||
| a9685a64ff | |||
| 344f953c0b | |||
| b526a41af1 | |||
| 5cd618152d | |||
| 9d133576e4 | |||
| 8d59facb60 | |||
| 6ec5de8a78 | |||
| b269fc19d2 | |||
| 585a2e046c | |||
| b1fc20f5b9 | |||
| 13b4f939a7 | |||
| 74c32fcc23 | |||
| 489c8c9afe | |||
| 3f7da0aee0 | |||
| edf4274686 | |||
| 3a590e7dec | |||
| 0b6cae988a | |||
| 52d414587f | |||
| f0e89ef9d3 | |||
| 050e68e3e4 | |||
| 7e58e2254d | |||
| 5cfb8b1e17 | |||
| 3ccc3a3512 | |||
| a925aa5cc8 | |||
| e4afbc98cd | |||
| cfd686ff59 | |||
| 230c9d6bd0 | |||
| c27f663137 | |||
| 048151f447 | |||
| 0a3b05f156 | |||
| f270163c78 | |||
| 8725df9b03 | |||
| fd8c8f5948 | |||
| e2b7935ace | |||
| d01896788c | |||
| b9dec6b109 | |||
| db7545ab89 | |||
| af726ec808 | |||
| d3328826ec | |||
| 605aab85fd | |||
| f26b793f49 | |||
| 6a75555157 | |||
| 3c2503fc79 | |||
| 551edbb07a | |||
| 919b91ba38 | |||
| 1d805510a7 | |||
| 3f86dd3e25 | |||
| 5dc5615bfd | |||
| f093c8bd79 | |||
| 3f7b441a54 | |||
| 4537895941 | |||
| cef7bc9af5 | |||
| 48e808965d | |||
| d83a7eb16f | |||
| dd73831343 | |||
| 3a9949076b | |||
| 121e81a733 | |||
| 02c239c402 | |||
| 6a47c04228 | |||
| 42a14b6aae | |||
| bae1417021 | |||
| 2a93a1b023 | |||
| cc650da616 | |||
| 084830c743 | |||
| a605bf451f | |||
| cd5905dfdb | |||
| 12655fc22e | |||
| f09c32181a | |||
| 8fd4f7ff8e | |||
| 1e228b2193 | |||
| 001a95fcf8 | |||
| 7accf755d5 | |||
| eafe35e4af | |||
| 9c045c63c9 | |||
| 269f9e7626 | |||
| 5628198bb2 | |||
| 880588e635 | |||
| f0e27af884 | |||
| ac1ccfa2b4 | |||
| 516bba4180 | |||
| 67a6e0cf79 | |||
| 8694c7fcc7 | |||
| 887490ea5b | |||
| 98ee53aa17 | |||
| 4342b319e3 | |||
| 284d907960 | |||
| 91ab6e80ca | |||
| 684788f2fd | |||
| ce33e7509c | |||
| 9a995b9e30 | |||
| 29a5d9dbe7 | |||
| 67b7805de3 | |||
| d71f9494b8 | |||
| dd55b367ce | |||
| dbd00b2a32 | |||
| 8c1ebd8020 | |||
| dc486bc79f | |||
| 71ddd02459 | |||
| 31b10acf97 | |||
| 5842a0e10b | |||
| 289d3b9267 | |||
| b7ac194949 | |||
| decefda7e5 | |||
| 7f41373f07 | |||
| 6b86b154fb | |||
| 7dc9379909 | |||
| a472ec4e08 | |||
| 0cd4ee879a | |||
| 02d0e858c0 | |||
| 35c86d929d | |||
| 9fe4820f4c | |||
| 4525b87071 | |||
| 3fe0aaa88a | |||
| 9fe3f6ad05 | |||
| 0c179a2a47 | |||
| 61eb2a04a0 | |||
| 3bd585f7f8 | |||
| f0e9078ee4 | |||
| ffbc57755e | |||
| ceaedd55cd | |||
| 983ec7ed74 | |||
| 398f7f9ea7 | |||
| f73c41f9c0 | |||
| 8dd80a61a1 | |||
| 0bab478da3 | |||
| 324cea5dd3 | |||
| dd0f0c6f3e | |||
| d9ff7fede2 | |||
| 3d1643a84e | |||
| ea60555a9b | |||
| 35626334e6 | |||
| e9d2aa9711 | |||
| f3c9a86545 | |||
| da3db4bc28 | |||
| 0dd79314b1 | |||
| 9bd507d626 | |||
| f5f024af53 | |||
| b620d6a039 | |||
| 7f4bc4785f | |||
| 96e56d1e56 | |||
| 7fa42f64fa | |||
| 0eb6c18f9a | |||
| d5b5ebbb63 | |||
| 86570a0a50 | |||
| 8be0a72ea9 | |||
| 80ec97baaa | |||
| 2f608f67e6 | |||
| 3c9f9901e6 | |||
| 4136d22509 | |||
| 2c8feb372c | |||
| 7177dc34db | |||
| 0de5324c07 | |||
| afd32966f2 | |||
| ea78dff2f2 | |||
| 607d4889d6 | |||
| 28b1db78e0 | |||
| ba55d47143 | |||
| f290814ea3 | |||
| 105dfb9ad5 | |||
| 361634ecaa | |||
| ebbbe6b436 | |||
| 162d26d4dc | |||
| e787fac396 | |||
| 8ed5a281d5 | |||
| da0b478421 | |||
| 17b2fe1cba | |||
| c23093d6f8 | |||
| 2b6a96afbd | |||
| 7b33bb1718 | |||
| d2acfdf48e | |||
| 5032a1e189 | |||
| 0c67821171 | |||
| d414f33d01 | |||
| 32be137dd8 | |||
| 6fabb04bbe | |||
| 5eeda60b60 | |||
| cbc8cc38a9 | |||
| b96645084a | |||
| d7480aa0ff | |||
| 096615a465 | |||
| 8d3ab52904 | |||
| c007cdd82c | |||
| 6c1ba0f23f | |||
| 79c193f74b | |||
| 1cfd71001c | |||
| 7f5d4fb10f | |||
| 651aac6afa | |||
| c4fac4aad8 | |||
| b1cf276104 | |||
| 4b32841dd4 | |||
| 4960f859ed | |||
| 8d08b62c8d | |||
| 7dca404669 | |||
| f218ab0cd7 | |||
| 8c35de5642 | |||
| 70de5e8899 | |||
| cc13810673 | |||
| d03d99ccce | |||
| 40af708cab | |||
| 689eaf2603 | |||
| 14c65f8de6 | |||
| 7448e2f1e0 | |||
| 6a9129c7b9 | |||
| 400825207a | |||
| 89cb62f3e2 | |||
| f55c93508a | |||
| ad3dcb8d13 | |||
| 0650bd8643 | |||
| 0415ac8eab | |||
| 819223b2be | |||
| e64737bb51 | |||
| 84f4ce3513 | |||
| 9bc91af2de | |||
| 863a325e1d | |||
| 11562eba1d | |||
| cfd2c3f5a8 | |||
| 78b5fba358 | |||
| e14cb98d66 | |||
| b22de39a25 | |||
| 69eeca4c47 | |||
| ca202ee3ed | |||
| d658142432 | |||
| 1618e58176 | |||
| c214904bd4 | |||
| e7fafa3a86 | |||
| ae260c189f | |||
| 8a02c85bde | |||
| 7237d9baa3 | |||
| b5e904be60 | |||
| cb58270bf6 | |||
| bd27233cfc | |||
| c11fbe8bfc | |||
| 524413f7c3 | |||
| 202e1f5594 | |||
| 429b91d357 | |||
| e54ed1254a | |||
| 72e897b44b | |||
| 18ac940566 | |||
| c4e7d0ec25 | |||
| 403c87b887 | |||
| 2fb9a018c7 | |||
| 5e369b9f66 | |||
| 3c20e4eeef | |||
| dfd1a596ab | |||
| abd69fbebd | |||
| 3b1ff1e30f | |||
| ae8572187e | |||
| 3b6a621635 | |||
| c28c49ba67 | |||
| de07b9d4f1 | |||
| f144b4c425 | |||
| 80d710da48 | |||
| d1af8a615f | |||
| 4b565fe7bc | |||
| 7b0b23c6f1 | |||
| eec418c192 | |||
| 78be94481d | |||
| 9dc962be1f | |||
| 2cf95cd866 | |||
| 64a3b6570d | |||
| 84ed939e82 | |||
| 5e84b3b1d6 | |||
| 4463d8850c | |||
| a99b56e123 | |||
| 21869e4939 | |||
| c19f4b47a9 | |||
| b472d6a8b1 | |||
| 1de7bb5ebc | |||
| f7e8f04121 | |||
| 5a6b74ef75 | |||
| 36a10bb5ec | |||
| 157604b40e | |||
| 98a50dfd68 | |||
| 2eeda93617 | |||
| 885bab26ef | |||
| 32b8005e0e | |||
| 74ab1ba874 | |||
| 15e691ded9 | |||
| b131121072 | |||
| feebedad65 | |||
| 78f3b29b4c | |||
| 44866a90f7 | |||
| 5efb313177 | |||
| 9d83cbbc52 | |||
| db6e70d24b | |||
| e3e32bcddf | |||
| 02818ac867 | |||
| 885af4271c | |||
| 106cff20aa | |||
| adecfe26cf | |||
| 05eef13110 | |||
| b9e5db3563 | |||
| 4394535139 | |||
| bc0562d9b3 | |||
| ec5c8cccef | |||
| cb74c40afa | |||
| ee05e0b451 | |||
| 186c2bcfef | |||
| 65442c2da8 | |||
| a947bd3598 | |||
| dbdec516b9 | |||
| b7444dd9b0 | |||
| 82d02c5c1b | |||
| dfc0808167 | |||
| 1ced0ac405 | |||
| d509c44d69 | |||
| 8525397067 | |||
| ee0e343e1e | |||
| f9930c1bcf | |||
| dc698782b9 | |||
| 0c90679515 | |||
| 2195c2e885 | |||
| f45c75988c | |||
| 9d6d791e21 | |||
| 8902d8f5de | |||
| a3c0ff5c18 | |||
| e16e772057 | |||
| 22fa6ed63a | |||
| 177e30ee62 | |||
| b8a38cd5e5 | |||
| e013122afc | |||
| 73b3ccbd0e | |||
| 76d8c70b91 | |||
| c3eab4e6e3 | |||
| 831330b6d0 | |||
| f26c9f7055 | |||
| e64fa65552 | |||
| 80f05956b4 | |||
| 1654757c22 | |||
| cc00442e0b | |||
| e85af204dd | |||
| 72d0d46535 | |||
| eaf1649ef3 | |||
| 22b5c7a14c | |||
| ecc8939840 | |||
| 7aa7f26bbb | |||
| b39fd5b634 | |||
| 640e834c22 | |||
| 5a8264f70e | |||
| ed0001ba0e | |||
| d6f3149a38 | |||
| faaabcef3a | |||
| 3cb64cdca8 | |||
| 195fdc3cf8 | |||
| 5130269f31 | |||
| c9b5830a37 | |||
| 27e79a3e76 | |||
| d44673c260 | |||
| 8717839809 | |||
| 895f8a1cfc | |||
| 4ff2cf30e2 | |||
| 307f236771 | |||
| e82148677d | |||
| e67832d384 | |||
| 843795738d | |||
| cc6b54c5d9 | |||
| b77aeb39e7 | |||
| 937cd509d0 | |||
| 92c2ddc33e | |||
| e9eedee5c6 | |||
| 602ad1bc53 | |||
| de8d8370e3 | |||
| 4053d84a5f | |||
| 76315be47d | |||
| 85e4a29af4 | |||
| 0bfee44e9b | |||
| 41f9e3cccc | |||
| 895531c2e3 | |||
| d1e11f4172 | |||
| e473f9dc89 | |||
| a65e69cb53 | |||
| be7e9ace36 | |||
| 39c8d33169 | |||
| 5729db8f7f | |||
| 40ca8a2da4 | |||
| 4ac6d346f4 | |||
| 715277d9ac | |||
| f4af5277e6 | |||
| 74f9fb1b8e | |||
| f0e2aa6cc9 | |||
| 60f4c76fa2 | |||
| 2aca380484 | |||
| 4a47edc39c | |||
| 33b9e80028 | |||
| e0c6468c77 | |||
| 57e349a280 | |||
| 84e484bb64 | |||
| c5daf38878 | |||
| 84fc198a6d | |||
| 664359e681 | |||
| 99c1cb5642 | |||
| 822fa7c06c | |||
| 04c39a72e0 | |||
| b793b9d068 | |||
| 0ff9363d72 | |||
| ab67c786b0 | |||
| cc97dcddbd | |||
| bc7178ae2e | |||
| d9ff065f4f | |||
| fd386c5bc6 | |||
| 62a95c936b | |||
| 4d5c28ad3a | |||
| fc55aba6b3 | |||
| 01ef775491 | |||
| d5aa7067ea | |||
| 72662bcf06 | |||
| 392e9eb399 | |||
| 7eb8015aee | |||
| bde4b1bf10 | |||
| 621bf1e1e9 | |||
| 928a437f48 | |||
| 8bf8e92e3c | |||
| a0bf429b4c | |||
| 0e8f335607 | |||
| 5fc7dd6874 | |||
| 997da5170d | |||
| f7c54e9b88 | |||
| 03a72b8319 | |||
| 6faed565f4 | |||
| decb51eac7 | |||
| 7710544936 | |||
| cff726a4bb | |||
| 4e1b72ab60 | |||
| ded6869a2a | |||
| 4a0ce62361 | |||
| 1021b6d178 | |||
| 31bcba8d5d | |||
| f4f5544060 | |||
| 0246d96e4c | |||
| 828cb1ac08 | |||
| 10ea4333c4 | |||
| 332892266f | |||
| e8a79a8cea | |||
| 252aacee41 | |||
| 8ed9d8958d | |||
| 1000c1b5cb | |||
| 89b3eb0a34 | |||
| aaca511c75 | |||
| 5c958bd7fb | |||
| 5d7343f10a | |||
| e813e1c5c2 | |||
| 8dffe6639b | |||
| 2f21e623af | |||
| 536cc48d85 | |||
| 0e6db6397c | |||
| 7f3cdb6d71 | |||
| 6fa47010cf | |||
| 2e19025f9b | |||
| 2e1a53e5a3 | |||
| 65e570cdd8 | |||
| 714937ff5f | |||
| d4c923bef3 | |||
| d8454fc826 | |||
| 79395f14c6 | |||
| 61b367ed84 | |||
| c5bbe7b04e | |||
| 8c66825e84 | |||
| 4c22713a1a | |||
| 20601749e2 | |||
| 3e1e89147b | |||
| 6a0182456b | |||
| 373a39ade3 | |||
| 8fac92d170 | |||
| b34b257d33 | |||
| 415540e4a6 | |||
| 452fbfac80 | |||
| d770c8a236 | |||
| 2fad4320d6 | |||
| 4eeebeb00a | |||
| 0e59cc5f59 | |||
| 4db9a7ff63 | |||
| 3a39dfc81f | |||
| 5180a376d6 | |||
| d8e7b6f801 | |||
| e278b66a62 | |||
| c1c36b8ce0 | |||
| 86bb86af16 | |||
| aa18f9c63a | |||
| 092b26356c | |||
| 388aef3a92 | |||
| 7b6832eea7 | |||
| ba89c29c0b | |||
| 4951f81d0d | |||
| e1780c8819 | |||
| b3140d9bd9 | |||
| 95062b7f46 | |||
| dd9984daee | |||
| 1acd60d7f2 | |||
| 93e3c62b99 | |||
| d4c7950cc5 | |||
| 29624713c4 | |||
| cd2db0b267 | |||
| 19ab02a4f9 | |||
| 201f4a5e51 | |||
| 9e07b3e092 | |||
| e35b889f88 | |||
| f7c6f61bf2 | |||
| 14d314bf1a | |||
| 289b2df9a1 | |||
| faee673b42 | |||
| 590621ea7f | |||
| 81eda27f5d | |||
| 78fef48559 | |||
| a2f2659ab1 | |||
| c93e16c4af | |||
| 88743af243 | |||
| f5598a2c0f | |||
| 448ddfd721 | |||
| a86890002f | |||
| 41c17c3190 | |||
| c97a254188 | |||
| 90dd4afd06 | |||
| db7255febc | |||
| f416756809 | |||
| eee2ba4d69 | |||
| 463ea1fe7e | |||
| 2df26a9076 | |||
| 651e03c697 | |||
| 6aadb54c9f | |||
| 6554f43114 | |||
| c89ae3241b | |||
| 23c2345258 | |||
| 3cf0e7885f | |||
| adb32a3457 | |||
| 2e0bef5800 | |||
| 9b5fb6504c | |||
| a6f4c7993d | |||
| a73c2e4738 | |||
| ee58b80110 | |||
| f9ecd4b622 | |||
| cfa76465b5 | |||
| 097bb20005 | |||
| a0ae11f268 | |||
| 4d87d2633c | |||
| 702d033bff | |||
| 60ccf59ae5 | |||
| 516155c6ee | |||
| 96efa177ba | |||
| 5a5e7a21c4 | |||
| 4288649573 | |||
| 041b58b942 | |||
| 0d098f1901 | |||
| bbc1cbe2ff | |||
| f666baabda | |||
| c848744e28 | |||
| 30b8dcfb91 | |||
| 2d4ec91a5c | |||
| a34b5a81d2 | |||
| a4d42cc47e | |||
| 4d9ebb4f44 | |||
| ef199c8916 | |||
| f63381fed3 | |||
| 65c272b347 | |||
| 54cd19ea0d | |||
| 8b5d1709a2 | |||
| 976f411e6f | |||
| a3a96eb0ec | |||
| 2d92101438 | |||
| d877d02187 | |||
| dee5d46be5 | |||
| 8fd1fab200 | |||
| fda3aff955 | |||
| 1fbfa95b3f | |||
| 21da8c7023 | |||
| de3221ca69 | |||
| ec9371d3b1 | |||
| 11e31e85ac | |||
| 20a57037f7 | |||
| 51f8fd39c2 | |||
| f4745ff717 | |||
| 38c01a138b | |||
| e6389a7956 | |||
| a92ebe3e2c | |||
| 2630bebae0 | |||
| 3c1671d09f | |||
| 2d92327fbc | |||
| d2ca05978f | |||
| 82db7fea55 | |||
| 0666614be7 | |||
| 3cb078cbd5 | |||
| 4482d18e17 | |||
| 1f56b4f6f2 | |||
| 2830bf2b48 | |||
| cd23d4897b | |||
| e6467ad077 | |||
| bb3d5fdfcc | |||
| e1cd505aad | |||
| 8e341f96b7 | |||
| cdee00aca2 | |||
| 59b0a9ff43 | |||
| 719fdfe2ae | |||
| 0601324851 | |||
| 1f42fe835f | |||
| fa053d2754 | |||
| 6f5c7f7da7 | |||
| 8e89ceb395 | |||
| ecc078b891 | |||
| 92ca9d7571 | |||
| a9401d21d7 | |||
| 43fae0c326 | |||
| bad9d747e1 | |||
| 57a846f40a | |||
| d62c45712d | |||
| 322d90f43b | |||
| 7ad5262678 | |||
| e7a0c6c05b | |||
| 4f4fe6c0de | |||
| a93872a0f3 | |||
| e5d6be61f8 | |||
| ccbed9cb95 | |||
| 5bb4021b2a | |||
| a5cad3488a | |||
| f8d04b5cb8 | |||
| 82eb6e17ac | |||
| b9ff5b1525 | |||
| 4bbae0e46a | |||
| cf03abcbc9 | |||
| 5d654d402a | |||
| 51f66f1a6a | |||
| 65ff7340af | |||
| b601402ea5 | |||
| c1afa6513c | |||
| fdb8704bac | |||
| 31005bf939 | |||
| 4bb1c0aa92 | |||
| d76757ddb4 | |||
| 6980bb62d6 | |||
| bc2d7167e6 | |||
| 1fc5fb437b | |||
| 269a1ab6f5 | |||
| de61d7158b | |||
| 4fcdd8c4a6 | |||
| 12e9764fdd | |||
| 9b93a812d3 | |||
| 91e8abf8a5 | |||
| 98dbe59e64 | |||
| 09b2e33e01 | |||
| 38a8c3e3b1 | |||
| cc83bbbfb9 | |||
| 353725291a | |||
| 134ba5bf2e | |||
| b4a5fc91f0 | |||
| 0e966f706e | |||
| f7afd1fa75 | |||
| e45dc665c9 | |||
| f7d357e8fc | |||
| 3a64dd25f4 | |||
| 0e866008b1 | |||
| b1db247a63 | |||
| 32bbce8ccd | |||
| e5a77a60f6 | |||
| dbb1644136 | |||
| a76fa8d0c7 | |||
| b772d6e06a | |||
| be27f43978 | |||
| 96241bd77b | |||
| d02640b6d1 | |||
| 67ae0e5b1e | |||
| 46229b2e27 | |||
| ea591bfb17 | |||
| c2e361e7e4 | |||
| 6ff73c4e36 | |||
| 91934419c0 | |||
| fe73500545 | |||
| 044307661b | |||
| 8a2309ee37 | |||
| 1e7ab9f847 | |||
| 1b71908bca | |||
| 644fff5f18 | |||
| bc3dc4a516 | |||
| 9147ce859b | |||
| 8499a0f660 | |||
| 482c2ae5b8 | |||
| 7481e7d462 | |||
| 94955b5450 | |||
| 52bff9e90e | |||
| 2d217e17e6 | |||
| 975572e858 | |||
| 41903670ed | |||
| 8bedb03d1d | |||
| f4553d967f | |||
| 90bf38e3c6 | |||
| a217f2e853 | |||
| 346722a391 | |||
| d42fa602ed | |||
| 2c6a5a2abf | |||
| c438b7d145 | |||
| caa3dfd8eb | |||
| 3c33baa69c | |||
| 332c9e63cf | |||
| 82447881a5 | |||
| 0f0763f86d | |||
| ec6b6d98f2 | |||
| 37d2d7b809 | |||
| 2c81ff26dc | |||
| ee1c98b8a0 | |||
| f1cc01eb1a | |||
| f7280f13d7 | |||
| 36404caad8 | |||
| 32f6024520 | |||
| defdec493e | |||
| 03f890f4ad | |||
| 0ffca35214 | |||
| 170f7bf196 | |||
| d190e4419b | |||
| c9e23628d7 | |||
| a6712e151a | |||
| ed6ffd03fa | |||
| dc90fd866d | |||
| 40ed6ed31a | |||
| bd578a1c0d | |||
| 173b630b2d | |||
| 792715f210 | |||
| a24e3f9360 | |||
| 00bd848ab4 | |||
| 22c32f4c92 | |||
| 9ddc1cb487 | |||
| 4358bb9f94 | |||
| 6cc3ec2eff | |||
| cb82d9f3f4 | |||
| 946d020aff | |||
| 5d6af8923f | |||
| 6d1689467e | |||
| 2bc697d1e3 | |||
| d3b7efa0a6 | |||
| a40c865c1a | |||
| addf9169f7 | |||
| 7c40164022 | |||
| feff543aaa | |||
| 878a1de804 | |||
| f7e9a34a10 | |||
| 0725bfe33d | |||
| cf5d847c32 | |||
| 2fe71bfe4e | |||
| b6999bb56f | |||
| 1488420292 | |||
| e6a4b8dc45 | |||
| 32c53eba82 | |||
| d5670b65b7 | |||
| f2e6f0aa45 | |||
| 600db1596e | |||
| ed2a5bcdff | |||
| 4f883d6c8c | |||
| 2cbfb7111a | |||
| 4ad90670ce | |||
| a9a4b40a01 | |||
| 348189d100 | |||
| ad55a28e08 | |||
| ff36ddaa00 | |||
| 85a000ce67 | |||
| b0ca451c78 | |||
| 4942b84a56 | |||
| 911f9aa75e | |||
| 667afeb861 | |||
| a65a35f011 | |||
| 00a547b2bd | |||
| 0f86d84dca | |||
| e3b4abc1e0 | |||
| aaa64bed8e | |||
| 449a0d73a3 | |||
| 84ee76afa7 | |||
| 444c8f95e1 | |||
| 223d41a99d | |||
| 45a6c0c108 | |||
| ef7e3964a1 | |||
| 3a9834bcfb | |||
| 8ade35b5f2 | |||
| c2d1ff911b | |||
| a8da5e869c | |||
| ed32c1fc86 | |||
| 4162b123da | |||
| 563f8e263d | |||
| 741d192f1f | |||
| 640101c13a | |||
| 90872feeb4 | |||
| ef921f22c3 | |||
| 62082a4737 | |||
| d81e18258c | |||
| a37e3b1210 | |||
| 18aca697c9 | |||
| 842d1490be | |||
| 4aa97cff03 | |||
| 510916e1ee | |||
| 254dffd0cd | |||
| d0c8fd056b | |||
| 97ced02208 | |||
| 63a0f4b27a | |||
| c9d7b00c0c | |||
| 2898d122cc | |||
| 41cfe9f4c9 | |||
| 8d6ffbeaec | |||
| 16870116e6 | |||
| 7e2e5a6ec0 | |||
| 933baf8d2e | |||
| 87983a0aa7 | |||
| 11f294160d | |||
| 92e084fcf7 | |||
| f49bef24d6 | |||
| 5a71d8f3bc | |||
| ec020e8e3b | |||
| 8797caa2db | |||
| 602fa041d6 | |||
| 019c78285a | |||
| 5950c7711a | |||
| f1984dad87 | |||
| 4c47a396a8 | |||
| 8b4c5c4ebe | |||
| 9eef80afb0 | |||
| edae9faaec | |||
| d82ce1e9a5 | |||
| 8058cea0ca | |||
| b346dce2b3 | |||
| 7ea583bedd | |||
| 64c9c08744 | |||
| 156006567a | |||
| 5e23fa5fcb | |||
| 80fb5916cd | |||
| 6f3bec036e | |||
| 2e214a1248 | |||
| c7afce1592 | |||
| 123e376aba | |||
| 6b3aee848d | |||
| 1195448f14 | |||
| 47cdc1e54d | |||
| bfb7f1536b | |||
| 2f0496d0a3 | |||
| abf785be5e | |||
| 2a7bf82cf5 | |||
| af7348a987 | |||
| 3f48a504d4 | |||
| b13c731aa5 | |||
| 45673e847d | |||
| 05cbb506de | |||
| 184c6821a7 | |||
| a309e858d3 | |||
| 7751be7308 | |||
| e34993ce31 | |||
| ce6f6f8d1a | |||
| 0060b078df | |||
| 6e2d7fb591 | |||
| 7dc9530ddb | |||
| 30336981f2 | |||
| 93da88b588 | |||
| 596f61dfd9 | |||
| 2e8bd59aa2 | |||
| 713758ebcc | |||
| 88df89c508 | |||
| 195afaa5b9 | |||
| bee797007d | |||
| aa8109903b | |||
| 90ac188e8b | |||
| 5f1b4a792a | |||
| fdd7aefc20 | |||
| ef846ce384 | |||
| 842b88d244 | |||
| 7bcb629547 | |||
| 56796d57b4 | |||
| 4ee8ac2585 | |||
| 71c790a261 | |||
| 8317f579c2 | |||
| 0b2ad1df35 | |||
| 5b2bc78108 | |||
| a213f92f0d | |||
| 07673be08c | |||
| 7022c9af5a | |||
| 066bb30604 | |||
| bdd0f5e1b6 | |||
| b589411473 | |||
| 6f671d8bff | |||
| 7355adfc04 | |||
| 8551a0b071 | |||
| 1830e2b943 | |||
| d38785740e | |||
| 1c4f827bf8 | |||
| 1b89239323 | |||
| d5c9c5114a | |||
| dad21d1e2f | |||
| 800e8ebefb | |||
| 9274d74dc1 | |||
| 1871c6ced4 | |||
| a6f7093bae | |||
| 8be61709b8 | |||
| d69f8a6d3c | |||
| 31fe15e782 | |||
| 8babc69dc5 | |||
| 8d92b5d634 | |||
| 8a657250b1 | |||
| 8d3657f54a | |||
| 97fd387c34 | |||
| 8a15aaffb7 | |||
| 4805c3c7f0 | |||
| cfb33ec1a2 | |||
| 576db27e9d | |||
| b095c6b606 | |||
| 014f8e61f1 | |||
| eeb150f1e3 | |||
| c72d40aa07 | |||
| ea996cf6dd | |||
| 3c52f7016b | |||
| 5171b3748d | |||
| 11ac0f1551 | |||
| 331a947ea4 | |||
| e4d05f301a | |||
| b2ed5d1cbb | |||
| bf12a2bc67 | |||
| d6d5ecdf5d | |||
| d72ed91f21 | |||
| 1118ce449c | |||
| 6da7f78cba | |||
| 61ec1c1b48 | |||
| 7ded76695a | |||
| 3489276fa1 | |||
| 789158aca5 | |||
| 8a42966c1f | |||
| beb8b8e3ab | |||
| 337ba6b22a | |||
| c0f9559f8c | |||
| e7d62cf9b1 | |||
| 2d6a319c13 | |||
| b059bdec66 | |||
| c830311aca | |||
| 90488ce14b | |||
| 3cbc012f6f | |||
| dce0b82155 | |||
| 54cc6cbff3 | |||
| 986022cee1 | |||
| 5e96f8a72e | |||
| 72cfc3f826 | |||
| e0e3cee255 | |||
| 80b2b351e6 | |||
| e85b4be7d6 | |||
| e4898df12d | |||
| 56cf1b02ab | |||
| aa7928d35d | |||
| f275843556 | |||
| 3cd6622c8f | |||
| beae0b9319 | |||
| 83c853726d | |||
| 720664818f | |||
| 0819f447e1 | |||
| e1c33c4d3e | |||
| 69eed4f7f2 | |||
| a9b7b43ffb | |||
| 92f435d45b | |||
| acc6a652eb | |||
| 276052d231 | |||
| d3bd2b6692 | |||
| bb9403e2b2 | |||
| 2147f72176 | |||
| d8346a705f | |||
| 87d2cfb301 | |||
| a1d44d0246 | |||
| 1c05879f62 | |||
| 16c2843073 | |||
| a36a8b72b8 | |||
| ae11d8b484 | |||
| b1d07b8e70 | |||
| c2fb186edc | |||
| b6fb46b760 | |||
| c1345ca64c | |||
| 00d958aaed | |||
| d4688589d8 | |||
| 37e7ead1e2 | |||
| ad83d84778 | |||
| 74330122bd | |||
| 6e0b8ccf86 | |||
| 06d0db3b6a | |||
| c01e9860bf | |||
| 47a3a7ad0f | |||
| 28c609d4c7 | |||
| ca88f37bb6 | |||
| 73886e9232 | |||
| e7dc1a7bc4 | |||
| 5115cd13e4 | |||
| fbbd9d9c6e | |||
| 6bff90419e | |||
| 16a5665e3e | |||
| f7474ddade | |||
| 81ebdd97cc | |||
| 7a7696224d | |||
| af0b308b1e | |||
| 432a05c64b | |||
| 2dd365f8bc | |||
| 242abf9f69 |
@@ -0,0 +1,9 @@
|
||||
# Make Github recognise Gramps as a Python project,
|
||||
# by marking .sql files as text files!
|
||||
# See: https://github.com/github/linguist/issues/2462
|
||||
# https://github.com/github/linguist/blob/master/README.md
|
||||
*.sql linguist-language=txt
|
||||
|
||||
# Have Github ignore js vendored files.
|
||||
# https://github.com/gramps-project/gramps/tree/master/data/javascript
|
||||
#data/javascript/*.js linguist-vendored
|
||||
@@ -8,7 +8,7 @@ dist/
|
||||
|
||||
# Gramps
|
||||
data/tips.xml
|
||||
gramps/plugins/lib/holidays.xml
|
||||
data/holidays.xml
|
||||
po/.intltool-merge-cache
|
||||
docs/_build/
|
||||
|
||||
@@ -18,4 +18,10 @@ tags
|
||||
|
||||
# Testing
|
||||
test/data
|
||||
gramps/webapp/grampsdb/fixtures/initial_data.json
|
||||
|
||||
# Windows image file caches
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
|
||||
# Glade temp files
|
||||
*~
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<benny.malengier@gramps-project.org> <benny.malengier@gmail.com>
|
||||
<doug.blank@gmail.com> <dsblank@bitbucket.org>
|
||||
<doug.blank@gmail.com> <dblank@cs.brynmawr.edu>
|
||||
<beernarrd@gmail.com> <beernarrd@users.sourceforge.net>
|
||||
<igal.shapira@gmail.com> <igalshapira@users.sourceforge.net>
|
||||
<romjerome@yahoo.fr> <romjerome@users.noreply.github.com>
|
||||
<jralls@ceridwen.us> <john@aeolus.local>
|
||||
<josip@pisoj.com> <bpisoj@gmail.com>
|
||||
Josip Pisoj <josip@pisoj.com>
|
||||
Mirko Leonhaeuser <mirko@leonhaeuser.de>
|
||||
<martin.hawlisch@gmx.de> <loshawlos@users.sourceforge.net>
|
||||
Matti Niemelä <matti.u.niemela@gmail.com>
|
||||
<nick-h@gramps-project.org> <nick__hall@hotmail.com>
|
||||
<nick-h@gramps-project.org> <Nick-Hall@users.noreply.github.com>
|
||||
Ondrej Krč-Jediný <hou@centrum.sk>
|
||||
<hou@centrum.sk> <ondrisko@users.sourceforge.com>
|
||||
Pierre Bélissent <pierre.belissent@gmail.com>
|
||||
Serge Noiraud <Serge.Noiraud@free.fr>
|
||||
<Serge.Noiraud@free.fr> <serge.noiraud@free.fr>
|
||||
<Serge.Noiraud@free.fr> <serge.noiraud@laposte.net>
|
||||
Zdeněk Hataš <zdenek.hatas@gmail.com>
|
||||
<zdenek.hatas@gmail.com> <zdenek.hatas@hp.com>
|
||||
<zdenek.hatas@gmail.com> <zenhas@users.sourceforge.net>
|
||||
<gerald@gkunzmann.de> <g.kunzmann@arcor.de>
|
||||
Tim G L Lyons <tim.g.lyons@gmail.com>
|
||||
<tim.g.lyons@gmail.com> <guy.linton@gmail.com>
|
||||
Elder Evans <elderamevans@gmail.com>
|
||||
|
||||
@@ -0,0 +1,378 @@
|
||||
[MASTER]
|
||||
|
||||
# Specify a configuration file.
|
||||
#rcfile=
|
||||
|
||||
# Python code to execute, usually for sys.path manipulation such as
|
||||
# pygtk.require().
|
||||
#init-hook=
|
||||
|
||||
# Add files or directories to the blacklist. They should be base names, not
|
||||
# paths.
|
||||
ignore=CVS
|
||||
|
||||
# Pickle collected data for later comparisons.
|
||||
persistent=yes
|
||||
|
||||
# List of plugins (as comma separated values of python modules names) to load,
|
||||
# usually to register additional checkers.
|
||||
load-plugins=
|
||||
|
||||
# Use multiple processes to speed up Pylint.
|
||||
jobs=1
|
||||
|
||||
# Allow loading of arbitrary C extensions. Extensions are imported into the
|
||||
# active Python interpreter and may run arbitrary code.
|
||||
unsafe-load-any-extension=no
|
||||
|
||||
# A comma-separated list of package or module names from where C extensions may
|
||||
# be loaded. Extensions are loading into the active Python interpreter and may
|
||||
# run arbitrary code
|
||||
extension-pkg-whitelist=
|
||||
|
||||
# Allow optimization of some AST trees. This will activate a peephole AST
|
||||
# optimizer, which will apply various small optimizations. For instance, it can
|
||||
# be used to obtain the result of joining multiple strings with the addition
|
||||
# operator. Joining a lot of strings can lead to a maximum recursion error in
|
||||
# Pylint and this flag can prevent that. It has one side effect, the resulting
|
||||
# AST will be different than the one from reality.
|
||||
optimize-ast=no
|
||||
|
||||
|
||||
[MESSAGES CONTROL]
|
||||
|
||||
# Only show warnings with the listed confidence levels. Leave empty to show
|
||||
# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
|
||||
confidence=
|
||||
|
||||
# Enable the message, report, category or checker with the given id(s). You can
|
||||
# either give multiple identifier separated by comma (,) or put this option
|
||||
# multiple time. See also the "--disable" option for examples.
|
||||
#enable=
|
||||
|
||||
# Disable the message, report, category or checker with the given id(s). You
|
||||
# can either give multiple identifiers separated by comma (,) or put this
|
||||
# option multiple times (only on the command line, not in the configuration
|
||||
# file where it should appear only once).You can also use "--disable=all" to
|
||||
# disable everything first and then reenable specific checks. For example, if
|
||||
# you want to run only the similarities checker, you can use "--disable=all
|
||||
# --enable=similarities". If you want to run only the classes checker, but have
|
||||
# no Warning level messages displayed, use"--disable=all --enable=classes
|
||||
# --disable=W"
|
||||
disable=suppressed-message,intern-builtin,round-builtin,unicode-builtin,range-builtin-not-iterating,long-builtin,basestring-builtin,setslice-method,print-statement,reload-builtin,metaclass-assignment,raising-string,next-method-called,import-star-module-level,xrange-builtin,getslice-method,zip-builtin-not-iterating,reduce-builtin,dict-iter-method,delslice-method,using-cmp-argument,hex-method,buffer-builtin,old-ne-operator,nonzero-method,backtick,parameter-unpacking,indexing-exception,file-builtin,filter-builtin-not-iterating,raw_input-builtin,execfile-builtin,oct-method,cmp-method,coerce-builtin,long-suffix,cmp-builtin,input-builtin,dict-view-method,standarderror-builtin,apply-builtin,old-raise-syntax,unichr-builtin,old-division,coerce-method,unpacking-in-except,useless-suppression,no-absolute-import,map-builtin-not-iterating,old-octal-literal
|
||||
|
||||
|
||||
[REPORTS]
|
||||
|
||||
# Set the output format. Available formats are text, parseable, colorized, msvs
|
||||
# (visual studio) and html. You can also give a reporter class, eg
|
||||
# mypackage.mymodule.MyReporterClass.
|
||||
output-format=text
|
||||
|
||||
# Put messages in a separate file for each module / package specified on the
|
||||
# command line instead of printing them on stdout. Reports (if any) will be
|
||||
# written in a file name "pylint_global.[txt|html]".
|
||||
files-output=no
|
||||
|
||||
# Tells whether to display a full report or only the messages
|
||||
reports=yes
|
||||
|
||||
# Python expression which should return a note less than 10 (10 is the highest
|
||||
# note). You have access to the variables errors warning, statement which
|
||||
# respectively contain the number of errors / warnings messages and the total
|
||||
# number of statements analyzed. This is used by the global evaluation report
|
||||
# (RP0004).
|
||||
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
|
||||
|
||||
# Template used to display messages. This is a python new-style format string
|
||||
# used to format the message information. See doc for all details
|
||||
#msg-template=
|
||||
|
||||
|
||||
[BASIC]
|
||||
|
||||
# List of builtins function names that should not be used, separated by a comma
|
||||
bad-functions=map,filter
|
||||
|
||||
# Good variable names which should always be accepted, separated by a comma
|
||||
good-names=i,j,k,ex,Run,_,db
|
||||
|
||||
# Bad variable names which should always be refused, separated by a comma
|
||||
bad-names=foo,bar,baz,toto,tutu,tata
|
||||
|
||||
# Colon-delimited sets of names that determine each other's naming style when
|
||||
# the name regexes allow several styles.
|
||||
name-group=
|
||||
|
||||
# Include a hint for the correct naming format with invalid-name
|
||||
include-naming-hint=no
|
||||
|
||||
# Regular expression matching correct argument names
|
||||
argument-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Naming hint for argument names
|
||||
argument-name-hint=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression matching correct module names
|
||||
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
|
||||
|
||||
# Naming hint for module names
|
||||
module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
|
||||
|
||||
# Regular expression matching correct class attribute names
|
||||
class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
|
||||
|
||||
# Naming hint for class attribute names
|
||||
class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
|
||||
|
||||
# Regular expression matching correct function names
|
||||
function-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Naming hint for function names
|
||||
function-name-hint=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression matching correct inline iteration names
|
||||
inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
|
||||
|
||||
# Naming hint for inline iteration names
|
||||
inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$
|
||||
|
||||
# Regular expression matching correct constant names
|
||||
const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
|
||||
|
||||
# Naming hint for constant names
|
||||
const-name-hint=(([A-Z_][A-Z0-9_]*)|(__.*__))$
|
||||
|
||||
# Regular expression matching correct method names
|
||||
method-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Naming hint for method names
|
||||
method-name-hint=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression matching correct class names
|
||||
class-rgx=[A-Z_][a-zA-Z0-9]+$
|
||||
|
||||
# Naming hint for class names
|
||||
class-name-hint=[A-Z_][a-zA-Z0-9]+$
|
||||
|
||||
# Regular expression matching correct variable names
|
||||
variable-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Naming hint for variable names
|
||||
variable-name-hint=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression matching correct attribute names
|
||||
attr-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Naming hint for attribute names
|
||||
attr-name-hint=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression which should only match function or class names that do
|
||||
# not require a docstring.
|
||||
no-docstring-rgx=^_
|
||||
|
||||
# Minimum line length for functions/classes that require docstrings, shorter
|
||||
# ones are exempt.
|
||||
docstring-min-length=-1
|
||||
|
||||
|
||||
[ELIF]
|
||||
|
||||
# Maximum number of nested blocks for function / method body
|
||||
max-nested-blocks=5
|
||||
|
||||
|
||||
[LOGGING]
|
||||
|
||||
# Logging modules to check that the string format arguments are in logging
|
||||
# function parameter format
|
||||
logging-modules=logging
|
||||
|
||||
|
||||
[SPELLING]
|
||||
|
||||
# Spelling dictionary name. Available dictionaries: none. To make it working
|
||||
# install python-enchant package.
|
||||
spelling-dict=
|
||||
|
||||
# List of comma separated words that should not be checked.
|
||||
spelling-ignore-words=
|
||||
|
||||
# A path to a file that contains private dictionary; one word per line.
|
||||
spelling-private-dict-file=
|
||||
|
||||
# Tells whether to store unknown words to indicated private dictionary in
|
||||
# --spelling-private-dict-file option instead of raising a message.
|
||||
spelling-store-unknown-words=no
|
||||
|
||||
|
||||
[MISCELLANEOUS]
|
||||
|
||||
# List of note tags to take in consideration, separated by a comma.
|
||||
notes=FIXME,XXX,TODO
|
||||
|
||||
|
||||
[TYPECHECK]
|
||||
|
||||
# Tells whether missing members accessed in mixin class should be ignored. A
|
||||
# mixin class is detected if its name ends with "mixin" (case insensitive).
|
||||
ignore-mixin-members=yes
|
||||
|
||||
# List of module names for which member attributes should not be checked
|
||||
# (useful for modules/projects where namespaces are manipulated during runtime
|
||||
# and thus existing member attributes cannot be deduced by static analysis. It
|
||||
# supports qualified module names, as well as Unix pattern matching.
|
||||
ignored-modules=
|
||||
|
||||
# List of classes names for which member attributes should not be checked
|
||||
# (useful for classes with attributes dynamically set). This supports can work
|
||||
# with qualified names.
|
||||
ignored-classes=
|
||||
|
||||
# List of members which are set dynamically and missed by pylint inference
|
||||
# system, and so shouldn't trigger E1101 when accessed. Python regular
|
||||
# expressions are accepted.
|
||||
generated-members=
|
||||
|
||||
|
||||
[SIMILARITIES]
|
||||
|
||||
# Minimum lines number of a similarity.
|
||||
min-similarity-lines=4
|
||||
|
||||
# Ignore comments when computing similarities.
|
||||
ignore-comments=yes
|
||||
|
||||
# Ignore docstrings when computing similarities.
|
||||
ignore-docstrings=yes
|
||||
|
||||
# Ignore imports when computing similarities.
|
||||
ignore-imports=no
|
||||
|
||||
|
||||
[FORMAT]
|
||||
|
||||
# Maximum number of characters on a single line.
|
||||
max-line-length=80
|
||||
|
||||
# Regexp for a line that is allowed to be longer than the limit.
|
||||
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
|
||||
|
||||
# Allow the body of an if to be on the same line as the test if there is no
|
||||
# else.
|
||||
single-line-if-stmt=no
|
||||
|
||||
# List of optional constructs for which whitespace checking is disabled. `dict-
|
||||
# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
|
||||
# `trailing-comma` allows a space between comma and closing bracket: (a, ).
|
||||
# `empty-line` allows space-only lines.
|
||||
no-space-check=trailing-comma,dict-separator
|
||||
|
||||
# Maximum number of lines in a module
|
||||
max-module-lines=1000
|
||||
|
||||
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
|
||||
# tab).
|
||||
indent-string=' '
|
||||
|
||||
# Number of spaces of indent required inside a hanging or continued line.
|
||||
indent-after-paren=4
|
||||
|
||||
# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
|
||||
expected-line-ending-format=
|
||||
|
||||
|
||||
[VARIABLES]
|
||||
|
||||
# Tells whether we should check for unused import in __init__ files.
|
||||
init-import=no
|
||||
|
||||
# A regular expression matching the name of dummy variables (i.e. expectedly
|
||||
# not used).
|
||||
dummy-variables-rgx=_$|dummy
|
||||
|
||||
# List of additional names supposed to be defined in builtins. Remember that
|
||||
# you should avoid to define new builtins when possible.
|
||||
additional-builtins=
|
||||
|
||||
# List of strings which can identify a callback function by name. A callback
|
||||
# name must start or end with one of those strings.
|
||||
callbacks=cb_,_cb
|
||||
|
||||
|
||||
[CLASSES]
|
||||
|
||||
# List of method names used to declare (i.e. assign) instance attributes.
|
||||
defining-attr-methods=__init__,__new__,setUp
|
||||
|
||||
# List of valid names for the first argument in a class method.
|
||||
valid-classmethod-first-arg=cls
|
||||
|
||||
# List of valid names for the first argument in a metaclass class method.
|
||||
valid-metaclass-classmethod-first-arg=mcs
|
||||
|
||||
# List of member names, which should be excluded from the protected access
|
||||
# warning.
|
||||
exclude-protected=_asdict,_fields,_replace,_source,_make
|
||||
|
||||
|
||||
[IMPORTS]
|
||||
|
||||
# Deprecated modules which should not be used, separated by a comma
|
||||
deprecated-modules=optparse
|
||||
|
||||
# Create a graph of every (i.e. internal and external) dependencies in the
|
||||
# given file (report RP0402 must not be disabled)
|
||||
import-graph=
|
||||
|
||||
# Create a graph of external dependencies in the given file (report RP0402 must
|
||||
# not be disabled)
|
||||
ext-import-graph=
|
||||
|
||||
# Create a graph of internal dependencies in the given file (report RP0402 must
|
||||
# not be disabled)
|
||||
int-import-graph=
|
||||
|
||||
|
||||
[DESIGN]
|
||||
|
||||
# Maximum number of arguments for function / method
|
||||
max-args=5
|
||||
|
||||
# Argument names that match this expression will be ignored. Default to name
|
||||
# with leading underscore
|
||||
ignored-argument-names=_.*
|
||||
|
||||
# Maximum number of locals for function / method body
|
||||
max-locals=15
|
||||
|
||||
# Maximum number of return / yield for function / method body
|
||||
max-returns=6
|
||||
|
||||
# Maximum number of branch for function / method body
|
||||
max-branches=12
|
||||
|
||||
# Maximum number of statements in function / method body
|
||||
max-statements=50
|
||||
|
||||
# Maximum number of parents for a class (see R0901).
|
||||
max-parents=7
|
||||
|
||||
# Maximum number of attributes for a class (see R0902).
|
||||
max-attributes=7
|
||||
|
||||
# Minimum number of public methods for a class (see R0903).
|
||||
min-public-methods=2
|
||||
|
||||
# Maximum number of public methods for a class (see R0904).
|
||||
max-public-methods=20
|
||||
|
||||
# Maximum number of boolean expressions in a if statement
|
||||
max-bool-expr=5
|
||||
|
||||
|
||||
[EXCEPTIONS]
|
||||
|
||||
# Exceptions that will emit a warning when being caught. Defaults to
|
||||
# "Exception"
|
||||
overgeneral-exceptions=Exception
|
||||
@@ -1,29 +1,57 @@
|
||||
# After changing this file, check it on:
|
||||
# http://lint.travis-ci.org/
|
||||
|
||||
language: python
|
||||
python:
|
||||
- 3.4
|
||||
sudo: false
|
||||
cache: pip
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- gir1.2-pango-1.0
|
||||
- gir1.2-gtk-3.0
|
||||
- xdg-utils
|
||||
- librsvg2-common
|
||||
- libglib2.0-dev
|
||||
- intltool
|
||||
# - python3-gobject Provided by python3-gi
|
||||
- python3-gi
|
||||
- python3-cairo
|
||||
- python3-gi-cairo
|
||||
- python3-bsddb3
|
||||
- python3-dev
|
||||
- python3-nose
|
||||
- python3-mock
|
||||
|
||||
language: c
|
||||
#python:
|
||||
# - 3.3
|
||||
# - 3.4
|
||||
before_install:
|
||||
- pip install --upgrade pip
|
||||
- pip install --upgrade setuptools wheel nose coverage codecov
|
||||
|
||||
install:
|
||||
- git clone --depth=50 --branch=master git://github.com/gramps-project/gramps.git gramps-project/gramps
|
||||
- cd gramps-project/gramps
|
||||
- time sudo apt-get update
|
||||
- travis_retry sudo apt-get install gir1.2-pango gir1.2-gtk xdg-utils librsvg2-common libglib2.0-dev intltool
|
||||
- travis_retry sudo apt-get install python3-gobject python3-gi python3-cairo python3-gi-cairo python3-bsddb3 python3-dev python3-nose
|
||||
- travis_retry pip install --upgrade pillow
|
||||
- travis_retry pip install pyicu==1.8
|
||||
|
||||
- travis_retry curl https://bootstrap.pypa.io/get-pip.py | sudo python3
|
||||
- travis_retry sudo pip3 install Django==1.7
|
||||
- travis_retry sudo pip3 install pyicu==1.8
|
||||
- travis_retry sudo pip3 install mock
|
||||
- python3 setup.py build
|
||||
# - cd $TRAVIS_BUILD_DIR
|
||||
# $TRAVIS_BUILD_DIR is set to the location of the cloned repository:
|
||||
# for example: /home/travis/build/gramps-project/gramps
|
||||
- git clone -b master https://github.com/srossross/meta
|
||||
- python setup.py build
|
||||
|
||||
#before_script:
|
||||
before_script:
|
||||
# - sudo Xvfb :99 -ac &
|
||||
# - export DISPLAY=:99
|
||||
- mkdir -p ~/.gramps/grampsdb/
|
||||
|
||||
script:
|
||||
- mkdir -p /home/travis/.gramps/grampsdb/
|
||||
- DJANGO_SETTINGS_MODULE=gramps.webapp.settings nosetests3 --exclude=TestcaseGenerator --exclude=vcard --exclude=merge_ref_test gramps
|
||||
# --exclude=TestUser because of older version of mock
|
||||
# without configure_mock
|
||||
- PYTHONPATH=meta GRAMPS_RESOURCES=. nosetests3 --nologcapture --with-coverage --cover-package=gramps --exclude=TestcaseGenerator --exclude=vcard --exclude=merge_ref_test --exclude=user_test gramps
|
||||
- if git --no-pager grep --color -n --full-name '[ ]$' -- \*.py; then
|
||||
echo "ERROR - Trailing whitespace found in source file(s)";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
after_success:
|
||||
- codecov
|
||||
|
||||
|
||||
@@ -212,7 +212,7 @@ their own plugins which could be new reports, charts, or research tools.
|
||||
|
||||
18. In what formats can Gramps output its reports?
|
||||
|
||||
Text reports are available in HTML, PDF, ODT, LaTeX, and RTF formats. Graphical reports (charts and diagrams) are available in PostScript, PDF, SVG, ODS, and GraphViz formats.
|
||||
Text reports are available in HTML, PDF, ODT, LaTeX, and RTF formats. Graphical reports (charts and diagrams) are available in PostScript, PDF, SVG, ODS, and Graphviz formats.
|
||||
|
||||
|
||||
19. How can I change the default language in reports?
|
||||
|
||||
@@ -25,7 +25,5 @@ able to run gramps from the source directory without setting PYTHONPATH
|
||||
|
||||
From this position, import gramps works great
|
||||
"""
|
||||
import os
|
||||
os.environ['GRAMPS_RESOURCES'] = os.path.dirname(os.path.abspath(__file__))
|
||||
import gramps.grampsapp as app
|
||||
app.main()
|
||||
|
||||
@@ -91,12 +91,6 @@ alternative location on windows, supply the --root argument to setup.py
|
||||
|
||||
For example:
|
||||
python setup.py install --root ~/test
|
||||
or
|
||||
python setup.py install --root ~/test --enable-packager-mode
|
||||
|
||||
The last option, --enable-packager-mode, is needed if you want to disable
|
||||
execution of post-install mime processing. If you don't have root/admin
|
||||
access, this will be needed
|
||||
|
||||
Packager's issues
|
||||
------------------
|
||||
@@ -104,3 +98,9 @@ There is a MANIFEST.in file to indicate the work needed.
|
||||
To create a source distribution run:
|
||||
|
||||
python setup.py sdist
|
||||
|
||||
If Gramps is built outside of the source tree in a temporary location (e.g. when
|
||||
packaging for a distribution), the --resourcepath option can be used to specify
|
||||
the path to the installed location of the Gramps resources (e.g. /usr/share):
|
||||
|
||||
python setup.py install --resourcepath=/usr/share
|
||||
|
||||
@@ -22,11 +22,9 @@ recursive-include windows *
|
||||
|
||||
# Remove files created in the build
|
||||
exclude data/tips.xml
|
||||
exclude gramps/plugins/lib/holidays.xml
|
||||
exclude data/holidays.xml
|
||||
exclude po/.intltool-merge-cache
|
||||
global-exclude *.pyc
|
||||
global-exclude *.pyo
|
||||
|
||||
# Remove directories which should not be included in the distribution
|
||||
prune gramps/guiQML
|
||||
#prune gramps/webapp
|
||||
|
||||
@@ -1,3 +1,189 @@
|
||||
2015-05-01
|
||||
Version 4.1.3, "Thou shalt not count to five", a maintenance release.
|
||||
* Fix db upgrade failure
|
||||
* GtkDialog mapped without a transient parent
|
||||
* [Gedcom} SUBN and SUBM record handling
|
||||
* [Gedcom] Import/export round trip causes lost information
|
||||
* [Gedcom] Entering a witness to an event such as marriage might be ignored
|
||||
* [Gedcom] Gramps can't import estim. date period exported by itself
|
||||
* [Gedcom] 1/4 and 1/2 ANSEL characters not supported on importing ANSEL
|
||||
* [Gedcom] Importing file containing multibyte UTF-8 characters fails
|
||||
* [Gedcom] Import fails for ANSI file under python 3
|
||||
* [Gedcom] Failure importing ANSEL encoded gedcom file.
|
||||
* [Gedcom] Characters ignored on a Gedcom encoded ANSI (cp1252 West Europe, USA)
|
||||
* [Gedcom] NameError in importer
|
||||
* [Gedcom] Event address is lost on import, i.e. disconnected from event
|
||||
* Crash on geneweb export with python3
|
||||
* GuiColorOption missing avail-changed event handler
|
||||
* Bad generation of [timeline report] ODT files since 4.0.0
|
||||
* Fix bad handle in explanation note for unknown event
|
||||
* Fix spurious generation of empty 'Alternative Name' in place.merge()
|
||||
* Support creating directories in various scenarios
|
||||
* Attempting to add a bookmark causes an error
|
||||
* Long series of "unhandled exception" popup boxes while doing a check & repair
|
||||
* Crash when trying to link existing place as an enclosing place using P0001 number
|
||||
* HTML view fails to load
|
||||
* Relationship Graph crashes
|
||||
* Python3 needs new_subpixbuf not subpixbuf
|
||||
* Regression: running gramps from crontab fails
|
||||
* tag_map is not initialized
|
||||
* Some labels now fit better on citations sidebar filter
|
||||
* Event columns in web narrative are too narrow
|
||||
* Problem by start program (launcher)
|
||||
* Translation string missing in Not Related tool for help and close button
|
||||
* Date format month/year is not well reported at editing time [in Italian]
|
||||
* Fix unknown gender relationships handler for the french locale
|
||||
* Fix a handle type bug on sidebar filter
|
||||
* Tidy up About dialog
|
||||
* Cleanup on some man files
|
||||
* Convert some remaining unicode literals
|
||||
* Fix mac menubar setting
|
||||
* Enable python3 to run po/update_po.py
|
||||
* Updated translations: cs, de, fr, is, nl
|
||||
|
||||
2015-02-28
|
||||
Version 4.1.2, "That's no ordinary rabbit", a maintenance release.
|
||||
* Error converting python2 utf-8 strings to python3 str when loading data from database
|
||||
* Removing a parent place from a place leaves a dangling reference
|
||||
* Error during checking the database
|
||||
* Stubborn blank space in database won't be removed, fix removing rows in flat list views
|
||||
* Database upgrade fails if default media path is not set
|
||||
* Error converting database after upgrade to Gramps 4.1.1
|
||||
* Error in a single place within the places section
|
||||
* Entries from the add-or-choose selector of Place/Source/Media/Note cannot be dragged
|
||||
* Enclosing places tab should work like other similar tabs, new place reference editor
|
||||
* Association editor refuses dropped persons
|
||||
* Error on opening twice an object from clipboard
|
||||
* Incorrect spacing in export assistant file chooser
|
||||
* New Event types are saved as a disordered list
|
||||
* Always display main participants
|
||||
* Place titles can now be generated on-the-fly by a place displayer, default is still to use the place title field
|
||||
* GEDCOM import of embedded notes attached to media does not work
|
||||
* Crash on Ancestry.com .ged import; consistent.
|
||||
* Errors handling owner/submitter information in GEDCOM files.
|
||||
Only import researcher from GEDCOM or XML if the family tree was originally empty.
|
||||
* GEDCOM export does not export media attached to citations.
|
||||
* The fanchart view crashes if max generation is set to 1 away.
|
||||
* Sidebar Filters do not match placetypes in new placeview, two new filter rules (HasTitle, HasData)
|
||||
* Fix bug when family has no parents
|
||||
* Fix bad handle in explanation note for unknown event
|
||||
* Some labels now fit better on citations sidebar filter
|
||||
* Views in Geography should not always use the last option set by the user
|
||||
* Request for keyboard-controlled zoom on Geography view
|
||||
* Error geography view - Displaying main menu
|
||||
* Configure screen needs a file selector to select directory for "offline mode" files
|
||||
* Filter panel on geography view displays improperly
|
||||
* Detailed descendant report crashes, bibliography (citations)
|
||||
* Can't disable box shadow in SVG descendant tree
|
||||
* Descendant tree graphical report, syntax error in svg output
|
||||
* Regression: Complete Individual report has partially-untranslated output
|
||||
* Events Page in Narrative Report not working
|
||||
* Gramps freeze after defining a report style with German cm values
|
||||
* Various problems with docgen.TextDoc.add_media_object
|
||||
* Report event attribute name is not translated
|
||||
* Records Gramplet uses wrong text
|
||||
* Closing detached gramplet causes python to crash
|
||||
* Cannot reduce size of gramplets detached from a gramplet bar
|
||||
* Gramplets don't fill window when detached from dashboard
|
||||
* ImageMetadata doesn't show metadata
|
||||
* typo on GLib call, used by an addon only
|
||||
* Fix error setting gramplet tab label
|
||||
* Check for active person in session log gramplet
|
||||
* Spurious spaces in CLI List Family Trees, tab delimited output.
|
||||
Print statements changed to assemble the whole line before output.
|
||||
* Gtk3 warning and custom undoableentry widget, see bugzilla_id 644927
|
||||
* Warnings: deprecated Gtk properties and errors loading theme icon.
|
||||
Fix: database manager dialog is inconsistent for older gtk+3 versions.
|
||||
Warnings: deprecated Gtk properties and errors loading theme icon.
|
||||
Fix: Error loading theme icon 'gtk-apply'
|
||||
* gramps fails to start with gtk+-3.13.3
|
||||
* Places in data.gramps are not in the new Place hierarchy
|
||||
* Upgrade the version of some dependencies for Mac OS and Windows OS.
|
||||
* Keywords entry in gramps.desktop does not work
|
||||
* 'Available Gramps Updates for Addons' window not on top
|
||||
* Some text not translatable in context menu fancharts
|
||||
* Fix for Unit test
|
||||
* date inflections in _datehandler.py, update for Ukrainian, Russian, Croatian
|
||||
* Better support for Serbian and Turkish locales
|
||||
* New translation: Icelandic
|
||||
* Re-enable Turkish support after a major review. Thank you Uğur.
|
||||
* Updated translations: cs, de, eo, fi, fr, hr, hu, it, nb, nn, ru, sk, sr, sv, uk, zh_CN
|
||||
|
||||
2014-10-24
|
||||
Version 4.1.1, "MachineThatGoes...Ping!", a maintenance release.
|
||||
* Fix custom place types in the place editor
|
||||
* Allow place type combobox to receive focus.
|
||||
* Store custom place types in the metadata table
|
||||
* Fix place type for places without a main location
|
||||
* Fix bug adding parent places to a new place
|
||||
* Prevent user creating a cycle in the place hierarchy
|
||||
* Avoid infinite loop when place cycle encountered
|
||||
* Prevent creation of a place cycle when merging
|
||||
* Fix error when no place is selected
|
||||
* Check that a place has been selected when saving.
|
||||
* Use the standard place selection widget to be consistent.
|
||||
* Add a new Top Level place through the Place Reference Editor
|
||||
* Fix backlinks code in place report
|
||||
* Backlinks for places can now also be places as well as events.
|
||||
* Fix check and repair tool for empty placerefs
|
||||
* Update location utilities to work with proxies
|
||||
* Place report does not run
|
||||
* Update place details gramplet
|
||||
* Locations are now displayed in a new separate gramplet.
|
||||
* Add check for empty handle in gramplets
|
||||
* Check DB lock on the recent opened trees list
|
||||
* Sidebarfilter gramplet does not fit well into People, Events or Media views
|
||||
* Fix new event default type considering existing events with *default* role
|
||||
* Rebuild secondary indexes after database upgrade
|
||||
* Importing gedcom files containing multibyte UTF-8 characters fails
|
||||
* Ahnentafel Report did not use Christening Date if no Birth Date
|
||||
* [Narweb:] Missing webpage for media under some circumstances
|
||||
* Fix narrated web report with gendex option enabled
|
||||
* Tweak to "default" CSS choice for the narrated web report
|
||||
* Invalid link for Merge citation Help button
|
||||
* Fix 'todo' gramplet
|
||||
* Fix path when using drag & drop to add media
|
||||
* Limit the number of generations displayed in the ancestor gramplet
|
||||
* Export of a subset of the tree failed
|
||||
* Fix issues in python3, and bytes-string mismatch with ICU
|
||||
* Fix url/uri handling with non-ascii characters under linux and mac
|
||||
* Fix name format on graphical reports
|
||||
* Fix name format on textual reports
|
||||
* Better GUI support for embeded custom attributes list on media object
|
||||
* Better keys for search under linux shells (.desktop file)
|
||||
* 'Unknown' person in detailed ancestor report can not be translated
|
||||
* Translations don't show in many labels
|
||||
* Ensure python text domain gets the right encoding.
|
||||
* Translate some punctuation marks
|
||||
* Various fixes around Geography and osmgpsmap
|
||||
* Allow gramplets to be displayed in the dashboard only
|
||||
* Update FSF address
|
||||
* Add Arabic-script, Islamic-date, Thai script, Married Name and more dates examples
|
||||
* Fix on czech date handler for calculated and estimated dates
|
||||
* Enhance Serbian date handler to handle Cyrillic dates
|
||||
* Simplify Canadian Ash Wednesday holiday
|
||||
* Re-enable Esperanto support (for non-Windows OS only) after a large review
|
||||
* New translation: Serbian
|
||||
* Various fixes in German and Czech
|
||||
* Updated translations: ar, cs, de, fi, fr, it, sv
|
||||
|
||||
2014-06-15
|
||||
Version 4.1.0, the "Name go in book", new major release.
|
||||
* GEP 006: Better Place handling
|
||||
* New Tags support on Event, Place, Repository, Source, and Citation
|
||||
* Source/Citation Data becomes Attributes
|
||||
* Add optional support for checksum on Media object
|
||||
* New place hierarchies model
|
||||
* By default, you can choose navigator modes with a drop down.
|
||||
* New Place editor
|
||||
* Enhanced MediaReference Editor
|
||||
* Some debug tools move to new gramplets
|
||||
* Full Python 3 support
|
||||
* New functions and widgets related to Place and Media selections
|
||||
* Enhancements on to_struct()
|
||||
* New methods on Date handlers
|
||||
* Better support on translation for inflection rules
|
||||
|
||||
2014-05-22
|
||||
Version 4.0.4, "Not the comfy chair", a maintenance release.
|
||||
* Upgrade to db version 17 fails in Python 3 due to use of iteritems
|
||||
@@ -174,8 +360,8 @@ Version 3.4.3 of Gramps! "Whenever life gets you down, Mrs. Brown", a maintenanc
|
||||
* GEDCOM Repositories not imported correctly from FTM for Windows and Heredis.
|
||||
* Fixes to a number of errors in filtering notes.
|
||||
* Fix some errors in determining whether someone is alive (e.g. for filtering out alive people).
|
||||
* Make availability of GraphViz settings depend on output format
|
||||
* Improve the descriptions and tooltip for GraphViz aspect ratio option
|
||||
* Make availability of Graphviz settings depend on output format
|
||||
* Improve the descriptions and tooltip for Graphviz aspect ratio option
|
||||
* Fixed update problems with citation bottombar gramplet (bug #6336)
|
||||
* Fixed Open Document Text output in Book report (bug #6457)
|
||||
* A number of changes to Narrative Web:
|
||||
|
||||
@@ -1,93 +0,0 @@
|
||||
Please read the COPYING file first.
|
||||
|
||||
Please read the INSTALL file if you intend to build from source.
|
||||
|
||||
Requirements
|
||||
--------------------------------
|
||||
The following packages *MUST* be installed in order for Gramps to work:
|
||||
Python 3.2 or greater
|
||||
GTK 3.10 or greater
|
||||
pygobject 3.3.2 or greater
|
||||
cairo, pango, pangocairo with introspection bindings (the gi packages)
|
||||
librsvg2 (svg icon view)
|
||||
xdg-utils
|
||||
bsddb3
|
||||
|
||||
The following package is needed for full translation of the interface
|
||||
to your language:
|
||||
language-pack-gnome-xx
|
||||
Translation of GTK elements to your language, with
|
||||
xx your language code; e.g. for Dutch you need
|
||||
language-pack-gnome-nl. The translation of the
|
||||
Gramps strings is included with the gramps source.
|
||||
|
||||
|
||||
The following packages are *STRONGLY RECOMMENDED* to be installed:
|
||||
|
||||
osmgpsmap Used to show maps in the geography view.
|
||||
It may be osmgpsmap, osm-gps-map, or python-osmgpsmap,
|
||||
but the Python bindings for this must also be present.
|
||||
Without this the GeoView will not be active, see
|
||||
http://gramps-project.org/wiki/index.php?title=Gramps_4.1_Wiki_Manual_-_Main_Window#Geography_Category
|
||||
|
||||
GraphViz Enable creation of graphs using GraphViz engine.
|
||||
Without this, three reports cannot be run.
|
||||
Obtain it from: http://www.graphviz.org
|
||||
|
||||
PyICU Improves localised sorting in Gramps. In particular, this
|
||||
applies to sorting in the various views and in the
|
||||
Narrative Web output. It is particularly helpful for
|
||||
non-Latin characters, for non-English locales and on MS
|
||||
Windows and Mac OS X platforms. If it is not available,
|
||||
sorting is done through built-in libraries. PyICU is
|
||||
fairly widely available through the package managers of
|
||||
distributions. See http://pyicu.osafoundation.org/
|
||||
(These are Python bindings for the ICU package.)
|
||||
|
||||
The following packages are optional
|
||||
|
||||
gtkspell Enable spell checking in the notes. Gtkspell depends on
|
||||
enchant. A version of gtkspell with gobject introspection
|
||||
is needed, so minimally version 3.0.0
|
||||
|
||||
rcs The GNU Revision Control System (RCS) can be used to manage
|
||||
multiple revisions of your family trees. See info at
|
||||
http://www.gramps-project.org/wiki/index.php?title=Gramps_4.1_Wiki_Manual_-_Manage_Family_Trees#Archiving_a_Family_Tree
|
||||
Only rcs is needed, NO python bindings are required
|
||||
|
||||
PIL Python Image Library is needed to crop
|
||||
images and also to convert non-JPG images to
|
||||
JPG so as to include them in LaTeX output.
|
||||
(For Python3 a different source may be needed,
|
||||
python-imaging or python-pillow or python3-pillow)
|
||||
|
||||
GExiv2 Enables Gramps to manage Exif metadata embedded in your
|
||||
media. Gramps needs version 0.5 or greater.
|
||||
See http://www.gramps-project.org/wiki/index.php?title=GEPS_029:_GTK3-GObject_introspection_Conversion#GExiv2_for_Image_metadata
|
||||
|
||||
ttf-freefont More font support in the reports
|
||||
|
||||
gir-webkit Required for the (user-downloadable) HtmlView plugin
|
||||
|
||||
goocanvas2 Required for the (user-downloadable) GraphView plugin
|
||||
|
||||
No longer needed in 4.1:
|
||||
?
|
||||
No longer needed in 4.0:
|
||||
pygoocanvas, pygtk, pyexiv2
|
||||
No longer needed in 3.3:
|
||||
python-enchant Enchant
|
||||
No longer needed in 3.2:
|
||||
python glade bindings
|
||||
No longer needed in 3.1:
|
||||
yelp Gnome help browser. No offline help is shipped see Gramps website for User manual
|
||||
|
||||
|
||||
Documentation
|
||||
---------------------------------
|
||||
The User Manual is maintained on the Gramps website,
|
||||
http://www.gramps-project.org/wiki/index.php?title=User_manual
|
||||
|
||||
--------------------------------
|
||||
The Gramps Project
|
||||
http://gramps-project.org
|
||||
@@ -0,0 +1,140 @@
|
||||
The Gramps Project ( https://gramps-project.org ) [](https://travis-ci.org/gramps-project/gramps)[](https://codecov.io/github/gramps-project/gramps?branch=master)
|
||||
===================
|
||||
We strive to produce a genealogy program that is both intuitive for hobbyists and feature-complete for professional genealogists.
|
||||
|
||||
Please read the **COPYING** file first.
|
||||
|
||||
Please read the **INSTALL** file if you intend to build from source.
|
||||
|
||||
Requirements
|
||||
============
|
||||
The following packages **MUST** be installed in order for Gramps to work:
|
||||
|
||||
* **Python** 3.2 or greater - The programming language used by Gramps. https://www.python.org/
|
||||
* **GTK** 3.10 or greater - A cross-platform widget toolkit for creating graphical user interfaces. http://www.gtk.org/
|
||||
* **pygobject** 3.12 or greater - Python Bindings for GLib/GObject/GIO/GTK+ https://wiki.gnome.org/Projects/PyGObject
|
||||
|
||||
The following three packages with GObject Introspection bindings (the gi packages)
|
||||
|
||||
* **cairo** - a 2D graphics library with support for multiple output devices. http://cairographics.org/
|
||||
* **pango** - a library for laying out and rendering of text, with an emphasis on internationalization. http://www.pango.org/
|
||||
* **pangocairo** - Allows you to use Pango with Cairo http://www.pango.org/
|
||||
|
||||
* **librsvg2** - (SVG icon view) a library to render SVG files using cairo. http://live.gnome.org/LibRsvg
|
||||
* **xdg-utils** - Desktop integration utilities from freedesktop.org
|
||||
* **bsddb3** - Python bindings for Oracle Berkeley DB https://pypi.python.org/pypi/bsddb3/
|
||||
|
||||
|
||||
The following package is needed for full translation of the interface
|
||||
to your language:
|
||||
|
||||
* **language-pack-gnome-xx**
|
||||
|
||||
Translation of GTK elements to your language, with
|
||||
xx your language code; e.g. for Dutch you need
|
||||
language-pack-gnome-nl. The translation of the
|
||||
Gramps strings is included with the gramps source.
|
||||
|
||||
|
||||
The following packages are **STRONGLY RECOMMENDED** to be installed:
|
||||
--------------------------------------------------------------------
|
||||
* **osmgpsmap**
|
||||
|
||||
Used to show maps in the geography view.
|
||||
It may be osmgpsmap, osm-gps-map, or python-osmgpsmap,
|
||||
but the Python bindings for this must also be present.
|
||||
Without this the GeoView will not be active, see
|
||||
https://gramps-project.org/wiki/index.php?title=Gramps_4.2_Wiki_Manual_-_Categories#Geography_Category
|
||||
|
||||
* **Graphviz**
|
||||
|
||||
Enable creation of graphs using Graphviz engine.
|
||||
Without this, three reports cannot be run.
|
||||
Obtain it from: http://www.graphviz.org
|
||||
|
||||
* **PyICU**
|
||||
|
||||
Improves localised sorting in Gramps. In particular, this
|
||||
applies to sorting in the various views and in the
|
||||
Narrative Web output. It is particularly helpful for
|
||||
non-Latin characters, for non-English locales and on MS
|
||||
Windows and Mac OS X platforms. If it is not available,
|
||||
sorting is done through built-in libraries. PyICU is
|
||||
fairly widely available through the package managers of
|
||||
distributions. See http://pyicu.osafoundation.org/
|
||||
(These are Python bindings for the ICU package.
|
||||
https://pypi.python.org/pypi/PyICU/)
|
||||
|
||||
The following packages are optional:
|
||||
------------------------------------
|
||||
* **gtkspell**
|
||||
|
||||
Enable spell checking in the notes. Gtkspell depends on
|
||||
enchant. A version of gtkspell with gobject introspection
|
||||
is needed, so minimally version 3.0.0
|
||||
|
||||
* **rcs**
|
||||
|
||||
The GNU Revision Control System (RCS) can be used to manage
|
||||
multiple revisions of your family trees. See info at
|
||||
https://gramps-project.org/wiki/index.php?title=Gramps_4.2_Wiki_Manual_-_Manage_Family_Trees#Archiving_a_Family_Tree
|
||||
Only rcs is needed, NO python bindings are required
|
||||
|
||||
* **PIL**
|
||||
|
||||
Python Image Library is needed to crop
|
||||
images and also to convert non-JPG images to
|
||||
JPG so as to include them in LaTeX output.
|
||||
(For Python3 a different source may be needed,
|
||||
python-imaging or python-pillow or python3-pillow)
|
||||
|
||||
* **GExiv2**
|
||||
|
||||
Enables Gramps to manage Exif metadata embedded in your
|
||||
media. Gramps needs version 0.5 or greater.
|
||||
See https://www.gramps-project.org/wiki/index.php?title=GEPS_029:_GTK3-GObject_introspection_Conversion#GExiv2_for_Image_metadata
|
||||
|
||||
* **ttf-freefont**
|
||||
|
||||
More font support in the reports
|
||||
|
||||
Optional packages required by Third-party Addons
|
||||
------------------------------------------------
|
||||
|
||||
**Third-party Addons are written by users and developers and unless stated are not officially part of Gramps.**
|
||||
For more information about Addons see: https://gramps-project.org/wiki/index.php?title=Third-party_Plugins
|
||||
|
||||
Prerequistes required for the following Addons to work:
|
||||
|
||||
* **Family Sheet** - Requires: PIL (Python Imaging Library) or PILLOW.
|
||||
( https://gramps-project.org/wiki/index.php?title=Family_Sheet )
|
||||
|
||||
* **Graph View** - Requires: PyGoocanvas and Goocanvas.
|
||||
( https://gramps-project.org/wiki/index.php?title=Graph_View )
|
||||
|
||||
* **PedigreeChart** - Can optionally use - numpy if installed
|
||||
( https://gramps-project.org/wiki/index.php?title=PedigreeChart )
|
||||
|
||||
No longer needed:
|
||||
-----------------
|
||||
* Since Gramps 4.2:
|
||||
**gir-webkit**
|
||||
|
||||
* Since Gramps 4.0:
|
||||
**pygoocanvas, pygtk, pyexiv2**
|
||||
|
||||
* Since Gramps 3.3:
|
||||
**python-enchant Enchant**
|
||||
|
||||
* Since Gramps 3.2:
|
||||
**python glade bindings**
|
||||
|
||||
* Since Gramps 3.1:
|
||||
**yelp** - Gnome help browser. No offline help is shipped see Gramps website for User manual
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
The User Manual is maintained on the Gramps website:
|
||||
|
||||
* https://www.gramps-project.org/wiki/index.php?title=User_manual
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
_gramps()
|
||||
{
|
||||
local cur prev opts
|
||||
COMPREPLY=()
|
||||
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||
opts="--action --config --create --databases --debug --export --format --help --import --open --options --quiet --remove --show --usage --version --yes -? -C -L -O -a -b -c -d -e -f -i -l -p -q -r -s -t -u -v -y"
|
||||
if [[ ${cur} == -* ]] ; then
|
||||
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
||||
return 0
|
||||
elif [[ ${cur} == --open ]] ; then
|
||||
local IFS=$'\n'
|
||||
local names=($( gramps -l | grep \" | cut -d\ -f4- ))
|
||||
COMPREPLY=( $(compgen --W "${names[*]}" -- ${cur}) )
|
||||
return 0
|
||||
else
|
||||
local IFS=$'\n'
|
||||
local names=($( gramps -l | grep \" | cut -d\ -f4- ))
|
||||
COMPREPLY=( $(compgen -W "${names[*]}" -- ${cur}) )
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
complete -F _gramps gramps
|
||||
@@ -1,18 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<application>
|
||||
<id type="desktop">gramps.desktop</id>
|
||||
<licence>CC0</licence>
|
||||
<description>
|
||||
<_p>Gramps is a genealogy program that is both intuitive for hobbyists and feature-complete for professional genealogists.</_p>
|
||||
<_p>It gives you the ability to record the many details of the life of an individual as well as the complex relationships between various people, places and events.</_p>
|
||||
<_p>All of your research is kept organized, searchable and as precise as you need it to be.</_p>
|
||||
</description>
|
||||
<url type="homepage">http://gramps-project.org/</url>
|
||||
<screenshots>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/5/5f/AppData1.png</screenshot>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/6/68/AppData2.png</screenshot>
|
||||
<screenshot type="default" width="1226" height="740">http://www.gramps-project.org/wiki/images/e/e9/AppData3.png</screenshot>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/6/68/AppData4.png</screenshot>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/5/50/AppData5.png</screenshot>
|
||||
</screenshots>
|
||||
</application>
|
||||
<component type="desktop">
|
||||
<id>gramps.desktop</id>
|
||||
<metadata_license>CC0</metadata_license>
|
||||
<name>Gramps</name>
|
||||
<summary>Genealogical research program</summary>
|
||||
|
||||
<description>
|
||||
<_p>Gramps is a genealogy program that is both intuitive for hobbyists and feature-complete for professional genealogists.</_p>
|
||||
<_p>It gives you the ability to record the many details of the life of an individual as well as the complex relationships between various people, places and events.</_p>
|
||||
<_p>All of your research is kept organized, searchable and as precise as you need it to be.</_p>
|
||||
</description>
|
||||
|
||||
<url type="homepage">https://gramps-project.org/</url>
|
||||
<url type="bugtracker">https://gramps-project.org/bugs/</url>
|
||||
<url type="help">https://gramps-project.org/wiki/index.php?title=Main_page</url>
|
||||
<project_license>GPL-2.0+</project_license>
|
||||
<developer_name>Gramps Development Team</developer_name>
|
||||
|
||||
<screenshots>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/5/5f/AppData1.png</screenshot>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/6/68/AppData2.png</screenshot>
|
||||
<screenshot type="default" width="1226" height="740">http://www.gramps-project.org/wiki/images/e/e9/AppData3.png</screenshot>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/6/68/AppData4.png</screenshot>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/5/50/AppData5.png</screenshot>
|
||||
</screenshots>
|
||||
|
||||
<provides>
|
||||
<binary>gramps</binary>
|
||||
</provides>
|
||||
|
||||
</component>
|
||||
|
||||
@@ -25,15 +25,15 @@
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the Document Type Definition file for v1.6.0
|
||||
This is the Document Type Definition file for v1.7.1
|
||||
of the GRAMPS XML genealogy data format.
|
||||
Please use the following formal public identifier to identify it:
|
||||
|
||||
"-//GRAMPS//DTD GRAMPS XML V1.6.0//EN"
|
||||
"-//GRAMPS//DTD GRAMPS XML V1.7.1//EN"
|
||||
|
||||
For example:
|
||||
<!DOCTYPE database PUBLIC "-//GRAMPS//DTD GRAMPS XML V1.6.0//EN"
|
||||
"http://gramps-project.org/xml/1.6.0/grampsxml.dtd"
|
||||
<!DOCTYPE database PUBLIC "-//GRAMPS//DTD GRAMPS XML V1.7.1//EN"
|
||||
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd"
|
||||
[...]>
|
||||
-->
|
||||
|
||||
@@ -62,7 +62,7 @@ DATABASE
|
||||
<!ELEMENT database (header, name-formats?, tags?, events?, people?, families?,
|
||||
citations?, sources?, places?, objects?, repositories?,
|
||||
notes?, bookmarks?, namemaps?)>
|
||||
<!ATTLIST database xmlns CDATA #FIXED "http://gramps-project.org/xml/1.6.0/">
|
||||
<!ATTLIST database xmlns CDATA #FIXED "http://gramps-project.org/xml/1.7.1/">
|
||||
|
||||
|
||||
<!-- ************************************************************
|
||||
@@ -122,6 +122,7 @@ GENDER has values of M, F, or U.
|
||||
|
||||
<!ELEMENT name (first?, call?, surname*, suffix?, title?, nick?, familynick?, group?,
|
||||
(daterange|datespan|dateval|datestr)?, noteref*, citationref*)>
|
||||
<!-- (Unknown|Also Know As|Birth Name|Married Name|Other Name) -->
|
||||
<!ATTLIST name
|
||||
alt (0|1) #IMPLIED
|
||||
type CDATA #IMPLIED
|
||||
@@ -138,6 +139,8 @@ GENDER has values of M, F, or U.
|
||||
<!ELEMENT familynick (#PCDATA)>
|
||||
<!ELEMENT group (#PCDATA)>
|
||||
<!ELEMENT surname (#PCDATA)>
|
||||
<!-- (Unknown|Inherited|Given|Taken|Patronymic|Matronymic|Feudal|
|
||||
Pseudonym|Patrilineal|Matrilineal|Occupation|Location) -->
|
||||
<!ATTLIST surname
|
||||
prefix CDATA #IMPLIED
|
||||
prim (1|0) #IMPLIED
|
||||
@@ -196,12 +199,13 @@ FAMILY
|
||||
<!ELEMENT mother EMPTY>
|
||||
<!ATTLIST mother hlink IDREF #REQUIRED>
|
||||
|
||||
<!-- (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) -->
|
||||
<!ELEMENT childref (citationref*,noteref*)>
|
||||
<!ATTLIST childref
|
||||
hlink IDREF #REQUIRED
|
||||
priv (0|1) #IMPLIED
|
||||
mrel (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) #IMPLIED
|
||||
frel (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) #IMPLIED
|
||||
mrel CDATA #IMPLIED
|
||||
frel CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT type (#PCDATA)>
|
||||
@@ -248,20 +252,25 @@ PLACES
|
||||
|
||||
<!ELEMENT places (placeobj)*>
|
||||
|
||||
<!ELEMENT placeobj (ptitle?, code?, alt_name*, coord?, placeref*, location*,
|
||||
<!ELEMENT placeobj (ptitle?, pname+, code?, coord?, placeref*, location*,
|
||||
objref*, url*, noteref*, citationref*, tagref*)>
|
||||
<!ATTLIST placeobj
|
||||
id CDATA #IMPLIED
|
||||
handle ID #REQUIRED
|
||||
priv (0|1) #IMPLIED
|
||||
change CDATA #REQUIRED
|
||||
name CDATA #REQUIRED
|
||||
type CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT pname (daterange|datespan|dateval|datestr)?>
|
||||
|
||||
<!ATTLIST pname
|
||||
lang CDATA #IMPLIED
|
||||
value CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT ptitle (#PCDATA)>
|
||||
<!ELEMENT code (#PCDATA)>
|
||||
<!ELEMENT alt_name (#PCDATA)>
|
||||
|
||||
<!ELEMENT coord EMPTY>
|
||||
<!ATTLIST coord
|
||||
|
||||
@@ -25,13 +25,13 @@
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the RELAX NG schema for the Gramps XML genealogy data format.
|
||||
This is the RELAX NG schema for the GRAMPS XML genealogy data format.
|
||||
-->
|
||||
|
||||
|
||||
<grammar
|
||||
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
|
||||
ns="http://gramps-project.org/xml/1.6.0/"
|
||||
ns="http://gramps-project.org/xml/1.7.1/"
|
||||
xmlns="http://relaxng.org/ns/structure/1.0">
|
||||
|
||||
<start><element name="database">
|
||||
@@ -210,16 +210,7 @@
|
||||
</define>
|
||||
|
||||
<define name="child-rel">
|
||||
<choice>
|
||||
<value>Birth</value>
|
||||
<value>Adopted</value>
|
||||
<value>Stepchild</value>
|
||||
<value>Sponsored</value>
|
||||
<value>Foster</value>
|
||||
<value>None</value>
|
||||
<value>Other</value>
|
||||
<value>Unknown</value>
|
||||
</choice>
|
||||
<text/>
|
||||
</define>
|
||||
|
||||
<define name="name-content">
|
||||
@@ -230,13 +221,7 @@
|
||||
<optional><attribute name="priv">
|
||||
<ref name="priv-content"/>
|
||||
</attribute></optional>
|
||||
<optional><attribute name="type"><choice>
|
||||
<value>Unknown</value>
|
||||
<value>Also Known As</value>
|
||||
<value>Birth Name</value>
|
||||
<value>Married Name</value>
|
||||
<value>Other Name</value>
|
||||
</choice></attribute></optional>
|
||||
<optional><attribute name="type"><text/></attribute></optional>
|
||||
<optional><attribute name="sort"><text/></attribute></optional>
|
||||
<optional><attribute name="display"><text/></attribute></optional>
|
||||
<optional><element name="first"><text/></element></optional>
|
||||
@@ -265,20 +250,7 @@
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
</choice></attribute></optional>
|
||||
<optional><attribute name="derivation"><choice>
|
||||
<value>Unknown</value>
|
||||
<value>Inherited</value>
|
||||
<value>Given</value>
|
||||
<value>Taken</value>
|
||||
<value>Patronymic</value>
|
||||
<value>Matronymic</value>
|
||||
<value>Feudal</value>
|
||||
<value>Pseudonym</value>
|
||||
<value>Patrilineal</value>
|
||||
<value>Matrilineal</value>
|
||||
<value>Occupation</value>
|
||||
<value>Location</value>
|
||||
</choice></attribute></optional>
|
||||
<optional><attribute name="derivation"><text/></attribute></optional>
|
||||
<optional><attribute name="connector"><text/></attribute></optional>
|
||||
</define>
|
||||
|
||||
@@ -479,11 +451,12 @@
|
||||
|
||||
<define name="place-content">
|
||||
<ref name="primary-object"/>
|
||||
<attribute name="name"><text/></attribute>
|
||||
<attribute name="type"><text/></attribute>
|
||||
<optional><element name="ptitle"><text/></element></optional>
|
||||
<oneOrMore><element name="pname">
|
||||
<ref name="placename-content"/>
|
||||
</element></oneOrMore>
|
||||
<optional><element name="code"><text/></element></optional>
|
||||
<zeroOrMore><element name="alt_name"><text/></element></zeroOrMore>
|
||||
<optional><element name="coord">
|
||||
<attribute name="long"><text/></attribute>
|
||||
<attribute name="lat"><text/></attribute>
|
||||
@@ -772,6 +745,12 @@
|
||||
<text/>
|
||||
</define>
|
||||
|
||||
<define name="placename-content">
|
||||
<attribute name="value"><text/></attribute>
|
||||
<optional><attribute name="lang"><text/></attribute></optional>
|
||||
<optional><ref name="date-content"/></optional>
|
||||
</define>
|
||||
|
||||
<define name="placeref-content">
|
||||
<attribute name="hlink"><data type="IDREF"/></attribute>
|
||||
<optional><ref name="date-content"/></optional>
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
<date name="Възнесение господне" value="2010/5/13" type="religious" />
|
||||
<date name="Възнесение господне" value="2011/6/2" type="religious" />
|
||||
<date name="Възнесение господне" value="2012/5/24" type="religious" />
|
||||
</country>
|
||||
</country>
|
||||
<country _name="Canada">
|
||||
<date name="New Year's Day" value="*/1/1" type="national" />
|
||||
<date name="Groundhog Day" value="*/2/2" type="secular" />
|
||||
@@ -117,14 +117,14 @@
|
||||
<date name="Día de la Raza" value="*/10/12" type="national" />
|
||||
<date name="Todos los Santos" value="*/11/1" type="religious" />
|
||||
<date name="Inmaculada Concepción" value="*/12/8" type="religious" />
|
||||
<date name="Navidad" value="*/12/25" type="national" />
|
||||
<date name="Navidad" value="*/12/25" type="national" />
|
||||
</country>
|
||||
<country _name="China">
|
||||
<date name="Chinese New Year" value="2006/1/29" type="national" />
|
||||
</country>
|
||||
<country _name="Croatia">
|
||||
<date name="Nova godina" value="*/1/1" type="national" />
|
||||
<date name="Sveta tri kralja" value="*/1/6" type="national" />
|
||||
<date name="Sveta tri kralja" value="*/1/6" type="national" />
|
||||
<date name="Uskrs" value="> easter(y)" type="national" />
|
||||
<date name="Uskršnji ponedjeljak" value="> easter(y)" offset="1" type="national" />
|
||||
<date name="Dan rada" value="*/5/1" type="national" />
|
||||
@@ -404,7 +404,7 @@
|
||||
<date name="Ash Wednesday" value="> easter(y)" type="religious" offset="-46" />
|
||||
<date name="Mardi Gras" value="> easter(y)" type="religious" offset="-47" />
|
||||
<date name="Daylight Saving begins" value="> dst(y)[0]" type="informational" />
|
||||
<date name="Income Taxes due" value="*/4/15" type="national" if="date.weekday().__cmp__(4)-1" />
|
||||
<date name="Income Taxes due" value="*/4/15" type="national" if="cmp(date.weekday(),4)-1"/>
|
||||
<date name="Income Taxes due" value="*/4/16" type="national" if="date.weekday() == 0" />
|
||||
<date name="Income Taxes due" value="*/4/17" type="national" if="date.weekday() == 0" />
|
||||
<date name="Daylight Saving ends" value="> dst(y)[1]" type="informational" />
|
||||
@@ -481,7 +481,7 @@
|
||||
<date value="*/dec/26" type="national" name="Boxing Day"/>
|
||||
<date value="*/dec/25" type="national" offset="+2" name="Christmas Day Holiday" if="dow(y, m, d) > 5"/>
|
||||
<date value="*/dec/26" type="national" offset="+2" name="Boxing Day Holiday" if="dow(y, m, d) > 5"/>
|
||||
</country>
|
||||
</country>
|
||||
<country _name="Ukraine">
|
||||
<date value="*/1/1" type="national" name="Новий Рік"/>
|
||||
<date value="*/1/6" type="religious" name="Святий Вечір"/>
|
||||
@@ -1,859 +0,0 @@
|
||||
/*!
|
||||
* jQuery FlexBox $Version: 0.9.6 $
|
||||
*
|
||||
* Copyright (c) 2008-2010 Noah Heldman and Fairway Technologies (http://www.fairwaytech.com/flexbox)
|
||||
* Licensed under Ms-PL (http://www.codeplex.com/flexbox/license)
|
||||
*
|
||||
* $Date: 2010-11-24 01:02:00 PM $
|
||||
* $Rev: 0.9.6.1 $
|
||||
*/
|
||||
(function($) {
|
||||
$.flexbox = function(div, o) {
|
||||
|
||||
// TODO: in straight type-ahead mode (showResults: false), if noMatchingResults, dropdown appears after new match
|
||||
// TODO: consider having options.mode (select, which replaces html select; combobox; suggest; others?)
|
||||
// TODO: on resize (at least when wrapping within a table), the arrow is pushed down to the next line
|
||||
// TODO: check for boundary/value problems (such as minChars of -1) and alert them
|
||||
// TODO: add options for advanced paging template
|
||||
// TODO: general cleanup and refactoring, commenting
|
||||
// TODO: detailed Exception handling, logging
|
||||
// TODO: FF2, up arrow from bottom has erratic scroll behavior (if multiple flexboxes on page)
|
||||
// TODO: FF2 (and maybe IE7): if maxVisibleRows == number of returned rows, height is a bit off (maybe set to auto?)
|
||||
// TODO: escape key only works from input box (this might be okay)
|
||||
// TODO: make .getJSON parameters (object and callback function) configurable (e.g. when calling yahoo image search)
|
||||
// TODO: escape key reverts to previous value (FF only?) (is this a good thing?)
|
||||
|
||||
// TEST: highlightMatches uses the case of whatever you typed in to replace the match string, which can look funny
|
||||
// TEST: handle pageDown and pageUp keys when scrolling through results
|
||||
// TEST: allow client-side paging (return all data initially, set paging:{pageSize:#}, and ensure maxCacheBytes is > 0)
|
||||
// TEST: accept json object as first parameter to flexbox instead of page source, and have it work like a combobox
|
||||
// TEST: implement no results template
|
||||
// TEST: implement noResultsText and class
|
||||
// TEST: watermark color should be configurable (and so should default input color)
|
||||
// TEST: exception handling and alerts for common mistakes
|
||||
// TEST: first example should use defaults ONLY
|
||||
// TEST: add property initialValue, so you can set it when the flexbox loads
|
||||
// TEST: handle hidden input value for form submissions
|
||||
// TEST: how can we allow programmatically setting the field value (and therefore hidden value). add jquery function?
|
||||
// TEST: use pageSize parameter as threshold to switch from no paging to paging based on results
|
||||
// TEST: if you type in an input value that matches the html, it might display html code (try typing "class" in the input box)
|
||||
// TEST: don't require all paging subprops (let default override)
|
||||
// TEST: when tabbing from one ffb to another, the previous ffb results flash...
|
||||
// TEST: IE7: when two non-paging ffbs right after each other, with only a clear-both div between them, the bottom ffb jumps down when selecting a value, then jumps back up on mouseover
|
||||
// TEST: FF2, make sure we scroll to top before showing results (maxVisibleRows only)
|
||||
// TEST: if maxVisibleRows is hiding the value the user types in to the input, scroll to that value (is this even possible?)
|
||||
// TEST: make sure caching supports multiple ffbs uniquely
|
||||
// TEST: when entering a number in the paging input box, the results are displayed twice
|
||||
|
||||
var timeout = false, // hold timeout ID for suggestion results to appear
|
||||
cache = [], // simple array with cacheData key values, MRU is the first element
|
||||
cacheData = [], // associative array holding actual cached data
|
||||
cacheSize = 0, // size of cache in bytes (cache up to o.maxCacheBytes bytes)
|
||||
delim = '\u25CA', // use an obscure unicode character (lozenge) as the cache key delimiter
|
||||
scrolling = false,
|
||||
pageSize = o.paging && o.paging.pageSize ? o.paging.pageSize : 0,
|
||||
retrievingRemoteData = false,
|
||||
$div = $(div).css('position', 'relative').css('z-index', 0);
|
||||
|
||||
// The hiddenField MUST be appended to the div before the input, or IE7 does not shift the dropdown below the input field (it overlaps)
|
||||
var $hdn = $('<input type="hidden"/>')
|
||||
.attr('id', $div.attr('id') + '_hidden')
|
||||
.attr('name', $div.attr('id'))
|
||||
.val(o.initialId)
|
||||
.appendTo($div);
|
||||
var $input = $('<input/>')
|
||||
.attr('id', $div.attr('id') + '_input')
|
||||
.attr('autocomplete', 'off')
|
||||
.addClass(o.inputClass)
|
||||
.css('width', o.width + 'px')
|
||||
.appendTo($div)
|
||||
.click(function(e) {
|
||||
if (o.watermark !== '' && this.value === o.watermark)
|
||||
this.value = '';
|
||||
else
|
||||
this.select();
|
||||
})
|
||||
.focus(function(e) {
|
||||
$(this).removeClass('watermark');
|
||||
})
|
||||
.blur(function(e) {
|
||||
if (this.value === '') $hdn.val('');
|
||||
setTimeout(function() { if (!$input.data('active')) hideResults(); }, 200);
|
||||
})
|
||||
.keydown(processKeyDown);
|
||||
|
||||
if (o.initialValue !== '')
|
||||
$input.val(o.initialValue).removeClass('watermark');
|
||||
else
|
||||
$input.val(o.watermark).addClass('watermark');
|
||||
|
||||
var arrowWidth = 0;
|
||||
if (o.showArrow && o.showResults) {
|
||||
var arrowClick = function() {
|
||||
if ($ctr.is(':visible')) {
|
||||
hideResults();
|
||||
}
|
||||
else {
|
||||
$input.focus();
|
||||
if (o.watermark !== '' && $input.val() === o.watermark)
|
||||
$input.val('');
|
||||
else
|
||||
$input.select();
|
||||
if (timeout)
|
||||
clearTimeout(timeout);
|
||||
timeout = setTimeout(function() { flexbox(1, true, o.arrowQuery); }, o.queryDelay);
|
||||
}
|
||||
};
|
||||
var $arrow = $('<span></span>')
|
||||
.attr('id', $div.attr('id') + '_arrow')
|
||||
.addClass(o.arrowClass)
|
||||
.addClass('out')
|
||||
.hover(function() {
|
||||
$(this).removeClass('out').addClass('over');
|
||||
}, function() {
|
||||
$(this).removeClass('over').addClass('out');
|
||||
})
|
||||
.mousedown(function() {
|
||||
$(this).removeClass('over').addClass('active');
|
||||
})
|
||||
.mouseup(function() {
|
||||
$(this).removeClass('active').addClass('over');
|
||||
})
|
||||
.click(arrowClick)
|
||||
.appendTo($div);
|
||||
arrowWidth = $arrow.width();
|
||||
$input.css('width', (o.width - arrowWidth) + 'px');
|
||||
}
|
||||
if (!o.allowInput) { o.selectFirstMatch = false; $input.click(arrowClick); } // simulate <select> behavior
|
||||
|
||||
// Handle presence of CSS Universal Selector (*) that defines padding by verifying what the browser thinks the outerHeight is.
|
||||
// In FF, the outerHeight() will not pick up the correct input field padding
|
||||
var inputPad = $input.outerHeight() - $input.height() - 2;
|
||||
var inputWidth = $input.outerWidth() - 2;
|
||||
var top = $input.outerHeight();
|
||||
|
||||
if (inputPad === 0) {
|
||||
inputWidth += 4;
|
||||
top += 4;
|
||||
}
|
||||
else if (inputPad !== 4) {
|
||||
inputWidth += inputPad;
|
||||
top += inputPad;
|
||||
}
|
||||
|
||||
var $ctr = $('<div></div>')
|
||||
.attr('id', $div.attr('id') + '_ctr')
|
||||
.css('width', inputWidth + arrowWidth)
|
||||
.css('top', top)
|
||||
.css('left', 0)
|
||||
.addClass(o.containerClass)
|
||||
.appendTo($div)
|
||||
.mousedown(function(e) {
|
||||
$input.data('active', true);
|
||||
})
|
||||
.hide();
|
||||
|
||||
var $content = $('<div></div>')
|
||||
.addClass(o.contentClass)
|
||||
.appendTo($ctr)
|
||||
.scroll(function() {
|
||||
scrolling = true;
|
||||
});
|
||||
|
||||
var $paging = $('<div></div>').appendTo($ctr);
|
||||
$div.css('height', $input.outerHeight());
|
||||
|
||||
function processKeyDown(e) {
|
||||
// handle modifiers
|
||||
var mod = 0;
|
||||
if (typeof (e.ctrlKey) !== 'undefined') {
|
||||
if (e.ctrlKey) mod |= 1;
|
||||
if (e.shiftKey) mod |= 2;
|
||||
} else {
|
||||
if (e.modifiers & Event.CONTROL_MASK) mod |= 1;
|
||||
if (e.modifiers & Event.SHIFT_MASK) mod |= 2;
|
||||
}
|
||||
// if the keyCode is one of the modifiers, bail out (we'll catch it on the next keypress)
|
||||
if (/16$|17$/.test(e.keyCode)) return; // 16 = Shift, 17 = Ctrl
|
||||
|
||||
var tab = e.keyCode === 9, esc = e.keyCode === 27;
|
||||
var tabWithModifiers = e.keyCode === 9 && mod > 0;
|
||||
var backspace = e.keyCode === 8; // we will end up extending the delay time for backspaces...
|
||||
|
||||
// tab is a special case, since we want to bubble events...
|
||||
if (tab) if (getCurr()) selectCurr();
|
||||
|
||||
// handling up/down/escape/right arrow/left arrow requires results to be visible
|
||||
// handling enter requires that AND a result to be selected
|
||||
if ((/27$|38$|33$|34$/.test(e.keyCode) && $ctr.is(':visible')) ||
|
||||
(/13$|40$/.test(e.keyCode)) || !o.allowInput) {
|
||||
|
||||
if (e.preventDefault) e.preventDefault();
|
||||
if (e.stopPropagation) e.stopPropagation();
|
||||
|
||||
e.cancelBubble = true;
|
||||
e.returnValue = false;
|
||||
|
||||
switch (e.keyCode) {
|
||||
case 38: // up arrow
|
||||
prevResult();
|
||||
break;
|
||||
case 40: // down arrow
|
||||
if ($ctr.is(':visible')) nextResult();
|
||||
else flexboxDelay(true);
|
||||
break;
|
||||
case 13: // enter
|
||||
if (getCurr()) selectCurr();
|
||||
else flexboxDelay(true);
|
||||
break;
|
||||
case 27: // escape
|
||||
hideResults();
|
||||
break;
|
||||
case 34: // page down
|
||||
if (!retrievingRemoteData) {
|
||||
if (o.paging) $('#' + $div.attr('id') + 'n').click();
|
||||
else nextPage();
|
||||
}
|
||||
break;
|
||||
case 33: // page up
|
||||
if (!retrievingRemoteData) {
|
||||
if (o.paging) $('#' + $div.attr('id') + 'p').click();
|
||||
else prevPage();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (!o.allowInput) { return; }
|
||||
}
|
||||
} else if (!esc && !tab && !tabWithModifiers) { // skip esc and tab key and any modifiers
|
||||
flexboxDelay(false, backspace);
|
||||
}
|
||||
}
|
||||
|
||||
function flexboxDelay(simulateArrowClick, increaseDelay) {
|
||||
if (timeout) clearTimeout(timeout);
|
||||
var delay = increaseDelay ? o.queryDelay * 5 : o.queryDelay;
|
||||
timeout = setTimeout(function() { flexbox(1, simulateArrowClick, ''); }, delay);
|
||||
}
|
||||
|
||||
function flexbox(p, arrowOrPagingClicked, prevQuery) {
|
||||
if (arrowOrPagingClicked) prevQuery = '';
|
||||
var q = prevQuery && prevQuery.length > 0 ? prevQuery : $.trim($input.val());
|
||||
|
||||
if (q.length >= o.minChars || arrowOrPagingClicked) {
|
||||
// If we are getting data from the server, set the height of the content box so it doesn't shrink when navigating between pages, due to the $content.html('') below...
|
||||
if ($content.outerHeight() > 0)
|
||||
$content.css('height', $content.outerHeight());
|
||||
$content.html('').attr('scrollTop', 0);
|
||||
|
||||
var cached = checkCache(q, p);
|
||||
if (cached) {
|
||||
$content.css('height', 'auto');
|
||||
displayItems(cached.data, q);
|
||||
showPaging(p, cached.t);
|
||||
}
|
||||
else {
|
||||
var params = { q: q, p: p, s: pageSize, contentType: 'application/json; charset=utf-8' };
|
||||
var callback = function(data, overrideQuery) {
|
||||
if (overrideQuery === true) q = overrideQuery; // must compare to boolean because by default, the string value "success" is passed when the jQuery $.getJSON method's callback is called
|
||||
var totalResults = parseInt(data[o.totalProperty]);
|
||||
|
||||
// Handle client-side paging, if any paging configuration options were specified
|
||||
if (isNaN(totalResults) && o.paging) {
|
||||
if (o.maxCacheBytes <= 0) alert('The "maxCacheBytes" configuration option must be greater\nthan zero when implementing client-side paging.');
|
||||
totalResults = data[o.resultsProperty].length;
|
||||
|
||||
var pages = totalResults / pageSize;
|
||||
if (totalResults % pageSize > 0) pages = parseInt(++pages);
|
||||
|
||||
for (var i = 1; i <= pages; i++) {
|
||||
var pageData = {};
|
||||
pageData[o.totalProperty] = totalResults;
|
||||
pageData[o.resultsProperty] = data[o.resultsProperty].splice(0, pageSize);
|
||||
if (i === 1) totalSize = displayItems(pageData, q);
|
||||
updateCache(q, i, pageSize, totalResults, pageData, totalSize);
|
||||
}
|
||||
}
|
||||
else {
|
||||
var totalSize = displayItems(data, q);
|
||||
updateCache(q, p, pageSize, totalResults, data, totalSize);
|
||||
}
|
||||
showPaging(p, totalResults);
|
||||
$content.css('height', 'auto');
|
||||
retrievingRemoteData = false;
|
||||
};
|
||||
if (typeof (o.source) === 'object') {
|
||||
if (o.allowInput) callback(filter(o.source, params));
|
||||
else callback(o.source);
|
||||
}
|
||||
else {
|
||||
retrievingRemoteData = true;
|
||||
if (o.method.toUpperCase() == 'POST') $.post(o.source, params, callback, 'json');
|
||||
else $.getJSON(o.source, params, callback);
|
||||
}
|
||||
}
|
||||
} else
|
||||
hideResults();
|
||||
}
|
||||
|
||||
function filter(data, params) {
|
||||
var filtered = {};
|
||||
filtered[o.resultsProperty] = [];
|
||||
filtered[o.totalProperty] = 0;
|
||||
var index = 0;
|
||||
|
||||
for (var i=0; i < data[o.resultsProperty].length; i++) {
|
||||
var indexOfMatch = data[o.resultsProperty][i][o.displayValue].toLowerCase().indexOf(params.q.toLowerCase());
|
||||
if ((o.matchAny && indexOfMatch !== -1) || (!o.matchAny && indexOfMatch === 0)) {
|
||||
filtered[o.resultsProperty][index++] = data[o.resultsProperty][i];
|
||||
filtered[o.totalProperty] += 1;
|
||||
}
|
||||
}
|
||||
if (o.paging) {
|
||||
var start = (params.p - 1) * params.s;
|
||||
var howMany = (start + params.s) > filtered[o.totalProperty] ? filtered[o.totalProperty] - start : params.s;
|
||||
filtered[o.resultsProperty] = filtered[o.resultsProperty].splice(start, howMany);
|
||||
}
|
||||
return filtered;
|
||||
}
|
||||
|
||||
function showPaging(p, totalResults) {
|
||||
$paging.html('').removeClass(o.paging.cssClass); // clear out for threshold scenarios
|
||||
if (o.showResults && o.paging && totalResults > pageSize) {
|
||||
var pages = totalResults / pageSize;
|
||||
if (totalResults % pageSize > 0) pages = parseInt(++pages);
|
||||
outputPagingLinks(pages, p, totalResults);
|
||||
}
|
||||
}
|
||||
|
||||
function handleKeyPress(e, page, totalPages) {
|
||||
if (/^13$|^39$|^37$/.test(e.keyCode)) {
|
||||
if (e.preventDefault)
|
||||
e.preventDefault();
|
||||
if (e.stopPropagation)
|
||||
e.stopPropagation();
|
||||
|
||||
e.cancelBubble = true;
|
||||
e.returnValue = false;
|
||||
|
||||
switch (e.keyCode) {
|
||||
case 13: // Enter
|
||||
if (/^\d+$/.test(page) && page > 0 && page <= totalPages)
|
||||
flexbox(page, true);
|
||||
else
|
||||
alert('Please enter a page number between 1 and ' + totalPages);
|
||||
// TODO: make this alert a function call, and a customizable parameter
|
||||
break;
|
||||
case 39: // right arrow
|
||||
$('#' + $div.attr('id') + 'n').click();
|
||||
break;
|
||||
case 37: // left arrow
|
||||
$('#' + $div.attr('id') + 'p').click();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function handlePagingClick(e) {
|
||||
flexbox(parseInt($(this).attr('page')), true, $input.attr('pq')); // pq == previous query
|
||||
return false;
|
||||
}
|
||||
|
||||
function outputPagingLinks(totalPages, currentPage, totalResults) {
|
||||
// TODO: make these configurable images
|
||||
var first = '<<',
|
||||
prev = '<',
|
||||
next = '>',
|
||||
last = '>>',
|
||||
more = '...';
|
||||
|
||||
$paging.addClass(o.paging.cssClass);
|
||||
|
||||
// set up our base page link element
|
||||
var $link = $('<a/>')
|
||||
.attr('href', '#')
|
||||
.addClass('page')
|
||||
.click(handlePagingClick),
|
||||
$span = $('<span></span>').addClass('page'),
|
||||
divId = $div.attr('id');
|
||||
|
||||
// show first page
|
||||
if (currentPage > 1) {
|
||||
$link.clone(true).attr('id', divId + 'f').attr('page', 1).html(first).appendTo($paging);
|
||||
$link.clone(true).attr('id', divId + 'p').attr('page', currentPage - 1).html(prev).appendTo($paging);
|
||||
}
|
||||
else {
|
||||
$span.clone(true).html(first).appendTo($paging);
|
||||
$span.clone(true).html(prev).appendTo($paging);
|
||||
}
|
||||
|
||||
if (o.paging.style === 'links') {
|
||||
var maxPageLinks = o.paging.maxPageLinks;
|
||||
// show page numbers
|
||||
if (totalPages <= maxPageLinks) {
|
||||
for (var i = 1; i <= totalPages; i++) {
|
||||
if (i === currentPage) {
|
||||
$span.clone(true).html(currentPage).appendTo($paging);
|
||||
}
|
||||
else {
|
||||
$link.clone(true).attr('page', i).html(i).appendTo($paging);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ((currentPage + parseInt(maxPageLinks / 2)) > totalPages) {
|
||||
startPage = totalPages - maxPageLinks + 1;
|
||||
}
|
||||
else {
|
||||
startPage = currentPage - parseInt(maxPageLinks / 2);
|
||||
}
|
||||
|
||||
if (startPage > 1) {
|
||||
$link.clone(true).attr('page', startPage - 1).html(more).appendTo($paging);
|
||||
}
|
||||
else {
|
||||
startPage = 1;
|
||||
}
|
||||
|
||||
for (var i = startPage; i < startPage + maxPageLinks; i++) {
|
||||
if (i === currentPage) {
|
||||
$span.clone(true).html(i).appendTo($paging);
|
||||
}
|
||||
else {
|
||||
$link.clone(true).attr('page', i).html(i).appendTo($paging);
|
||||
}
|
||||
}
|
||||
|
||||
if (totalPages > (startPage + maxPageLinks)) {
|
||||
$link.clone(true).attr('page', i).html(more).appendTo($paging);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (o.paging.style === 'input') {
|
||||
var $pagingBox = $('<input/>')
|
||||
.addClass('box')
|
||||
.click(function(e) {
|
||||
this.select();
|
||||
})
|
||||
.keypress(function(e) {
|
||||
return handleKeyPress(e, this.value, totalPages);
|
||||
})
|
||||
.val(currentPage)
|
||||
.appendTo($paging);
|
||||
}
|
||||
|
||||
if (currentPage < totalPages) {
|
||||
$link.clone(true).attr('id', divId + 'n').attr('page', +currentPage + 1).html(next).appendTo($paging);
|
||||
$link.clone(true).attr('id', divId + 'l').attr('page', totalPages).html(last).appendTo($paging);
|
||||
}
|
||||
else {
|
||||
$span.clone(true).html(next).appendTo($paging);
|
||||
$span.clone(true).html(last).appendTo($paging);
|
||||
}
|
||||
var startingResult = (currentPage - 1) * pageSize + 1;
|
||||
var endingResult = (startingResult > (totalResults - pageSize)) ? totalResults : startingResult + pageSize - 1;
|
||||
|
||||
if (o.paging.showSummary) {
|
||||
var summaryData = {
|
||||
"start": startingResult,
|
||||
"end": endingResult,
|
||||
"total": totalResults,
|
||||
"page": currentPage,
|
||||
"pages": totalPages
|
||||
};
|
||||
var html = o.paging.summaryTemplate.applyTemplate(summaryData);
|
||||
$('<br/>').appendTo($paging);
|
||||
$('<span></span>')
|
||||
.addClass(o.paging.summaryClass)
|
||||
.html(html)
|
||||
.appendTo($paging);
|
||||
}
|
||||
}
|
||||
|
||||
function checkCache(q, p) {
|
||||
var key = q + delim + p; // use null character as delimiter
|
||||
if (cacheData[key]) {
|
||||
for (var i = 0; i < cache.length; i++) { // TODO: is it possible to not loop here?
|
||||
if (cache[i] === key) {
|
||||
// pull out the matching element (splice), and add it to the beginning of the array (unshift)
|
||||
cache.unshift(cache.splice(i, 1)[0]);
|
||||
return cacheData[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function updateCache(q, p, s, t, data, size) {
|
||||
if (o.maxCacheBytes > 0) {
|
||||
while (cache.length && (cacheSize + size > o.maxCacheBytes)) {
|
||||
var cached = cache.pop();
|
||||
cacheSize -= cached.size;
|
||||
}
|
||||
var key = q + delim + p; // use null character as delimiter
|
||||
cacheData[key] = {
|
||||
q: q,
|
||||
p: p,
|
||||
s: s,
|
||||
t: t,
|
||||
size: size,
|
||||
data: data
|
||||
}; // add the data to the cache at the hash key location
|
||||
cache.push(key); // add the key to the MRU list
|
||||
cacheSize += size;
|
||||
}
|
||||
}
|
||||
|
||||
function displayItems(d, q) {
|
||||
var totalSize = 0, itemCount = 0;
|
||||
|
||||
if (!d)
|
||||
return;
|
||||
|
||||
$hdn.val($input.val());
|
||||
if (parseInt(d[o.totalProperty]) === 0 && o.noResultsText && o.noResultsText.length > 0) {
|
||||
$content.addClass(o.noResultsClass).html(o.noResultsText);
|
||||
$ctr.show();
|
||||
return;
|
||||
} else $content.removeClass(o.noResultsClass);
|
||||
|
||||
for (var i = 0; i < d[o.resultsProperty].length; i++) {
|
||||
var data = d[o.resultsProperty][i],
|
||||
result = o.resultTemplate.applyTemplate(data),
|
||||
exactMatch = q === result,
|
||||
selectedMatch = false,
|
||||
hasHtmlTags = false,
|
||||
match = data[o.displayValue];
|
||||
|
||||
if (!exactMatch && o.highlightMatches && q !== '') {
|
||||
var pattern = q,
|
||||
highlightStart = match.toLowerCase().indexOf(q.toLowerCase()),
|
||||
replaceString = '<span class="' + o.matchClass + '">' + match.substr(highlightStart,q.length) + '</span>';
|
||||
if (result.match('<(.|\n)*?>')) { // see if the content contains html tags
|
||||
hasHtmlTags = true;
|
||||
pattern = '(>)([^<]*?)(' + q + ')((.|\n)*?)(<)'; // TODO: look for a better way
|
||||
replaceString = '$1$2<span class="' + o.matchClass + '">$3</span>$4$6';
|
||||
}
|
||||
result = result.replace(new RegExp(pattern.replace("[", "\\["), o.highlightMatchesRegExModifier), replaceString);
|
||||
}
|
||||
|
||||
// write the value of the first match to the input box, and select the remainder,
|
||||
// but only if autoCompleteFirstMatch is set, and there are no html tags in the response
|
||||
if (o.autoCompleteFirstMatch && !hasHtmlTags && i === 0) {
|
||||
if (q.length > 0 && match.toLowerCase().indexOf(q.toLowerCase()) === 0) {
|
||||
$input.attr('pq', q); // pq == previous query
|
||||
$hdn.val(data[o.hiddenValue]);
|
||||
$input.val(data[o.displayValue]);
|
||||
selectedMatch = selectRange(q.length, $input.val().length);
|
||||
}
|
||||
}
|
||||
|
||||
if (!o.showResults) return;
|
||||
|
||||
$row = $('<div></div>')
|
||||
.attr('id', data[o.hiddenValue])
|
||||
.attr('val', data[o.displayValue])
|
||||
.addClass('row')
|
||||
.html(result)
|
||||
.appendTo($content);
|
||||
|
||||
if (exactMatch || (++itemCount == 1 && o.selectFirstMatch) || selectedMatch) {
|
||||
$row.addClass(o.selectClass);
|
||||
}
|
||||
totalSize += result.length;
|
||||
}
|
||||
|
||||
if (totalSize === 0) {
|
||||
hideResults();
|
||||
return;
|
||||
}
|
||||
|
||||
$ctr.parent().css('z-index', 11000);
|
||||
$ctr.show();
|
||||
|
||||
$content
|
||||
.children('div')
|
||||
.mouseover(function() {
|
||||
$content.children('div').removeClass(o.selectClass);
|
||||
$(this).addClass(o.selectClass);
|
||||
})
|
||||
.mouseup(function(e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
selectCurr();
|
||||
});
|
||||
|
||||
if (o.maxVisibleRows > 0) {
|
||||
var maxHeight = $row.outerHeight() * o.maxVisibleRows;
|
||||
$content.css('max-height', maxHeight);
|
||||
}
|
||||
|
||||
return totalSize;
|
||||
}
|
||||
|
||||
function selectRange(s, l) {
|
||||
var tb = $input[0];
|
||||
if (tb.createTextRange) {
|
||||
var r = tb.createTextRange();
|
||||
r.moveStart('character', s);
|
||||
r.moveEnd('character', l - tb.value.length);
|
||||
r.select();
|
||||
} else if (tb.setSelectionRange) {
|
||||
tb.setSelectionRange(s, l);
|
||||
}
|
||||
tb.focus();
|
||||
return true;
|
||||
}
|
||||
|
||||
String.prototype.applyTemplate = function(d) {
|
||||
try {
|
||||
if (d === '') return this;
|
||||
return this.replace(/{([^{}]*)}/g,
|
||||
function(a, b) {
|
||||
var r;
|
||||
if (b.indexOf('.') !== -1) { // handle dot notation in {}, such as {Thumbnail.Url}
|
||||
var ary = b.split('.');
|
||||
var obj = d;
|
||||
for (var i = 0; i < ary.length; i++)
|
||||
obj = obj[ary[i]];
|
||||
r = obj;
|
||||
}
|
||||
else
|
||||
r = d[b];
|
||||
if (typeof r === 'string' || typeof r === 'number') return r; else throw (a);
|
||||
}
|
||||
);
|
||||
} catch (ex) {
|
||||
alert('Invalid JSON property ' + ex + ' found when trying to apply resultTemplate or paging.summaryTemplate.\nPlease check your spelling and try again.');
|
||||
}
|
||||
};
|
||||
|
||||
function hideResults() {
|
||||
$input.data('active', false); // for input blur
|
||||
$div.css('z-index', 0);
|
||||
$ctr.hide();
|
||||
}
|
||||
|
||||
function getCurr() {
|
||||
if (!$ctr.is(':visible'))
|
||||
return false;
|
||||
|
||||
var $curr = $content.children('div.' + o.selectClass);
|
||||
|
||||
if (!$curr.length)
|
||||
$curr = false;
|
||||
|
||||
return $curr;
|
||||
}
|
||||
|
||||
function selectCurr() {
|
||||
$curr = getCurr();
|
||||
|
||||
if ($curr) {
|
||||
$hdn.val($curr.attr('id'));
|
||||
$input.val($curr.attr('val')).focus();
|
||||
hideResults();
|
||||
|
||||
if (o.onSelect) {
|
||||
o.onSelect.apply($input[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function supportsGetBoxObjectFor() {
|
||||
try {
|
||||
document.getBoxObjectFor(document.body);
|
||||
return true;
|
||||
}
|
||||
catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function supportsGetBoundingClientRect() {
|
||||
try {
|
||||
document.body.getBoundingClientRect();
|
||||
return true;
|
||||
}
|
||||
catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function nextPage() {
|
||||
$curr = getCurr();
|
||||
|
||||
if ($curr && $curr.next().length > 0) {
|
||||
$curr.removeClass(o.selectClass);
|
||||
|
||||
for (var i = 0; i < o.maxVisibleRows; i++) {
|
||||
if ($curr.next().length > 0) {
|
||||
$curr = $curr.next();
|
||||
}
|
||||
}
|
||||
|
||||
$curr.addClass(o.selectClass);
|
||||
var scrollPos = $content.attr('scrollTop');
|
||||
$content.attr('scrollTop', scrollPos + $content.height());
|
||||
}
|
||||
else if (!$curr)
|
||||
$content.children('div:first-child').addClass(o.selectClass);
|
||||
}
|
||||
|
||||
function prevPage() {
|
||||
$curr = getCurr();
|
||||
|
||||
if ($curr && $curr.prev().length > 0) {
|
||||
$curr.removeClass(o.selectClass);
|
||||
|
||||
for (var i = 0; i < o.maxVisibleRows; i++) {
|
||||
if ($curr.prev().length > 0) {
|
||||
$curr = $curr.prev();
|
||||
}
|
||||
}
|
||||
|
||||
$curr.addClass(o.selectClass);
|
||||
var scrollPos = $content.attr('scrollTop');
|
||||
$content.attr('scrollTop', scrollPos - $content.height());
|
||||
}
|
||||
else if (!$curr)
|
||||
$content.children('div:last-child').addClass(o.selectClass);
|
||||
}
|
||||
|
||||
function nextResult() {
|
||||
$curr = getCurr();
|
||||
|
||||
if ($curr && $curr.next().length > 0) {
|
||||
$curr.removeClass(o.selectClass).next().addClass(o.selectClass);
|
||||
var scrollPos = $content.attr('scrollTop'),
|
||||
curr = $curr[0], parentBottom, bottom, height;
|
||||
if (supportsGetBoxObjectFor()) {
|
||||
parentBottom = document.getBoxObjectFor($content[0]).y + $content.attr('offsetHeight');
|
||||
bottom = document.getBoxObjectFor(curr).y + $curr.attr('offsetHeight');
|
||||
height = document.getBoxObjectFor(curr).height;
|
||||
}
|
||||
else if (supportsGetBoundingClientRect()) {
|
||||
parentBottom = $content[0].getBoundingClientRect().bottom;
|
||||
var rect = curr.getBoundingClientRect();
|
||||
bottom = rect.bottom;
|
||||
height = bottom - rect.top;
|
||||
}
|
||||
if (bottom >= parentBottom)
|
||||
$content.attr('scrollTop', scrollPos + height);
|
||||
}
|
||||
else if (!$curr)
|
||||
$content.children('div:first-child').addClass(o.selectClass);
|
||||
}
|
||||
|
||||
function prevResult() {
|
||||
$curr = getCurr();
|
||||
|
||||
if ($curr && $curr.prev().length > 0) {
|
||||
$curr.removeClass(o.selectClass).prev().addClass(o.selectClass);
|
||||
var scrollPos = $content.attr('scrollTop'),
|
||||
curr = $curr[0],
|
||||
parent = $curr.parent()[0],
|
||||
parentTop, top, height;
|
||||
if (supportsGetBoxObjectFor()) {
|
||||
height = document.getBoxObjectFor(curr).height;
|
||||
parentTop = document.getBoxObjectFor($content[0]).y - (height * 2); // TODO: this is not working when i add another control...
|
||||
top = document.getBoxObjectFor(curr).y - document.getBoxObjectFor($content[0]).y;
|
||||
}
|
||||
else if (supportsGetBoundingClientRect()) {
|
||||
parentTop = parent.getBoundingClientRect().top;
|
||||
var rect = curr.getBoundingClientRect();
|
||||
top = rect.top;
|
||||
height = rect.bottom - top;
|
||||
}
|
||||
if (top <= parentTop)
|
||||
$content.attr('scrollTop', scrollPos - height);
|
||||
}
|
||||
else if (!$curr)
|
||||
$content.children('div:last-child').addClass(o.selectClass);
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.flexbox = function(source, options) {
|
||||
if (!source)
|
||||
return;
|
||||
|
||||
try {
|
||||
var defaults = $.fn.flexbox.defaults;
|
||||
var o = $.extend({}, defaults, options);
|
||||
|
||||
for (var prop in o) {
|
||||
if (defaults[prop] === undefined) throw ('Invalid option specified: ' + prop + '\nPlease check your spelling and try again.');
|
||||
}
|
||||
o.source = source;
|
||||
|
||||
if (options) {
|
||||
o.paging = (options.paging || options.paging == null) ? $.extend({}, defaults.paging, options.paging) : false;
|
||||
|
||||
for (var prop in o.paging) {
|
||||
if (defaults.paging[prop] === undefined) throw ('Invalid option specified: ' + prop + '\nPlease check your spelling and try again.');
|
||||
}
|
||||
|
||||
if (options.displayValue && !options.hiddenValue) {
|
||||
o.hiddenValue = options.displayValue;
|
||||
}
|
||||
}
|
||||
|
||||
this.each(function() {
|
||||
new $.flexbox(this, o);
|
||||
});
|
||||
|
||||
return this;
|
||||
} catch (ex) {
|
||||
if (typeof ex === 'object') alert(ex.message); else alert(ex);
|
||||
}
|
||||
};
|
||||
|
||||
// plugin defaults - added as a property on our plugin function so they can be set independently
|
||||
$.fn.flexbox.defaults = {
|
||||
method: 'GET', // One of 'GET' or 'POST'
|
||||
queryDelay: 100, // num of milliseconds before query is run.
|
||||
allowInput: true, // set to false to disallow the user from typing in queries
|
||||
containerClass: 'ffb',
|
||||
contentClass: 'content',
|
||||
selectClass: 'ffb-sel',
|
||||
inputClass: 'ffb-input',
|
||||
arrowClass: 'ffb-arrow',
|
||||
matchClass: 'ffb-match',
|
||||
noResultsText: 'No matching results', // text to show when no results match the query
|
||||
noResultsClass: 'ffb-no-results', // class to apply to noResultsText
|
||||
showResults: true, // whether to show results at all, or just typeahead
|
||||
selectFirstMatch: true, // whether to highlight the first matching value
|
||||
autoCompleteFirstMatch: false, // whether to complete the first matching value in the input box
|
||||
highlightMatches: true, // whether all matches within the string should be highlighted with matchClass
|
||||
highlightMatchesRegExModifier: 'i', // 'i' for case-insensitive, 'g' for global (all occurrences), or combine
|
||||
matchAny: true, // for client-side filtering ONLY, match any occurrence of the search term in the result (e.g. "ar" would find "area" and "cart")
|
||||
minChars: 1, // the minimum number of characters the user must enter before a search is executed
|
||||
showArrow: true, // set to false to simulate google suggest
|
||||
arrowQuery: '', // the query to run when the arrow is clicked
|
||||
onSelect: false, // function to run when a result is selected
|
||||
maxCacheBytes: 32768, // in bytes, 0 means caching is disabled
|
||||
resultTemplate: '{name}', // html template for each row (put json properties in curly braces)
|
||||
displayValue: 'name', // json element whose value is displayed on select
|
||||
hiddenValue: 'id', // json element whose value is submitted when form is submitted
|
||||
initialValue: '', // what should the value of the input field be when the form is loaded?
|
||||
initialId: '', // what should the value of the hidden field be when the form is loaded?
|
||||
watermark: '', // text that appears when flexbox is loaded, if no initialValue is specified. style with css class '.ffb-input.watermark'
|
||||
width: 200, // total width of flexbox. auto-adjusts based on showArrow value
|
||||
resultsProperty: 'results', // json property in response that references array of results
|
||||
totalProperty: 'total', // json property in response that references the total results (for paging)
|
||||
maxVisibleRows: 0, // default is 0, which means it is ignored. use either this, or paging.pageSize
|
||||
paging: {
|
||||
style: 'input', // or 'links'
|
||||
cssClass: 'paging', // prefix with containerClass (e.g. .ffb .paging)
|
||||
pageSize: 10, // acts as a threshold. if <= pageSize results, paging doesn't appear
|
||||
maxPageLinks: 5, // used only if style is 'links'
|
||||
showSummary: true, // whether to show 'displaying 1-10 of 200 results' text
|
||||
summaryClass: 'summary', // class for 'displaying 1-10 of 200 results', prefix with containerClass
|
||||
summaryTemplate: 'Displaying {start}-{end} of {total} results' // can use {page} and {pages} as well
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.setValue = function(val) {
|
||||
var id = '#' + this.attr('id');
|
||||
$(id + '_hidden,' + id + '_input').val(val).removeClass('watermark');
|
||||
};
|
||||
})(jQuery);
|
||||
@@ -1,36 +0,0 @@
|
||||
<%@ Page Language="VB" ValidateRequest="false" AutoEventWireup="false" CodeFile="AutoPostTest.aspx.vb" Inherits="PostTest" %>
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head id="Head1" runat="server">
|
||||
<title></title>
|
||||
<script type="text/javascript" src="scripts/jquery-1.3.2.js"></script>
|
||||
|
||||
<script type="text/javascript" src="scripts/jHtmlArea-0.7.0.js"></script>
|
||||
<link rel="Stylesheet" type="text/css" href="style/jHtmlArea.css" />
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$("textarea").htmlarea(); // Initialize jHtmlArea's with all default values
|
||||
|
||||
//window.setTimeout(function() { $("form").submit(); }, 3000);
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<form id="form1" runat="server">
|
||||
<div>
|
||||
<asp:ScriptManager runat="server" ID="sm1"></asp:ScriptManager>
|
||||
|
||||
<asp:Literal runat="server" ID="litText"></asp:Literal><br />
|
||||
|
||||
<textarea runat="server" id="txtText" cols="50" rows="15"></textarea>
|
||||
<input type="submit" value='manual submit' />
|
||||
<br />
|
||||
|
||||
<asp:Button runat="server" ID="btnSubmit" Text="asp:Button" />
|
||||
<asp:LinkButton runat="server" ID="lbSubmit" Text="asp:LinkButton"></asp:LinkButton>
|
||||
</div>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,9 +0,0 @@
|
||||
|
||||
Partial Class PostTest
|
||||
Inherits System.Web.UI.Page
|
||||
|
||||
Public Sub PostTest_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
|
||||
txtText.Value = Request("txtText")
|
||||
litText.Text = txtText.Value
|
||||
End Sub
|
||||
End Class
|
||||
@@ -1,89 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title></title>
|
||||
<script type="text/javascript" src="scripts/jquery-1.3.2.min.js"></script>
|
||||
|
||||
<script type="text/javascript" src="scripts/jHtmlArea-0.7.0.min.js"></script>
|
||||
<link rel="Stylesheet" type="text/css" href="style/jHtmlArea.css" />
|
||||
|
||||
<script type="text/javascript" src="scripts/jHtmlArea.ColorPickerMenu-0.7.0.js"></script>
|
||||
<link rel="Stylesheet" type="text/css" href="style/jHtmlArea.ColorPickerMenu.css" />
|
||||
|
||||
<style type="text/css">
|
||||
div.jHtmlArea { border: solid 1px #ccc; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h3>jHtmlArea Live Demo - jHtmlAreaColorPickerMenu Example</h3>
|
||||
<p>The jHtmlAreaColorPickerMenu plugin/extension allows you to show a simple Color Picker Menu when the user clicks on the "forecolor" Toolbar Button.</p>
|
||||
|
||||
<p>
|
||||
<a href="http://jhtmlarea.codeplex.com">jHtmlArea Project Homepage</a>
|
||||
|
|
||||
<a href="http://jhtmlarea.codeplex.com/Release/ProjectReleases.aspx">Downloads</a>
|
||||
|
|
||||
<a href="http://jhtmlarea.codeplex.com/Thread/List.aspx">Discussions</a>
|
||||
|
|
||||
<a href="http://jhtmlarea.codeplex.com/WorkItem/List.aspx">Issue Tracker</a>
|
||||
</p>
|
||||
|
||||
<script type="text/javascript">
|
||||
//// You can also override the "default" colors option of the jHtmlAreaColorPickerMenu
|
||||
//// to show only the specific colors you want.
|
||||
// jHtmlAreaColorPickerMenu.defaultOptions.colors = ["red", "yellow", "blue", "green", "purple", "white", "black"];
|
||||
|
||||
// The followin creates a jHtmlArea and adds a custom list of toolbar buttons.
|
||||
// Among the buttons is the "forecolor" button that will automatically take
|
||||
// advantage of the jHtmlAreaColorPickerMenu plugin.
|
||||
$(function() {
|
||||
$("#Textarea1").htmlarea({
|
||||
toolbar: ["html", "|",
|
||||
"forecolor", // <-- Add the "forecolor" Toolbar Button
|
||||
"|", "bold", "italic", "underline", "|", "p", "h1", "h2", "h3", "|", "link", "unlink"] // Overrides/Specifies the Toolbar buttons to show
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<textarea id="Textarea1" cols="50" rows="15"><p><h3>Another TextArea</h3>This is some sample text to test out the <b>WYSIWYG Control</b>.</p></textarea>
|
||||
|
||||
|
||||
|
||||
<hr />
|
||||
|
||||
|
||||
|
||||
The jHtmlAreaColorPickerMenu object can also be reused for other purposes. For example clicking on the button below will allow you to change the background color of the page.
|
||||
<br />
|
||||
<input id="choosecolor" type="button" value="Choose Color..." />
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$("#choosecolor").click(function() {
|
||||
jHtmlAreaColorPickerMenu(this, {
|
||||
colorChosen: function(color) {
|
||||
$(document.body).css('background-color', color);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<br /><br /><br /><br /><br />
|
||||
<hr />
|
||||
<div style="position: relative;border: solid 30px #cccccc;">
|
||||
<h3>Editor within a "position: relative" DIV element.</h3>
|
||||
<textarea id="txtInDiv" cols="50" rows="15">Some <b>Test</b> content.</textarea>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$("#txtInDiv").htmlarea({
|
||||
toolbar: ["html", "|",
|
||||
"forecolor", // <-- Add the "forecolor" Toolbar Button
|
||||
"|", "bold", "italic", "underline", "|", "p", "h1", "h2", "h3", "|", "link", "unlink"] // Overrides/Specifies the Toolbar buttons to show
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,128 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title></title>
|
||||
<script type="text/javascript" src="scripts/jquery-1.3.2.min.js"></script>
|
||||
<script type="text/javascript" src="scripts/jquery-ui-1.7.2.custom.min.js"></script>
|
||||
<link rel="Stylesheet" type="text/css" href="style/jqueryui/ui-lightness/jquery-ui-1.7.2.custom.css" />
|
||||
|
||||
<script type="text/javascript" src="scripts/jHtmlArea-0.7.0.js"></script>
|
||||
<link rel="Stylesheet" type="text/css" href="style/jHtmlArea.css" />
|
||||
|
||||
<style type="text/css">
|
||||
/* body { background: #ccc;} */
|
||||
div.jHtmlArea .ToolBar ul li a.custom_disk_button
|
||||
{
|
||||
background: url(images/disk.png) no-repeat;
|
||||
background-position: 0 0;
|
||||
}
|
||||
|
||||
div.jHtmlArea { border: solid 1px #ccc; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript">
|
||||
// You can do this to perform a global override of any of the "default" options
|
||||
// jHtmlArea.fn.defaultOptions.css = "jHtmlArea.Editor.css";
|
||||
|
||||
$(function() {
|
||||
//$("textarea").htmlarea(); // Initialize all TextArea's as jHtmlArea's with default values
|
||||
|
||||
$("#txtDefaultHtmlArea").htmlarea(); // Initialize jHtmlArea's with all default values
|
||||
|
||||
$("#txtCustomHtmlArea").htmlarea({
|
||||
// Override/Specify the Toolbar buttons to show
|
||||
toolbar: [
|
||||
["bold", "italic", "underline", "|", "forecolor"],
|
||||
["p", "h1", "h2", "h3", "h4", "h5", "h6"],
|
||||
["link", "unlink", "|", "image"],
|
||||
[{
|
||||
// This is how to add a completely custom Toolbar Button
|
||||
css: "custom_disk_button",
|
||||
text: "Save",
|
||||
action: function(btn) {
|
||||
// 'this' = jHtmlArea object
|
||||
// 'btn' = jQuery object that represents the <A> "anchor" tag for the Toolbar Button
|
||||
alert('SAVE!\n\n' + this.toHtmlString());
|
||||
}
|
||||
}]
|
||||
],
|
||||
|
||||
// Override any of the toolbarText values - these are the Alt Text / Tooltips shown
|
||||
// when the user hovers the mouse over the Toolbar Buttons
|
||||
// Here are a couple translated to German, thanks to Google Translate.
|
||||
toolbarText: $.extend({}, jHtmlArea.defaultOptions.toolbarText, {
|
||||
"bold": "fett",
|
||||
"italic": "kursiv",
|
||||
"underline": "unterstreichen"
|
||||
}),
|
||||
|
||||
// Specify a specific CSS file to use for the Editor
|
||||
css: "style//jHtmlArea.Editor.css",
|
||||
|
||||
// Do something once the editor has finished loading
|
||||
loaded: function() {
|
||||
//// 'this' is equal to the jHtmlArea object
|
||||
//alert("jHtmlArea has loaded!");
|
||||
//this.showHTMLView(); // show the HTML view once the editor has finished loading
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<textarea id="txtDefaultHtmlArea" cols="50" rows="15"><p><h3>Test H3</h3>This is some sample text to test out the <b>WYSIWYG Control</b>.</p></textarea>
|
||||
<input type="button" value="Alert HTML" onclick="alert($('#txtDefaultHtmlArea').htmlarea('toHtmlString'));" />
|
||||
<input type="button" value="Change Color to Blue" onclick="$('#txtDefaultHtmlArea').htmlarea('forecolor', 'blue');" />
|
||||
|
||||
<br /><hr /><br />
|
||||
|
||||
|
||||
<textarea id="txtCustomHtmlArea" cols="50" rows="15"><p><h3>Another TextArea</h3>This is some sample text to test out the <b>WYSIWYG Control</b>.</p></textarea>
|
||||
|
||||
<input type="button" id="btnRemoveCustomHtmlArea" value="Remove jHtmlArea" />
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$("#btnRemoveCustomHtmlArea").click(function() {
|
||||
$("#txtCustomHtmlArea").htmlarea("dispose");
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<input type="button" id="btnResetCustomHtmlArea" value="Reset To Default Options" />
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$("#btnResetCustomHtmlArea").click(function() {
|
||||
$("#txtCustomHtmlArea").htmlarea("dispose");
|
||||
$("#txtCustomHtmlArea").htmlarea();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<br /><hr /><br />
|
||||
|
||||
<h3>Use jHtmlArea within jQuery UI Dialog</h3>
|
||||
<script type="text/javascript">
|
||||
$.ui.dialog.defaults.bgiframe = true;
|
||||
$(function() {
|
||||
$("#dialogShowButton").click(function() {
|
||||
$("#dialog").dialog({width: 420});
|
||||
$("#dialogEditor").htmlarea();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<input type="button" id="dialogShowButton" value="Show Dialog with jHtmlArea Editor" />
|
||||
|
||||
<div id="dialog" title="Basic dialog" style="display: none">
|
||||
Basic jHtmlArea within jQuery UI Dialog
|
||||
<br />
|
||||
<textarea id="dialogEditor" rows="10" style="width: 400px">Some <b>Basic</b> text.</textarea>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<p>To see a "proper" example of the "Font Color" button, you'll want to see the "<a href="ColorPickerMenu.htm">jHtmlAreaColorPickerMenu</a>" in action here: <a href="ColorPickerMenu.htm">ColorPickerMenu.htm</a></p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,117 +0,0 @@
|
||||
/* jHtmlArea - WYSIWYG Html Editor jQuery Plugin
|
||||
* Copyright (c) 2009 Chris Pietschmann
|
||||
* http://jhtmlarea.codeplex.com
|
||||
* Licensed under the Microsoft Reciprocal License (Ms-RL)
|
||||
* http://jhtmlarea.codeplex.com/license
|
||||
*/
|
||||
|
||||
EXAMPLE USAGE:
|
||||
-----------------------
|
||||
See "Default.htm" for example usages.
|
||||
Or, check out http://jhtmlarea.codeplex.com
|
||||
|
||||
|
||||
CHANGE LOG
|
||||
-----------------------
|
||||
v0.7.0
|
||||
- Fixed ColorPickerMenu positioning when placed within a "position: relative"
|
||||
div element.
|
||||
|
||||
- Fixed ColorPickerMenu to auto-hide after a short delay (1 second) once the
|
||||
user moves the mouse off the menu.
|
||||
|
||||
- Fixed Form Submit issue that caused the text to not be posted. Also fixed a
|
||||
related issue with ASP.NET Postbacks.
|
||||
|
||||
- Added jHtmlArea.p method and "paragraph" functionality + toolbar button
|
||||
This allows the user to change the formatting from <H1>, <H2>, etc. to <P>
|
||||
|
||||
- Added an "Automatic" color option to the ColorPickerMenu.
|
||||
|
||||
|
||||
v0.6.0
|
||||
- Hide All Toolbar buttons except the "html" button when entering
|
||||
HTML Source view (via clicking "html" button or executing
|
||||
jHtmlArea.showHTMLView). When toggling view back to the WYSIWYG editor
|
||||
all other buttons will then be shown again.
|
||||
|
||||
- Added jHtmlArea.dispose method - Allows you to remove the WYSIWYG
|
||||
editor, and go back to having a plain TextArea. Beware, there is a
|
||||
memory leak when using this method; it's not too bad, but you want
|
||||
to call this as few a number of times if you can. The memory leak
|
||||
is due to the way the browsers handle removing DOM Elements.
|
||||
|
||||
- Added Indent and Outdent functionality - This includes toolbar buttons
|
||||
and jHtmlArea.indent and jHtmlArea.outdent buttons.
|
||||
|
||||
- Added justifyLeft, justifyCenter, justifyRight functionality and toolbar
|
||||
buttons.
|
||||
|
||||
- Added insertHorizontalRule functionality and toolbar button. This adds a
|
||||
<hr> tag to the currently selected area.
|
||||
|
||||
- Added an "alias" method for jHtmlArea.execCommand named "ec" to help reduce the
|
||||
file size of the script.
|
||||
|
||||
- Added increaseFontSize and decreaseFontSize functionality and toolbar buttons.
|
||||
The increaseFontSize and decreaseFontSize doesn't currently work in Safari.
|
||||
|
||||
- Added forecolor functionality - Changes a font color for the selection or at the
|
||||
insertion point. Requires a color value string to be passed in as a value argument.
|
||||
|
||||
- Fixed bug in jHtmlArea.toString method
|
||||
|
||||
- Added jHtmlArea.queryCommandValue method and it's alias "jHtmlArea.qc"
|
||||
|
||||
- Added the jHtmlAreaColorPickerMenu plugin/extension that resides within the
|
||||
"jHtmlAreaColorPickerMenu.js" file. This file includes a somewhat generic color
|
||||
picker menu that can be used for any purpose, plus it includes the code to wire
|
||||
up and override the "stock" jHtmlColor.forecolor functionality and inject the new
|
||||
Color Picker Menu functionality in it's place when you click on the "forecolor"
|
||||
toolbar button.
|
||||
|
||||
- Changed the "execCommand" and "ec" second parameter to default to "false" if not
|
||||
specified, and third parameter to default to "null" if not specified. This helps to
|
||||
reduce the overall file size of the script.
|
||||
|
||||
- Added support for Toolbar Button Grouping, now with the additional buttons included
|
||||
in this release, or even when any custom buttons are used, they will be able to display
|
||||
nicely by "auto-wrapping" to the next line.
|
||||
|
||||
- Added a gradient background to the Toolbar Button Groups, with a slight reverse
|
||||
gradient on the Buttons when the mouse is hovered over.
|
||||
|
||||
|
||||
v0.5.0 - Initial Release
|
||||
|
||||
|
||||
|
||||
|
||||
ICONS / IMAGES:
|
||||
-----------------------
|
||||
|
||||
Some of the Icons within the jHtmlArea.png file are from the
|
||||
Silk icon set at www.famfamfam.com.
|
||||
They are licensed under the following license:
|
||||
|
||||
Silk icon set 1.3
|
||||
_________________________________________
|
||||
Mark James
|
||||
http://www.famfamfam.com/lab/icons/silk/
|
||||
_________________________________________
|
||||
|
||||
This work is licensed under a
|
||||
Creative Commons Attribution 2.5 License.
|
||||
[ http://creativecommons.org/licenses/by/2.5/ ]
|
||||
|
||||
This means you may use it for any purpose,
|
||||
and make any changes you like.
|
||||
All I ask is that you include a link back
|
||||
to this page in your credits.
|
||||
|
||||
Are you using this icon set? Send me an email
|
||||
(including a link or picture if available) to
|
||||
mjames@gmail.com
|
||||
|
||||
Any other questions about this icon set please
|
||||
contact mjames@gmail.com
|
||||
|
Before Width: | Height: | Size: 620 B |
@@ -1,365 +0,0 @@
|
||||
/*
|
||||
* This file has been commented to support Visual Studio Intellisense.
|
||||
* You should not use this file at runtime inside the browser--it is only
|
||||
* intended to be used only for design-time IntelliSense. Please use the
|
||||
* standard jHtmlArea library for all production use.
|
||||
*/
|
||||
|
||||
/*
|
||||
* jHtmlArea 0.7.0 - WYSIWYG Html Editor jQuery Plugin
|
||||
* Copyright (c) 2009 Chris Pietschmann
|
||||
* http://jhtmlarea.codeplex.com
|
||||
* Licensed under the Microsoft Reciprocal License (Ms-RL)
|
||||
* http://jhtmlarea.codeplex.com/license
|
||||
*/
|
||||
(function($) {
|
||||
$.fn.htmlarea = function(options) {
|
||||
/// <summary>
|
||||
/// 1: (options) - Convert all TextArea DOM Elements to be displayed as jHtmlArea WYSIWYG Editors.
|
||||
/// 2: (string, arguments) - This function accepts a string containing the method name that you want to execute against the jHtmlArea object.
|
||||
/// </summary>
|
||||
/// <param name="options" type="Object">
|
||||
/// 1: options - The custom options you want applied to the jHtmlArea's that are created.
|
||||
/// 2: string - The name of the jHtmlArea object method to be executed. The results of the method call are then returned instead of the jQuery object.
|
||||
/// </param>
|
||||
};
|
||||
var jHtmlArea = window.jHtmlArea = function(elem, options) {
|
||||
/// <summary>
|
||||
/// Converts the passed in TextArea DOM Element to a jHtmlArea WYSIWYG Editor.
|
||||
/// </summary>
|
||||
/// <param name="elem" type="TextArea DOM Element">
|
||||
/// The TextArea DOM Element to be converted to a jHtmlArea WYSIWYG Editor. Required.
|
||||
/// </param>
|
||||
/// <param name="options" type="Object">
|
||||
/// The custom options you want applied to the jHtmlArea that is created. Optional.
|
||||
/// </param>
|
||||
/// <field name="defaultOptions" Type="Object">
|
||||
/// The Default Options that are used for configuring the jHtmlArea WYSIWYG Editor upon creation.
|
||||
/// </field>
|
||||
/// <returns type="jHtmlArea" />
|
||||
};
|
||||
jHtmlArea.fn = jHtmlArea.prototype = {
|
||||
|
||||
// The current version of jHtmlArea being used
|
||||
jhtmlarea: "0.7.0",
|
||||
|
||||
init: function(elem, options) {
|
||||
/// <summary>
|
||||
/// Converts the passed in TextArea DOM Element to a jHtmlArea WYSIWYG Editor.
|
||||
/// </summary>
|
||||
/// <param name="elem" type="TextArea DOM Element">
|
||||
/// Required. The TextArea DOM Element to be converted to a jHtmlArea WYSIWYG Editor.
|
||||
/// </param>
|
||||
/// <param name="options" type="Object">
|
||||
/// Optional. The custom options you want applied to the jHtmlArea that is created.
|
||||
/// </param>
|
||||
/// <returns type="jHtmlArea" />
|
||||
},
|
||||
execCommand: function(a, b, c) {
|
||||
/// <summary>
|
||||
/// Executes a command on the current document, current selection, or the given range.
|
||||
/// </summary>
|
||||
/// <param name="a" type="String">
|
||||
/// Required. String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.
|
||||
/// </param>
|
||||
/// <param name="b" type="Boolean">
|
||||
/// Optional. Boolean that specifies one of the following values:
|
||||
/// "false" = Default. Do not display a user interface. Must be combined with vValue, if the command requires a value.
|
||||
/// "true" = Display a user interface if the command supports one.
|
||||
/// </param>
|
||||
/// <param name="c" type="Object">
|
||||
/// Optional. Variant that specifies the string, number, or other value to assign. Possible values depend on the command.
|
||||
/// </param>
|
||||
},
|
||||
ec: function(a, b, c) {
|
||||
/// <summary>
|
||||
/// Executes a command on the current document, current selection, or the given range. An alias for the "execCommand" method.
|
||||
/// </summary>
|
||||
/// <param name="a" type="String">
|
||||
/// Required. String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.
|
||||
/// </param>
|
||||
/// <param name="b" type="Boolean">
|
||||
/// Optional. Boolean that specifies one of the following values:
|
||||
/// "false" = Default. Do not display a user interface. Must be combined with vValue, if the command requires a value.
|
||||
/// "true" = Display a user interface if the command supports one.
|
||||
/// </param>
|
||||
/// <param name="c" type="Object">
|
||||
/// Optional. Variant that specifies the string, number, or other value to assign. Possible values depend on the command.
|
||||
/// </param>
|
||||
},
|
||||
queryCommandValue: function(a) {
|
||||
/// <summary>
|
||||
/// Returns the current value of the document, range, or current selection for the given command.
|
||||
/// </summary>
|
||||
/// <param name="a" type="String">
|
||||
/// Required. String that specifies a command identifier.
|
||||
/// </param>
|
||||
/// <returns type="Variant" />
|
||||
},
|
||||
qc: function(a) {
|
||||
/// <summary>
|
||||
/// Returns the current value of the document, range, or current selection for the given command. An alias for the "queryCommandValue" method.
|
||||
/// </summary>
|
||||
/// <param name="a" type="String">
|
||||
/// Required. String that specifies a command identifier.
|
||||
/// </param>
|
||||
/// <returns type="Variant" />
|
||||
},
|
||||
getSelectedHTML: function() {
|
||||
/// <summary>
|
||||
/// Returns the HTML that is currently selected within the editor.
|
||||
/// </summary>
|
||||
/// <returns type="String" />
|
||||
},
|
||||
getSelection: function() {
|
||||
/// <summary>
|
||||
/// Returns the Browser Selection object that represents the currently selected region of the editor.
|
||||
/// </summary>
|
||||
/// <returns type="Object" />
|
||||
},
|
||||
getRange: function() {
|
||||
/// <summary>
|
||||
/// Returns the Browser Range object that represents the currently selected region of the editor. (This uses the "getSelection" method internally.)
|
||||
/// </summary>
|
||||
/// <returns type="Object" />
|
||||
},
|
||||
html: function(v) {
|
||||
/// <summary>
|
||||
/// 1: () Returns the HTML text value contained within the editor. 2: (v) Sets the editors value to the HTML text passed in.
|
||||
/// </summary>
|
||||
/// <param name="v" type="String">
|
||||
/// The HTML text to set the editors value to.
|
||||
/// </param>
|
||||
},
|
||||
pasteHTML: function(html) {
|
||||
/// <summary>
|
||||
/// Pastes HTML text into the editor, replacing any currently selected text and HTML elements.
|
||||
/// </summary>
|
||||
/// <param name="html" type="String">
|
||||
/// The HTML text to paste/insert.
|
||||
/// </param>
|
||||
},
|
||||
cut: function() {
|
||||
/// <summary>
|
||||
/// Copies the current selection to the clipboard and then deletes it.
|
||||
/// </summary>
|
||||
},
|
||||
copy: function() {
|
||||
/// <summary>
|
||||
/// Copies the current selection to the clipboard.
|
||||
/// </summary>
|
||||
},
|
||||
paste: function() {
|
||||
/// <summary>
|
||||
/// Overwrites the contents of the clipboard on the current selection.
|
||||
/// </summary>
|
||||
},
|
||||
bold: function() {
|
||||
/// <summary>
|
||||
/// Toggles the current selection between bold and nonbold.
|
||||
/// </summary>
|
||||
},
|
||||
italic: function() {
|
||||
/// <summary>
|
||||
/// Toggles the current selection between italic and nonitalic.
|
||||
/// </summary>
|
||||
},
|
||||
underline: function() {
|
||||
/// <summary>
|
||||
/// Toggles the current selection between underlined and not underlined.
|
||||
/// </summary>
|
||||
},
|
||||
strikeThrough: function() {
|
||||
/// <summary>
|
||||
/// If there is a selection and all of the characters are already striked, the strikethrough will be removed. Otherwise, all selected characters will have a line drawn through them.
|
||||
/// </summary>
|
||||
},
|
||||
image: function(url) {
|
||||
/// <summary>
|
||||
/// This command will insert an image (referenced by url) at the insertion point.
|
||||
/// If no URL is specified, a prompt will be displayed to the user.
|
||||
/// </summary>
|
||||
/// <param name="url" type="String">
|
||||
/// The URL to the Image to be inserted. If no URL is specified, a prompt will be shown.
|
||||
/// </param>
|
||||
},
|
||||
removeFormat: function() {
|
||||
/// <summary>
|
||||
/// Removes the formatting tags from the current selection.
|
||||
/// </summary>
|
||||
},
|
||||
link: function() {
|
||||
/// <summary>
|
||||
/// Inserts a hyperlink on the current selection, or displays a dialog box enabling the user to specify a URL to insert as a hyperlink on the current selection.
|
||||
/// </summary>
|
||||
},
|
||||
unlink: function() {
|
||||
/// <summary>
|
||||
/// Removes any hyperlink from the current selection.
|
||||
/// </summary>
|
||||
},
|
||||
orderedList: function() {
|
||||
/// <summary>
|
||||
/// Converts the text selection into an ordered list.
|
||||
/// </summary>
|
||||
},
|
||||
unorderedList: function() {
|
||||
/// <summary>
|
||||
/// Converts the text selection into an unordered list.
|
||||
/// </summary>
|
||||
},
|
||||
superscript: function() {
|
||||
/// <summary>
|
||||
/// If there is a selection and all of the characters are already superscripted, the superscript will be removed. Otherwise, all selected characters will be drawn slightly higher than normal text.
|
||||
/// </summary>
|
||||
},
|
||||
subscript: function() {
|
||||
/// <summary>
|
||||
/// If there is a selection and all of the characters are already subscripted, the subscript will be removed. Otherwise, all selected characters will be drawn slightly lower than normal text.
|
||||
/// </summary>
|
||||
},
|
||||
|
||||
p: function() {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag to <P>.
|
||||
/// </summary>
|
||||
},
|
||||
h1: function() {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag to <H1>.
|
||||
/// </summary>
|
||||
},
|
||||
h2: function() {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag to <H2>.
|
||||
/// </summary>
|
||||
},
|
||||
h3: function() {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag to <H3>.
|
||||
/// </summary>
|
||||
},
|
||||
h4: function() {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag to <H4>.
|
||||
/// </summary>
|
||||
},
|
||||
h5: function() {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag to <H5>.
|
||||
/// </summary>
|
||||
},
|
||||
h6: function() {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag to <H6>.
|
||||
/// </summary>
|
||||
},
|
||||
heading: function(h) {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag to <H?> tag.
|
||||
/// Example: Calling jHtmlArea.heading(2) will be the same as calling jHtmlArea.h2()
|
||||
/// </summary>
|
||||
/// <param name="h" type="Number">
|
||||
/// The Number of Header (<H?>) tag to format the current block with.
|
||||
/// For Example: Passing a 2 or "2" will cause the current block to be formatted with a <H2> tag.
|
||||
/// </param>
|
||||
},
|
||||
|
||||
indent: function() {
|
||||
/// <summary>
|
||||
/// Indents the selection or insertion point.
|
||||
/// </summary>
|
||||
},
|
||||
outdent: function() {
|
||||
/// <summary>
|
||||
/// Outdents the selection or insertion point.
|
||||
/// </summary>
|
||||
},
|
||||
|
||||
insertHorizontalRule: function() {
|
||||
/// <summary>
|
||||
/// Inserts a horizontal rule at the insertion point (deletes selection).
|
||||
/// </summary>
|
||||
},
|
||||
|
||||
justifyLeft: function() {
|
||||
/// <summary>
|
||||
/// Justifies the selection or insertion point to the left.
|
||||
/// </summary>
|
||||
},
|
||||
justifyCenter: function() {
|
||||
/// <summary>
|
||||
/// Centers the selection or insertion point.
|
||||
/// </summary>
|
||||
},
|
||||
justifyRight: function() {
|
||||
/// <summary>
|
||||
/// Right-justifies the selection or the insertion point.
|
||||
/// </summary>
|
||||
},
|
||||
|
||||
increaseFontSize: function() {
|
||||
/// <summary>
|
||||
/// Increases the Font Size around the selection or at the insertion point.
|
||||
/// </summary>
|
||||
},
|
||||
decreaseFontSize: function() {
|
||||
/// <summary>
|
||||
/// Decreases the Font Size around the selection or at the insertion point.
|
||||
/// </summary>
|
||||
},
|
||||
|
||||
forecolor: function(c) {
|
||||
/// <summary>
|
||||
/// Changes a font color for the selection or at the insertion point. Requires a color value string to be passed in as a value argument.
|
||||
/// </summary>
|
||||
},
|
||||
|
||||
formatBlock: function(v) {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag.
|
||||
/// </summary>
|
||||
},
|
||||
|
||||
showHTMLView: function() {
|
||||
/// <summary>
|
||||
/// Shows the HTML/Source View (TextArea DOM Element) within the Editor and hides the WYSIWYG interface.
|
||||
/// </summary>
|
||||
},
|
||||
hideHTMLView: function() {
|
||||
/// <summary>
|
||||
/// Hides the HTML/Source View (TextArea DOM Element) within the Editor and displays the WYSIWYG interface.
|
||||
/// </summary>
|
||||
},
|
||||
toggleHTMLView: function() {
|
||||
/// <summary>
|
||||
/// Toggles between HTML/Source View (TextArea DOM Element) and the WYSIWYG interface within the Editor.
|
||||
/// </summary>
|
||||
},
|
||||
|
||||
toHtmlString: function() {
|
||||
/// <summary>
|
||||
/// Returns the HTML text contained within the editor.
|
||||
/// </summary>
|
||||
/// <returns type="String" />
|
||||
},
|
||||
toString: function() {
|
||||
/// <summary>
|
||||
/// Return the Text contained within the editor, with all HTML tags removed.
|
||||
/// </summary>
|
||||
/// <returns type="String" />
|
||||
},
|
||||
|
||||
updateTextArea: function() {
|
||||
/// <summary>
|
||||
/// Forces the TextArea DOM Element to by sync'd with the contents of the HTML WYSIWYG Editor.
|
||||
/// </summary>
|
||||
},
|
||||
updateHtmlArea: function() {
|
||||
/// <summary>
|
||||
/// Forces the HTML WYSIWYG Editor to be sync'd with the contents of the TextArea DOM Element.
|
||||
/// </summary>
|
||||
}
|
||||
};
|
||||
jHtmlArea.fn.init.prototype = jHtmlArea.fn;
|
||||
})(jQuery);
|
||||
@@ -1,403 +0,0 @@
|
||||
/*
|
||||
* jHtmlArea 0.7.0 - WYSIWYG Html Editor jQuery Plugin
|
||||
* Copyright (c) 2009 Chris Pietschmann
|
||||
* http://jhtmlarea.codeplex.com
|
||||
* Licensed under the Microsoft Reciprocal License (Ms-RL)
|
||||
* http://jhtmlarea.codeplex.com/license
|
||||
*/
|
||||
(function($) {
|
||||
$.fn.htmlarea = function(opts) {
|
||||
if (opts && typeof (opts) === "string") {
|
||||
var args = [];
|
||||
for (var i = 1; i < arguments.length; i++) { args.push(arguments[i]); }
|
||||
var htmlarea = jHtmlArea(this[0]);
|
||||
var f = htmlarea[opts];
|
||||
if (f) { return f.apply(htmlarea, args); }
|
||||
}
|
||||
return this.each(function() { jHtmlArea(this, opts); });
|
||||
};
|
||||
var jHtmlArea = window.jHtmlArea = function(elem, options) {
|
||||
if (elem.jquery) {
|
||||
return jHtmlArea(elem[0]);
|
||||
}
|
||||
if (elem.jhtmlareaObject) {
|
||||
return elem.jhtmlareaObject;
|
||||
} else {
|
||||
return new jHtmlArea.fn.init(elem, options);
|
||||
}
|
||||
};
|
||||
jHtmlArea.fn = jHtmlArea.prototype = {
|
||||
|
||||
// The current version of jHtmlArea being used
|
||||
jhtmlarea: "0.7.0",
|
||||
|
||||
init: function(elem, options) {
|
||||
if (elem.nodeName.toLowerCase() === "textarea") {
|
||||
var opts = $.extend({}, jHtmlArea.defaultOptions, options);
|
||||
elem.jhtmlareaObject = this;
|
||||
|
||||
var textarea = this.textarea = $(elem);
|
||||
var container = this.container = $("<div/>").addClass("jHtmlArea").width(textarea.width()).insertAfter(textarea);
|
||||
|
||||
var toolbar = this.toolbar = $("<div/>").addClass("ToolBar").appendTo(container);
|
||||
priv.initToolBar.call(this, opts);
|
||||
|
||||
var iframe = this.iframe = $("<iframe/>").height(textarea.height());
|
||||
iframe.width(textarea.width() - ($.browser.msie ? 0 : 4));
|
||||
var htmlarea = this.htmlarea = $("<div/>").append(iframe);
|
||||
|
||||
container.append(htmlarea).append(textarea.hide());
|
||||
|
||||
priv.initEditor.call(this, opts);
|
||||
priv.attachEditorEvents.call(this);
|
||||
|
||||
// Fix total height to match TextArea
|
||||
iframe.height(iframe.height() - toolbar.height());
|
||||
toolbar.width(textarea.width() - 2);
|
||||
|
||||
if (opts.loaded) { opts.loaded.call(this); }
|
||||
}
|
||||
},
|
||||
dispose: function() {
|
||||
this.textarea.show().insertAfter(this.container);
|
||||
this.container.remove();
|
||||
this.textarea[0].jhtmlareaObject = null;
|
||||
},
|
||||
execCommand: function(a, b, c) {
|
||||
this.iframe[0].contentWindow.focus();
|
||||
this.editor.execCommand(a, b || false, c || null);
|
||||
this.updateTextArea();
|
||||
},
|
||||
ec: function(a, b, c) {
|
||||
this.execCommand(a, b, c);
|
||||
},
|
||||
queryCommandValue: function(a) {
|
||||
this.iframe[0].contentWindow.focus();
|
||||
return this.editor.queryCommandValue(a);
|
||||
},
|
||||
qc: function(a) {
|
||||
return this.queryCommandValue(a);
|
||||
},
|
||||
getSelectedHTML: function() {
|
||||
if ($.browser.msie) {
|
||||
return this.getRange().htmlText;
|
||||
} else {
|
||||
var elem = this.getRange().cloneContents();
|
||||
return $("<p/>").append($(elem)).html();
|
||||
}
|
||||
},
|
||||
getSelection: function() {
|
||||
if ($.browser.msie) {
|
||||
//return (this.editor.parentWindow.getSelection) ? this.editor.parentWindow.getSelection() : this.editor.selection;
|
||||
return this.editor.selection;
|
||||
} else {
|
||||
return this.iframe[0].contentDocument.defaultView.getSelection();
|
||||
}
|
||||
},
|
||||
getRange: function() {
|
||||
var s = this.getSelection();
|
||||
if (!s) { return null; }
|
||||
//return (s.rangeCount > 0) ? s.getRangeAt(0) : s.createRange();
|
||||
return (s.getRangeAt) ? s.getRangeAt(0) : s.createRange();
|
||||
},
|
||||
html: function(v) {
|
||||
if (v) {
|
||||
this.pastHTML(v);
|
||||
} else {
|
||||
return toHtmlString();
|
||||
}
|
||||
},
|
||||
pasteHTML: function(html) {
|
||||
this.iframe[0].contentWindow.focus();
|
||||
var r = this.getRange();
|
||||
if ($.browser.msie) {
|
||||
r.pasteHTML(html);
|
||||
} else if ($.browser.mozilla) {
|
||||
r.deleteContents();
|
||||
r.insertNode($((html.indexOf("<") != 0) ? $("<span/>").append(html) : html)[0]);
|
||||
} else { // Safari
|
||||
r.deleteContents();
|
||||
r.insertNode($(this.iframe[0].contentWindow.document.createElement("span")).append($((html.indexOf("<") != 0) ? "<span>" + html + "</span>" : html))[0]);
|
||||
}
|
||||
r.collapse(false);
|
||||
r.select();
|
||||
},
|
||||
cut: function() {
|
||||
this.ec("cut");
|
||||
},
|
||||
copy: function() {
|
||||
this.ec("copy");
|
||||
},
|
||||
paste: function() {
|
||||
this.ec("paste");
|
||||
},
|
||||
bold: function() { this.ec("bold"); },
|
||||
italic: function() { this.ec("italic"); },
|
||||
underline: function() { this.ec("underline"); },
|
||||
strikeThrough: function() { this.ec("strikethrough"); },
|
||||
image: function(url) {
|
||||
if ($.browser.msie && !url) {
|
||||
this.ec("insertImage", true);
|
||||
} else {
|
||||
this.ec("insertImage", false, (url || prompt("Image URL:", "http://")));
|
||||
}
|
||||
},
|
||||
removeFormat: function() {
|
||||
this.ec("removeFormat", false, []);
|
||||
this.unlink();
|
||||
},
|
||||
link: function() {
|
||||
if ($.browser.msie) {
|
||||
this.ec("createLink", true);
|
||||
} else {
|
||||
this.ec("createLink", false, prompt("Link URL:", "http://"));
|
||||
}
|
||||
},
|
||||
unlink: function() { this.ec("unlink", false, []); },
|
||||
orderedList: function() { this.ec("insertorderedlist"); },
|
||||
unorderedList: function() { this.ec("insertunorderedlist"); },
|
||||
superscript: function() { this.ec("superscript"); },
|
||||
subscript: function() { this.ec("subscript"); },
|
||||
|
||||
p: function() {
|
||||
this.formatBlock("<p>");
|
||||
},
|
||||
h1: function() {
|
||||
this.heading(1);
|
||||
},
|
||||
h2: function() {
|
||||
this.heading(2);
|
||||
},
|
||||
h3: function() {
|
||||
this.heading(3);
|
||||
},
|
||||
h4: function() {
|
||||
this.heading(4);
|
||||
},
|
||||
h5: function() {
|
||||
this.heading(5);
|
||||
},
|
||||
h6: function() {
|
||||
this.heading(6);
|
||||
},
|
||||
heading: function(h) {
|
||||
this.formatBlock($.browser.msie ? "Heading " + h : "h" + h);
|
||||
},
|
||||
|
||||
indent: function() {
|
||||
this.ec("indent");
|
||||
},
|
||||
outdent: function() {
|
||||
this.ec("outdent");
|
||||
},
|
||||
|
||||
insertHorizontalRule: function() {
|
||||
this.ec("insertHorizontalRule", false, "ht");
|
||||
},
|
||||
|
||||
justifyLeft: function() {
|
||||
this.ec("justifyLeft");
|
||||
},
|
||||
justifyCenter: function() {
|
||||
this.ec("justifyCenter");
|
||||
},
|
||||
justifyRight: function() {
|
||||
this.ec("justifyRight");
|
||||
},
|
||||
|
||||
increaseFontSize: function() {
|
||||
if ($.browser.msie) {
|
||||
this.ec("fontSize", false, this.qc("fontSize") + 1);
|
||||
} else if ($.browser.safari) {
|
||||
this.getRange().surroundContents($(this.iframe[0].contentWindow.document.createElement("span")).css("font-size", "larger")[0]);
|
||||
} else {
|
||||
this.ec("increaseFontSize", false, "big");
|
||||
}
|
||||
},
|
||||
decreaseFontSize: function() {
|
||||
if ($.browser.msie) {
|
||||
this.ec("fontSize", false, this.qc("fontSize") - 1);
|
||||
} else if ($.browser.safari) {
|
||||
this.getRange().surroundContents($(this.iframe[0].contentWindow.document.createElement("span")).css("font-size", "smaller")[0]);
|
||||
} else {
|
||||
this.ec("decreaseFontSize", false, "small");
|
||||
}
|
||||
},
|
||||
|
||||
forecolor: function(c) {
|
||||
this.ec("foreColor", false, c || prompt("Enter HTML Color:", "#"));
|
||||
},
|
||||
|
||||
formatBlock: function(v) {
|
||||
this.ec("formatblock", false, v || null);
|
||||
},
|
||||
|
||||
showHTMLView: function() {
|
||||
this.updateTextArea();
|
||||
this.textarea.show();
|
||||
this.htmlarea.hide();
|
||||
$("ul li:not(li:has(a.html))", this.toolbar).hide();
|
||||
$("ul:not(:has(:visible))", this.toolbar).hide();
|
||||
$("ul li a.html", this.toolbar).addClass("highlighted");
|
||||
},
|
||||
hideHTMLView: function() {
|
||||
this.updateHtmlArea();
|
||||
this.textarea.hide();
|
||||
this.htmlarea.show();
|
||||
$("ul", this.toolbar).show();
|
||||
$("ul li", this.toolbar).show().find("a.html").removeClass("highlighted");
|
||||
},
|
||||
toggleHTMLView: function() {
|
||||
(this.textarea.is(":hidden")) ? this.showHTMLView() : this.hideHTMLView();
|
||||
},
|
||||
|
||||
toHtmlString: function() {
|
||||
return this.editor.body.innerHTML;
|
||||
},
|
||||
toString: function() {
|
||||
return this.editor.body.innerText;
|
||||
},
|
||||
|
||||
updateTextArea: function() {
|
||||
this.textarea.val(this.toHtmlString());
|
||||
},
|
||||
updateHtmlArea: function() {
|
||||
this.editor.body.innerHTML = this.textarea.val();
|
||||
}
|
||||
};
|
||||
jHtmlArea.fn.init.prototype = jHtmlArea.fn;
|
||||
|
||||
jHtmlArea.defaultOptions = {
|
||||
toolbar: [
|
||||
["html"], ["bold", "italic", "underline", "strikethrough", "|", "subscript", "superscript"],
|
||||
["increasefontsize", "decreasefontsize"],
|
||||
["orderedlist", "unorderedlist"],
|
||||
["indent", "outdent"],
|
||||
["justifyleft", "justifycenter", "justifyright"],
|
||||
["link", "unlink", "image", "horizontalrule"],
|
||||
["p", "h1", "h2", "h3", "h4", "h5", "h6"],
|
||||
["cut", "copy", "paste"]
|
||||
],
|
||||
css: null,
|
||||
toolbarText: {
|
||||
bold: "Bold", italic: "Italic", underline: "Underline", strikethrough: "Strike-Through",
|
||||
cut: "Cut", copy: "Copy", paste: "Paste",
|
||||
h1: "Heading 1", h2: "Heading 2", h3: "Heading 3", h4: "Heading 4", h5: "Heading 5", h6: "Heading 6", p: "Paragraph",
|
||||
indent: "Indent", outdent: "Outdent", horizontalrule: "Insert Horizontal Rule",
|
||||
justifyleft: "Left Justify", justifycenter: "Center Justify", justifyright: "Right Justify",
|
||||
increasefontsize: "Increase Font Size", decreasefontsize: "Decrease Font Size", forecolor: "Text Color",
|
||||
link: "Insert Link", unlink: "Remove Link", image: "Insert Image",
|
||||
orderedlist: "Insert Ordered List", unorderedlist: "Insert Unordered List",
|
||||
subscript: "Subscript", superscript: "Superscript",
|
||||
html: "Show/Hide HTML Source View"
|
||||
}
|
||||
};
|
||||
var priv = {
|
||||
toolbarButtons: {
|
||||
strikethrough: "strikeThrough", orderedlist: "orderedList", unorderedlist: "unorderedList",
|
||||
horizontalrule: "insertHorizontalRule",
|
||||
justifyleft: "justifyLeft", justifycenter: "justifyCenter", justifyright: "justifyRight",
|
||||
increasefontsize: "increaseFontSize", decreasefontsize: "decreaseFontSize",
|
||||
html: function(btn) {
|
||||
this.toggleHTMLView();
|
||||
}
|
||||
},
|
||||
initEditor: function(options) {
|
||||
var edit = this.editor = this.iframe[0].contentWindow.document;
|
||||
edit.designMode = 'on';
|
||||
edit.open();
|
||||
edit.write(this.textarea.val());
|
||||
edit.close();
|
||||
if (options.css) {
|
||||
var e = edit.createElement('link'); e.rel = 'stylesheet'; e.type = 'text/css'; e.href = options.css; edit.getElementsByTagName('head')[0].appendChild(e);
|
||||
}
|
||||
},
|
||||
initToolBar: function(options) {
|
||||
var that = this;
|
||||
|
||||
var menuItem = function(className, altText, action) {
|
||||
return $("<li/>").append($("<a href='javascript:void(0);'/>").addClass(className).attr("title", altText).click(function() { action.call(that, $(this)); }));
|
||||
};
|
||||
|
||||
function addButtons(arr) {
|
||||
var ul = $("<ul/>").appendTo(that.toolbar);
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
var e = arr[i];
|
||||
if ((typeof (e)).toLowerCase() === "string") {
|
||||
if (e === "|") {
|
||||
ul.append($('<li class="separator"/>'));
|
||||
} else {
|
||||
var f = (function(e) {
|
||||
// If button name exists in priv.toolbarButtons then call the "method" defined there, otherwise call the method with the same name
|
||||
var m = priv.toolbarButtons[e] || e;
|
||||
if ((typeof (m)).toLowerCase() === "function") {
|
||||
return function(btn) { m.call(this, btn); };
|
||||
} else {
|
||||
return function() { this[m](); this.editor.body.focus(); };
|
||||
}
|
||||
})(e.toLowerCase());
|
||||
var t = options.toolbarText[e.toLowerCase()];
|
||||
ul.append(menuItem(e.toLowerCase(), t || e, f));
|
||||
}
|
||||
} else {
|
||||
ul.append(menuItem(e.css, e.text, e.action));
|
||||
}
|
||||
}
|
||||
};
|
||||
if (options.toolbar.length !== 0 && priv.isArray(options.toolbar[0])) {
|
||||
for (var i = 0; i < options.toolbar.length; i++) {
|
||||
addButtons(options.toolbar[i]);
|
||||
}
|
||||
} else {
|
||||
addButtons(options.toolbar);
|
||||
}
|
||||
},
|
||||
attachEditorEvents: function() {
|
||||
var t = this;
|
||||
|
||||
var fnHA = function() {
|
||||
t.updateHtmlArea();
|
||||
};
|
||||
|
||||
this.textarea.click(fnHA).
|
||||
keyup(fnHA).
|
||||
keydown(fnHA).
|
||||
mousedown(fnHA).
|
||||
blur(fnHA);
|
||||
|
||||
|
||||
|
||||
var fnTA = function() {
|
||||
t.updateTextArea();
|
||||
};
|
||||
|
||||
$(this.editor.body).click(fnTA).
|
||||
keyup(fnTA).
|
||||
keydown(fnTA).
|
||||
mousedown(fnTA).
|
||||
blur(fnTA);
|
||||
|
||||
$('form').submit(function() { t.toggleHTMLView(); t.toggleHTMLView(); });
|
||||
//$(this.textarea[0].form).submit(function() { //this.textarea.closest("form").submit(function() {
|
||||
|
||||
|
||||
// Fix for ASP.NET Postback Model
|
||||
if (window.__doPostBack) {
|
||||
var old__doPostBack = __doPostBack;
|
||||
window.__doPostBack = function() {
|
||||
if (t) {
|
||||
if (t.toggleHTMLView) {
|
||||
t.toggleHTMLView();
|
||||
t.toggleHTMLView();
|
||||
}
|
||||
}
|
||||
return old__doPostBack.apply(window, arguments);
|
||||
};
|
||||
}
|
||||
|
||||
},
|
||||
isArray: function(v) {
|
||||
return v && typeof v === 'object' && typeof v.length === 'number' && typeof v.splice === 'function' && !(v.propertyIsEnumerable('length'));
|
||||
}
|
||||
};
|
||||
})(jQuery);
|
||||
@@ -1,357 +0,0 @@
|
||||
/*
|
||||
* This file has been commented to support Visual Studio Intellisense.
|
||||
* You should not use this file at runtime inside the browser--it is only
|
||||
* intended to be used only for design-time IntelliSense. Please use the
|
||||
* standard jHtmlArea library for all production use.
|
||||
*/
|
||||
|
||||
/*
|
||||
* jHtmlArea 0.7.0 - WYSIWYG Html Editor jQuery Plugin
|
||||
* Copyright (c) 2009 Chris Pietschmann
|
||||
* http://jhtmlarea.codeplex.com
|
||||
* Licensed under the Microsoft Reciprocal License (Ms-RL)
|
||||
* http://jhtmlarea.codeplex.com/license
|
||||
*/
|
||||
(function($) {
|
||||
$.fn.htmlarea = function(options) {
|
||||
/// <summary>
|
||||
/// 1: (options) - Convert all TextArea DOM Elements to be displayed as jHtmlArea WYSIWYG Editors.
|
||||
/// 2: (string, arguments) - This function accepts a string containing the method name that you want to execute against the jHtmlArea object.
|
||||
/// </summary>
|
||||
/// <param name="options" type="Object">
|
||||
/// 1: options - The custom options you want applied to the jHtmlArea's that are created.
|
||||
/// 2: string - The name of the jHtmlArea object method to be executed. The results of the method call are then returned instead of the jQuery object.
|
||||
/// </param>
|
||||
};
|
||||
var jHtmlArea = window.jHtmlArea = function(elem, options) {
|
||||
/// <summary>
|
||||
/// Converts the passed in TextArea DOM Element to a jHtmlArea WYSIWYG Editor.
|
||||
/// </summary>
|
||||
/// <param name="elem" type="TextArea DOM Element">
|
||||
/// The TextArea DOM Element to be converted to a jHtmlArea WYSIWYG Editor. Required.
|
||||
/// </param>
|
||||
/// <param name="options" type="Object">
|
||||
/// The custom options you want applied to the jHtmlArea that is created. Optional.
|
||||
/// </param>
|
||||
/// <field name="defaultOptions" Type="Object">
|
||||
/// The Default Options that are used for configuring the jHtmlArea WYSIWYG Editor upon creation.
|
||||
/// </field>
|
||||
/// <returns type="jHtmlArea" />
|
||||
};
|
||||
jHtmlArea.fn = jHtmlArea.prototype = {
|
||||
|
||||
// The current version of jHtmlArea being used
|
||||
jhtmlarea: "0.7.0",
|
||||
|
||||
init: function(elem, options) {
|
||||
/// <summary>
|
||||
/// Converts the passed in TextArea DOM Element to a jHtmlArea WYSIWYG Editor.
|
||||
/// </summary>
|
||||
/// <param name="elem" type="TextArea DOM Element">
|
||||
/// Required. The TextArea DOM Element to be converted to a jHtmlArea WYSIWYG Editor.
|
||||
/// </param>
|
||||
/// <param name="options" type="Object">
|
||||
/// Optional. The custom options you want applied to the jHtmlArea that is created.
|
||||
/// </param>
|
||||
/// <returns type="jHtmlArea" />
|
||||
},
|
||||
execCommand: function(a, b, c) {
|
||||
/// <summary>
|
||||
/// Executes a command on the current document, current selection, or the given range.
|
||||
/// </summary>
|
||||
/// <param name="a" type="String">
|
||||
/// Required. String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.
|
||||
/// </param>
|
||||
/// <param name="b" type="Boolean">
|
||||
/// Optional. Boolean that specifies one of the following values:
|
||||
/// "false" = Default. Do not display a user interface. Must be combined with vValue, if the command requires a value.
|
||||
/// "true" = Display a user interface if the command supports one.
|
||||
/// </param>
|
||||
/// <param name="c" type="Object">
|
||||
/// Optional. Variant that specifies the string, number, or other value to assign. Possible values depend on the command.
|
||||
/// </param>
|
||||
},
|
||||
ec: function(a, b, c) {
|
||||
/// <summary>
|
||||
/// Executes a command on the current document, current selection, or the given range. An alias for the "execCommand" method.
|
||||
/// </summary>
|
||||
/// <param name="a" type="String">
|
||||
/// Required. String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.
|
||||
/// </param>
|
||||
/// <param name="b" type="Boolean">
|
||||
/// Optional. Boolean that specifies one of the following values:
|
||||
/// "false" = Default. Do not display a user interface. Must be combined with vValue, if the command requires a value.
|
||||
/// "true" = Display a user interface if the command supports one.
|
||||
/// </param>
|
||||
/// <param name="c" type="Object">
|
||||
/// Optional. Variant that specifies the string, number, or other value to assign. Possible values depend on the command.
|
||||
/// </param>
|
||||
},
|
||||
queryCommandValue: function(a) {
|
||||
/// <summary>
|
||||
/// Returns the current value of the document, range, or current selection for the given command.
|
||||
/// </summary>
|
||||
/// <param name="a" type="String">
|
||||
/// Required. String that specifies a command identifier.
|
||||
/// </param>
|
||||
/// <returns type="Variant" />
|
||||
},
|
||||
qc: function(a) {
|
||||
/// <summary>
|
||||
/// Returns the current value of the document, range, or current selection for the given command. An alias for the "queryCommandValue" method.
|
||||
/// </summary>
|
||||
/// <param name="a" type="String">
|
||||
/// Required. String that specifies a command identifier.
|
||||
/// </param>
|
||||
/// <returns type="Variant" />
|
||||
},
|
||||
getSelectedHTML: function() {
|
||||
/// <summary>
|
||||
/// Returns the HTML that is currently selected within the editor.
|
||||
/// </summary>
|
||||
/// <returns type="String" />
|
||||
},
|
||||
getSelection: function() {
|
||||
/// <summary>
|
||||
/// Returns the Browser Selection object that represents the currently selected region of the editor.
|
||||
/// </summary>
|
||||
/// <returns type="Object" />
|
||||
},
|
||||
getRange: function() {
|
||||
/// <summary>
|
||||
/// Returns the Browser Range object that represents the currently selected region of the editor. (This uses the "getSelection" method internally.)
|
||||
/// </summary>
|
||||
/// <returns type="Object" />
|
||||
},
|
||||
pasteHTML: function(html) {
|
||||
/// <summary>
|
||||
/// Pastes HTML text into the editor, replacing any currently selected text and HTML elements.
|
||||
/// </summary>
|
||||
/// <param name="html" type="String">
|
||||
/// The HTML text to paste/insert.
|
||||
/// </param>
|
||||
},
|
||||
cut: function() {
|
||||
/// <summary>
|
||||
/// Copies the current selection to the clipboard and then deletes it.
|
||||
/// </summary>
|
||||
},
|
||||
copy: function() {
|
||||
/// <summary>
|
||||
/// Copies the current selection to the clipboard.
|
||||
/// </summary>
|
||||
},
|
||||
paste: function() {
|
||||
/// <summary>
|
||||
/// Overwrites the contents of the clipboard on the current selection.
|
||||
/// </summary>
|
||||
},
|
||||
bold: function() {
|
||||
/// <summary>
|
||||
/// Toggles the current selection between bold and nonbold.
|
||||
/// </summary>
|
||||
},
|
||||
italic: function() {
|
||||
/// <summary>
|
||||
/// Toggles the current selection between italic and nonitalic.
|
||||
/// </summary>
|
||||
},
|
||||
underline: function() {
|
||||
/// <summary>
|
||||
/// Toggles the current selection between underlined and not underlined.
|
||||
/// </summary>
|
||||
},
|
||||
strikeThrough: function() {
|
||||
/// <summary>
|
||||
/// If there is a selection and all of the characters are already striked, the strikethrough will be removed. Otherwise, all selected characters will have a line drawn through them.
|
||||
/// </summary>
|
||||
},
|
||||
image: function(url) {
|
||||
/// <summary>
|
||||
/// This command will insert an image (referenced by url) at the insertion point.
|
||||
/// If no URL is specified, a prompt will be displayed to the user.
|
||||
/// </summary>
|
||||
/// <param name="url" type="String">
|
||||
/// The URL to the Image to be inserted. If no URL is specified, a prompt will be shown.
|
||||
/// </param>
|
||||
},
|
||||
removeFormat: function() {
|
||||
/// <summary>
|
||||
/// Removes the formatting tags from the current selection.
|
||||
/// </summary>
|
||||
},
|
||||
link: function() {
|
||||
/// <summary>
|
||||
/// Inserts a hyperlink on the current selection, or displays a dialog box enabling the user to specify a URL to insert as a hyperlink on the current selection.
|
||||
/// </summary>
|
||||
},
|
||||
unlink: function() {
|
||||
/// <summary>
|
||||
/// Removes any hyperlink from the current selection.
|
||||
/// </summary>
|
||||
},
|
||||
orderedList: function() {
|
||||
/// <summary>
|
||||
/// Converts the text selection into an ordered list.
|
||||
/// </summary>
|
||||
},
|
||||
unorderedList: function() {
|
||||
/// <summary>
|
||||
/// Converts the text selection into an unordered list.
|
||||
/// </summary>
|
||||
},
|
||||
superscript: function() {
|
||||
/// <summary>
|
||||
/// If there is a selection and all of the characters are already superscripted, the superscript will be removed. Otherwise, all selected characters will be drawn slightly higher than normal text.
|
||||
/// </summary>
|
||||
},
|
||||
subscript: function() {
|
||||
/// <summary>
|
||||
/// If there is a selection and all of the characters are already subscripted, the subscript will be removed. Otherwise, all selected characters will be drawn slightly lower than normal text.
|
||||
/// </summary>
|
||||
},
|
||||
|
||||
p: function() {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag to <P>.
|
||||
/// </summary>
|
||||
},
|
||||
h1: function() {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag to <H1>.
|
||||
/// </summary>
|
||||
},
|
||||
h2: function() {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag to <H2>.
|
||||
/// </summary>
|
||||
},
|
||||
h3: function() {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag to <H3>.
|
||||
/// </summary>
|
||||
},
|
||||
h4: function() {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag to <H4>.
|
||||
/// </summary>
|
||||
},
|
||||
h5: function() {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag to <H5>.
|
||||
/// </summary>
|
||||
},
|
||||
h6: function() {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag to <H6>.
|
||||
/// </summary>
|
||||
},
|
||||
heading: function(h) {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag to <H?> tag.
|
||||
/// Example: Calling jHtmlArea.heading(2) will be the same as calling jHtmlArea.h2()
|
||||
/// </summary>
|
||||
/// <param name="h" type="Number">
|
||||
/// The Number of Header (<H?>) tag to format the current block with.
|
||||
/// For Example: Passing a 2 or "2" will cause the current block to be formatted with a <H2> tag.
|
||||
/// </param>
|
||||
},
|
||||
|
||||
indent: function() {
|
||||
/// <summary>
|
||||
/// Indents the selection or insertion point.
|
||||
/// </summary>
|
||||
},
|
||||
outdent: function() {
|
||||
/// <summary>
|
||||
/// Outdents the selection or insertion point.
|
||||
/// </summary>
|
||||
},
|
||||
|
||||
insertHorizontalRule: function() {
|
||||
/// <summary>
|
||||
/// Inserts a horizontal rule at the insertion point (deletes selection).
|
||||
/// </summary>
|
||||
},
|
||||
|
||||
justifyLeft: function() {
|
||||
/// <summary>
|
||||
/// Justifies the selection or insertion point to the left.
|
||||
/// </summary>
|
||||
},
|
||||
justifyCenter: function() {
|
||||
/// <summary>
|
||||
/// Centers the selection or insertion point.
|
||||
/// </summary>
|
||||
},
|
||||
justifyRight: function() {
|
||||
/// <summary>
|
||||
/// Right-justifies the selection or the insertion point.
|
||||
/// </summary>
|
||||
},
|
||||
|
||||
increaseFontSize: function() {
|
||||
/// <summary>
|
||||
/// Increases the Font Size around the selection or at the insertion point.
|
||||
/// </summary>
|
||||
},
|
||||
decreaseFontSize: function() {
|
||||
/// <summary>
|
||||
/// Decreases the Font Size around the selection or at the insertion point.
|
||||
/// </summary>
|
||||
},
|
||||
|
||||
forecolor: function(c) {
|
||||
/// <summary>
|
||||
/// Changes a font color for the selection or at the insertion point. Requires a color value string to be passed in as a value argument.
|
||||
/// </summary>
|
||||
},
|
||||
|
||||
formatBlock: function(v) {
|
||||
/// <summary>
|
||||
/// Sets the current block format tag.
|
||||
/// </summary>
|
||||
},
|
||||
|
||||
showHTMLView: function() {
|
||||
/// <summary>
|
||||
/// Shows the HTML/Source View (TextArea DOM Element) within the Editor and hides the WYSIWYG interface.
|
||||
/// </summary>
|
||||
},
|
||||
hideHTMLView: function() {
|
||||
/// <summary>
|
||||
/// Hides the HTML/Source View (TextArea DOM Element) within the Editor and displays the WYSIWYG interface.
|
||||
/// </summary>
|
||||
},
|
||||
toggleHTMLView: function() {
|
||||
/// <summary>
|
||||
/// Toggles between HTML/Source View (TextArea DOM Element) and the WYSIWYG interface within the Editor.
|
||||
/// </summary>
|
||||
},
|
||||
|
||||
toHtmlString: function() {
|
||||
/// <summary>
|
||||
/// Returns the HTML text contained within the editor.
|
||||
/// </summary>
|
||||
/// <returns type="String" />
|
||||
},
|
||||
toString: function() {
|
||||
/// <summary>
|
||||
/// Return the Text contained within the editor, with all HTML tags removed.
|
||||
/// </summary>
|
||||
/// <returns type="String" />
|
||||
},
|
||||
|
||||
updateTextArea: function() {
|
||||
/// <summary>
|
||||
/// Forces the TextArea DOM Element to by sync'd with the contents of the HTML WYSIWYG Editor.
|
||||
/// </summary>
|
||||
},
|
||||
updateHtmlArea: function() {
|
||||
/// <summary>
|
||||
/// Forces the HTML WYSIWYG Editor to be sync'd with the contents of the TextArea DOM Element.
|
||||
/// </summary>
|
||||
}
|
||||
};
|
||||
jHtmlArea.fn.init.prototype = jHtmlArea.fn;
|
||||
})(jQuery);
|
||||
@@ -1,189 +0,0 @@
|
||||
/*
|
||||
* jHtmlAreaColorPickerMenu 0.7.0 - A Color Picker Extension to jHtmlArea
|
||||
* Part of the jHtmlArea Project
|
||||
* Copyright (c) 2009 Chris Pietschmann
|
||||
* http://jhtmlarea.codeplex.com
|
||||
* Licensed under the Microsoft Reciprocal License (Ms-RL)
|
||||
* http://jhtmlarea.codeplex.com/license
|
||||
*/
|
||||
(function($) {
|
||||
if (jHtmlArea) {
|
||||
var oldForecolor = jHtmlArea.fn.forecolor;
|
||||
jHtmlArea.fn.forecolor = function(c) {
|
||||
if (c) {
|
||||
// If color is specified, then use the "default" method functionality
|
||||
oldForecolor.call(this, c);
|
||||
} else {
|
||||
// If no color is specified, then display color picker ui
|
||||
var that = this;
|
||||
var rng = this.getRange();
|
||||
jHtmlAreaColorPickerMenu($(".forecolor", this.toolbar), {
|
||||
colorChosen: function(color) {
|
||||
if ($.browser.msie) {
|
||||
rng.execCommand("ForeColor", false, color);
|
||||
} else {
|
||||
that.forecolor(color);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
var menu = window.jHtmlAreaColorPickerMenu = function(ownerElement, options) {
|
||||
return new jHtmlAreaColorPickerMenu.fn.init(ownerElement, options);
|
||||
};
|
||||
menu.fn = menu.prototype = {
|
||||
jhtmlareacolorpickermenu: "0.7.0",
|
||||
|
||||
init: function(ownerElement, options) {
|
||||
var opts = $.extend({}, menu.defaultOptions, options);
|
||||
var that = this;
|
||||
var owner = this.owner = $(ownerElement);
|
||||
var position = owner.position();
|
||||
|
||||
if (menu.instance) {
|
||||
menu.instance.hide();
|
||||
}
|
||||
jHtmlAreaColorPickerMenu.instance = this;
|
||||
|
||||
var picker = this.picker = $("<div/>").css({
|
||||
position: "absolute",
|
||||
left: position.left + opts.offsetLeft,
|
||||
top: position.top + owner.height() + opts.offsetTop,
|
||||
"z-index": opts["z-index"]
|
||||
}).addClass("jHtmlAreaColorPickerMenu");
|
||||
|
||||
for (var i = 0; i < opts.colors.length; i++) {
|
||||
var c = opts.colors[i];
|
||||
$("<div/>").css("background-color", c).appendTo(picker).click(
|
||||
(function(color) {
|
||||
return function() {
|
||||
if (opts.colorChosen) {
|
||||
opts.colorChosen.call(this, color);
|
||||
}
|
||||
that.hide();
|
||||
};
|
||||
})(c)
|
||||
);
|
||||
}
|
||||
|
||||
$("<div/>").html("<div></div>Automatic").addClass("automatic").appendTo(picker).click(
|
||||
function() {
|
||||
if (opts.colorChosen) {
|
||||
opts.colorChosen.call(this, null);
|
||||
}
|
||||
that.hide();
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var autoHide = false;
|
||||
picker.appendTo(owner.parent()).
|
||||
show().
|
||||
mouseout(function() {
|
||||
autoHide = true;
|
||||
that.currentTimeout = window.setTimeout(function() { if (autoHide === true) { that.hide(); } }, 1000);
|
||||
}).
|
||||
mouseover(function() {
|
||||
if (that.currentTimeout) {
|
||||
window.clearTimeout(that.currentTimeout);
|
||||
that.currentTimeout = null;
|
||||
}
|
||||
autoHide = false;
|
||||
});
|
||||
},
|
||||
hide: function() {
|
||||
this.picker.hide();
|
||||
this.picker.remove();
|
||||
}
|
||||
};
|
||||
menu.fn.init.prototype = menu.fn;
|
||||
|
||||
menu.defaultOptions = {
|
||||
"z-index": 0,
|
||||
offsetTop: 0,
|
||||
offsetLeft: 0,
|
||||
colors: [
|
||||
"#ffffff",
|
||||
"#cccccc",
|
||||
"#c0c0c0",
|
||||
"#999999",
|
||||
"#666666",
|
||||
"#333333",
|
||||
"#000000",
|
||||
|
||||
"#ffcccc",
|
||||
"#ff6666",
|
||||
"#ff0000",
|
||||
"#cc0000",
|
||||
"#990000",
|
||||
"#660000",
|
||||
"#330000",
|
||||
|
||||
"#ffcc99",
|
||||
"#ff9966",
|
||||
"#ff9900",
|
||||
"#ff6600",
|
||||
"#cc6600",
|
||||
"#993300",
|
||||
"#663300",
|
||||
|
||||
"#ffff99",
|
||||
"#ffff66",
|
||||
"#ffcc66",
|
||||
"#ffcc33",
|
||||
"#cc9933",
|
||||
"#996633",
|
||||
"#663333",
|
||||
|
||||
"#ffffcc",
|
||||
"#ffff33",
|
||||
"#ffff00",
|
||||
"#ffcc00",
|
||||
"#999900",
|
||||
"#666600",
|
||||
"#333300",
|
||||
|
||||
"#99ff99",
|
||||
"#66ff99",
|
||||
"#33ff33",
|
||||
"#33cc00",
|
||||
"#009900",
|
||||
"#006600",
|
||||
"#003300",
|
||||
|
||||
"#99FFFF",
|
||||
"#33FFFF",
|
||||
"#66CCCC",
|
||||
"#00CCCC",
|
||||
"#339999",
|
||||
"#336666",
|
||||
"#003333",
|
||||
|
||||
"#CCFFFF",
|
||||
"#66FFFF",
|
||||
"#33CCFF",
|
||||
"#3366FF",
|
||||
"#3333FF",
|
||||
"#000099",
|
||||
"#000066",
|
||||
|
||||
"#CCCCFF",
|
||||
"#9999FF",
|
||||
"#6666CC",
|
||||
"#6633FF",
|
||||
"#6600CC",
|
||||
"#333399",
|
||||
"#330099",
|
||||
|
||||
"#FFCCFF",
|
||||
"#FF99FF",
|
||||
"#CC66CC",
|
||||
"#CC33CC",
|
||||
"#993399",
|
||||
"#663366",
|
||||
"#330033"
|
||||
],
|
||||
colorChosen: null
|
||||
};
|
||||
})(jQuery);
|
||||
@@ -1,8 +0,0 @@
|
||||
// jHtmlArea - http://jhtmlarea.codeplex.com - (c)2009 Chris Pietschmann
|
||||
(function($){if(jHtmlArea){var oldForecolor=jHtmlArea.fn.forecolor;jHtmlArea.fn.forecolor=function(c){if(c){oldForecolor.call(this,c);}else{var that=this;var rng=this.getRange();jHtmlAreaColorPickerMenu($(".forecolor",this.toolbar),{colorChosen:function(color){if($.browser.msie){rng.execCommand("ForeColor",false,color);}else{that.forecolor(color);}}});}};}
|
||||
var menu=window.jHtmlAreaColorPickerMenu=function(ownerElement,options){return new jHtmlAreaColorPickerMenu.fn.init(ownerElement,options);};menu.fn=menu.prototype={jhtmlareacolorpickermenu:"0.7.0",init:function(ownerElement,options){var opts=$.extend({},menu.defaultOptions,options);var that=this;var owner=this.owner=$(ownerElement);var position=owner.position();if(menu.instance){menu.instance.hide();}
|
||||
jHtmlAreaColorPickerMenu.instance=this;var picker=this.picker=$("<div/>").css({position:"absolute",left:position.left+opts.offsetLeft,top:position.top+owner.height()+opts.offsetTop,"z-index":opts["z-index"]}).addClass("jHtmlAreaColorPickerMenu");for(var i=0;i<opts.colors.length;i++){var c=opts.colors[i];$("<div/>").css("background-color",c).appendTo(picker).click((function(color){return function(){if(opts.colorChosen){opts.colorChosen.call(this,color);}
|
||||
that.hide();};})(c));}
|
||||
$("<div/>").html("<div></div>Automatic").addClass("automatic").appendTo(picker).click(function(){if(opts.colorChosen){opts.colorChosen.call(this,null);}
|
||||
that.hide();});var autoHide=false;picker.appendTo(owner.parent()).show().mouseout(function(){autoHide=true;that.currentTimeout=window.setTimeout(function(){if(autoHide===true){that.hide();}},1000);}).mouseover(function(){if(that.currentTimeout){window.clearTimeout(that.currentTimeout);that.currentTimeout=null;}
|
||||
autoHide=false;});},hide:function(){this.picker.hide();this.picker.remove();}};menu.fn.init.prototype=menu.fn;menu.defaultOptions={"z-index":0,offsetTop:0,offsetLeft:0,colors:["#ffffff","#cccccc","#c0c0c0","#999999","#666666","#333333","#000000","#ffcccc","#ff6666","#ff0000","#cc0000","#990000","#660000","#330000","#ffcc99","#ff9966","#ff9900","#ff6600","#cc6600","#993300","#663300","#ffff99","#ffff66","#ffcc66","#ffcc33","#cc9933","#996633","#663333","#ffffcc","#ffff33","#ffff00","#ffcc00","#999900","#666600","#333300","#99ff99","#66ff99","#33ff33","#33cc00","#009900","#006600","#003300","#99FFFF","#33FFFF","#66CCCC","#00CCCC","#339999","#336666","#003333","#CCFFFF","#66FFFF","#33CCFF","#3366FF","#3333FF","#000099","#000066","#CCCCFF","#9999FF","#6666CC","#6633FF","#6600CC","#333399","#330099","#FFCCFF","#FF99FF","#CC66CC","#CC33CC","#993399","#663366","#330033"],colorChosen:null};})(jQuery);
|
||||
@@ -1,6 +0,0 @@
|
||||
div.jHtmlAreaColorPickerMenu {border: solid 1px #bbb; background-color: #ddd; width: 112px;}
|
||||
div.jHtmlAreaColorPickerMenu div {float: left; margin: 2px; width: 12px; height: 14px;}
|
||||
div.jHtmlAreaColorPickerMenu div:hover {margin: 0px; border: dotted 2px black;}
|
||||
|
||||
div.jHtmlAreaColorPickerMenu div.automatic { width: 104px; height: auto; padding: 2px;}
|
||||
div.jHtmlAreaColorPickerMenu div.automatic div { margin: 2px; width: 12px; height: 14px; border: solid 1px black;}
|
||||
@@ -1,6 +0,0 @@
|
||||
body
|
||||
{
|
||||
background: #000;
|
||||
color: #fff;
|
||||
margin: 2px;
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
div.jHtmlArea { display: inline block; }
|
||||
div.jHtmlArea div { padding: 0px; margin: 0px; }
|
||||
div.jHtmlArea .ToolBar { }
|
||||
div.jHtmlArea .ToolBar ul { border: solid 1px #ccc; margin: 1px; padding: 1px; float: left; background: #fff url(jHtmlArea_Toolbar_Group_BG.png) repeat-x;}
|
||||
div.jHtmlArea .ToolBar ul li { list-style-type: none; float: left; border: none; padding: 1px; margin: 1px; }
|
||||
div.jHtmlArea .ToolBar ul li:hover { border: solid 1px #ccc; background: #ddd url(jHtmlArea_Toolbar_Group__Btn_Select_BG.png); padding: 0; }
|
||||
div.jHtmlArea .ToolBar ul li a { display: block; width: 16px; height: 16px; background: url(jHtmlArea.png) no-repeat -16px -500px; border: none; cursor: pointer; padding: 0px; }
|
||||
div.jHtmlArea .ToolBar ul li a.highlighted { border: solid 1px #aaa; background-color: #bbb; padding: 0; }
|
||||
div.jHtmlArea .ToolBar ul li.separator {height: 16px; margin: 0 2px 0 3px; border-left: 1px solid #ccc;}
|
||||
div.jHtmlArea .ToolBar ul li.separator:hover { padding: 1px; background-color: #fff; border-top:none; border-bottom:none; border-right:none;}
|
||||
|
||||
div.jHtmlArea .ToolBar ul li a:hover { }
|
||||
div.jHtmlArea .ToolBar ul li a.bold { background-position: 0 0; }
|
||||
div.jHtmlArea .ToolBar ul li a.italic { background-position: -16px 0; }
|
||||
div.jHtmlArea .ToolBar ul li a.underline { background-position: -32px 0; }
|
||||
div.jHtmlArea .ToolBar ul li a.strikethrough { background-position: -48px 0; }
|
||||
div.jHtmlArea .ToolBar ul li a.link { background-position: -64px 0; }
|
||||
div.jHtmlArea .ToolBar ul li a.unlink { background-position: -80px 0; }
|
||||
div.jHtmlArea .ToolBar ul li a.orderedlist { background-position: -96px 0; }
|
||||
div.jHtmlArea .ToolBar ul li a.unorderedlist { background-position: -112px 0; }
|
||||
div.jHtmlArea .ToolBar ul li a.image { background-position: -128px 0; }
|
||||
div.jHtmlArea .ToolBar ul li a.cut { background-position: -144px 0; }
|
||||
div.jHtmlArea .ToolBar ul li a.copy { background-position: -160px 0; }
|
||||
div.jHtmlArea .ToolBar ul li a.paste { background-position: -176px 0; }
|
||||
|
||||
div.jHtmlArea .ToolBar ul li a.html { background-position: -192px 0; opacity:0.6; filter:alpha(opacity=60);}
|
||||
div.jHtmlArea .ToolBar ul li a.html.highlighted { opacity:1.0; filter:alpha(opacity=100);}
|
||||
|
||||
div.jHtmlArea .ToolBar ul li a.h1 { background-position: 0 -16px;}
|
||||
div.jHtmlArea .ToolBar ul li a.h2 { background-position: -16px -16px;}
|
||||
div.jHtmlArea .ToolBar ul li a.h3 { background-position: -32px -16px;}
|
||||
div.jHtmlArea .ToolBar ul li a.h4 { background-position: -48px -16px;}
|
||||
div.jHtmlArea .ToolBar ul li a.h5 { background-position: -64px -16px;}
|
||||
div.jHtmlArea .ToolBar ul li a.h6 { background-position: -80px -16px;}
|
||||
div.jHtmlArea .ToolBar ul li a.subscript { background-position: -96px -16px;}
|
||||
div.jHtmlArea .ToolBar ul li a.superscript { background-position: -112px -16px;}
|
||||
div.jHtmlArea .ToolBar ul li a.indent { background-position: -128px -16px;}
|
||||
div.jHtmlArea .ToolBar ul li a.outdent { background-position: -144px -16px;}
|
||||
div.jHtmlArea .ToolBar ul li a.horizontalrule { background-position: -160px -16px;}
|
||||
div.jHtmlArea .ToolBar ul li a.p { background-position: -176px -16px;}
|
||||
|
||||
|
||||
div.jHtmlArea .ToolBar ul li a.justifyleft { background-position: 0 -32px;}
|
||||
div.jHtmlArea .ToolBar ul li a.justifycenter { background-position: -16px -32px;}
|
||||
div.jHtmlArea .ToolBar ul li a.justifyright { background-position: -32px -32px;}
|
||||
div.jHtmlArea .ToolBar ul li a.increasefontsize { background-position: -48px -32px;}
|
||||
div.jHtmlArea .ToolBar ul li a.decreasefontsize { background-position: -64px -32px;}
|
||||
div.jHtmlArea .ToolBar ul li a.forecolor { background-position: -80px -32px;}
|
||||
|
Before Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 964 B |
|
Before Width: | Height: | Size: 942 B |
|
Before Width: | Height: | Size: 260 B |
|
Before Width: | Height: | Size: 251 B |
|
Before Width: | Height: | Size: 178 B |
|
Before Width: | Height: | Size: 104 B |
|
Before Width: | Height: | Size: 125 B |
|
Before Width: | Height: | Size: 105 B |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 90 B |
|
Before Width: | Height: | Size: 129 B |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
@@ -1,406 +0,0 @@
|
||||
/*
|
||||
* jQuery UI CSS Framework
|
||||
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
|
||||
*/
|
||||
|
||||
/* Layout helpers
|
||||
----------------------------------*/
|
||||
.ui-helper-hidden { display: none; }
|
||||
.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
|
||||
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
|
||||
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
|
||||
.ui-helper-clearfix { display: inline-block; }
|
||||
/* required comment for clearfix to work in Opera \*/
|
||||
* html .ui-helper-clearfix { height:1%; }
|
||||
.ui-helper-clearfix { display:block; }
|
||||
/* end clearfix */
|
||||
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
|
||||
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-disabled { cursor: default !important; }
|
||||
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* jQuery UI CSS Framework
|
||||
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
|
||||
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
|
||||
*/
|
||||
|
||||
|
||||
/* Component containers
|
||||
----------------------------------*/
|
||||
.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
|
||||
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
|
||||
.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
|
||||
.ui-widget-content a { color: #333333; }
|
||||
.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
|
||||
.ui-widget-header a { color: #ffffff; }
|
||||
|
||||
/* Interaction states
|
||||
----------------------------------*/
|
||||
.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; outline: none; }
|
||||
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; outline: none; }
|
||||
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; outline: none; }
|
||||
.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; outline: none; }
|
||||
.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; outline: none; }
|
||||
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; outline: none; text-decoration: none; }
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
|
||||
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; }
|
||||
.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
|
||||
.ui-state-error a, .ui-widget-content .ui-state-error a { color: #ffffff; }
|
||||
.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #ffffff; }
|
||||
.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
|
||||
.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
|
||||
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
|
||||
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
|
||||
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
|
||||
.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||
.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
|
||||
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
|
||||
|
||||
/* positioning */
|
||||
.ui-icon-carat-1-n { background-position: 0 0; }
|
||||
.ui-icon-carat-1-ne { background-position: -16px 0; }
|
||||
.ui-icon-carat-1-e { background-position: -32px 0; }
|
||||
.ui-icon-carat-1-se { background-position: -48px 0; }
|
||||
.ui-icon-carat-1-s { background-position: -64px 0; }
|
||||
.ui-icon-carat-1-sw { background-position: -80px 0; }
|
||||
.ui-icon-carat-1-w { background-position: -96px 0; }
|
||||
.ui-icon-carat-1-nw { background-position: -112px 0; }
|
||||
.ui-icon-carat-2-n-s { background-position: -128px 0; }
|
||||
.ui-icon-carat-2-e-w { background-position: -144px 0; }
|
||||
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
||||
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
||||
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
||||
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
||||
.ui-icon-triangle-1-s { background-position: -64px -16px; }
|
||||
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
||||
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
||||
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
||||
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
||||
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
||||
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
||||
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
||||
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
||||
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
||||
.ui-icon-arrow-1-s { background-position: -64px -32px; }
|
||||
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
||||
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
||||
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
||||
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
||||
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
||||
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
||||
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
||||
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
||||
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
||||
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
||||
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
||||
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
|
||||
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
||||
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
||||
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
||||
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
||||
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
||||
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
||||
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
||||
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
||||
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
||||
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
||||
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
||||
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
||||
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
||||
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
||||
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
||||
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
||||
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
||||
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
||||
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
||||
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
||||
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
||||
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
||||
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
||||
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
||||
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
||||
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
||||
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
||||
.ui-icon-extlink { background-position: -32px -80px; }
|
||||
.ui-icon-newwin { background-position: -48px -80px; }
|
||||
.ui-icon-refresh { background-position: -64px -80px; }
|
||||
.ui-icon-shuffle { background-position: -80px -80px; }
|
||||
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
||||
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
||||
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
||||
.ui-icon-folder-open { background-position: -16px -96px; }
|
||||
.ui-icon-document { background-position: -32px -96px; }
|
||||
.ui-icon-document-b { background-position: -48px -96px; }
|
||||
.ui-icon-note { background-position: -64px -96px; }
|
||||
.ui-icon-mail-closed { background-position: -80px -96px; }
|
||||
.ui-icon-mail-open { background-position: -96px -96px; }
|
||||
.ui-icon-suitcase { background-position: -112px -96px; }
|
||||
.ui-icon-comment { background-position: -128px -96px; }
|
||||
.ui-icon-person { background-position: -144px -96px; }
|
||||
.ui-icon-print { background-position: -160px -96px; }
|
||||
.ui-icon-trash { background-position: -176px -96px; }
|
||||
.ui-icon-locked { background-position: -192px -96px; }
|
||||
.ui-icon-unlocked { background-position: -208px -96px; }
|
||||
.ui-icon-bookmark { background-position: -224px -96px; }
|
||||
.ui-icon-tag { background-position: -240px -96px; }
|
||||
.ui-icon-home { background-position: 0 -112px; }
|
||||
.ui-icon-flag { background-position: -16px -112px; }
|
||||
.ui-icon-calendar { background-position: -32px -112px; }
|
||||
.ui-icon-cart { background-position: -48px -112px; }
|
||||
.ui-icon-pencil { background-position: -64px -112px; }
|
||||
.ui-icon-clock { background-position: -80px -112px; }
|
||||
.ui-icon-disk { background-position: -96px -112px; }
|
||||
.ui-icon-calculator { background-position: -112px -112px; }
|
||||
.ui-icon-zoomin { background-position: -128px -112px; }
|
||||
.ui-icon-zoomout { background-position: -144px -112px; }
|
||||
.ui-icon-search { background-position: -160px -112px; }
|
||||
.ui-icon-wrench { background-position: -176px -112px; }
|
||||
.ui-icon-gear { background-position: -192px -112px; }
|
||||
.ui-icon-heart { background-position: -208px -112px; }
|
||||
.ui-icon-star { background-position: -224px -112px; }
|
||||
.ui-icon-link { background-position: -240px -112px; }
|
||||
.ui-icon-cancel { background-position: 0 -128px; }
|
||||
.ui-icon-plus { background-position: -16px -128px; }
|
||||
.ui-icon-plusthick { background-position: -32px -128px; }
|
||||
.ui-icon-minus { background-position: -48px -128px; }
|
||||
.ui-icon-minusthick { background-position: -64px -128px; }
|
||||
.ui-icon-close { background-position: -80px -128px; }
|
||||
.ui-icon-closethick { background-position: -96px -128px; }
|
||||
.ui-icon-key { background-position: -112px -128px; }
|
||||
.ui-icon-lightbulb { background-position: -128px -128px; }
|
||||
.ui-icon-scissors { background-position: -144px -128px; }
|
||||
.ui-icon-clipboard { background-position: -160px -128px; }
|
||||
.ui-icon-copy { background-position: -176px -128px; }
|
||||
.ui-icon-contact { background-position: -192px -128px; }
|
||||
.ui-icon-image { background-position: -208px -128px; }
|
||||
.ui-icon-video { background-position: -224px -128px; }
|
||||
.ui-icon-script { background-position: -240px -128px; }
|
||||
.ui-icon-alert { background-position: 0 -144px; }
|
||||
.ui-icon-info { background-position: -16px -144px; }
|
||||
.ui-icon-notice { background-position: -32px -144px; }
|
||||
.ui-icon-help { background-position: -48px -144px; }
|
||||
.ui-icon-check { background-position: -64px -144px; }
|
||||
.ui-icon-bullet { background-position: -80px -144px; }
|
||||
.ui-icon-radio-off { background-position: -96px -144px; }
|
||||
.ui-icon-radio-on { background-position: -112px -144px; }
|
||||
.ui-icon-pin-w { background-position: -128px -144px; }
|
||||
.ui-icon-pin-s { background-position: -144px -144px; }
|
||||
.ui-icon-play { background-position: 0 -160px; }
|
||||
.ui-icon-pause { background-position: -16px -160px; }
|
||||
.ui-icon-seek-next { background-position: -32px -160px; }
|
||||
.ui-icon-seek-prev { background-position: -48px -160px; }
|
||||
.ui-icon-seek-end { background-position: -64px -160px; }
|
||||
.ui-icon-seek-first { background-position: -80px -160px; }
|
||||
.ui-icon-stop { background-position: -96px -160px; }
|
||||
.ui-icon-eject { background-position: -112px -160px; }
|
||||
.ui-icon-volume-off { background-position: -128px -160px; }
|
||||
.ui-icon-volume-on { background-position: -144px -160px; }
|
||||
.ui-icon-power { background-position: 0 -176px; }
|
||||
.ui-icon-signal-diag { background-position: -16px -176px; }
|
||||
.ui-icon-signal { background-position: -32px -176px; }
|
||||
.ui-icon-battery-0 { background-position: -48px -176px; }
|
||||
.ui-icon-battery-1 { background-position: -64px -176px; }
|
||||
.ui-icon-battery-2 { background-position: -80px -176px; }
|
||||
.ui-icon-battery-3 { background-position: -96px -176px; }
|
||||
.ui-icon-circle-plus { background-position: 0 -192px; }
|
||||
.ui-icon-circle-minus { background-position: -16px -192px; }
|
||||
.ui-icon-circle-close { background-position: -32px -192px; }
|
||||
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
||||
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
||||
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
||||
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
||||
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
||||
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
||||
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
||||
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
||||
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
||||
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
||||
.ui-icon-circle-check { background-position: -208px -192px; }
|
||||
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
||||
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
||||
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
||||
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
||||
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
||||
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
||||
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
||||
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
||||
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
||||
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
||||
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
||||
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Corner radius */
|
||||
.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; }
|
||||
.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
|
||||
.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
|
||||
.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
|
||||
.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
|
||||
.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
|
||||
.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
|
||||
.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
|
||||
.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; }
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
|
||||
.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -webkit-border-radius: 5px; }/* Accordion
|
||||
----------------------------------*/
|
||||
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
|
||||
.ui-accordion .ui-accordion-li-fix { display: inline; }
|
||||
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
|
||||
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; }
|
||||
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
|
||||
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; }
|
||||
.ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker
|
||||
----------------------------------*/
|
||||
.ui-datepicker { width: 17em; padding: .2em .2em 0; }
|
||||
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
|
||||
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
|
||||
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
|
||||
.ui-datepicker .ui-datepicker-prev { left:2px; }
|
||||
.ui-datepicker .ui-datepicker-next { right:2px; }
|
||||
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
|
||||
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
|
||||
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
|
||||
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
|
||||
.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
|
||||
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
|
||||
.ui-datepicker select.ui-datepicker-month,
|
||||
.ui-datepicker select.ui-datepicker-year { width: 49%;}
|
||||
.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
|
||||
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
|
||||
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
|
||||
.ui-datepicker td { border: 0; padding: 1px; }
|
||||
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
|
||||
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
|
||||
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
|
||||
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
|
||||
|
||||
/* with multiple calendars */
|
||||
.ui-datepicker.ui-datepicker-multi { width:auto; }
|
||||
.ui-datepicker-multi .ui-datepicker-group { float:left; }
|
||||
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
|
||||
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
|
||||
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
|
||||
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
|
||||
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
|
||||
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
|
||||
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
|
||||
.ui-datepicker-row-break { clear:both; width:100%; }
|
||||
|
||||
/* RTL support */
|
||||
.ui-datepicker-rtl { direction: rtl; }
|
||||
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
|
||||
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
|
||||
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
|
||||
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
|
||||
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
|
||||
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
|
||||
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
|
||||
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
|
||||
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
|
||||
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
|
||||
|
||||
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
|
||||
.ui-datepicker-cover {
|
||||
display: none; /*sorry for IE5*/
|
||||
display/**/: block; /*sorry for IE5*/
|
||||
position: absolute; /*must have*/
|
||||
z-index: -1; /*must have*/
|
||||
filter: mask(); /*must have*/
|
||||
top: -4px; /*must have*/
|
||||
left: -4px; /*must have*/
|
||||
width: 200px; /*must have*/
|
||||
height: 200px; /*must have*/
|
||||
}/* Dialog
|
||||
----------------------------------*/
|
||||
.ui-dialog { position: relative; padding: .2em; width: 300px; }
|
||||
.ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; }
|
||||
.ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; }
|
||||
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
|
||||
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
|
||||
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
|
||||
.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
|
||||
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
|
||||
.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
|
||||
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
|
||||
.ui-draggable .ui-dialog-titlebar { cursor: move; }
|
||||
/* Progressbar
|
||||
----------------------------------*/
|
||||
.ui-progressbar { height:2em; text-align: left; }
|
||||
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable
|
||||
----------------------------------*/
|
||||
.ui-resizable { position: relative;}
|
||||
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
|
||||
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
|
||||
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; }
|
||||
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; }
|
||||
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; }
|
||||
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; }
|
||||
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
|
||||
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
|
||||
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
|
||||
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider
|
||||
----------------------------------*/
|
||||
.ui-slider { position: relative; text-align: left; }
|
||||
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
|
||||
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
|
||||
|
||||
.ui-slider-horizontal { height: .8em; }
|
||||
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
|
||||
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
|
||||
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
|
||||
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
|
||||
|
||||
.ui-slider-vertical { width: .8em; height: 100px; }
|
||||
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
|
||||
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
|
||||
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
|
||||
.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
|
||||
----------------------------------*/
|
||||
.ui-tabs { padding: .2em; zoom: 1; }
|
||||
.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; }
|
||||
.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
|
||||
.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; }
|
||||
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; }
|
||||
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
|
||||
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
|
||||
.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; }
|
||||
.ui-tabs .ui-tabs-hide { display: none !important; }
|
||||
@@ -474,6 +474,9 @@
|
||||
<code>TORON</code>
|
||||
<code>TORNO</code>
|
||||
<code>TR</code>
|
||||
<temple name="Trujillo, Peru">
|
||||
<code>TRUJI</code>
|
||||
</temple>
|
||||
</temple>
|
||||
<temple name="Tuxtla Gutierrez, Mexico">
|
||||
<code>TGUTI</code>
|
||||
|
||||
@@ -13,8 +13,8 @@ gramps(1) @VERSION@ gramps(1)
|
||||
**SYNOPSIS**
|
||||
**gramps** [**-?** | **--help**] [**--usage**] [**--version**]
|
||||
[**-l**] [**-L**] [**-u** | **--force-unlock**] [**-O** | **--open=** *DATABASE*
|
||||
[**-f** | **--format=** *FORMAT*]] [**-i** | **--import=** *FILE*
|
||||
[**-f** | **--format=** *FORMAT*]] [**-i** | **--import=** *...*]
|
||||
[**-f** | **--format=** *FORMAT*] [**-i** | **--import=** *FILE*
|
||||
[**-f** | **--format=** *FORMAT*]] [**--remove=** *FAMILY_TREE_PATTERN*]
|
||||
[**-e** | **--export=** *FILE* [**-f** | **--format=** *FORMAT*]]
|
||||
[**-a** | **--action=** *ACTION*] [*-p* | **--options=** *OPTION‐
|
||||
STRING*]] [*FILE*] [**--version**]
|
||||
@@ -50,23 +50,23 @@ gramps(1) @VERSION@ gramps(1)
|
||||
|
||||
Formats available for export are **gramps-xml** (guessed if *FILE*
|
||||
ends with **.gramps** ), **gedcom** (guessed if *FILE* ends with
|
||||
**.ged** ), or any file export available through the Gramps plugin
|
||||
**.ged** ), or any file export available through the Gramps plugin
|
||||
system.
|
||||
|
||||
Formats available for import are **gramps-xml** , **gedcom** ,
|
||||
**gramps-pkg** (guessed if *FILE* ends with **.gpkg** ),
|
||||
and **geneweb** (guessed if *FILE* ends with **.gw** ).
|
||||
|
||||
Formats available for export are **gramps-xml** , **gedcom** ,
|
||||
**gramps-pkg** , **wft** (guessed if *FILE* ends with **.wft** ),
|
||||
Formats available for export are **gramps-xml** , **gedcom** ,
|
||||
**gramps-pkg** , **wft** (guessed if *FILE* ends with **.wft** ),
|
||||
**geneweb**.
|
||||
|
||||
|
||||
**-l**
|
||||
**-l**
|
||||
Print a list of known family trees.
|
||||
|
||||
|
||||
**-L**
|
||||
|
||||
|
||||
**-L**
|
||||
Print a detailed list of known family trees.
|
||||
|
||||
|
||||
@@ -88,16 +88,16 @@ gramps(1) @VERSION@ gramps(1)
|
||||
|
||||
When more than one input file is given, each has to be preceded
|
||||
by **-i** flag. The files are imported in the specified order, i.e.
|
||||
**-i** *FILE1* **-i** *FILE2* and **-i** *FILE2* **-i** *FILE1*
|
||||
**-i** *FILE1* **-i** *FILE2* and **-i** *FILE2* **-i** *FILE1*
|
||||
might produce different gramps IDs in the resulting database.
|
||||
|
||||
|
||||
|
||||
|
||||
**-e** , **--export=** *FICHIER*
|
||||
Export data into *FILE* . For **gramps-xml** , **gedcom**
|
||||
, **wft** , **gramps-pkg** , et **geneweb** , the *FILE* is the
|
||||
Export data into *FILE* . For **gramps-xml** , **gedcom**
|
||||
, **wft** , **gramps-pkg** , et **geneweb** , the *FILE* is the
|
||||
name of the resulting file.
|
||||
|
||||
When more than one output file is given, each has to be preceded
|
||||
|
||||
When more than one output file is given, each has to be preceded
|
||||
by **-e** flag. The files are written one by one, in the specified order.
|
||||
|
||||
|
||||
@@ -165,7 +165,7 @@ gramps(1) @VERSION@ gramps(1)
|
||||
|
||||
|
||||
With or without the **-O** flag, there could be multiple imports, exports,
|
||||
and actions specified further on the command line by using **-i** ,
|
||||
and actions specified further on the command line by using **-i** ,
|
||||
**-e** , and **-a** flags.
|
||||
|
||||
|
||||
@@ -194,46 +194,46 @@ gramps(1) @VERSION@ gramps(1)
|
||||
**EXAMPLES**
|
||||
To open an existing family tree and import an xml file into it, one
|
||||
may type:
|
||||
|
||||
|
||||
**gramps -O** *'My Family Tree'* **-i** *~/db3.gramps*
|
||||
|
||||
The above changes the opened family tree, to do the same, but import
|
||||
both in a temporary family tree and start an interactive session, one
|
||||
may type:
|
||||
|
||||
|
||||
**gramps -i** *'My Family Tree'* **-i** *~/db3.gramps*
|
||||
|
||||
To import four databases (whose formats can be determined from their
|
||||
names) and then check the resulting database for errors, one may type:
|
||||
|
||||
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
|
||||
|
||||
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
|
||||
**-i** *file4.wft* **-a** *check*
|
||||
|
||||
To explicitly specify the formats in the above example, append file‐
|
||||
names with appropriate **-f** options:
|
||||
|
||||
**gramps -i** *file1.ged* **-f** *gedcom* **-i** *file2.tgz* **-f**
|
||||
|
||||
**gramps -i** *file1.ged* **-f** *gedcom* **-i** *file2.tgz* **-f**
|
||||
*gramps-pkg* **-i** *~/db3.gramps* **-f** *gramps-xml* **-i** *file4.wft*
|
||||
**-f** *wft* **-a** *check*
|
||||
|
||||
To record the database resulting from all imports, supply **-e** flag (use
|
||||
**-f** if the filename does not allow gramps to guess the format):
|
||||
|
||||
|
||||
**gramps -i** *file1.ged* **-i** *file2.tgz* **-e** *~/new-package*
|
||||
**-f** *gramps-pkg*
|
||||
|
||||
To import three databases and start interactive gramps session with the
|
||||
result:
|
||||
|
||||
|
||||
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
|
||||
|
||||
To run the Verify tool from the commandline and output the result to
|
||||
stdout:
|
||||
|
||||
|
||||
**gramps -O** *'My Family Tree'* **-a** *tool* **-p name=** *verify*
|
||||
|
||||
Finally, to start normal interactive session type:
|
||||
|
||||
|
||||
**gramps**
|
||||
|
||||
|
||||
@@ -257,20 +257,20 @@ gramps(1) @VERSION@ gramps(1)
|
||||
modification of the main program.
|
||||
|
||||
In addition to generating direct printer output, report generators also
|
||||
target other systems, such as *LibreOffice.org* , *AbiWord* , *HTML*,
|
||||
target other systems, such as *LibreOffice.org* , *AbiWord* , *HTML*,
|
||||
or *LaTeX* to allow the users to modify the format to suit their needs.
|
||||
|
||||
|
||||
**KNOWN BUGS AND LIMITATIONS**
|
||||
|
||||
**FILES**
|
||||
|
||||
|
||||
*${PREFIX}/bin/gramps*
|
||||
|
||||
*${PREFIX}/lib/python/dist-packages/gramps/*
|
||||
|
||||
|
||||
*${PREFIX}/lib/python3/dist-packages/gramps/*
|
||||
|
||||
*${PREFIX}/share/*
|
||||
|
||||
|
||||
*${HOME}/.gramps*
|
||||
|
||||
|
||||
@@ -290,8 +290,8 @@ gramps(1) @VERSION@ gramps(1)
|
||||
The user documentation is available through standard web browser
|
||||
in the form of Gramps Manual.
|
||||
|
||||
The developer documentation can be found on the
|
||||
http://www.gramps-project.org/wiki/index.php?title=Portal:Developers
|
||||
The developer documentation can be found on the
|
||||
http://www.gramps-project.org/wiki/index.php?title=Portal:Developers
|
||||
portal.
|
||||
|
||||
|
||||
|
||||
@@ -13,11 +13,10 @@ gramps(1) @VERSION@ gramps(1)
|
||||
|
||||
**SYNOPSIS**
|
||||
**gramps** [**-?** | **--help**] [**--usage**] [**--version**]
|
||||
[**-l**] [**-L**] [**-u** | **--force-unlock**] [**-O** | **--open=** *BASE_DE_DONNEES*
|
||||
[**-f** | **--format=** *FORMAT*]] [**-i** | **--import=** *FILE*
|
||||
[**-f** | **--format=** *FORMAT*]] [**-i** | **--import=** *...*]
|
||||
[**-e** | **--export=** *FICHIER* [**-f** | **--format=** *FORMAT*]]
|
||||
[**-a** | **--action=** *ACTION*] [*-p* | **--options=** *CHAÎNE‐
|
||||
[**-l**] [**-L**] [**-u** | **--force-unlock**] [**-O** | **--open=** *BASE_DE_DONNEES*]
|
||||
[**-f** | **--format=** *FORMAT*] [**-i** | **--import=** *FICHIER*]
|
||||
[**-e** | **--export=** *FICHIER*] [**--remove=** *FAMILY_TREE_PATTERN*]
|
||||
[**-a** | **--action=** *ACTION* [*-p* | **--options=** *CHAÎNE‐
|
||||
OPTION*]] [*FICHIER*] [**--version**]
|
||||
|
||||
|
||||
@@ -61,7 +60,7 @@ gramps(1) @VERSION@ gramps(1)
|
||||
**geneweb** .
|
||||
|
||||
|
||||
**-l**
|
||||
**-l**
|
||||
Imprime une liste des arbres familiaux disponibles.
|
||||
|
||||
|
||||
@@ -92,11 +91,11 @@ gramps(1) @VERSION@ gramps(1)
|
||||
|
||||
|
||||
**-e** , **--export=** *FICHIER*
|
||||
Exporter des données dans un *FICHIER* . Pour les fichiers **gramps-xml**
|
||||
, **gedcom** , **wft** , **gramps-pkg** , et **geneweb** , le
|
||||
Exporter des données dans un *FICHIER* . Pour les fichiers **gramps-xml**
|
||||
, **gedcom** , **wft** , **gramps-pkg** , et **geneweb** , le
|
||||
*FICHIER* est le nom du fichier de sortie.
|
||||
|
||||
Quand plus d'un fichier doit être exporté, chacun doit être
|
||||
|
||||
Quand plus d'un fichier doit être exporté, chacun doit être
|
||||
précédé par la commande **-e** . Ces fichiers sont importés dans le
|
||||
même ordre.
|
||||
|
||||
@@ -121,7 +120,7 @@ gramps(1) @VERSION@ gramps(1)
|
||||
|
||||
**name=name**
|
||||
Cette option est obligatoire, elle détermine quel rapport ou
|
||||
outil sera utilisé. Si le name saisi ne correspond à aucun
|
||||
outil sera utilisé. Si le name saisi ne correspond à aucun
|
||||
module disponible, un message d'erreur sera ajouté.
|
||||
|
||||
**show=all**
|
||||
@@ -184,54 +183,54 @@ gramps(1) @VERSION@ gramps(1)
|
||||
Les erreurs rencontrées lors d'importation, d'exportation, ou d'action, seront
|
||||
mémorisées en *stdout* (si elles sont le fait de la manipulation par
|
||||
gramps) ou en *stderr* (si elles ne sont pas le fait d'une manipulation).
|
||||
Utilisez les shell de redirection de *stdout* et *stderr* pour sauver
|
||||
Utilisez les shell de redirection de *stdout* et *stderr* pour sauver
|
||||
les messages et les erreurs dans les fichiers.
|
||||
|
||||
|
||||
**EXEMPLES**
|
||||
Pour ouvrir un arbre familial et y importer un fichier XML, on peut
|
||||
saisir:
|
||||
|
||||
|
||||
**gramps -O** *'Mon Arbre Familial'* **-i** *~/db3.gramps*
|
||||
|
||||
Ceci ouvre un arbre familial, pour faire la même chose, mais importer
|
||||
dans un arbre familial temporaire et démarrer une session interactive,
|
||||
on peut saisir :
|
||||
|
||||
|
||||
**gramps -i** *'Mon Arbre Familial'* **-i** *~/db3.gramps*
|
||||
|
||||
Lecture de quatre bases de données dont les formats peuvent être
|
||||
devinés d'après les noms, puis vérification des données:
|
||||
|
||||
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
|
||||
|
||||
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
|
||||
**-i** *file4.wft* **-a** *check*
|
||||
|
||||
|
||||
Si vous voulez préciser lesformats de fichiers dans l'exemple ci-
|
||||
dessus, complétez les noms de fichiers par les options -f appropriées:
|
||||
|
||||
**gramps -i** *file1.ged* **-f** *gedcom* **-i** *file2.tgz* **-f**
|
||||
|
||||
**gramps -i** *file1.ged* **-f** *gedcom* **-i** *file2.tgz* **-f**
|
||||
*gramps-pkg* **-i** *~/db3.gramps* **-f** *gramps-xml* **-i** *file4.wft*
|
||||
**-f** *wft* **-a** *check*
|
||||
|
||||
Pour enregistrer le résultat des lectures, donnez l'option **-e**
|
||||
|
||||
Pour enregistrer le résultat des lectures, donnez l'option **-e**
|
||||
(utiliser -f si le nom de fichier ne permet pas à gramps de deviner le
|
||||
format):
|
||||
|
||||
|
||||
**gramps -i** *file1.ged* **-i** *file2.tgz* **-e** *~/new-package*
|
||||
**-f** *gramps-pkg*
|
||||
|
||||
Pour lire trois ensembles de données puis lancer une session
|
||||
|
||||
Pour lire trois ensembles de données puis lancer une session
|
||||
interactive de gramps sur le tout :
|
||||
|
||||
|
||||
**gramps -i** *file1.ged* **-i** *file2.tgz* **-i** *~/db3.gramps*
|
||||
|
||||
Pour lancer l'outil de vérification de la base de données depuis la
|
||||
ligne de commande et obtenir le résultat :
|
||||
|
||||
|
||||
**gramps -O** *'My Family Tree'* **-a** *tool* **-p name=** *verify*
|
||||
|
||||
Enfin, pour lancer une session interactive normale, entrer :
|
||||
|
||||
Enfin, pour lancer une session interactive normale, entrer :
|
||||
|
||||
**gramps**
|
||||
|
||||
|
||||
@@ -265,11 +264,11 @@ gramps(1) @VERSION@ gramps(1)
|
||||
**FICHIERS**
|
||||
|
||||
*${PREFIX}/bin/gramps*
|
||||
|
||||
*${PREFIX}/lib/python/dist-packages/gramps/*
|
||||
|
||||
|
||||
*${PREFIX}/lib/python3/dist-packages/gramps/*
|
||||
|
||||
*${PREFIX}/share/*
|
||||
|
||||
|
||||
*${HOME}/.gramps*
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
.TH "GRAMPS" "1" "09 March 2015" "4.2" "Gramps"
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH FRENCH "" "" ""
|
||||
.SH NAME
|
||||
gramps \- Gramps Documentation
|
||||
French \-
|
||||
.
|
||||
.nr rst2man-indent-level 0
|
||||
.
|
||||
@@ -28,8 +30,6 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.\" Man page generated from reStructeredText.
|
||||
.
|
||||
.sp
|
||||
gramps(1) @VERSION@ gramps(1)
|
||||
.INDENT 0.0
|
||||
@@ -42,11 +42,10 @@ données généalogiques)
|
||||
.TP
|
||||
.B \fBSYNOPSIS\fP
|
||||
\fBgramps\fP [\fB\-?\fP | \fB\-\-help\fP] [\fB\-\-usage\fP] [\fB\-\-version\fP]
|
||||
[\fB\-l\fP] [\fB\-L\fP] [\fB\-u\fP | \fB\-\-force\-unlock\fP] [\fB\-O\fP | \fB\-\-open=\fP \fIBASE_DE_DONNEES\fP
|
||||
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]] [\fB\-i\fP | \fB\-\-import=\fP \fIFILE\fP
|
||||
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]] [\fB\-i\fP | \fB\-\-import=\fP \fI...\fP]
|
||||
[\fB\-e\fP | \fB\-\-export=\fP \fIFICHIER\fP [\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]]
|
||||
[\fB\-a\fP | \fB\-\-action=\fP \fIACTION\fP] [\fI\-p\fP | \fB\-\-options=\fP \fICHAÎNE‐
|
||||
[\fB\-l\fP] [\fB\-L\fP] [\fB\-u\fP | \fB\-\-force\-unlock\fP] [\fB\-O\fP | \fB\-\-open=\fP \fIBASE_DE_DONNEES\fP]
|
||||
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP] [\fB\-i\fP | \fB\-\-import=\fP \fIFICHIER\fP]
|
||||
[\fB\-e\fP | \fB\-\-export=\fP \fIFICHIER\fP] [\fB\-\-remove=\fP \fIFAMILY_TREE_PATTERN\fP]
|
||||
[\fB\-a\fP | \fB\-\-action=\fP \fIACTION\fP [\fI\-p\fP | \fB\-\-options=\fP \fICHAÎNE‐
|
||||
OPTION\fP]] [\fIFICHIER\fP] [\fB\-\-version\fP]
|
||||
.TP
|
||||
.B \fBDESCRIPTION\fP
|
||||
@@ -76,16 +75,16 @@ Le format spécifique du \fIFICHIER\fP est précédé par les arguments
|
||||
alors le format sera celui de l\(aqextension ou du type\-MIME.
|
||||
.sp
|
||||
Les formats de sortie disponibles sont \fBgramps\-xml\fP (deviné si
|
||||
\fIFICHIER\fP se termine par \fB.gramps\fP ), et \fBgedcom\fP (deviné si \fIFICHIER\fP se
|
||||
termine par \fB.ged\fP ), ou tout autre fichier d\(aqexportation
|
||||
\fIFICHIER\fP se termine par \fB\&.gramps\fP ), et \fBgedcom\fP (deviné si \fIFICHIER\fP se
|
||||
termine par \fB\&.ged\fP ), ou tout autre fichier d\(aqexportation
|
||||
disponible dans le système de plugin Gramps.
|
||||
.sp
|
||||
Les formats disponibles pour l\(aqimportation sont \fBgrdb\fP ,
|
||||
\fBgramps\-xml\fP , \fBgedcom\fP , \fBgramps\-pkg\fP (deviné si \fIFICHIER\fP se termine par
|
||||
\fB.gpkg\fP ), et \fBgeneweb\fP (deviné si \fIFICHIER\fP se termine par \fB.gw\fP ).
|
||||
\fB\&.gpkg\fP ), et \fBgeneweb\fP (deviné si \fIFICHIER\fP se termine par \fB\&.gw\fP ).
|
||||
.sp
|
||||
Les formats disponibles pour l\(aqexportation sont \fBgramps\-xml\fP , \fBged‐
|
||||
com\fP , \fBgramps\-pkg\fP , \fBwft\fP (deviné si \fIFICHIER\fP se termine par \fB.wft\fP ),
|
||||
com\fP , \fBgramps\-pkg\fP , \fBwft\fP (deviné si \fIFICHIER\fP se termine par \fB\&.wft\fP ),
|
||||
\fBgeneweb\fP .
|
||||
.TP
|
||||
.B \fB\-l\fP
|
||||
@@ -193,7 +192,7 @@ fenêtre et demarrera avec une base vide, puisqu\(aqil n\(aqy a pas données.
|
||||
.sp
|
||||
Si aucune option \fB\-e\fP ou \fB\-a\fP n\(aqest donnée, gramps lancera sa propre
|
||||
fenêtre et démarrera avec la base de données issue de tout les imports.
|
||||
Cette base sera \fBimport_db.grdb\fP dans le répertoire \fB~/.gramps/import\fP.
|
||||
Cette base sera \fBimport_db.grdb\fP dans le répertoire \fB~/.gramps/import\fP\&.
|
||||
.sp
|
||||
Les erreurs rencontrées lors d\(aqimportation, d\(aqexportation, ou d\(aqaction, seront
|
||||
mémorisées en \fIstdout\fP (si elles sont le fait de la manipulation par
|
||||
@@ -302,7 +301,7 @@ besoins
|
||||
.INDENT 3.5
|
||||
\fI${PREFIX}/bin/gramps\fP
|
||||
.sp
|
||||
\fI${PREFIX}/lib/python/dist\-packages/gramps/\fP
|
||||
\fI${PREFIX}/lib/python3/dist\-packages/gramps/\fP
|
||||
.sp
|
||||
\fI${PREFIX}/share/\fP
|
||||
.sp
|
||||
@@ -334,10 +333,5 @@ La documentation pour développeur est disponible sur le site
|
||||
.UNINDENT
|
||||
.sp
|
||||
gramps(1) @VERSION@ gramps(1)
|
||||
.SH AUTHOR
|
||||
Jerome Rapinat
|
||||
.SH COPYRIGHT
|
||||
2015, Gramps project
|
||||
.\" Generated by docutils manpage writer.
|
||||
.\"
|
||||
.
|
||||
|
||||
@@ -1,332 +1,335 @@
|
||||
.TH gramps 1 "@VERSION@" "December 2012" "@VERSION@"
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH ENGLISH "" "" ""
|
||||
.SH NAME
|
||||
gramps \- Genealogical Research and Analysis Management Programming System.
|
||||
|
||||
.SH SYNOPSIS
|
||||
.B gramps
|
||||
.RB [ \-?|\-\^\-help ]
|
||||
.RB [ \-\^\-usage ]
|
||||
.RB [ \-\^\-version ]
|
||||
.RB [ \-l ]
|
||||
.RB [ \-u|\-\^\-force-unlock ]
|
||||
.RB [ \-O|\-\^\-open=
|
||||
.IR DATABASE
|
||||
.RB [ \-f|\-\^\-format=
|
||||
.IR FORMAT ]]
|
||||
.RB [ \-i|\-\^\-import=
|
||||
.IR FILE
|
||||
.RB [ \-f|\-\^\-format=
|
||||
.IR FORMAT ]]
|
||||
.RB [ \-i|\-\^\-import=
|
||||
.IR ... ]
|
||||
.RB [ \-e|\-\^\-export=
|
||||
.IR FILE
|
||||
.RB [ \-f|\-\^\-format=
|
||||
.IR FORMAT ]]
|
||||
.RB [ \-a|\-\^\-action=
|
||||
.IR ACTION ]
|
||||
.RB [ \-p|\-\^\-options=
|
||||
.IR OPTIONSTRING ]]
|
||||
.RB [
|
||||
.IR FILE
|
||||
.RB ]
|
||||
.if 0 .RB [ bonobo\ options ]
|
||||
.if 0 .RB [ sound\ options ]
|
||||
.RB [ \-\-version ]
|
||||
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
\fIGramps\fP is a Free/OpenSource genealogy program. It is written in Python,
|
||||
using the GTK+/GNOME interface.
|
||||
Gramps should seem familiar to anyone who has used other genealogy programs
|
||||
before such as \fIFamily Tree Maker (TM)\fR, \fIPersonal Ancestral
|
||||
Files (TM)\fR, or the GNU Geneweb.
|
||||
It supports importing of the ever popular GEDCOM format which is used world
|
||||
wide by almost all other genealogy software.
|
||||
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.BI gramps " FILE"
|
||||
When \fIFILE\fR is given (without any flags) as a family tree name or as
|
||||
a family tree database directory, then it is opened and an interactive
|
||||
session is started. If FILE is a file format understood by Gramps, an empty
|
||||
family tree is created whose name is based on the \fIFILE\fP name
|
||||
and the data is imported into it. The rest of the
|
||||
options is ignored. This way of launching is suitable for using gramps
|
||||
as a handler for genealogical data in e.g. web browsers. This invocation
|
||||
can accept any data format native to gramps, see below.
|
||||
.br
|
||||
|
||||
.TP
|
||||
.BI \-f,\-\^\-format= " FORMAT"
|
||||
Explicitly specify format of \fIFILE\fR given by preceding
|
||||
.ig
|
||||
\fB\-O\fR,
|
||||
English \-
|
||||
.
|
||||
.nr rst2man-indent-level 0
|
||||
.
|
||||
.de1 rstReportMargin
|
||||
\\$1 \\n[an-margin]
|
||||
level \\n[rst2man-indent-level]
|
||||
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
-
|
||||
\\n[rst2man-indent0]
|
||||
\\n[rst2man-indent1]
|
||||
\\n[rst2man-indent2]
|
||||
..
|
||||
\fB\-i\fR, or
|
||||
\fB\-e\fR option. If the \fB\-f\fR option is not given for any \fIFILE\fR,
|
||||
the format of that file is guessed according to its extension or MIME-type.
|
||||
.br
|
||||
|
||||
Formats
|
||||
available for export are \fBgramps\-xml\fR (guessed if \fIFILE\fR ends with
|
||||
\fB.gramps\fR), \fBgedcom\fR (guessed if \fIFILE\fR ends with \fB.ged\fR), or
|
||||
any file export available through the Gramps plugin system.
|
||||
.br
|
||||
|
||||
Formats
|
||||
available for import are \fBgrdb\fR, \fBgramps\-xml\fR, \fBgedcom\fR,
|
||||
\fBgramps\-pkg\fR (guessed if \fIFILE\fR ends with \fB.gpkg\fR), and
|
||||
\fBgeneweb\fR (guessed if \fIFILE\fR ends with \fB.gw\fR).
|
||||
.br
|
||||
|
||||
Formats available for export are
|
||||
.ig
|
||||
\fBgrdb\fR,
|
||||
.de1 INDENT
|
||||
.\" .rstReportMargin pre:
|
||||
. RS \\$1
|
||||
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
|
||||
. nr rst2man-indent-level +1
|
||||
.\" .rstReportMargin post:
|
||||
..
|
||||
\fBgramps\-xml\fR, \fBgedcom\fR,
|
||||
\fBgramps\-pkg\fR, \fBwft\fR (guessed if \fIFILE\fR ends with \fB.wft\fR),
|
||||
\fBgeneweb\fR, and \fBiso\fR (never guessed, always specify with
|
||||
\fB\-f\fR option).
|
||||
|
||||
.TP
|
||||
.BI \-l
|
||||
.de UNINDENT
|
||||
. RE
|
||||
.\" indent \\n[an-margin]
|
||||
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.nr rst2man-indent-level -1
|
||||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.sp
|
||||
gramps(1) @VERSION@ gramps(1)
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
.B \fBNAME\fP
|
||||
gramps \- Genealogical Research and Analysis Management Programming Sys‐
|
||||
tem.
|
||||
.TP
|
||||
.B \fBSYNOPSIS\fP
|
||||
\fBgramps\fP [\fB\-?\fP | \fB\-\-help\fP] [\fB\-\-usage\fP] [\fB\-\-version\fP]
|
||||
[\fB\-l\fP] [\fB\-L\fP] [\fB\-u\fP | \fB\-\-force\-unlock\fP] [\fB\-O\fP | \fB\-\-open=\fP \fIDATABASE\fP
|
||||
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP] [\fB\-i\fP | \fB\-\-import=\fP \fIFILE\fP
|
||||
[\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]] [\fB\-\-remove=\fP \fIFAMILY_TREE_PATTERN\fP]
|
||||
[\fB\-e\fP | \fB\-\-export=\fP \fIFILE\fP [\fB\-f\fP | \fB\-\-format=\fP \fIFORMAT\fP]]
|
||||
[\fB\-a\fP | \fB\-\-action=\fP \fIACTION\fP] [\fI\-p\fP | \fB\-\-options=\fP \fIOPTION‐
|
||||
STRING\fP]] [\fIFILE\fP] [\fB\-\-version\fP]
|
||||
.TP
|
||||
.B \fBDESCRIPTION\fP
|
||||
Gramps is a Free/OpenSource genealogy program. It is written in Python,
|
||||
using the GTK+/GNOME interface. Gramps should seem familiar to anyone
|
||||
who has used other genealogy programs before such as Family Tree Maker
|
||||
(TM), Personal Ancestral Files (TM), or the GNU Geneweb. It supports
|
||||
importing of the ever popular GEDCOM format which is used world wide by
|
||||
almost all other genealogy software.
|
||||
.TP
|
||||
.B \fBOPTIONS\fP
|
||||
.INDENT 7.0
|
||||
.TP
|
||||
.B \fBgramps\fP \fIFILE\fP
|
||||
When \fIFILE\fP is given (without any flags) as a family tree name or
|
||||
as a family tree database directory, then it is opened and an
|
||||
interactive session is started. If \fIFILE\fP is a file format under‐
|
||||
stood by Gramps, an empty family tree is created whose name is
|
||||
based on the \fIFILE\fP name and the data is imported into it. The
|
||||
rest of the options is ignored. This way of launching is suit‐
|
||||
able for using gramps as a handler for genealogical data in e.g.
|
||||
web browsers. This invocation can accept any data format native
|
||||
to gramps, see below.
|
||||
.TP
|
||||
.B \fB\-f\fP , \fB\-\-format=\fP \fIFORMAT\fP
|
||||
Explicitly specify format of \fIFILE\fP given by preceding \fB\-i\fP ,
|
||||
or \fB\-e\fP option. If the \fB\-f\fP option is not given for any
|
||||
\fIFILE\fP , the format of that file is guessed according to its extension
|
||||
or MIME\-type.
|
||||
.sp
|
||||
Formats available for export are \fBgramps\-xml\fP (guessed if \fIFILE\fP
|
||||
ends with \fB\&.gramps\fP ), \fBgedcom\fP (guessed if \fIFILE\fP ends with
|
||||
\fB\&.ged\fP ), or any file export available through the Gramps plugin
|
||||
system.
|
||||
.sp
|
||||
Formats available for import are \fBgramps\-xml\fP , \fBgedcom\fP ,
|
||||
\fBgramps\-pkg\fP (guessed if \fIFILE\fP ends with \fB\&.gpkg\fP ),
|
||||
and \fBgeneweb\fP (guessed if \fIFILE\fP ends with \fB\&.gw\fP ).
|
||||
.sp
|
||||
Formats available for export are \fBgramps\-xml\fP , \fBgedcom\fP ,
|
||||
\fBgramps\-pkg\fP , \fBwft\fP (guessed if \fIFILE\fP ends with \fB\&.wft\fP ),
|
||||
\fBgeneweb\fP\&.
|
||||
.TP
|
||||
.B \fB\-l\fP
|
||||
Print a list of known family trees.
|
||||
|
||||
.TP
|
||||
.BI \-u,\-\^\-force-unlock
|
||||
.B \fB\-L\fP
|
||||
Print a detailed list of known family trees.
|
||||
.TP
|
||||
.B \fB\-u\fP , \fB\-\-force\-unlock\fP
|
||||
Unlock a locked database.
|
||||
|
||||
.TP
|
||||
.BI \-O,\-\^\-open= " DATABASE"
|
||||
Open \fIDATABASE\fR which must be an existing database directory or existing family tree name.
|
||||
If no action, import or export options are given on the command line then an interactive session is started using that database.
|
||||
|
||||
.TP
|
||||
.BI \-i,\-\^\-import= " FILE"
|
||||
Import data from \fIFILE\fR. If you haven't specified a database, then an empty database is created for you called Family Tree x (where x is an incrementing number).
|
||||
.br
|
||||
|
||||
When more than one input file is given, each has to be preceded by \fB\-i\fR
|
||||
flag. The files are imported in the specified order,
|
||||
i.e. \fB\-i\fR \fIFILE1\fR \fB\-i\fR \fIFILE2\fR
|
||||
and \fB\-i\fR \fIFILE2\fR \fB\-i\fR \fIFILE1\fR might produce different
|
||||
gramps IDs in the resulting database.
|
||||
|
||||
.TP
|
||||
.BI \-e,\-\^\-export= " FILE"
|
||||
Export data into \fIFILE\fR. For \fBgramps\-xml\fR, \fBgedcom\fR,
|
||||
\fBwft\fR, \fBgramps\-pkg\fR, and \fBgeneweb\fR, the \fIFILE\fR is
|
||||
the name of the resulting file.
|
||||
.br
|
||||
|
||||
When more than one output file is given, each has to be preceded
|
||||
by \fB\-e\fR flag. The files are written one by one, in the specified order.
|
||||
|
||||
.TP
|
||||
.BI \-a,\-\^\-action= " ACTION"
|
||||
Perform \fIACTION\fR on the imported data. This is done after all imports
|
||||
are successfully completed. Currently available actions are
|
||||
\fBsummary\fR (same as Reports->View->Summary),
|
||||
\fBcheck\fR (same as Tools->Database Processing->Check and Repair),
|
||||
\fBreport\fR (generates report), and
|
||||
\fBtool\fR (runs a plugin tool).
|
||||
Both \fBreport\fR and \fBtool\fR need the \fIOPTIONSTRING\fR supplied by the
|
||||
\fB\-p\fR flag).
|
||||
.br
|
||||
|
||||
The \fIOPTIONSTRING\fR should satisfy the following conditions:
|
||||
.br
|
||||
It must not contain any spaces.
|
||||
If some arguments need to include spaces, the string should
|
||||
be enclosed with quotation marks, i.e., follow the shell syntax.
|
||||
Option string is a list of pairs with name and value (separated by the
|
||||
equality sign). The name and value pairs must be separated by commas.
|
||||
.br
|
||||
|
||||
Most of the report or tools options are specific for each report or tool.
|
||||
However, there are some common options.
|
||||
|
||||
.BI "name=name"
|
||||
.br
|
||||
This mandatory option determines which report or tool will be run.
|
||||
If the supplied \fIname\fR does not correspond to any available report or
|
||||
tool, an error message will be printed followed by the list of
|
||||
available reports or tools (depending on the \fIACTION\fR).
|
||||
|
||||
.BI "show=all"
|
||||
.br
|
||||
This will produce the list of names for all options available for a given
|
||||
report or tool.
|
||||
|
||||
.BI "show="optionname
|
||||
.br
|
||||
This will print the description of
|
||||
the functionality supplied by \fIoptionname\fR, as well as what are the
|
||||
acceptable types and values for this option.
|
||||
|
||||
.br
|
||||
Use the above options to find out
|
||||
everything about a given report.
|
||||
|
||||
.LP
|
||||
When more than one output action is given, each has to be preceded
|
||||
by \fB\-a\fR flag. The actions are performed one by one, in the specified order.
|
||||
|
||||
.TP
|
||||
.BI \-d,\-\^\-debug= " LOGGER_NAME"
|
||||
Enables debug logs for development and testing. Look at the source code for details
|
||||
.TP
|
||||
.BI \-\^\-version
|
||||
.B \fB\-O\fP , \fB\-\-open=\fP \fIDATABASE\fP
|
||||
Open \fIDATABASE\fP which must be an existing database directory or
|
||||
existing family tree name. If no action, import or export
|
||||
options are given on the command line then an interactive ses‐
|
||||
sion is started using that database.
|
||||
.TP
|
||||
.B \fB\-i\fP , \fB\-\-import=\fP \fIFILE\fP
|
||||
Import data from \fIFILE\fP . If you haven\(aqt specified a database, then
|
||||
an empty database is created for you called Family Tree x
|
||||
(where x is an incrementing number).
|
||||
.sp
|
||||
When more than one input file is given, each has to be preceded
|
||||
by \fB\-i\fP flag. The files are imported in the specified order, i.e.
|
||||
\fB\-i\fP \fIFILE1\fP \fB\-i\fP \fIFILE2\fP and \fB\-i\fP \fIFILE2\fP \fB\-i\fP \fIFILE1\fP
|
||||
might produce different gramps IDs in the resulting database.
|
||||
.TP
|
||||
.B \fB\-e\fP , \fB\-\-export=\fP \fIFICHIER\fP
|
||||
Export data into \fIFILE\fP . For \fBgramps\-xml\fP , \fBgedcom\fP
|
||||
, \fBwft\fP , \fBgramps\-pkg\fP , et \fBgeneweb\fP , the \fIFILE\fP is the
|
||||
name of the resulting file.
|
||||
.sp
|
||||
When more than one output file is given, each has to be preceded
|
||||
by \fB\-e\fP flag. The files are written one by one, in the specified order.
|
||||
.TP
|
||||
.B \fB\-a\fP , \fB\-\-action=\fP \fIACTION\fP
|
||||
Perform \fIACTION\fP on the imported data. This is done after all
|
||||
imports are successfully completed. Currently available actions
|
||||
are \fBsummary\fP (same as Reports\->View\->Summary), \fBcheck\fP (same as
|
||||
Tools\->Database Processing\->Check and Repair), \fBreport\fP (generates
|
||||
report), and tool (runs a plugin tool). Both \fBreport\fP and \fBtool\fP
|
||||
need the \fIOPTIONSTRING\fP supplied by the \fB\-p\fP flag).
|
||||
.sp
|
||||
The \fIOPTIONSTRING\fP should satisfy the following conditions:
|
||||
It must not contain any spaces. If some arguments need to
|
||||
include spaces, the string should be enclosed with quotation
|
||||
marks, i.e., follow the shell syntax. Option string is a list
|
||||
of pairs with name and value (separated by the equality sign).
|
||||
The name and value pairs must be separated by commas.
|
||||
.sp
|
||||
Most of the report or tools options are specific for each report
|
||||
or tool. However, there are some common options.
|
||||
.sp
|
||||
\fBname=name\fP
|
||||
This mandatory option determines which report or tool will be
|
||||
run. If the supplied name does not correspond to any available
|
||||
report or tool, an error message will be printed followed by the
|
||||
list of available reports or tools (depending on the \fIACTION\fP ).
|
||||
.sp
|
||||
\fBshow=all\fP
|
||||
This will produce the list of names for all options available
|
||||
for a given report or tool.
|
||||
.sp
|
||||
\fBshow=optionname\fP
|
||||
This will print the description of the functionality supplied by
|
||||
\fIoptionname\fP, as well as what are the acceptable types and values
|
||||
for this option.
|
||||
.sp
|
||||
Use the above options to find out everything about a given
|
||||
report.
|
||||
.UNINDENT
|
||||
.sp
|
||||
When more than one output action is given, each has to be preceded by
|
||||
\fB\-a\fP flag. The actions are performed one by one, in the specified order.
|
||||
.INDENT 7.0
|
||||
.TP
|
||||
.B \fB\-d\fP , \fB\-\-debug=\fP \fILOGGER_NAME\fP
|
||||
Enables debug logs for development and testing. Look at the
|
||||
source code for details
|
||||
.TP
|
||||
.B \fB\-\-version\fP
|
||||
Prints the version number of gramps and then exits
|
||||
\" change 0 to 1 to enable output of OAF options
|
||||
.if 0 \{
|
||||
.PP
|
||||
The following options are used for Bonobo activation.
|
||||
.TP
|
||||
.BI \-\^\-oaf-ior-fd= "FD"
|
||||
File descriptor to print the OAF IOR on
|
||||
.TP
|
||||
.BI \-\^\-oaf-activate-iid= " IID"
|
||||
OAF IID to activate
|
||||
.TP
|
||||
.BI \-\^\-oaf-private
|
||||
Prevent registering of server with OAF
|
||||
\}
|
||||
\" change 0 to 1 to enable output of Gnome sound options
|
||||
.if 0 \{
|
||||
.PP
|
||||
The following options are used for controlling sound using the Gnome Library.
|
||||
.UNINDENT
|
||||
.TP
|
||||
.BI \-\^\-disable-sound
|
||||
Disable sound server usage
|
||||
.B \fBOperation\fP
|
||||
If the first argument on the command line does not start with dash
|
||||
(i.e. no flag), gramps will attempt to open the file with the name
|
||||
given by the first argument and start interactive session, ignoring the
|
||||
rest of the command line arguments.
|
||||
.sp
|
||||
If the \fB\-O\fP flag is given, then gramps will try opening the supplied
|
||||
database and then work with that data, as instructed by the further
|
||||
command line parameters.
|
||||
.sp
|
||||
With or without the \fB\-O\fP flag, there could be multiple imports, exports,
|
||||
and actions specified further on the command line by using \fB\-i\fP ,
|
||||
\fB\-e\fP , and \fB\-a\fP flags.
|
||||
.sp
|
||||
The order of \fB\-i\fP , \fB\-e\fP , or \fB\-a\fP options does not matter. The actual order
|
||||
always is: all imports (if any) \-> all actions (if any) \-> all exports
|
||||
(if any). But opening must always be first!
|
||||
.sp
|
||||
If no \fB\-O\fP or \fB\-i\fP option is given, gramps will launch its main window and
|
||||
start the usual interactive session with the empty database, since
|
||||
there is no data to process, anyway.
|
||||
.sp
|
||||
If no \fB\-e\fP or \fB\-a\fP options are given, gramps will launch its main window
|
||||
and start the usual interactive session with the database resulted from
|
||||
all imports. This database resides in the \fBimport_db.grdb\fP under
|
||||
\fB~/.gramps/import\fP directory.
|
||||
.sp
|
||||
The error encountered during import, export, or action, will be either
|
||||
dumped to stdout (if these are exceptions handled by gramps) or to
|
||||
\fIstderr\fP (if these are not handled). Use usual shell redirections of
|
||||
\fIstdout\fP and \fIstderr\fP to save messages and errors in files.
|
||||
.TP
|
||||
.BI \-\^\-enable-sound
|
||||
Enable sound server usage
|
||||
.B \fBEXAMPLES\fP
|
||||
To open an existing family tree and import an xml file into it, one
|
||||
may type:
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
\fBgramps \-O\fP \fI\(aqMy Family Tree\(aq\fP \fB\-i\fP \fI~/db3.gramps\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
The above changes the opened family tree, to do the same, but import
|
||||
both in a temporary family tree and start an interactive session, one
|
||||
may type:
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
\fBgramps \-i\fP \fI\(aqMy Family Tree\(aq\fP \fB\-i\fP \fI~/db3.gramps\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
To import four databases (whose formats can be determined from their
|
||||
names) and then check the resulting database for errors, one may type:
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
\fBgramps \-i\fP \fIfile1.ged\fP \fB\-i\fP \fIfile2.tgz\fP \fB\-i\fP \fI~/db3.gramps\fP
|
||||
\fB\-i\fP \fIfile4.wft\fP \fB\-a\fP \fIcheck\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
To explicitly specify the formats in the above example, append file‐
|
||||
names with appropriate \fB\-f\fP options:
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
\fBgramps \-i\fP \fIfile1.ged\fP \fB\-f\fP \fIgedcom\fP \fB\-i\fP \fIfile2.tgz\fP \fB\-f\fP
|
||||
\fIgramps\-pkg\fP \fB\-i\fP \fI~/db3.gramps\fP \fB\-f\fP \fIgramps\-xml\fP \fB\-i\fP \fIfile4.wft\fP
|
||||
\fB\-f\fP \fIwft\fP \fB\-a\fP \fIcheck\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
To record the database resulting from all imports, supply \fB\-e\fP flag (use
|
||||
\fB\-f\fP if the filename does not allow gramps to guess the format):
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
\fBgramps \-i\fP \fIfile1.ged\fP \fB\-i\fP \fIfile2.tgz\fP \fB\-e\fP \fI~/new\-package\fP
|
||||
\fB\-f\fP \fIgramps\-pkg\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
To import three databases and start interactive gramps session with the
|
||||
result:
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
\fBgramps \-i\fP \fIfile1.ged\fP \fB\-i\fP \fIfile2.tgz\fP \fB\-i\fP \fI~/db3.gramps\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
To run the Verify tool from the commandline and output the result to
|
||||
stdout:
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
\fBgramps \-O\fP \fI\(aqMy Family Tree\(aq\fP \fB\-a\fP \fItool\fP \fB\-p name=\fP \fIverify\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
Finally, to start normal interactive session type:
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
\fBgramps\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.TP
|
||||
.BI \-\^\-espeaker= " HOSTNAME:PORT"
|
||||
Host:port on which the sound server to use is running
|
||||
\}
|
||||
|
||||
.SH "Operation"
|
||||
.br
|
||||
If the first argument on the command line does not start with dash (i.e. no
|
||||
flag), gramps will attempt to open the file with the name given by the first
|
||||
argument and start interactive session, ignoring the rest of the command line
|
||||
arguments.
|
||||
|
||||
.LP
|
||||
If the \fB\-O\fR flag is given, then gramps will try opening
|
||||
the supplied database and then work with that data, as instructed by the
|
||||
further command line parameters.
|
||||
|
||||
.LP
|
||||
With or without the \fB\-O\fR flag, there could be multiple imports,
|
||||
exports, and actions specified further on the command line by using \fB\-i\fR,
|
||||
\fB\-e\fR, and \fB\-a\fR flags.
|
||||
|
||||
.LP
|
||||
The order of \fB\-i\fR, \fB\-e\fR, or \fB\-a\fR options does not matter. The
|
||||
actual order always is: all imports (if any) -> all actions (if any)
|
||||
-> all exports (if any). But opening must always be first!
|
||||
|
||||
.LP
|
||||
If no \fB\-O\fR or \fB\-i\fR option is given, gramps will launch its main
|
||||
window and start the usual interactive session with the empty database,
|
||||
since there is no data to process, anyway.
|
||||
|
||||
.LP
|
||||
If no \fB\-e\fR or \fB\-a\fR options are given, gramps will launch its main
|
||||
window and start the usual interactive session with the database resulted
|
||||
from all imports. This database resides in the \fBimport_db.grdb\fR
|
||||
under \fB~/.gramps/import\fR directory.
|
||||
|
||||
.LP
|
||||
The error encountered during import, export, or action, will be either
|
||||
dumped to \fIstdout\fR (if these are exceptions handled by gramps) or
|
||||
to \fIstderr\fR (if these are not handled). Use usual shell redirections
|
||||
of \fIstdout\fR and \fIstderr\fR to save messages and errors in files.
|
||||
|
||||
.SH EXAMPLES
|
||||
.TP
|
||||
To open an existing family tree and import an xml file into it, one may type:
|
||||
\fBgramps\fR \fB\-O\fR \fI'My Family Tree'\fR \fB\-i\fR \fI~/db3.gramps\fR
|
||||
.TP
|
||||
The above changes the opened family tree, to do the same, but import both in a temporary family tree and start an interactive session, one may type:
|
||||
\fBgramps\fR \fB\-i\fR \fI'My Family Tree'\fR \fB\-i\fR \fI~/db3.gramps\fR
|
||||
.TP
|
||||
To import four databases (whose formats can be determined from their names) and then check the resulting database for errors, one may type:
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-i\fR \fI~/db3.gramps\fR \fB\-i\fR \fIfile4.wft\fR \fB\-a\fR \fIcheck\fR
|
||||
.TP
|
||||
To explicitly specify the formats in the above example, append filenames with appropriate \fB\-f\fR options:
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-f\fR \fIgedcom\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-f\fR \fIgramps-pkg\fR \fB\-i\fR \fI~/db3.gramps\fR \fB\-f\fR \fIgramps-xml\fR \fB\-i\fR \fIfile4.wft\fR \fB\-f\fR \fIwft\fR \fB\-a\fR \fIcheck\fR
|
||||
.TP
|
||||
To record the database resulting from all imports, supply \fB\-e\fR flag (use \fB\-f\fR if the filename does not allow gramps to guess the format):
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-e\fR \fI~/new-package\fR \fB\-f\fR \fIgramps-pkg\fR
|
||||
.TP
|
||||
To import three databases and start interactive gramps session with the result:
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-i\fR \fI~/db3.gramps\fR
|
||||
.TP
|
||||
To run the Verify tool from the commandline and output the result to stdout:
|
||||
\fBgramps\fR \fB\-O\fR \fI'My Family Tree'\fR \fB-a\fR \fItool\fR \fB-p\fR \fBname\fR=\fIverify\fR
|
||||
.TP
|
||||
Finally, to start normal interactive session type:
|
||||
\fBgramps\fR
|
||||
|
||||
.SH ENVIRONMENT VARIABLES
|
||||
.B \fBENVIRONMENT VARIABLES\fP
|
||||
The program checks whether these environment variables are set:
|
||||
|
||||
\fBLANG\fR - describe, which language to use:
|
||||
Ex.: for polish language this variable has to be set to pl_PL.UTF-8.
|
||||
|
||||
\fBGRAMPSHOME\fR - if set, force Gramps to use the specified directory to keep
|
||||
program settings and databases there. By default, this variable is not set and
|
||||
gramps assumes that the folder with all databases and profile settings
|
||||
should be created within the user profile folder (described by environment
|
||||
variable HOME for Linux or USERPROFILE for Windows 2000/XP).
|
||||
|
||||
.SH CONCEPTS
|
||||
Supports a python\-based plugin system, allowing import and export writers,
|
||||
report generators, tools, and display filters to be added without modification
|
||||
of the main program.
|
||||
.LP
|
||||
In addition to generating direct printer output, report generators also
|
||||
target other systems, such as \fIOpenOffice.org\fR, \fIAbiWord\fR, HTML,
|
||||
or LaTeX to allow the users to modify the format to suit their needs.
|
||||
|
||||
.SH KNOWN BUGS AND LIMITATIONS
|
||||
|
||||
.SH FILES
|
||||
.LP
|
||||
.sp
|
||||
\fBLANG\fP \- describe, which language to use: Ex.: for polish language this
|
||||
variable has to be set to pl_PL.UTF\-8.
|
||||
.sp
|
||||
\fBGRAMPSHOME\fP \- if set, force Gramps to use the specified directory to
|
||||
keep program settings and databases there. By default, this variable is
|
||||
not set and gramps assumes that the folder with all databases and pro‐
|
||||
file settings should be created within the user profile folder
|
||||
(described by environment variable HOME for Linux or USERPROFILE for
|
||||
Windows 2000/XP).
|
||||
.TP
|
||||
.B \fBCONCEPTS\fP
|
||||
Supports a python\-based plugin system, allowing import and export writ‐
|
||||
ers, report generators, tools, and display filters to be added without
|
||||
modification of the main program.
|
||||
.sp
|
||||
In addition to generating direct printer output, report generators also
|
||||
target other systems, such as \fILibreOffice.org\fP , \fIAbiWord\fP , \fIHTML\fP,
|
||||
or \fILaTeX\fP to allow the users to modify the format to suit their needs.
|
||||
.UNINDENT
|
||||
.sp
|
||||
\fBKNOWN BUGS AND LIMITATIONS\fP
|
||||
.sp
|
||||
\fBFILES\fP
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
\fI${PREFIX}/bin/gramps\fP
|
||||
.br
|
||||
\fI${PREFIX}/lib/python/dist\-packages/gramps/\fP
|
||||
.br
|
||||
.sp
|
||||
\fI${PREFIX}/lib/python3/dist\-packages/gramps/\fP
|
||||
.sp
|
||||
\fI${PREFIX}/share/\fP
|
||||
.br
|
||||
\fI${HOME}/.gramps\fP
|
||||
|
||||
.SH AUTHORS
|
||||
Donald Allingham \fI<don@gramps-project.org>\fR
|
||||
.br
|
||||
\fIhttp://gramps.sourceforge.net\fR
|
||||
.LP
|
||||
.sp
|
||||
\fI${HOME}/.gramps\fP
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
.B \fBAUTHORS\fP
|
||||
Donald Allingham <\fI\%don@gramps\-project.org\fP>
|
||||
\fI\%http://gramps\-project.org/\fP
|
||||
.sp
|
||||
This man page was originally written by:
|
||||
.br
|
||||
Brandon L. Griffith \fI<brandon@debian.org>\fR
|
||||
.br
|
||||
Brandon L. Griffith <\fI\%brandon@debian.org\fP>
|
||||
for inclusion in the Debian GNU/Linux system.
|
||||
.LP
|
||||
.sp
|
||||
This man page is currently maintained by:
|
||||
.br
|
||||
Gramps project \fI<xxx@gramps-project.org>\fR
|
||||
.br
|
||||
|
||||
.SH DOCUMENTATION
|
||||
The user documentation is available through standard GNOME Help browser
|
||||
in the form of Gramps Manual. The manual is also available in XML format
|
||||
as \fBgramps-manual.xml\fR under \fIdoc/gramps-manual/$LANG\fR in the official
|
||||
source distribution.
|
||||
.LP
|
||||
Gramps project <\fI\%xxx@gramps\-project.org\fP>
|
||||
.TP
|
||||
.B \fBDOCUMENTATION\fP
|
||||
The user documentation is available through standard web browser
|
||||
in the form of Gramps Manual.
|
||||
.sp
|
||||
The developer documentation can be found on the
|
||||
\fIhttp://developers.gramps-project.org\fR site.
|
||||
\fI\%http://www.gramps\-project.org/wiki/index.php?title=Portal:Developers\fP
|
||||
portal.
|
||||
.UNINDENT
|
||||
.sp
|
||||
gramps(1) @VERSION@ gramps(1)
|
||||
.\" Generated by docutils manpage writer.
|
||||
.
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"""
|
||||
update_man.py for command line documentation.
|
||||
|
||||
Examples:
|
||||
Examples:
|
||||
python update_man.py -t
|
||||
|
||||
Tests if 'sphinx' and 'python' are well configured.
|
||||
@@ -43,13 +43,13 @@ except:
|
||||
DOCUTILS = False
|
||||
|
||||
LANGUAGES = ['sv', 'nl', 'pl', 'cs', 'pt_BR', 'fr']
|
||||
VERSION = '4.2.0'
|
||||
VERSION = '5.0.0'
|
||||
DATE = ''
|
||||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXBUILD = 'sphinx-build'
|
||||
|
||||
if sys.platform == 'win32':
|
||||
if sys.platform == 'win32':
|
||||
pythonCmd = os.path.join(sys.prefix, 'bin', 'python.exe')
|
||||
sphinxCmd = os.path.join(sys.prefix, 'bin', 'sphinx-build.exe')
|
||||
elif sys.platform in ['linux2', 'darwin', 'cygwin']:
|
||||
@@ -70,13 +70,13 @@ def tests():
|
||||
os.system('''%(program)s -V''' % {'program': pythonCmd})
|
||||
except:
|
||||
print ('Please, install python')
|
||||
|
||||
|
||||
try:
|
||||
print("\n=================='Shpinx-build'=============================\n")
|
||||
print("\n=================='Sphinx-build'=============================\n")
|
||||
os.system('''%(program)s''' % {'program': sphinxCmd})
|
||||
except:
|
||||
print ('Please, install sphinx')
|
||||
|
||||
|
||||
if not DOCUTILS:
|
||||
print('\nNo docutils support, cannot use -m/--man and -o/--odt arguments.')
|
||||
|
||||
@@ -85,49 +85,49 @@ def main():
|
||||
The utility for handling documentation stuff.
|
||||
What is need by Gramps, nothing more.
|
||||
"""
|
||||
|
||||
parser = ArgumentParser(
|
||||
description='This program aims to handle documentation'
|
||||
' and realted translated versions.',
|
||||
|
||||
parser = ArgumentParser(
|
||||
description='This program aims to handle documentation'
|
||||
' and related translated versions.',
|
||||
)
|
||||
|
||||
|
||||
parser.add_argument("-t", "--test",
|
||||
action="store_true", dest="test", default=True,
|
||||
help="test if 'python' and 'sphinx' are properly installed")
|
||||
|
||||
|
||||
parser.add_argument("-b", "--build",
|
||||
action="store_true", dest="build", default=False,
|
||||
help="build man documentation (via sphinx-build)")
|
||||
|
||||
|
||||
parser.add_argument("-m", "--man",
|
||||
action="store_true", dest="man", default=False,
|
||||
help="build man documentation (via docutils)")
|
||||
|
||||
|
||||
parser.add_argument("-o", "--odt",
|
||||
action="store_true", dest="odt", default=False,
|
||||
help="build odt documentation (via docutils)")
|
||||
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
if args.test:
|
||||
tests()
|
||||
|
||||
|
||||
if args.build:
|
||||
build()
|
||||
|
||||
|
||||
if args.man and DOCUTILS:
|
||||
man()
|
||||
|
||||
|
||||
if args.odt and DOCUTILS:
|
||||
odt()
|
||||
|
||||
|
||||
def build():
|
||||
"""
|
||||
Build documentation.
|
||||
"""
|
||||
|
||||
|
||||
# testing stage
|
||||
|
||||
|
||||
os.system('''%(program)s -b html . _build/html''' % {'program': sphinxCmd})
|
||||
os.system('''%(program)s -b htmlhelp . _build/htmlhelp''' % {'program': sphinxCmd})
|
||||
if DOCUTILS:
|
||||
@@ -136,48 +136,48 @@ def build():
|
||||
os.system('''%(program)s -b changes . _build/changes''' % {'program': sphinxCmd})
|
||||
#os.system('''%(program)s -b linkcheck . _build/linkcheck''' % {'program': sphinxCmd})
|
||||
os.system('''%(program)s -b gettext . _build/gettext''' % {'program': sphinxCmd})
|
||||
|
||||
|
||||
for lang in LANGUAGES:
|
||||
os.system('''%(program)s -b html -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
|
||||
os.system('''%(program)s -b html -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
|
||||
% {'lang': lang, 'program': sphinxCmd})
|
||||
os.system('''%(program)s -b htmlhelp -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
|
||||
os.system('''%(program)s -b htmlhelp -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
|
||||
% {'lang': lang, 'program': sphinxCmd})
|
||||
if DOCUTILS:
|
||||
os.system('''%(program)s -b man %(lang)s %(lang)s'''
|
||||
os.system('''%(program)s -b man %(lang)s %(lang)s'''
|
||||
% {'lang': lang, 'program': sphinxCmd})
|
||||
os.system('''%(program)s -b text -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
|
||||
os.system('''%(program)s -b text -D language="%(lang)s" master_doc="%(lang)s" %(lang)s %(lang)s'''
|
||||
% {'lang': lang, 'program': sphinxCmd})
|
||||
# for update/migration
|
||||
os.system('''%(program)s -b gettext -D language="%(lang)s" master_doc="%(lang)s" . _build/gettext/%(lang)s'''
|
||||
os.system('''%(program)s -b gettext -D language="%(lang)s" master_doc="%(lang)s" . _build/gettext/%(lang)s'''
|
||||
% {'lang': lang, 'program': sphinxCmd})
|
||||
|
||||
|
||||
def man():
|
||||
"""
|
||||
man file generation via docutils (python)
|
||||
|
||||
|
||||
from docutils.core import publish_cmdline, default_description
|
||||
from docutils.writers import manpage
|
||||
"""
|
||||
|
||||
os.system('''rst2man en.rst gramps.1''')
|
||||
|
||||
|
||||
os.system('''rst2man en.rst gramps.1''')
|
||||
|
||||
for lang in LANGUAGES:
|
||||
os.system('''rst2man %(lang)s/%(lang)s.rst -l %(lang)s %(lang)s/gramps.1'''
|
||||
os.system('''rst2man %(lang)s/%(lang)s.rst -l %(lang)s %(lang)s/gramps.1'''
|
||||
% {'lang': lang})
|
||||
|
||||
|
||||
def odt():
|
||||
"""
|
||||
odt file generation via docutils (python)
|
||||
|
||||
|
||||
from docutils.core import publish_cmdline_to_binary, default_description
|
||||
from docutils.writers.odf_odt import Writer, Reader
|
||||
"""
|
||||
|
||||
os.system('''rst2odt en.rst gramps.odt''')
|
||||
|
||||
|
||||
os.system('''rst2odt en.rst gramps.odt''')
|
||||
|
||||
for lang in LANGUAGES:
|
||||
os.system('''rst2odt %(lang)s/%(lang)s.rst -l %(lang)s %(lang)s/gramps.odt'''
|
||||
os.system('''rst2odt %(lang)s/%(lang)s.rst -l %(lang)s %(lang)s/gramps.odt'''
|
||||
% {'lang': lang})
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
main()
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{% trans 'Page not found' %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h2>{% trans 'Page not found' %}</h2>
|
||||
|
||||
<p>{% trans "We're sorry, but the requested page could not be found." %}</p>
|
||||
|
||||
{% endblock %}
|
||||
@@ -1,12 +0,0 @@
|
||||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block breadcrumbs %}<div class="breadcrumbs"><a href="/">{% trans "Home" %}</a> › {% trans "Server error" %}</div>{% endblock %}
|
||||
|
||||
{% block title %}{% trans 'Server error (500)' %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>{% trans 'Server Error <em>(500)</em>' %}</h1>
|
||||
<p>{% trans "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience." %}</p>
|
||||
|
||||
{% endblock %}
|
||||
@@ -1,21 +0,0 @@
|
||||
{% extends "admin/base.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{{ title }} | Adminstration{% endblock %}
|
||||
|
||||
{% block branding %}
|
||||
<h1 id="site-name">Administration</h1>
|
||||
{% endblock %}
|
||||
|
||||
{% block nav-global %}
|
||||
{% if user.is_staff %}
|
||||
<style type="text/css">
|
||||
.ml {margin:0 10px 10px;display:block;float:left}
|
||||
</style>
|
||||
|
||||
<a href="/" clas="ml">Home</a>
|
||||
<a href="/admin/" class="ml">Administration home</a>
|
||||
<a href="/admin/auth/user/?is_active__exact=0" class="ml">New Users</a>
|
||||
<a href="/admin/auth/user/" class="ml">All Users</a>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -1,30 +0,0 @@
|
||||
{% extends "gramps-base.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block title %}{{sitename}}{% endblock %}
|
||||
{% block heading %}{{sitename}}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p id="description">
|
||||
Database information:</p>
|
||||
|
||||
<table class="infolist surname">
|
||||
<tr>
|
||||
<th>Item</th>
|
||||
<th>Count</th>
|
||||
</tr>
|
||||
{% for view in views %}
|
||||
<tr class="{% cycle odd,even %}">
|
||||
{% if view.2 %}
|
||||
<td align="left"><a href="/{{view.1}}">{{view.0}}</a></td>
|
||||
<td align="left"><a href="/{{view.1}}">{{view.1|table_count}}</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
{% load my_tags %}
|
||||
{% filter breadcrumb %}
|
||||
{% format "/browse|Browse" %}||
|
||||
{% format "/%s/%s|%s" view args tviews %}
|
||||
{% if object.gramps_id %}
|
||||
|| {% format "/%s/%s|%s [%s]" view object.handle tview object.gramps_id %}
|
||||
{% else %}
|
||||
{% if object.name %}
|
||||
|| {% format "/%s/%s|%s [%s]" view object.handle tview object.name %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfilter %}
|
||||
@@ -1,399 +0,0 @@
|
||||
{% load my_tags %}
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
|
||||
<head>
|
||||
<title>{% block title %}{{sitename}}{% endblock %}</title>
|
||||
{% block meta %}
|
||||
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
|
||||
<meta http-equiv="Content-Style-Type" content="text/css" />
|
||||
<meta name="generator" content="Gramps 3.2.0-0.SVN12859M http://gramps-project.org/" />
|
||||
<meta name="author" content="" />
|
||||
{% endblock %}
|
||||
<link href="/images/ped24.ico" type="image/x-icon" rel="shortcut icon" />
|
||||
{% block css %}
|
||||
<link media="screen" href="/styles/css/{{css_theme}}" type="text/css" rel="stylesheet" />
|
||||
<link media="print" href="/styles/css/Web_Print-Default.css" type="text/css" rel="stylesheet" />
|
||||
<script type="text/javascript" src="/styles/javascript/jquery-1.3.2.min.js"></script>
|
||||
<script type="text/javascript" src="/styles/javascript/jquery-ui-1.7.2.custom.min.js"></script>
|
||||
<script type="text/javascript" src="/styles/jhtmlarea/scripts/jHtmlArea-0.7.0.js"></script>
|
||||
<link rel="Stylesheet" type="text/css" href="/styles/jhtmlarea/style/jHtmlArea.css" />
|
||||
<script type="text/javascript" src="/styles/javascript/jquery.flexbox.min.js"></script>
|
||||
<link type="text/css" rel="stylesheet" href="/styles/css/jquery.flexbox.css" />
|
||||
{% endblock %}
|
||||
|
||||
<style type="text/css">
|
||||
table td {
|
||||
vertical-align: middle;
|
||||
}
|
||||
div.content {
|
||||
background: none;
|
||||
}
|
||||
.content {
|
||||
padding: 0px 0px 10px;
|
||||
}
|
||||
.browsecell {
|
||||
display: block;
|
||||
}
|
||||
#subtitle {
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
border-top: 1px solid;
|
||||
}
|
||||
td.ColumnAttribute {
|
||||
text-align: right;
|
||||
}
|
||||
#error {
|
||||
color: red;
|
||||
}
|
||||
{% if action == "edit" or action == "add" %}
|
||||
{% else %}
|
||||
#rowspace {
|
||||
height: 3px;
|
||||
}
|
||||
#data {
|
||||
border: 1px solid;
|
||||
background-color: white;
|
||||
color: brown;
|
||||
}
|
||||
{% endif %}
|
||||
|
||||
/* Component containers */
|
||||
.ui-widget {
|
||||
font-family: Georgia,serif;
|
||||
font-size: small;
|
||||
}
|
||||
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button {
|
||||
font-family: Georgia,serif;
|
||||
font-size: small;
|
||||
}
|
||||
.ui-widget-content {
|
||||
border: 1px solid #7D5925;
|
||||
color: #7D5925;
|
||||
float: left;
|
||||
width: 98%;
|
||||
}
|
||||
.ui-widget-content a {
|
||||
color: #7D5925;
|
||||
}
|
||||
.ui-widget-header {
|
||||
color: #ffffff;
|
||||
}
|
||||
.ui-widget-header a {
|
||||
color: #7D5925;
|
||||
}
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay {
|
||||
background: #aaaaaa;
|
||||
opacity: .30;
|
||||
}
|
||||
|
||||
.ui-widget-shadow {
|
||||
margin: -8px 0 0 -8px;
|
||||
padding: 8px;
|
||||
opacity: .30;
|
||||
-webkit-border-radius: 8px;
|
||||
}
|
||||
|
||||
/* Interaction states */
|
||||
.ui-state-default {
|
||||
border: 1px solid #7D5925;
|
||||
background: #FFF2C6;
|
||||
font-weight: normal;
|
||||
color: #7D5925;
|
||||
outline: none;
|
||||
}
|
||||
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited {
|
||||
color: #7D5925;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
.ui-state-hover, .ui-state-focus {
|
||||
border: 1px solid #f5ad66;
|
||||
background: #f5f0e5;
|
||||
font-weight: normal;
|
||||
color: #a46313;
|
||||
outline: none;
|
||||
}
|
||||
.ui-state-hover a, .ui-state-hover a:hover {
|
||||
color: #a46313;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
.ui-state-active {
|
||||
border: 1px solid #7D5925;
|
||||
background: #f4f0ec;
|
||||
font-weight: normal;
|
||||
color: #b85700;
|
||||
outline: none;
|
||||
}
|
||||
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited {
|
||||
color: #b85700;
|
||||
outline: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Interaction Cues */
|
||||
.ui-state-highlight {
|
||||
border: 1px solid #d9bb73;
|
||||
background: #f5f5b5;
|
||||
color: #060200;
|
||||
}
|
||||
.ui-state-highlight a {
|
||||
color: #060200;
|
||||
}
|
||||
.ui-state-error {
|
||||
border: 1px solid #f8893f;
|
||||
background: #fee4bd;
|
||||
color: #dd4e2c;
|
||||
}
|
||||
.ui-state-error a {
|
||||
color: #dd4e2c;
|
||||
}
|
||||
.ui-state-error-text {
|
||||
color: #dd4e2c;
|
||||
}
|
||||
.ui-state-disabled {
|
||||
opacity: .35;
|
||||
background-image: none;
|
||||
}
|
||||
.ui-priority-primary {
|
||||
font-weight: bold;
|
||||
}
|
||||
.ui-priority-secondary {
|
||||
opacity: .7;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* Tabs */
|
||||
.ui-tabs {
|
||||
padding: .2em;
|
||||
}
|
||||
.ui-tabs .ui-tabs-nav {
|
||||
list-style: none;
|
||||
position: relative;
|
||||
padding: .2em .2em 0;
|
||||
}
|
||||
.ui-tabs .ui-tabs-nav li {
|
||||
position: relative;
|
||||
float: left;
|
||||
margin: .2em .2em -1px 0;
|
||||
padding: 0;
|
||||
}
|
||||
.ui-tabs .ui-tabs-nav li a {
|
||||
float: left;
|
||||
text-decoration: none;
|
||||
padding: .5em 1em;
|
||||
}
|
||||
.ui-tabs .ui-tabs-nav li.ui-tabs-selected {
|
||||
padding-bottom: 1px;
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a {
|
||||
cursor: text;
|
||||
}
|
||||
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a {
|
||||
cursor: pointer;
|
||||
} /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
|
||||
.ui-tabs .ui-tabs-panel {
|
||||
padding: 1em 1.4em;
|
||||
display: block;
|
||||
border-width: 0;
|
||||
background: none;
|
||||
}
|
||||
.ui-tabs .ui-tabs-hide {
|
||||
display: none !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<SCRIPT LANGUAGE="JavaScript">
|
||||
<!--
|
||||
var timerId=0 ;
|
||||
|
||||
function clearTimer() {
|
||||
if (timerId!=0) {
|
||||
clearTimeout(timerId); timerId=0; }}
|
||||
|
||||
function startTimer() {
|
||||
clearTimer(); timerId=setTimeout('timerId=0;hideMenus()',200);
|
||||
}
|
||||
|
||||
function showMenu(menuNum) {
|
||||
clearTimer(); hideMenus();
|
||||
document.getElementById('menu_'+menuNum).style.display="";
|
||||
}
|
||||
|
||||
function hideMenus() {
|
||||
document.getElementById('menu_browse').style.display="none";
|
||||
}
|
||||
|
||||
function hiLite(theOption) {
|
||||
clearTimer();
|
||||
document.getElementById('opt_'+theOption).style.background='#9090FF';
|
||||
}
|
||||
|
||||
function unLite(theOption) {
|
||||
startTimer();
|
||||
document.getElementById('opt_'+theOption).style.background='#D0D0FF';
|
||||
}
|
||||
|
||||
function optClick(theOption) {
|
||||
document.location.href=theOption;
|
||||
}
|
||||
|
||||
function setHasData(classname, value) {
|
||||
var elems = document.getElementsByTagName('*'), i;
|
||||
for (i in elems) {
|
||||
if((" " + elems[i].className + " ").indexOf(" " + classname + " ") > -1) {
|
||||
if (value) {
|
||||
elems[i].style.fontWeight = "bold";
|
||||
elems[i].style.fontStyle = "italic";
|
||||
} else {
|
||||
elems[i].style.fontWeight = "";
|
||||
elems[i].style.fontStyle = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setReturnValues() {
|
||||
var elems = document.getElementsByTagName('*'), i;
|
||||
for (i in elems) {
|
||||
if ((" " + elems[i].name + " ").indexOf("_return ") > -1) {
|
||||
var pos = (" " + elems[i].name + " ").indexOf("_return ");
|
||||
var s = elems[i].name.substring(0, pos - 1);
|
||||
var v = document.getElementsByName(s)[0];
|
||||
elems[i].value = v.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function buttonOver(button) {
|
||||
button.style.backgroundColor = "white";
|
||||
button.style.border = "1px solid gray";
|
||||
}
|
||||
|
||||
function buttonOut(button) {
|
||||
button.style.backgroundColor = "lightgray";
|
||||
button.style.border = "1px solid lightgray";
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
|
||||
<STYLE TYPE="text/css">
|
||||
<!--
|
||||
.popupMenu {
|
||||
// font-family : Verdana,Tahoma,Helvetica,sans-serif;
|
||||
// font-size : 12px;
|
||||
color : #111111;
|
||||
position : absolute;
|
||||
// top : 72px;
|
||||
border : 1px;
|
||||
padding : 3px;
|
||||
z-index : 16;
|
||||
background-color: #D0D0FF;
|
||||
cursor : pointer; }
|
||||
-->
|
||||
</STYLE>
|
||||
</head>
|
||||
<body onclick="hideMenus()"
|
||||
onload="if (document.getElementById('get_focus')) {document.getElementById('get_focus').focus();}"
|
||||
>
|
||||
<div id="header" style="padding-top: 1em; background-position:0px -32px;">
|
||||
<h1 id="SiteTitle" style="margin-left: 0em;">{% block heading %}{{sitename}}{% endblock %}</h1>
|
||||
</div>
|
||||
|
||||
<div class="wrapper" role="navigation" id="nav">
|
||||
{% block navigation %}
|
||||
<div class="container">
|
||||
<ul class="menu" id="dropmenu">
|
||||
<li {{ tview|currentSection:"home" }}><a href="/">Home</a></li>
|
||||
{% for title in menu %}
|
||||
{# (<Nice name>, /<path>/, <Model> | None, Need authentication ) #}
|
||||
{% if title.3 %}
|
||||
{% if user.is_authenticated %}
|
||||
<li {{tview|currentSection:title.1 }}>
|
||||
{% if title.1 %}
|
||||
<a href="/{{title.1}}/">{{title.0}}</a>
|
||||
</li>
|
||||
{% else %}
|
||||
<a href="/">{{title.0}}</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{# don't show #}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<li {{tview|currentSection:title.1 }}>
|
||||
{% if title.1 %}
|
||||
<a href="/{{title.1}}/"
|
||||
onmouseover="showMenu('{{title.1}}')"
|
||||
onmouseout="startTimer()"
|
||||
style="cursor:pointer"
|
||||
href="/browse/">{{title.0}}</a>
|
||||
<DIV CLASS="popupMenu" ID="menu_browse" STYLE="display:none;">
|
||||
<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0">
|
||||
<TR ID="opt_person"><TD><A ONMOUSEOVER="hiLite('person')" ONMOUSEOUT="unLite('person')" ONCLICK="optClick('/person/')">People</A></TD></TR>
|
||||
<TR ID="opt_family"><TD><A ONMOUSEOVER="hiLite('family')" ONMOUSEOUT="unLite('family')" ONCLICK="optClick('/family/')">Families</A></TD></TR>
|
||||
<TR ID="opt_event"><TD><A ONMOUSEOVER="hiLite('event')" ONMOUSEOUT="unLite('event')" ONCLICK="optClick('/event/')">Events</A></TD></TR>
|
||||
<TR ID="opt_note"><TD><A ONMOUSEOVER="hiLite('note')" ONMOUSEOUT="unLite('note')" ONCLICK="optClick('/note/')">Note</A></TD></TR>
|
||||
<TR ID="opt_media"><TD><A ONMOUSEOVER="hiLite('media')" ONMOUSEOUT="unLite('media')" ONCLICK="optClick('/media/')">Media</A></TD></TR>
|
||||
<TR ID="opt_citation"><TD><A ONMOUSEOVER="hiLite('citation')" ONMOUSEOUT="unLite('citation')" ONCLICK="optClick('/citation/')">Citations</A></TD></TR>
|
||||
<TR ID="opt_source"><TD><A ONMOUSEOVER="hiLite('source')" ONMOUSEOUT="unLite('source')" ONCLICK="optClick('/source/')">Sources</A></TD></TR>
|
||||
<TR ID="opt_place"><TD><A ONMOUSEOVER="hiLite('place')" ONMOUSEOUT="unLite('place')" ONCLICK="optClick('/place/')">Places</A></TD></TR>
|
||||
<TR ID="opt_repository"><TD><A ONMOUSEOVER="hiLite('repsoitory')" ONMOUSEOUT="unLite('repository')" ONCLICK="optClick('/repository/')">Repository</A></TD></TR>
|
||||
<TR ID="opt_tag"><TD><A ONMOUSEOVER="hiLite('tag')" ONMOUSEOUT="unLite('tag')" ONCLICK="optClick('/tag/')">Tags</A></TD></TR>
|
||||
</TABLE>
|
||||
</DIV>
|
||||
</li>
|
||||
{% else %}
|
||||
<a href="/">{{title.0}}</a></li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if user.is_authenticated %}
|
||||
{% if next %}
|
||||
<li><a href="/logout/?next={{next}}">Logout</a></li>
|
||||
{% else %}
|
||||
<li><a href="/logout">Logout</a></li>
|
||||
{% endif %}
|
||||
{% if user.is_superuser %}
|
||||
<li><a href="/admin">Admin</a></li>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if next %}
|
||||
<li><a href="/login/?next={{next}}">Login</a></li>
|
||||
{% else %}
|
||||
<li><a href="/login/">Login</a></li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</ul>
|
||||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="grampsweb">
|
||||
{% for message in messages %}
|
||||
<font color="red">{{message}}</font><br/>
|
||||
{% endfor %}
|
||||
{% if message %}
|
||||
<div id="system_message" class="{{ message_type }}">
|
||||
<font color="red">{{message}}</font><br/>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
<div class="content">
|
||||
</div>
|
||||
</div>
|
||||
<div id="footer">
|
||||
{% block footer %}
|
||||
<p id="createdate">
|
||||
<a href="http://www.gramps-project.org/wiki/index.php?title=Gramps-Connect">Gramps-Connect, version {{gramps_version}}</a>.
|
||||
</p>
|
||||
<p id="copyright">© 2009-2015 <a href="http://www.gramps-project.org/">www.gramps-project.org</a>
|
||||
</p>
|
||||
{% endblock %}
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,38 +0,0 @@
|
||||
{% extends "gramps-base.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block title %}{{sitename}}{% endblock %}
|
||||
{% block heading %}{{sitename}}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p id="description">Welcome to <b>{{sitename}}</b>, a new web-based collaboration tool.
|
||||
|
||||
{% if user.is_authenticated %}
|
||||
You are now logged in
|
||||
as <a href="/user/{{user.username}}">{{user.username}}</a>.
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
<p id="description">
|
||||
Database information:</p>
|
||||
|
||||
<table class="infolist surname">
|
||||
<tr>
|
||||
<th>Item</th>
|
||||
<th>Count</th>
|
||||
</tr>
|
||||
{% for view in views %}
|
||||
<tr class="{% cycle odd,even %}">
|
||||
{% if view.2 %}
|
||||
<td align="left"><a href="/{{view.1}}">{{view.0}}</a></td>
|
||||
<td align="left"><a href="/{{view.1}}">{{view.1|table_count}}</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
<div class="pagination">
|
||||
<span class="step-links">
|
||||
<form method="post">{% csrf_token %}
|
||||
<div id="alphanav" style="padding: 0pt 0 0pt 0;">
|
||||
<ul>
|
||||
{% ifequal page.number 1 %}
|
||||
<li><input type="button" value="<<" disabled="disabled"></li>
|
||||
{% else %}
|
||||
<li><input type="button" value="<<" onclick="document.location.href='?page=1{{search_query}}'"></li>
|
||||
{% endifequal %}
|
||||
{% if page.has_previous %}
|
||||
<li><input type="button" value="<" onclick="document.location.href='?page={{page.previous_page_number}}{{search_query}}'"></li>
|
||||
{% else %}
|
||||
<li><input type="button" value="<" disabled="disabled"></li>
|
||||
{% endif %}
|
||||
|
||||
<span class="current">
|
||||
<li>Page {{ page.number }} of {{ page.paginator.num_pages }}</li>
|
||||
</span>
|
||||
|
||||
{% if page.has_next %}
|
||||
<li><input type="button" value=">" onclick="document.location.href='?page={{page.next_page_number}}{{search_query}}'"></li>
|
||||
{% else %}
|
||||
<li><input type="button" value=">" disabled="disabled"></li>
|
||||
{% endif %}
|
||||
{% ifequal page.number page.paginator.num_pages %}
|
||||
<li><input type="button" value=">>" disabled="disabled"></li>
|
||||
{% else %}
|
||||
<li><input type="button" value=">>" onclick="document.location.href='?page={{page.paginator.num_pages}}{{search_query}}'"></li>
|
||||
{% endifequal %}
|
||||
<b>Matches</b>: {{page.paginator.count}}/{{total}} <b>Showing</b>: {{results_this_page}}
|
||||
</ul>
|
||||
</div>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
{% extends "view_page_detail.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$('#tabs').tabs({
|
||||
'select': function(event, ui){
|
||||
document.location.hash = ui.panel.id;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="content" id="IndividualDetail">
|
||||
|
||||
{% include "detail_breadcrumb.html" %}
|
||||
|
||||
<div id="summaryarea">
|
||||
<table class="infolist" style="width:90%;"> {% comment %} 4 cols {% endcomment %}
|
||||
<tbody>
|
||||
{% if pickform.errors %}
|
||||
<hr>
|
||||
<p id="error">The following fields have errors. Please correct and try again.</p>
|
||||
<div id="error">{{pickform.errors}}</div>
|
||||
<hr>
|
||||
{% endif %}
|
||||
<form method="post">{% csrf_token %}
|
||||
<tr>
|
||||
<td class="ColumnAttribute">Pick:</td>
|
||||
{% if user.is_authenticated %}
|
||||
<td class="ColumnValue" id="data">{{pickform.picklist}}</td>
|
||||
{% else %}
|
||||
<td class="ColumnValue" id="data"></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% if user.is_superuser %}
|
||||
{% make_button "Cancel" "/%s/%s" object_type object_handle args %}
|
||||
<input type="hidden" name="action" value="save-share"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Save"/>
|
||||
{% else %}
|
||||
{% endif %}
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
{% extends "view_page_detail.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="content" id="IndividualDetail">
|
||||
|
||||
{% include "detail_breadcrumb.html" %}
|
||||
<h2>Temporary Reference Detail</h2>
|
||||
<div id="summaryarea">
|
||||
<table class="infolist" style="width:90%;">
|
||||
<trbody>
|
||||
{% if form.errors %}
|
||||
<hr>
|
||||
<p id="error">The following fields have errors. Please correct and try again.</p>
|
||||
<div id="error">{{form.errors}}</div>
|
||||
<hr>
|
||||
{% endif %}
|
||||
<form method="post">{% csrf_token %}
|
||||
|
||||
{% for f in form.forms %}
|
||||
<tr>
|
||||
{{f}}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% make_button "Go to reference" url %}
|
||||
{% make_button "Go back" referenced_by %}
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
{% extends "gramps-base.html" %}
|
||||
|
||||
{% block title %}Gramps Connect - login {% endblock %}
|
||||
{% block heading %}Gramps - login {% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h2>User Login</h2>
|
||||
{% if form.errors %}
|
||||
<p id="description">Your username or password were not valid. Please try again.</p>
|
||||
{% else %}
|
||||
<p id="description">Enter your login ID and password below. </p>
|
||||
{% endif %}
|
||||
<form method="post" action=".">{% csrf_token %}
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="id_username">Username: </label>
|
||||
</td>
|
||||
<td>
|
||||
{{form.username}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="id_password">Password: </label>
|
||||
</td>
|
||||
<td>
|
||||
{{form.password}}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
{% if next %}
|
||||
<input type="hidden" name="next" value="{{next}}" />
|
||||
{% else %}
|
||||
<input type="hidden" name="next" value="/" />
|
||||
{% endif %}
|
||||
<input type="submit" value="Login" />
|
||||
</form>
|
||||
{% endblock %}
|
||||
@@ -1,5 +0,0 @@
|
||||
{% for header in headers %}<th{{ header.class_attr }}>
|
||||
{% if header.sortable %}<a href="{{ header.url|escape }}">{% endif %}
|
||||
{{ header.text }}
|
||||
{% if header.sortable %}</a>{% endif %}
|
||||
</th>{% endfor %}
|
||||
@@ -1,47 +0,0 @@
|
||||
{% extends "gramps-base.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block title %}{{sitename}} - user page {% endblock %}
|
||||
{% block heading %}{{sitename}} - user page {% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<p id="description">Details for <b>{{user.first_name}} {{user.last_name}}</b> ({{user.username}}):</p>
|
||||
|
||||
<p id="description">
|
||||
<table>
|
||||
<tr>
|
||||
<td width="30%">User name: </td><td><em>{{user.username}}</em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Email: </td><td><a href="mailto:{{user.email}}"><em>{{user.email}}</a></em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Type: </td>
|
||||
<td>
|
||||
|
||||
{% if user.is_superuser %}
|
||||
<em>Administrator</em>
|
||||
{% else %}
|
||||
<em>User</em>
|
||||
{% endif %}
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Last login: </td><td><em>{{user.last_login}}</em></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
{% if user.is_superuser %}
|
||||
{% make_button "Edit Profile" "/admin/grampsdb/profile/%s" user.id %}
|
||||
{% make_button "Edit User" "/admin/auth/user/%s" user.id %}
|
||||
{% else %}
|
||||
<em>User</em>
|
||||
{% endif %}
|
||||
|
||||
|
||||
</p>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,179 +0,0 @@
|
||||
{% extends "view_page_detail.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$('#tabs').tabs({
|
||||
'select': function(event, ui){
|
||||
document.location.hash = ui.panel.id;
|
||||
}
|
||||
});
|
||||
$('#shared-tabs').tabs({
|
||||
'select': function(event, ui){
|
||||
document.location.hash = ui.panel.id;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="content" id="IndividualDetail">
|
||||
|
||||
{% include "detail_breadcrumb.html" %}
|
||||
|
||||
{% if citationform.errors or sourceform.errors %}
|
||||
<hr>
|
||||
<p id="error">The following fields have errors. Please correct and try again.</p>
|
||||
<div id="error">{{citationform.errors}}</div>
|
||||
<div id="error">{{sourceform.errors}}</div>
|
||||
<hr>
|
||||
{% endif %}
|
||||
<form method="post">{% csrf_token %}
|
||||
|
||||
<!-- Tabs -->
|
||||
<h2>Citation information</h2>
|
||||
|
||||
<div class="ui-tabs ui-widget ui-widget-content ui-corner-all" id="tabs" style="border: none;">
|
||||
<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
|
||||
<li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active"><a class="tab-general" href="#tab-general">General</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-notes" href="#tab-notes">Note</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-media" href="#tab-media">Media</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-data" href="#tab-data">Data</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-references" href="#tab-references">Reference</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-history" href="#tab-history">History</a></li>
|
||||
</ul>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom" id="tab-general" style="background-color: #f4f0ec;">
|
||||
|
||||
<table class="infolist" style="width:90%;">
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{citationform.text.label}}:</td>
|
||||
<td class="ColumnValue" id="data" colspan="3"> {% render citationform.text user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{citationform.gramps_id.label}}:</td>
|
||||
<td class="ColumnValue" id="data"> {% render citationform.gramps_id user action %}</td>
|
||||
<td class="ColumnAttribute">{{citationform.private.label}}:</td>
|
||||
<td class="ColumnValue" id="data"> {% render citationform.private user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{citationform.page.label}}:</td>
|
||||
<td class="ColumnValue" id="data" colspan="3"> {% render citationform.page user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{citationform.confidence.label}}:</td>
|
||||
<td class="ColumnValue" id="data" colspan="3"> {% render citationform.confidence user action %}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-notes" style="background-color: #f4f0ec;">
|
||||
{% note_table citation user action "/note/$act/citation/%s" citation.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-media" style="background-color: #f4f0ec;">
|
||||
{% media_table citation user action "/media/$act/citation/%s" citation.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-data" style="background-color: #f4f0ec;">
|
||||
{% data_table citation user action "/data/$act/citation/%s" citation.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-references" style="background-color: #f4f0ec;">
|
||||
{% citation_reference_table citation user action %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-history" style="background-color: #f4f0ec;">
|
||||
{% history_table citation user action %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>Note: Any changes in the shared citation information will be reflected
|
||||
in the citation itself, for all items that reference the citation.
|
||||
</p>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>Source information (shared)</h2>
|
||||
<div class="ui-tabs ui-widget ui-widget-content ui-corner-all" id="shared-tabs" style="border: none;">
|
||||
<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
|
||||
<li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active"><a class="tab-shared-general" href="#tab-shared-general">General</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-shared-notes" href="#tab-shared-notes">Notes</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-shared-media" href="#tab-shared-media">Media</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-shared-repositories" href="#tab-shared-repositories">Repositories</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-shared-references" href="#tab-shared-references">References</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-shared-history" href="#tab-shared-history">History</a></li>
|
||||
</ul>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom" id="tab-shared-general" style="background-color: #f4f0ec;">
|
||||
|
||||
<table class="infolist" style="width:90%;">
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{sourceform.title.label}}:</td>
|
||||
<td class="ColumnValue" id="data" colspan="3"> {% render sourceform.title user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{sourceform.author.label}}:</td>
|
||||
<td class="ColumnValue" id="data" colspan="3"> {% render sourceform.author user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{sourceform.gramps_id.label}}:</td>
|
||||
<td class="ColumnValue" id="data"> {% render sourceform.gramps_id user action %}</td>
|
||||
<td class="ColumnAttribute">{{sourceform.private.label}}:</td>
|
||||
<td class="ColumnValue" id="data"> {% render sourceform.private user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{sourceform.abbrev.label}}:</td>
|
||||
<td class="ColumnValue" id="data" colspan="3"> {% render sourceform.abbrev user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{sourceform.pubinfo.label}}:</td>
|
||||
<td class="ColumnValue" id="data" colspan="3"> {% render sourceform.pubinfo user action %}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-shared-notes" style="background-color: #f4f0ec;">
|
||||
{% note_table source user action "/note/$act/source/%s" source.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-shared-media" style="background-color: #f4f0ec;">
|
||||
{% media_table source user action "/media/$act/source/%s" source.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-shared-repositories" style="background-color: #f4f0ec;">
|
||||
{% repository_table source user action "/repository/$act/source/%s" source.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-shared-references" style="background-color: #f4f0ec;">
|
||||
{% citation_reference_table source user action %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-shared-history" style="background-color: #f4f0ec;">
|
||||
{% history_table source user action %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>Note: Any changes in the shared source information will be reflected
|
||||
in the source itself, for all items that reference the source.
|
||||
</p>
|
||||
|
||||
<hr>
|
||||
|
||||
{% if user.is_superuser %}
|
||||
{% if action == "edit" %}
|
||||
{% make_button "Cancel" "/citation/%s" citation.handle args %}
|
||||
<input type="hidden" name="action" value="save"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Save"/>
|
||||
{% else %}
|
||||
{% ifequal action "add" %}
|
||||
{% make_button "Cancel" "/citation/" args %}
|
||||
<input type="hidden" name="action" value="create"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Create"/>
|
||||
{% else %}
|
||||
<div style="background-color: lightgray; padding: 2px 0px 0px 2px; clear: both;">
|
||||
{% make_button "+Add Citation" "/citation/add" args %}
|
||||
{% make_button "?Edit Citation" "/citation/%s/edit" citation.handle args %}
|
||||
{% make_button "-Delete Citation" "/citation/%s/delete" citation.handle args %}
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% endif %}
|
||||
</form>
|
||||
{% endblock %}
|
||||
@@ -1,48 +0,0 @@
|
||||
{% extends "view_page.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block table_data %}
|
||||
|
||||
<table cellspacing="0" class="infolist surname" width="90%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>ID</th>
|
||||
<th>Title</th>
|
||||
<th>Pub Info</th>
|
||||
<th>Author</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for source in page.object_list %}
|
||||
<tr class="{% cycle odd,even %}">
|
||||
<td>{{ forloop.counter|row_count:page }}</td>
|
||||
<td><a href="/{{view}}/{{source.handle|escape}}{{args}}" class="browsecell"
|
||||
>
|
||||
<span class="grampsid">[{{source.gramps_id}}]</span></a>
|
||||
{% if user.is_authenticated or source.public %}
|
||||
<td><a href="/{{view}}/{{source.handle|escape}}{{args}}" class="browsecell"
|
||||
>{{source.title|escape|nbsp}}</a>
|
||||
<td><a href="/{{view}}/{{source.handle|escape}}{{args}}" class="browsecell"
|
||||
>{{source.pubinfo|nbsp}}</a>
|
||||
<td><a href="/{{view}}/{{source.handle|escape}}{{args}}" class="browsecell"
|
||||
>{{source.author|nbsp}}</a>
|
||||
{% else %}
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block admin_functions %}
|
||||
{% if user.is_superuser %}
|
||||
<div style="background-color: lightgray; padding: 2px 0px 0px 2px">
|
||||
{% make_button "+Add Citation" "/citation/add" args %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -1,137 +0,0 @@
|
||||
{% extends "view_page_detail.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$('#tabs').tabs({
|
||||
'select': function(event, ui){
|
||||
document.location.hash = ui.panel.id;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="content" id="IndividualDetail">
|
||||
|
||||
{% include "detail_breadcrumb.html" %}
|
||||
|
||||
<div id="summaryarea">
|
||||
<table class="infolist" style="width:90%;">
|
||||
<trbody>
|
||||
{% if eventform.errors %}
|
||||
<hr>
|
||||
<p id="error">The following fields have errors. Please correct and try again.</p>
|
||||
<div id="error">{{eventform.errors}}</div>
|
||||
<hr>
|
||||
{% endif %}
|
||||
<form method="post" onsubmit="setReturnValues()">{% csrf_token %}
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{eventform.event_type.label}}:</td>
|
||||
<td class="ColumnValue" id="data"> {% render eventform.event_type user action %}</td>
|
||||
<td class="ColumnAttribute">{{eventform.text.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render eventform.text user action %}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">Description:</td>
|
||||
<td class="ColumnValue" id="data" colspan="3">{% render eventform.description user action %}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">ID:</td>
|
||||
<td class="ColumnValue" id="data" colspan="3">{% render eventform.gramps_id user action %}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">Place:</td>
|
||||
<td class="ColumnValue" id="data" colspan="3">
|
||||
{% if action != "view" %}
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$('#place').flexbox('/json/?field=place', {
|
||||
watermark: 'Place',
|
||||
width: 600,
|
||||
paging: {
|
||||
pageSize: 10
|
||||
},
|
||||
initialValue: '{{event.place.get_selection_string}}',
|
||||
initialId: '{{event.place.handle}}'
|
||||
});
|
||||
});
|
||||
// </script>
|
||||
<div id="place"></div>
|
||||
{% else %}
|
||||
<a href="/place/?search={{event.place}}">{{event.place}}</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
<td class="ColumnValue" id="data" colspan="3">{% render eventform.private user action %}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if user.is_superuser %}
|
||||
{% if action == "edit" %}
|
||||
{% make_button "Cancel" "/event/%s" event.handle args %}
|
||||
<input type="hidden" id="place_return" name="place_return" value=""/>
|
||||
<input type="hidden" name="action" value="save"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Save"/>
|
||||
{% else %}
|
||||
{% ifequal action "add" %}
|
||||
{% make_button "Cancel" "/event/" args %}
|
||||
<input type="hidden" id="place_return" name="place_return" value=""/>
|
||||
<input type="hidden" name="action" value="create"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Create"/>
|
||||
{% else %}
|
||||
<div style="background-color: lightgray; padding: 2px 0px 0px 2px; clear: both;">
|
||||
{% make_button "+Add Event" "/event/add" args %}
|
||||
{% make_button "?Edit Event" "/event/%s/edit" event.handle args %}
|
||||
{% make_button "-Delete Event" "/event/%s/delete" event.handle args %}
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% endif %}
|
||||
|
||||
<!-- Tabs -->
|
||||
|
||||
<div class="ui-tabs ui-widget ui-widget-content ui-corner-all" id="tabs" style="border: none;">
|
||||
<ul class="ui-tab-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
|
||||
<li class="ui-state-default ui-corner-top ui-tab-selected ui-state-active"><a class="tab-sources" href="#tab-sources">Citation</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-notes" href="#tab-notes">Note</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-media" href="#tab-media">Media</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-attributes" href="#tab-attributes">Attribute</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-references" href="#tab-references">Reference</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-history" href="#tab-history">History</a></li>
|
||||
</ul>
|
||||
<div class="ui-tab-panel ui-widget-content ui-corner-bottom" id="tab-sources" style="background-color: #f4f0ec;">
|
||||
{% citation_table event user action "/citation/$act/event/%s" event.handle %}
|
||||
</div>
|
||||
<div class="ui-tab-panel ui-widget-content ui-corner-bottom ui-tab-hide" id="tab-notes" style="background-color: #f4f0ec;">
|
||||
{% note_table event user action "/note/$act/event/%s" event.handle %}
|
||||
</div>
|
||||
<div class="ui-tab-panel ui-widget-content ui-corner-bottom ui-tab-hide" id="tab-media" style="background-color: #f4f0ec;">
|
||||
{% media_table event user action "/media/$act/event/%s" event.handle %}
|
||||
</div>
|
||||
<div class="ui-tab-panel ui-widget-content ui-corner-bottom ui-tab-hide" id="tab-attributes" style="background-color: #f4f0ec;">
|
||||
{% attribute_table event user action "/attribute/$act/event/%s" event.handle %}
|
||||
</div>
|
||||
<div class="ui-tab-panel ui-widget-content ui-corner-bottom ui-tab-hide" id="tab-references" style="background-color: #f4f0ec;">
|
||||
{% event_reference_table event user action %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-history" style="background-color: #f4f0ec;">
|
||||
{% history_table event user action %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
{% extends "view_page.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block table_data %}
|
||||
|
||||
<table cellspacing="0" class="infolist surname" width="95%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>ID</th>
|
||||
<th>Event Type</th>
|
||||
<th>Description</th>
|
||||
<th>Date</th>
|
||||
<th>Place</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for event in page.object_list %}
|
||||
<tr class="{% cycle odd,even %}">
|
||||
<td>{{ forloop.counter|row_count:page }}</td>
|
||||
<td><a href="/{{view}}/{{event.handle|escape}}{{args}}" class="noThumb browsecell">
|
||||
<span class="grampsid">[{{event.gramps_id}}]</span></a>
|
||||
|
||||
{% if user.is_authenticated or event.public %}
|
||||
<td><a href="/{{view}}/{{event.handle|escape}}{{args}}" class="browsecell">{{event.event_type|nbsp}}</a>
|
||||
<td><a href="/{{view}}/{{event.handle|escape}}{{args}}" class="browsecell">{{event.description|nbsp}}</a>
|
||||
<td><a href="/{{view}}/{{event.handle|escape}}{{args}}" class="browsecell">{{event|date_as_text:user}}</a>
|
||||
<td><a href="/{{view}}/{{event.handle|escape}}{{args}}" class="browsecell">{{event.place.title|nbsp}}</a>
|
||||
{% else %}
|
||||
<td><a href="/{{view}}/{{event.handle|escape}}{{args}}" class="browsecell">[Private]</a>
|
||||
<td><a href="/{{view}}/{{event.handle|escape}}{{args}}" class="browsecell">[Private]</a>
|
||||
<td><a href="/{{view}}/{{event.handle|escape}}{{args}}" class="browsecell">[Private]</a>
|
||||
<td><a href="/{{view}}/{{event.handle|escape}}{{args}}" class="browsecell">[Private]</a>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block admin_functions %}
|
||||
{% if user.is_superuser %}
|
||||
<div style="background-color: lightgray; padding: 2px 0px 0px 2px">
|
||||
{% make_button "+Add Event" "/event/add" args %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -1,71 +0,0 @@
|
||||
{% extends "view_page.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block table_data %}
|
||||
|
||||
<table cellspacing="0" class="infolist surname" width="95%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>ID</th>
|
||||
<th>Father</th>
|
||||
<th>Mother</th>
|
||||
<th>Relationship</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for family in page.object_list %}
|
||||
<tr class="{% cycle odd,even %}">
|
||||
<td><a href="/{{view}}/{{family.handle|escape}}{{args}}" class="browsecell"
|
||||
{% if family.tags.all %}
|
||||
style="color: {{family.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>{{ forloop.counter|row_count:page }}</a></td>
|
||||
<td><a href="/{{view}}/{{family.handle|escape}}{{args}}" class="browsecell"
|
||||
{% if family.tags.all %}
|
||||
style="color: {{family.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
><span class="grampsid">[{{family.gramps_id}}]</span></a>
|
||||
<td><a href="/{{view}}/{{family.handle|escape}}{{args}}" class="browsecell"
|
||||
{% if family.tags.all %}
|
||||
style="color: {{family.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>{{family.father|make_name:user|nbsp}}</a>
|
||||
<td><a href="/{{view}}/{{family.handle|escape}}{{args}}" class="browsecell"
|
||||
{% if family.tags.all %}
|
||||
style="color: {{family.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>{{family.mother|make_name:user|nbsp}}</a>
|
||||
{% if user.is_authenticated or family.public %}
|
||||
<td><a href="/{{view}}/{{family.handle|escape}}{{args}}" class="browsecell"
|
||||
{% if family.tags.all %}
|
||||
style="color: {{family.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>{{family.family_rel_type|escape|nbsp}}</a>
|
||||
{% else %}
|
||||
<td><a href="/{{view}}/{{family.handle|escape}}{{args}}" class="browsecell"
|
||||
{% if family.tags.all %}
|
||||
style="color: {{family.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>
|
||||
{% if not family.public %}
|
||||
[Private]
|
||||
{% else %}
|
||||
{{family.family_rel_type}}
|
||||
{% endif %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block admin_functions %}
|
||||
{% if user.is_superuser %}
|
||||
<div style="background-color: lightgray; padding: 2px 0px 0px 2px">
|
||||
{% make_button "+Add Family" "/family/add" args %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -1,205 +0,0 @@
|
||||
{% extends "view_page_detail.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$('#tabs').tabs({
|
||||
'select': function(event, ui){
|
||||
document.location.hash = ui.panel.id;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="content" id="IndividualDetail">
|
||||
|
||||
{% include "detail_breadcrumb.html" %}
|
||||
|
||||
<h2><a href="/person/{{family.father.handle}}">{{family.father|render_name:user}}</a> and <a href="/person/{{family.mother.handle}}">{{family.mother|render_name:user}}</a></h2>
|
||||
|
||||
<div id="summaryarea">
|
||||
<table class="infolist" style="width:90%;"> {% comment %} 4 cols {% endcomment %}
|
||||
<tbody>
|
||||
{% if familyform.errors %}
|
||||
<hr>
|
||||
<p id="error">The following fields have errors. Please correct and try again.</p>
|
||||
<div id="error">{{familyform.errors}}</div>
|
||||
<hr>
|
||||
{% endif %}
|
||||
<form method="post" onsubmit="setReturnValues()">{% csrf_token %}
|
||||
<tr>
|
||||
<th colspan="2">Father</th>
|
||||
<th colspan="2">Mother</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">Name:</td>
|
||||
{% if user.is_authenticated or father.probably_alive %}
|
||||
<td class="ColumnValue" id="data">
|
||||
{% if action != "view" %}
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$('#father').flexbox('/json/?field=father', {
|
||||
watermark: 'Father',
|
||||
width: 300,
|
||||
paging: {
|
||||
pageSize: 10
|
||||
},
|
||||
initialValue: '{{family.father.get_selection_string}}',
|
||||
initialId: '{{family.father.handle}}'
|
||||
});
|
||||
});
|
||||
// </script>
|
||||
<div id="father"></div>
|
||||
{% else %}
|
||||
{{family.father|render_name:user}}
|
||||
{% endif %}
|
||||
</td>
|
||||
{% else %}
|
||||
{{family.father|render_name:user}}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="ColumnAttribute">Name:</td>
|
||||
{% if user.is_authenticated or family.mother.probably_alive %}
|
||||
<td class="ColumnValue" id="data">
|
||||
{% if action != "view" %}
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$('#mother').flexbox('/json/?field=mother', {
|
||||
watermark: 'Mother',
|
||||
width: 300,
|
||||
paging: {
|
||||
pageSize: 10
|
||||
},
|
||||
initialValue: '{{family.mother.get_selection_string}}',
|
||||
initialId: '{{family.mother.handle}}'
|
||||
});
|
||||
});
|
||||
// </script>
|
||||
<div id="mother"></div>
|
||||
{% else %}
|
||||
{{family.mother|render_name:user}}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{{family.mother|render_name:user}}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% if user.is_authenticated or not familyform.father.probably_alive %}
|
||||
<tr>
|
||||
<td class="ColumnAttribute">Birth:</td>
|
||||
<td class="ColumnValue" id="data">{{familyform.father.birth|date_as_text:user}}</td>
|
||||
<td class="ColumnAttribute">Birth:</td>
|
||||
<td class="ColumnValue" id="data">{{familyform.mother.birth|date_as_text:user}}</td>
|
||||
</tr>
|
||||
{% else %}
|
||||
<tr>
|
||||
<td class="ColumnAttribute">Death:</td>
|
||||
<td class="ColumnValue" id="data">{{familyform.father.death|date_as_text:user}}</td>
|
||||
<td class="ColumnAttribute">Death:</td>
|
||||
<td class="ColumnValue" id="data">{{familyform.mother.death|date_as_text:user}}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
<tr>
|
||||
<td class="ColumnAttribute">Death:</td>
|
||||
<td class="ColumnValue" id="data">{{familyform.father.death|date_as_text:user}}</td>
|
||||
<td class="ColumnAttribute">Death:</td>
|
||||
<td class="ColumnValue" id="data">{{familyform.mother.death|date_as_text:user}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table class="infolist">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan="4">Relationship information</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{familyform.gramps_id.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render familyform.gramps_id user action %}</td>
|
||||
<td class="ColumnAttribute">{{familyform.family_rel_type.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render familyform.family_rel_type user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{familyform.tags.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render familyform.tags user action %}</td>
|
||||
<td class="ColumnAttribute">{{familyform.private.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render familyform.private user action %}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if user.is_superuser %}
|
||||
{% if action == "edit" %}
|
||||
{% make_button "Cancel" "/family/%s" family.handle args %}
|
||||
<input type="hidden" id="father_return" name="father_return" value=""/>
|
||||
<input type="hidden" id="mother_return" name="mother_return" value=""/>
|
||||
<input type="hidden" name="action" value="save"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Save"/>
|
||||
{% else %}
|
||||
{% ifequal action "add" %}
|
||||
{% make_button "Cancel" "/family/" args %}
|
||||
<input type="hidden" id="father_return" name="father_return" value=""/>
|
||||
<input type="hidden" id="mother_return" name="mother_return" value=""/>
|
||||
<input type="hidden" name="action" value="create"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Create"/>
|
||||
{% else %}
|
||||
<div style="background-color: lightgray; padding: 2px 0px 0px 2px; clear: both;">
|
||||
{% make_button "+Add Family" "/family/add" args %}
|
||||
{% make_button "?Edit Family" "/family/%s/edit" family.handle args %}
|
||||
{% make_button "-Delete Family" "/family/%s/delete" family.handle args %}
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% endif %}
|
||||
|
||||
<!-- Tabs -->
|
||||
|
||||
<div class="ui-tabs ui-widget ui-widget-content ui-corner-all" id="tabs" style="border: none;">
|
||||
<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
|
||||
<li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active"><a class="tab-children" href="#tab-children">Children</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-events" href="#tab-events">Event</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-citations" href="#tab-citations">Citation</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-attributes" href="#tab-attributes">Attribute</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-notes" href="#tab-notes">Note</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-media" href="#tab-media">Media</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-lds" href="#tab-lds">LDS</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-history" href="#tab-history">History</a></li>
|
||||
</ul>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom" id="tab-children" style="background-color: #f4f0ec;">
|
||||
<!-- Events -->
|
||||
{% children_table family user action "/person/$act/family/%s" family.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-events" style="background-color: #f4f0ec;">
|
||||
{% event_table family user action "/event/$act/family/%s" family.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-citations" style="background-color: #f4f0ec;">
|
||||
{% citation_table family user action "/citation/$act/family/%s" family.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-attributes" style="background-color: #f4f0ec;">
|
||||
{% attribute_table family user action "/attribute/add/family/%s" family.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-notes" style="background-color: #f4f0ec;">
|
||||
{% note_table family user action "/note/$act/family/%s" family.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-media" style="background-color: #f4f0ec;">
|
||||
{% media_table family user action "/media/$act/family/%s" family.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-lds" style="background-color: #f4f0ec;">
|
||||
{% lds_table family user action "/lds/add/family/%s" family.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-history" style="background-color: #f4f0ec;">
|
||||
{% history_table family user action %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
{% extends "view_page.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block table_data %}
|
||||
<table cellspacing="0" class="infolist surname" width="95%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>ID</th>
|
||||
<th>Description</th>
|
||||
<th>File</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for media in page.object_list %}
|
||||
<tr class="{% cycle odd,even %}">
|
||||
<td>{{ forloop.counter|row_count:page }}</td>
|
||||
<td><a href="/{{view}}/{{media.handle|escape}}{{args}}" class="noThumb browsecell"
|
||||
{% if media.tags.all %}
|
||||
style="color: {{media.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>
|
||||
<span class="grampsid">[{{media.gramps_id}}]</span></a>
|
||||
{% if user.is_authenticated or media.public %}
|
||||
<td><a href="/{{view}}/{{media.handle|escape}}{{args}}" class="browsecell"
|
||||
{% if media.tags.all %}
|
||||
style="color: {{media.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>{{media.desc|escape}}</a>
|
||||
<td><a href="/{{view}}/{{media.handle|escape}}{{args}}" class="browsecell"
|
||||
{% if media.tags.all %}
|
||||
style="color: {{media.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>{{media.path|escape}}</a>
|
||||
{% else %}
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block admin_functions %}
|
||||
{% if user.is_superuser %}
|
||||
<div style="background-color: lightgray; padding: 2px 0px 0px 2px">
|
||||
{% make_button "+Add Media" "/media/add" args %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -1,110 +0,0 @@
|
||||
{% extends "view_page_detail.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$('#tabs').tabs({
|
||||
'select': function(event, ui){
|
||||
document.location.hash = ui.panel.id;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="content" id="IndividualDetail">
|
||||
|
||||
{% include "detail_breadcrumb.html" %}
|
||||
|
||||
|
||||
<div id="summaryarea">
|
||||
<table class="infolist" style="width:90%;">
|
||||
<tbody>
|
||||
{% if mediaform.errors %}
|
||||
<hr>
|
||||
<p id="error">The following fields have errors. Please correct and try again.</p>
|
||||
<div id="error">{{mediaform.errors}}</div>
|
||||
<hr>
|
||||
{% endif %}
|
||||
<form method="post">{% csrf_token %}
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{mediaform.desc.label}}:</td>
|
||||
<td class="ColumnValue" id="data" colspan="3">{% render mediaform.desc user action %}</td>
|
||||
<td rowspan="5">{% media_link media.handle user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{mediaform.gramps_id.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render mediaform.gramps_id user action %}</td>
|
||||
<td class="ColumnAttribute">{{mediaform.private.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render mediaform.private user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{mediaform.text.label}}:</td>
|
||||
<td class="ColumnValue" id="data" colspan="3">{% render mediaform.text user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{mediaform.path.label}}:</td>
|
||||
<td class="ColumnValue" id="data" colspan="3">{% render mediaform.path user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{mediaform.tags.label}}:</td>
|
||||
<td class="ColumnValue" id="data" colspan="3">{% render mediaform.tags user action %}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
{% if user.is_superuser %}
|
||||
{% if action == "edit" %}
|
||||
{% make_button "Cancel" "/media/%s" media.handle args %}
|
||||
<input type="hidden" name="action" value="save"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Save"/>
|
||||
{% else %}
|
||||
{% ifequal action "add" %}
|
||||
{% make_button "Cancel" "/media/" args %}
|
||||
<input type="hidden" name="action" value="create"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Create"/>
|
||||
{% else %}
|
||||
<div style="background-color: lightgray; padding: 2px 0px 0px 2px; clear: both;">
|
||||
{% make_button "+Add Media" "/media/add" args %}
|
||||
{% make_button "?Edit Media" "/media/%s/edit" media.handle args %}
|
||||
{% make_button "-Delete Media" "/media/%s/delete" media.handle args %}
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% endif %}
|
||||
|
||||
<!-- Tabs -->
|
||||
|
||||
<div class="ui-tabs ui-widget ui-widget-content ui-corner-all" id="tabs" style="border: none;">
|
||||
<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
|
||||
<li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active"><a class="tab-sources" href="#tab-sources" style=":hover {color: black;}">Citation</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-attributes" href="#tab-attributes">Attribute</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-notes" href="#tab-notes">Note</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-references" href="#tab-references">Reference</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-history" href="#tab-history">History</a></li>
|
||||
</ul>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-sources" style="background-color: #f4f0ec;">
|
||||
{% citation_table media user action "/citation/$act/media/%s" media.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-notes" style="background-color: #f4f0ec;">
|
||||
{% note_table media user action "/note/$act/media/%s" media.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-attributes" style="background-color: #f4f0ec;">
|
||||
{% attribute_table media user action "/attribute/add/media/%s" media.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom" id="tab-references" style="background-color: #f4f0ec;">
|
||||
{% media_reference_table media user action %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-history" style="background-color: #f4f0ec;">
|
||||
{% history_table media user action %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,148 +0,0 @@
|
||||
{% extends "view_page_detail.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$('#tabs').tabs({
|
||||
'select': function(event, ui){
|
||||
document.location.hash = ui.panel.id;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="content" id="IndividualDetail">
|
||||
|
||||
{% filter breadcrumb %}
|
||||
{% format "/browse|Browse" %} ||
|
||||
{% format "/person|People" %} ||
|
||||
{% format "/person/%s|Person [%s]" object.handle object.gramps_id %} ||
|
||||
{% format "/person/%s/name/%s|Name #%s" object.handle order order %}
|
||||
{% endfilter %}
|
||||
|
||||
<h3>{{nameform.model|make_name:user}} [{{person.gramps_id}}]</h3>
|
||||
<div id="summaryarea">
|
||||
<table class="infolist" style="width:90%;"> {% comment %} 4 cols {% endcomment %}
|
||||
<tbody>
|
||||
|
||||
{% for error in nameform.errors %}
|
||||
<p id="error">{{error}}</a><br>
|
||||
{% endfor %}
|
||||
|
||||
<form method="post">{% csrf_token %}
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{surnameform.name_origin_type.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render surnameform.name_origin_type user action %}</td>
|
||||
<td class="ColumnAttribute">{{nameform.name_type.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render nameform.name_type user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{surnameform.surname.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render surnameform.surname user action "get_focus" %}</td>
|
||||
<td class="ColumnAttribute">{{surnameform.prefix.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render surnameform.prefix user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{nameform.first_name.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render nameform.first_name user action %}</td>
|
||||
<td class="ColumnAttribute">{{nameform.nick.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render nameform.nick user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{nameform.title.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render nameform.title user action %}</td>
|
||||
<td class="ColumnAttribute">{{nameform.suffix.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render nameform.suffix user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute"></td>
|
||||
<td class="ColumnValue" id="data"></td>
|
||||
<td class="ColumnAttribute">{{nameform.call.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render nameform.call user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{nameform.preferred.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render nameform.preferred user action %}</td>
|
||||
<td class="ColumnAttribute">{{nameform.private.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render nameform.private user action %}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Tabs -->
|
||||
|
||||
<div class="ui-tabs ui-widget ui-widget-content ui-corner-all" id="tabs" style="border: none;">
|
||||
<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
|
||||
<li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active"><a class="tab-general" href="#tab-general">General</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-surnames" href="#tab-surnames">Surname</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-names" href="#tab-names">Alternate Names</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-citations" href="#tab-citations">Citation</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-notes" href="#tab-notes">Note</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom"
|
||||
id="tab-general" style="background-color: #f4f0ec;">
|
||||
<div style="overflow: auto; height:150px;">
|
||||
<table border="1">
|
||||
<tr><td style="background-color: #FFF2C5;">{{nameform.group_as.label}}: </td>
|
||||
<td>{% render nameform.group_as user action %}</td>
|
||||
</tr>
|
||||
<tr><td style="background-color: #FFF2C5;">{{nameform.sort_as.label}}: </td>
|
||||
<td>{% render nameform.sort_as user action %}</td>
|
||||
</tr>
|
||||
<tr><td style="background-color: #FFF2C5;">{{nameform.display_as.label}}: </td>
|
||||
<td>{% render nameform.display_as user action %}</td>
|
||||
</tr>
|
||||
<tr><td style="background-color: #FFF2C5;">{{nameform.text.label}}: </td>
|
||||
<td>{% render nameform.text user action %}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-surnames" style="background-color: #f4f0ec;">
|
||||
{% surname_table person user action "/person/%s/name/%s/surname/add" person.handle nameform.model.order %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-names" style="background-color: #f4f0ec;">
|
||||
{% name_table person user action "/person/%s/name" person.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-citations" style="background-color: #f4f0ec;">
|
||||
{% citation_table nameform.model user action "/citation/add/person/%s/name/%s" person.handle nameform.model.order %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom
|
||||
ui-tabs-hide" id="tab-notes" style="background-color: #f4f0ec;">
|
||||
{% note_table nameform.model user action "/note/$act/person/%s/name/%s" person.handle nameform.model.order %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if user.is_superuser %}
|
||||
{% ifequal action "add" %}
|
||||
{% make_button "Cancel" "/person/%s" person.handle args "#tab-names" %}
|
||||
<input type="hidden" name="action" value="create"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Create"/>
|
||||
{% else %}
|
||||
{% ifequal action "edit" %}
|
||||
{% make_button "Cancel" "/person/" args "#tab-names" %}
|
||||
<input type="hidden" name="action" value="save"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Save"/>
|
||||
{% else %}
|
||||
<div style="background-color: lightgray; padding: 2px 0px 0px 2px; clear: both;">
|
||||
{% make_button "+Add Name" "/person/%s/name/add" person.handle args %}
|
||||
{% make_button "?Edit Name" "/person/%s/name/%s/edit" person.handle order args %}
|
||||
{% make_button "-Delete Name" "/person/%s/name/%s/delete" person.handle order args %}
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% endifequal %}
|
||||
{% else %}
|
||||
{% endif %}
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,117 +0,0 @@
|
||||
{% extends "view_page_detail.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$('#tabs').tabs({
|
||||
'select': function(event, ui){
|
||||
document.location.hash = ui.panel.id;
|
||||
}
|
||||
});
|
||||
$('.wysiwyg').htmlarea({
|
||||
toolbar: [
|
||||
"bold", "italic", "underline",
|
||||
"|", "forecolor", "superscript", "p",
|
||||
"|", "link", "unlink",
|
||||
"|", "html"
|
||||
]
|
||||
});
|
||||
// FIXME: add font, fontsize, backcolor
|
||||
// FIXME: find easier way:
|
||||
$('.jHtmlArea').contents().find('iframe').contents().find('body').css({"background-color": "white"});
|
||||
});
|
||||
function setnotetext() {
|
||||
document.getElementById('notetext').value = $('.jHtmlArea').contents().find('iframe').contents().find('body').html();
|
||||
}
|
||||
</script>
|
||||
<div class="content" id="IndividualDetail">
|
||||
|
||||
{% include "detail_breadcrumb.html" %}
|
||||
|
||||
<div id="summaryarea">
|
||||
<table class="infolist" style="width:90%;">
|
||||
<tbody>
|
||||
{% if noteform.errors %}
|
||||
<hr>
|
||||
<p id="error">The following fields have errors. Please correct and try again.</p>
|
||||
<div id="error">{{noteform.errors}}</div>
|
||||
<hr>
|
||||
{% endif %}
|
||||
<form method="post" onsubmit="setnotetext()">{% csrf_token %}
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{noteform.notetext.label}}:</td>
|
||||
<td class="ColumnValue" id="data" colspan="3">
|
||||
{% if action == "edit" or action == "add" %}
|
||||
<input type="hidden" id="notetext" name="notetext" value=""></input>
|
||||
{% render noteform.notetext user action %}
|
||||
{% else %}
|
||||
<div style="overflow-y: scroll; height: 100px;">{{notetext|safe}}</div>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="ColumnAttribute">{{noteform.preformatted.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render noteform.preformatted user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{noteform.gramps_id.label}}:</td>
|
||||
<td class="ColumnValue" id="data"> {% render noteform.gramps_id user action %}</td>
|
||||
<td class="ColumnAttribute">{{noteform.note_type.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render noteform.note_type user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{noteform.tags.label}}:</td>
|
||||
<td class="ColumnValue" id="data" colspan="4">{% render noteform.tags user action %}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
{% if user.is_superuser %}
|
||||
{% if action == "edit" %}
|
||||
{% make_button "Cancel" "/note/%s" note.handle args %}
|
||||
<input type="hidden" name="action" value="save"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Save"/>
|
||||
{% else %}
|
||||
{% ifequal action "add" %}
|
||||
{% make_button "Cancel" "/note/" args %}
|
||||
<input type="hidden" name="action" value="create"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Create"/>
|
||||
{% else %}
|
||||
<div style="background-color: lightgray; padding: 2px 0px 0px 2px; clear: both;">
|
||||
{% make_button "+Add Note" "/note/add" args %}
|
||||
{% make_button "?Edit Note" "/note/%s/edit" note.handle args %}
|
||||
{% make_button "-Delete Note" "/note/%s/delete" note.handle args %}
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% endif %}
|
||||
|
||||
<!-- Tabs -->
|
||||
|
||||
<div class="ui-tabs ui-widget ui-widget-content ui-corner-all" id="tabs" style="border: none;">
|
||||
<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-references" href="#tab-references">Reference</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-history" href="#tab-history">History</a></li>
|
||||
</ul>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-references" style="background-color: #f4f0ec;">
|
||||
{% note_reference_table note user action %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-history" style="background-color: #f4f0ec;">
|
||||
{% history_table note user action %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
{% extends "view_page.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block table_data %}
|
||||
|
||||
<table cellspacing="0" class="infolist surname" width="95%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>ID</th>
|
||||
<th>Note Type</th>
|
||||
<th>Text</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for note in page.object_list %}
|
||||
<tr class="{% cycle odd,even %}">
|
||||
<td>{{ forloop.counter|row_count:page }}</td>
|
||||
<td><a href="/{{view}}/{{note.handle|escape}}{{args}}" class="noThumb browsecell"
|
||||
{% if note.tags.all %}
|
||||
style="color: {{note.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>
|
||||
<span class="grampsid">[{{note.gramps_id}}]</span></a>
|
||||
{% if user.is_authenticated or note.public %}
|
||||
<td><a href="/{{view}}/{{note.handle|escape}}{{args}}" class="browsecell"
|
||||
{% if note.tags.all %}
|
||||
style="color: {{note.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>{{note.note_type|escape|nbsp}}</a>
|
||||
<td><a href="/{{view}}/{{note.handle|escape}}{{args}}" class="browsecell"
|
||||
{% if note.tags.all %}
|
||||
style="color: {{note.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>{{note.text|preview:70|nbsp}}</a>
|
||||
{% else %}
|
||||
<td>[Private]</td>
|
||||
<td>[Private]</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block admin_functions %}
|
||||
{% if user.is_superuser %}
|
||||
<div style="background-color: lightgray; padding: 2px 0px 0px 2px">
|
||||
{% make_button "+Add Note" "/note/add" args %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -1,28 +0,0 @@
|
||||
{% extends "gramps-base.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block title %}{{sitename}}: {{tview}} view {% endblock %}
|
||||
{% block heading %}{{sitename}}: {{tview}} view {% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div id="description" style="padding: 10pt 10pt 10pt 10pt;">
|
||||
<form name="SearchForm">
|
||||
{% if tview != "Report" %}
|
||||
{% filter breadcrumb %}
|
||||
{% format "/browse|Browse" %} ||
|
||||
{% format "/%s|%s" view tviews %}
|
||||
{% endfilter %}
|
||||
{% endif %}
|
||||
<input type="submit" value="Search:"></input>
|
||||
<input autocomplete="off" name="search" id="get_focus" type="text" size="50" value="{{search}}"></input>
|
||||
<br/><i>Available search terms</i>: <b>{{search_terms}}</b>
|
||||
</form>
|
||||
</div>
|
||||
{% paginator %}
|
||||
<div style="overflow:auto; height:300px;width:800px;">
|
||||
{% block table_data %} <table></table> {% endblock %}
|
||||
</div>
|
||||
{% include "paginator.html" %}
|
||||
{% block admin_functions %}{% endblock %}
|
||||
{% endblock %}
|
||||
@@ -1,6 +0,0 @@
|
||||
{% extends "gramps-base.html" %}
|
||||
{% load my_tags %}
|
||||
{% block title %}{{sitename}}: {{tview}} detail {% endblock %}
|
||||
{% block heading %}{{sitename}}: {{tview}} detail {% endblock %}
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
@@ -1,68 +0,0 @@
|
||||
{% extends "view_page.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block table_data %}
|
||||
|
||||
<table cellspacing="0" class="infolist surname" width="95%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Name</th>
|
||||
<th>ID</th>
|
||||
<th>Gender</th>
|
||||
<th>Birth Date</th>
|
||||
<th>Death Date</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for name in page.object_list %}
|
||||
<tr class="{% cycle odd,even %}" style="">
|
||||
{% if name.person %}
|
||||
<td><a href="{{name.person.handle}}/{{args}}" class="noThumb browsecell"
|
||||
{% if name.person.tags.all %}
|
||||
style="color: {{name.person.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>{{ forloop.counter|row_count:page }}</a>
|
||||
</td>
|
||||
<td><a href="{{name.person.handle}}/{{args}}" class="noThumb browsecell"
|
||||
{% if name.person.tags.all %}
|
||||
style="color: {{name.person.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>{{name|make_name:user}} </a>
|
||||
</td>
|
||||
<td><a href="{{name.person.handle}}/{{args}}" class="grampsid browsecell"
|
||||
{% if name.person.tags.all %}
|
||||
style="color: {{name.person.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>[{{name.person.gramps_id}}]</a></td>
|
||||
<td><a href="{{name.person.handle}}/{{args}}" class="noThumb browsecell"
|
||||
{% if name.person.tags.all %}
|
||||
style="color: {{name.person.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>{{name.person.gender_type}} </a></td>
|
||||
<td><a href="{{name.person.handle}}/{{args}}" class="noThumb browsecell"
|
||||
{% if name.person.tags.all %}
|
||||
style="color: {{name.person.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>{{name.person.birth|date_as_text:user}} </a></td>
|
||||
<td><a href="{{name.person.handle}}/{{args}}" class="noThumb browsecell"
|
||||
{% if name.person.tags.all %}
|
||||
style="color: {{name.person.tags.all.0.color|format_color}};"
|
||||
{% endif %}
|
||||
>{{name.person.death|date_as_text:user}} </a></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block admin_functions %}
|
||||
{% if user.is_superuser %}
|
||||
<div style="background-color: lightgray; padding: 2px 0px 0px 2px">
|
||||
{% make_button "+Add Person" "/person/add" args %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,175 +0,0 @@
|
||||
{% extends "view_page_detail.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$('#tabs').tabs({
|
||||
'select': function(event, ui){
|
||||
document.location.hash = ui.panel.id;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="content" id="IndividualDetail">
|
||||
|
||||
{% include "detail_breadcrumb.html" %}
|
||||
|
||||
<div id="summaryarea">
|
||||
<table class="infolist" style="width:90%;"> {% comment %} 5 cols {% endcomment %}
|
||||
<tbody>
|
||||
{% if personform.errors or nameform.errors or surnameform.errors or logform.errors %}
|
||||
<hr>
|
||||
<p id="error">The following fields have errors. Please correct and try again.</p>
|
||||
<div id="error">
|
||||
{{personform.errors}}
|
||||
{{nameform.errors}}
|
||||
{{surnameform.errors}}
|
||||
{{logform.errors}}
|
||||
</div>
|
||||
<hr>
|
||||
{% endif %}
|
||||
<form method="post">{% csrf_token %}
|
||||
<tr>
|
||||
<td colspan="4" id="subtitle">{{nameform|render_name:user}}</td>
|
||||
<td class="ColumnAttribute">{{nameform.name_type.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render nameform.name_type user action %}</td>
|
||||
</tr>
|
||||
<tr><td id="rowspace"></td></tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{nameform.title.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render nameform.title user action "get_focus" %}</td>
|
||||
<td class="ColumnAttribute">{{nameform.nick.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render nameform.nick user action %}</td>
|
||||
<td class="ColumnAttribute">{{nameform.call.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render nameform.call user action %}</td>
|
||||
</tr>
|
||||
<tr><td id="rowspace"></td></tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{nameform.first_name.label}}:</td>
|
||||
<td class="ColumnValue" id="data" colspan="4">{% render nameform.first_name user action None "/person/?search=given%%3D%s" nameform.model.first_name %}</td>
|
||||
<td class="ColumnValue" id="data">{% render nameform.suffix user action %}</td>
|
||||
</tr>
|
||||
<tr><td id="rowspace"></td></tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{surnameform.surname.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render surnameform.prefix user action %}
|
||||
<td class="ColumnValue" id="data" colspan="2">{% render surnameform.surname user action None "/person/?search=surname%%3D%s" surnameform.model.surname %}</td>
|
||||
<td class="ColumnAttribute">{{surnameform.name_origin_type.label}}:</td>
|
||||
<td class="ColumnValue" id="data" colspan="2">{% render surnameform.name_origin_type user action %}</td>
|
||||
</tr>
|
||||
<tr><td id="rowspace"></td></tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{personform.gender_type.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render personform.gender_type user action None "/person/?search=gender%%3D%s" personform.model.gender_type %}</td>
|
||||
<td class="ColumnAttribute">{{personform.gramps_id.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render personform.gramps_id user action %}</td>
|
||||
<td class="ColumnAttribute">{{personform.tags.label}}:</td>
|
||||
<td class="ColumnValue" id="data" rowspan="3">{% render personform.tags user action %}</td>
|
||||
</tr>
|
||||
<tr><td id="rowspace"></td></tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{personform.private.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render personform.private user action %}</td>
|
||||
<td class="ColumnAttribute">{{personform.probably_alive.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% if person.probably_alive %}Yes{% else %}No{% endif %}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if logform %}
|
||||
<table>
|
||||
{{logform.as_table}}
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
{% if user.is_superuser %}
|
||||
{% if action == "edit" %}
|
||||
{% make_button "Cancel" "/person/%s" person.handle args %}
|
||||
<input type="hidden" name="action" value="save"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Save"/>
|
||||
{% else %}
|
||||
{% ifequal action "add" %}
|
||||
{% make_button "Cancel" "/person/" args %}
|
||||
<input type="hidden" name="action" value="create"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Create"/>
|
||||
{% else %}
|
||||
<div style="background-color: lightgray; padding: 2px 0px 0px 2px; clear: both;">
|
||||
{% make_button "+Add Person" "/person/add" args %}
|
||||
{% make_button "?Edit Person" "/person/%s/edit" person.handle args %}
|
||||
{% make_button "-Delete Person" "/person/%s/delete" person.handle args %}
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% endif %}
|
||||
|
||||
<!-- Tabs -->
|
||||
|
||||
<div class="ui-tabs ui-widget ui-widget-content ui-corner-all" id="tabs" style="border: none;">
|
||||
<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
|
||||
<li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active"><a class="tab-events" href="#tab-events">Event</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-references" href="#tab-references">Family</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-names" href="#tab-names">Name</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-citations" href="#tab-citations">Citation</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-attributes" href="#tab-attributes">Attribute</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-addresses" href="#tab-addresses">Address</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-notes" href="#tab-notes">Note</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-media" href="#tab-media">Media</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-internet" href="#tab-internet">Internet</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-association" href="#tab-association">Association</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-lds" href="#tab-lds">LDS</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-history" href="#tab-history">History</a></li>
|
||||
</ul>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom" id="tab-events" style="background-color: #f4f0ec;">
|
||||
<!-- Events -->
|
||||
{% event_table person user action "/event/$act/person/%s" person.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-names" style="background-color: #f4f0ec;">
|
||||
{% name_table person user action "/person/%s/name" person.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-citations" style="background-color: #f4f0ec;">
|
||||
{% citation_table person user action "/citation/$act/person/%s" person.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-attributes" style="background-color: #f4f0ec;">
|
||||
{% attribute_table person user action "/attribute/$act/person/%s" person.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-addresses" style="background-color: #f4f0ec;">
|
||||
{% address_table person user action "/place/$act/person/%s" person.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom
|
||||
ui-tabs-hide" id="tab-notes" style="background-color: #f4f0ec;">
|
||||
{% note_table person user action "/note/$act/person/%s" person.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-media" style="background-color: #f4f0ec;">
|
||||
{% media_table person user action "/media/$act/person/%s" person.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-internet" style="background-color: #f4f0ec;">
|
||||
{% internet_table person user action "/person/%s/$act/internet" person.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-association" style="background-color: #f4f0ec;">
|
||||
{% association_table person user action "/person/%s/$act/association" person.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-lds" style="background-color: #f4f0ec;">
|
||||
{% lds_table person user action "/person/%s/$act/lds" person.handle %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-references" style="background-color: #f4f0ec;">
|
||||
{% person_reference_table person user action %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-history" style="background-color: #f4f0ec;">
|
||||
{% history_table person user action %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,148 +0,0 @@
|
||||
{% extends "view_page_detail.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$('#tabs').tabs({
|
||||
'select': function(event, ui){
|
||||
document.location.hash = ui.panel.id;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="content" id="IndividualDetail">
|
||||
|
||||
{% include "detail_breadcrumb.html" %}
|
||||
|
||||
<div id="summaryarea">
|
||||
|
||||
<table class="infolist" style="width:90%;">
|
||||
<trbody>
|
||||
{% if placeform.errors %}
|
||||
<hr>
|
||||
<p id="error">The following fields have errors. Please correct and try again.</p>
|
||||
<div id="error">{{placeform.errors}}</div>
|
||||
<hr>
|
||||
{% endif %}
|
||||
<form method="post">{% csrf_token %}
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{placeform.title.label}}:</td>
|
||||
<td class="Columnvalue" id="data" colpan="3"> {% render placeform.title user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{placeform.lat.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render placeform.lat user action %}</td>
|
||||
<td class="ColumnAttribute">{{placeform.long.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render placeform.long user action %}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">{{placeform.gramps_id.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render placeform.gramps_id user action %}</td>
|
||||
<td class="ColumnAttribute">{{placeform.private.label}}:</td>
|
||||
<td class="ColumnValue" id="data">{% render placeform.private user action %}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!-- Tabs -->
|
||||
|
||||
<div class="ui-tabs ui-widget ui-widget-content ui-corner-all" id="tabs" style="border: none;">
|
||||
<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
|
||||
<li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active"><a class="tab-locations" href="#tab-locations">Location</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-alternatelocations" href="#tab-alternatelocations">Alternate Locations</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-citations" href="#tab-citations">Citation</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-notes" href="#tab-notes">Note</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-media" href="#tab-media">Media</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-internet" href="#tab-internet">Internet</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-references" href="#tab-references">Reference</a></li>
|
||||
<li class="ui-corner-top ui-state-default"><a class="tab-history" href="#tab-history">History</a></li>
|
||||
</ul>
|
||||
<div class="ui-tab-panel ui-widget-content ui-corner-bottom" id="tab-locations" style="background-color: #f4f0ec;">
|
||||
|
||||
<table class="infolist" style="width:90%;">
|
||||
<tr>
|
||||
<td class="ColumnAttribute">Street:</td>
|
||||
<td class="Columnvalue" id="data" colspan="3"> FIXME </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">Locality:</td>
|
||||
<td class="Columnvalue" id="data"> FIXME </td>
|
||||
<td class="ColumnAttribute">Church parish:</td>
|
||||
<td class="Columnvalue" id="data"> FIXME </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">City:</td>
|
||||
<td class="Columnvalue" id="data"> FIXME </td>
|
||||
<td class="ColumnAttribute">State:</td>
|
||||
<td class="Columnvalue" id="data"> FIXME </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">County:</td>
|
||||
<td class="Columnvalue" id="data"> FIXME </td>
|
||||
<td class="ColumnAttribute">ZIP/Postal code:</td>
|
||||
<td class="Columnvalue" id="data"> FIXME </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">Country:</td>
|
||||
<td class="Columnvalue" id="data"> FIXME </td>
|
||||
<td class="ColumnAttribute">Phone:</td>
|
||||
<td class="Columnvalue" id="data"> FIXME </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="ui-tab-panel ui-widget-content ui-corner-bottom ui-tab-hide" id="tab-alternatelocations" style="background-color: #f4f0ec;">
|
||||
{% location_table place user action "/location/$act/place/%s" place.handle %}
|
||||
</div>
|
||||
<div class="ui-tab-panel ui-widget-content ui-corner-bottom ui-tab-hide" id="tab-citations" style="background-color: #f4f0ec;">
|
||||
{% citation_table place user action "/citation/$act/place/%s" place.handle %}
|
||||
</div>
|
||||
<div class="ui-tab-panel ui-widget-content ui-corner-bottom ui-tab-hide" id="tab-notes" style="background-color: #f4f0ec;">
|
||||
{% note_table place user action "/note/$act/place/%s" place.handle %}
|
||||
</div>
|
||||
<div class="ui-tab-panel ui-widget-content ui-corner-bottom ui-tab-hide" id="tab-media" style="background-color: #f4f0ec;">
|
||||
{% media_table place user action "/media/$act/place/%s" place.handle %}
|
||||
</div>
|
||||
<div class="ui-tab-panel ui-widget-content ui-corner-bottom ui-tab-hide" id="tab-internet" style="background-color: #f4f0ec;">
|
||||
{% internet_table place user action "/internet/$act/place/%s" place.handle %}
|
||||
</div>
|
||||
<div class="ui-tab-panel ui-widget-content ui-corner-bottom ui-tab-hide" id="tab-references" style="background-color: #f4f0ec;">
|
||||
{% place_reference_table place user action %}
|
||||
</div>
|
||||
<div class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" id="tab-history" style="background-color: #f4f0ec;">
|
||||
{% history_table place user action %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if user.is_superuser %}
|
||||
{% if action == "edit" %}
|
||||
{% make_button "Cancel" "/place/%s" place.handle args %}
|
||||
<input type="hidden" name="action" value="save"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Save"/>
|
||||
{% else %}
|
||||
{% ifequal action "add" %}
|
||||
{% make_button "Cancel" "/place/" args %}
|
||||
<input type="hidden" name="action" value="create"/>
|
||||
<input type="hidden" name="search" value="{{search}}"/>
|
||||
<input type="hidden" name="page" value="{{page}}"/>
|
||||
<input type="submit" value="Create"/>
|
||||
{% else %}
|
||||
<div style="background-color: lightgray; padding: 2px 0px 0px 2px; clear: both;">
|
||||
{% make_button "+Add Place" "/place/add" args %}
|
||||
{% make_button "?Edit Place" "/place/%s/edit" place.handle args %}
|
||||
{% make_button "-Delete Place" "/place/%s/delete" place.handle args %}
|
||||
</div>
|
||||
{% endifequal %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% endif %}
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
{% extends "view_page.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block table_data %}
|
||||
|
||||
<table cellspacing="0" class="infolist surname" width="95%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>ID</th>
|
||||
<th>Title</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for place in page.object_list %}
|
||||
<tr class="{% cycle odd,even %}">
|
||||
<td>{{ forloop.counter|row_count:page }}</td>
|
||||
<td><a href="/{{view}}/{{place.handle|escape}}{{args}}" class="noThumb browsecell">
|
||||
<span class="grampsid">[{{place.gramps_id}}]</span></a>
|
||||
{% if user.is_authenticated or place.public %}
|
||||
<td><a href="/{{view}}/{{place.handle|escape}}{{args}}" class="browsecell">{{place.title|escape|nbsp}}</a>
|
||||
{% else %}
|
||||
<td></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block admin_functions %}
|
||||
{% if user.is_superuser %}
|
||||
<div style="background-color: lightgray; padding: 2px 0px 0px 2px">
|
||||
{% make_button "+Add Places" "/place/add" args %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -1,35 +0,0 @@
|
||||
{% extends "view_page.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block table_data %}
|
||||
|
||||
<table cellspacing="0" class="infolist surname" width="95%">
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Report Name</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for report in page.object_list %}
|
||||
<tr class="{% cycle odd,even %}">
|
||||
<td>{{ forloop.counter|row_count:page }}</td>
|
||||
<td><a href="/{{view}}/{{report.handle|escape}}" class="noThumb browsecell">
|
||||
<span class="grampsid">{{report.name}}</span></a>
|
||||
{% if user.is_authenticated %}
|
||||
<td></td>
|
||||
<td></td>
|
||||
{% else %}
|
||||
<td></td>
|
||||
<td></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
{% extends "view_page_detail.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="content" id="IndividualDetail">
|
||||
|
||||
{% include "detail_breadcrumb.html" %}
|
||||
|
||||
<div id="summaryarea">
|
||||
|
||||
<form name="RunForm" action="/report/{{report.handle}}/run">
|
||||
<table class="infolist" style="width:90%;">
|
||||
<tr>
|
||||
<td class="ColumnAttribute">Name:</td>
|
||||
<td class="ColumnValue" id="data" colspan="5">{{report.name}} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">Type:</td>
|
||||
<td class="ColumnValue" id="data">{{report.report_type}}</td>
|
||||
</tr>
|
||||
<td class="ColumnAttribute">Options:</td>
|
||||
<td class="ColumnValue" id="data">
|
||||
<textarea autocomplete="off" name="options" id="get_focus" cols="70" rows="20">
|
||||
{% if report.options %}{{report.options}}{% else %}{% endif %}
|
||||
</textarea>
|
||||
<br>
|
||||
<i>Hint</i>: use Gramps CLI options such as output file format <b>off=pdf</b>, <b>off=ged</b>, or <b>off=gramps</b>
|
||||
</td>
|
||||
</tr>
|
||||
<td class="ColumnValue">
|
||||
<input type="submit" value="Run"></input>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</form>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="ColumnAttribute">Help:</td>
|
||||
<td class="ColumnValue" id="data">
|
||||
{{help|safe}}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
{% extends "view_page.html" %}
|
||||
{% load my_tags %}
|
||||
|
||||
{% block table_data %}
|
||||
|
||||
<table cellspacing="0" class="infolist surname" width="95%">
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>ID</th>
|
||||
<th>Type</th>
|
||||
<th>Name</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for repository in page.object_list %}
|
||||
<tr class="{% cycle odd,even %}">
|
||||
<td>{{ forloop.counter|row_count:page }}</td>
|
||||
<td><a href="/{{view}}/{{repository.handle|escape}}{{args}}" class="noThumb browsecell">
|
||||
<span class="grampsid">[{{repository.gramps_id}}]</span></a>
|
||||
{% if user.is_authenticated or repository.public %}
|
||||
<td><a href="/{{view}}/{{repository.handle|escape}}{{args}}" class="browsecell">{{repository.repository_type|escape|nbsp}}</a>
|
||||
<td><a href="/{{view}}/{{repository.handle|escape}}{{args}}" class="browsecell">{{repository.name|escape|nbsp}}</a>
|
||||
{% else %}
|
||||
<td></td>
|
||||
<td></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block admin_functions %}
|
||||
{% if user.is_superuser %}
|
||||
<div style="background-color: lightgray; padding: 2px 0px 0px 2px">
|
||||
{% make_button "+Add Repository" "/repository/add" args %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||