Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b1a1492b89 | ||
|
|
382a092010 | ||
|
|
7ea5098754 | ||
|
|
941b57af02 | ||
|
|
d64edceb58 | ||
|
|
c642a9b0c1 | ||
|
|
dff4eb2241 | ||
|
|
8f4ecc311b | ||
|
|
34bbd12920 | ||
|
|
9259845f93 | ||
|
|
dccb411d7f | ||
|
|
3164ea2040 | ||
|
|
c455d3c614 | ||
|
|
e149e0bdd9 | ||
|
|
5bedd2b6da | ||
|
|
8a4e152f8e | ||
|
|
2f26ac67ce | ||
|
|
b68175970a | ||
|
|
6b9e112448 | ||
|
|
ac76517411 | ||
|
|
370d322e32 | ||
|
|
3bfbea6e43 | ||
|
|
628072b6e2 | ||
|
|
962305a955 | ||
|
|
6425a0759c | ||
|
|
85cd73b479 | ||
|
|
0eb535fafc | ||
|
|
bcd5926fa2 | ||
|
|
33b374a7fe | ||
|
|
e26853c4b6 | ||
|
|
4414c66423 | ||
|
|
447175af18 | ||
|
|
706e52ed21 | ||
|
|
7b2d513a8e | ||
|
|
40902a74fd | ||
|
|
fef05cabdf | ||
|
|
8fbd4fd0a6 | ||
|
|
ac64b76654 | ||
|
|
7651c0127e | ||
|
|
9c5f99f9eb | ||
|
|
20f95807a4 | ||
|
|
9f16969ee7 | ||
|
|
53518b91fc | ||
|
|
70142436ae | ||
|
|
01cbda0183 | ||
|
|
159b597896 | ||
|
|
82acedefee | ||
|
|
6ede6f59c6 | ||
|
|
8ebae458c6 | ||
|
|
19abf1c4c4 | ||
|
|
e5f7d0ec38 | ||
|
|
f9a8b38b60 | ||
|
|
ea2ce14b75 | ||
|
|
b4eee45e9b | ||
|
|
dee09dfe09 | ||
|
|
17a6868a04 | ||
|
|
42bd941c46 | ||
|
|
84575c4497 | ||
|
|
2df20b1a40 | ||
|
|
3941e426e4 | ||
|
|
c59b8fcfe7 | ||
|
|
d99f1cfc3e | ||
|
|
55ce5c0dd2 | ||
|
|
758da5b987 | ||
|
|
1a5179cc17 | ||
|
|
2865f19afd | ||
|
|
ae74399b0b | ||
|
|
d0d119cd85 | ||
|
|
27cf2ab9c7 | ||
|
|
583afaa85a | ||
|
|
95f9944ade | ||
|
|
48a1b845a2 | ||
|
|
bfe7002961 | ||
|
|
21d34a3b9f | ||
|
|
2d79296b28 | ||
|
|
164d74bdad | ||
|
|
23419bab0c | ||
|
|
ba4ef1478d | ||
|
|
f4f0ee7da9 | ||
|
|
d1aba902f8 | ||
|
|
a86dce368a | ||
|
|
d19a54a14d | ||
|
|
eaf7959b6c | ||
|
|
75fb886c9a | ||
|
|
ebde18f595 | ||
|
|
31fe02c988 | ||
|
|
608932e277 | ||
|
|
8dc6e6f0cf | ||
|
|
99dc645adb | ||
|
|
4dc7320a8f | ||
|
|
d0c3b3fb6d | ||
|
|
1c30252764 | ||
|
|
2caeb3cd10 | ||
|
|
c8c2113e3c | ||
|
|
ded7fd0886 | ||
|
|
f625d421dd | ||
|
|
966592f1bc | ||
|
|
aaac7fa4ce | ||
|
|
6620bdf26b | ||
|
|
e4d461cd41 | ||
|
|
980c9219d4 | ||
|
|
d5ad2286f3 | ||
|
|
02cb24901d | ||
|
|
dca9fee375 | ||
|
|
00dcc99a84 | ||
|
|
83acd7e57c | ||
|
|
ef60fe921d | ||
|
|
be96744dd5 | ||
|
|
6eb3e9ecee | ||
|
|
7a25cb843f | ||
|
|
fa07552860 | ||
|
|
4172a4e5f1 | ||
|
|
3c3dbed015 | ||
|
|
863dc524e4 | ||
|
|
cad66b335d | ||
|
|
400a5e8a1e | ||
|
|
ad736afd73 | ||
|
|
edf6d6f310 | ||
|
|
6d037d1e0a | ||
|
|
70261b5d6d | ||
|
|
24224bbe16 | ||
|
|
c29bb785ae | ||
|
|
a1082d4460 | ||
|
|
63d518cfc2 | ||
|
|
b04c13800d | ||
|
|
ab0c0d20b7 | ||
|
|
ac38a667ab | ||
|
|
c74b507aef | ||
|
|
49f52642b0 | ||
|
|
051b659f43 | ||
|
|
221ebecccb | ||
|
|
209cb7867a | ||
|
|
f97342a8de | ||
|
|
c47ec74fde | ||
|
|
89a84ec573 | ||
|
|
fef0afab61 | ||
|
|
6658dfdb4f | ||
|
|
ac8f28fcb1 | ||
|
|
9b00f57d4e | ||
|
|
68c4059b3b | ||
|
|
2ebee013bb | ||
|
|
0eac11c9e5 | ||
|
|
c860332416 | ||
|
|
7fa8c6eddf | ||
|
|
ac65fcdf82 | ||
|
|
088a3e3947 | ||
|
|
8ab83d455f | ||
|
|
8b1e41ca57 | ||
|
|
052a3dc2e7 | ||
|
|
6b1096cffa | ||
|
|
be884f93fa | ||
|
|
19fc0e7d87 | ||
|
|
de65142029 | ||
|
|
ecaf740fe0 | ||
|
|
6d2c9a5f93 | ||
|
|
5c7f0bd0b8 | ||
|
|
3ba27f1196 | ||
|
|
ac20f11f71 | ||
|
|
f54050b492 | ||
|
|
025ea301e1 | ||
|
|
80e3332a5c | ||
|
|
5ab35027a7 | ||
|
|
97841b9820 | ||
|
|
a07432c3d7 | ||
|
|
d531308db7 | ||
|
|
d259a3f2c9 | ||
|
|
0bec2e4dfb | ||
|
|
9283515050 | ||
|
|
c431e76d4d | ||
|
|
a438614571 | ||
|
|
ad59e92a45 | ||
|
|
13c112c904 | ||
|
|
aa76055ad4 | ||
|
|
f3e1d7815e | ||
|
|
11a3a08120 | ||
|
|
b38bfd7315 | ||
|
|
6fec11c8a7 | ||
|
|
f6210664c6 | ||
|
|
7c8ab4b974 | ||
|
|
deb219fc05 | ||
|
|
26d3af5ccc | ||
|
|
de4a27144c | ||
|
|
032e5e201e | ||
|
|
16320c0063 | ||
|
|
2de88b7ebd | ||
|
|
1a015c834c | ||
|
|
1281fdd074 | ||
|
|
384dd26fff | ||
|
|
f758a46292 | ||
|
|
641b1f5b4d | ||
|
|
e4b728f952 | ||
|
|
ffeeaf8497 | ||
|
|
33db2e0e07 | ||
|
|
c105dab42e | ||
|
|
fc65ab06e9 | ||
|
|
b962fee6eb | ||
|
|
2f7864eab4 | ||
|
|
e63911cd07 | ||
|
|
f1f2bf8d1e | ||
|
|
a97d0e6fc5 | ||
|
|
a9080bf4c6 | ||
|
|
ab24d1b4f4 | ||
|
|
a379f700b4 | ||
|
|
51df78a7d0 | ||
|
|
42c19ccc14 | ||
|
|
819923978e | ||
|
|
9337096004 | ||
|
|
0fd4ea3e4e | ||
|
|
d40d58f744 | ||
|
|
f0928cf71b | ||
|
|
db80429033 | ||
|
|
641c9984ad | ||
|
|
95c8b8cd11 | ||
|
|
1ad9f7f98c | ||
|
|
5eed528c76 | ||
|
|
3cfd30b14a | ||
|
|
22cb25f03d | ||
|
|
3a0684c87c | ||
|
|
493dc087c0 | ||
|
|
1c6535c30b | ||
|
|
07fbdc6385 | ||
|
|
6c6ec2787c | ||
|
|
a95f0fc33e | ||
|
|
92bb6c846a | ||
|
|
151e78b28b | ||
|
|
5c0e561ad8 | ||
|
|
2299c6ba4d | ||
|
|
c0becc9749 | ||
|
|
24656251cb | ||
|
|
b25a5f210d | ||
|
|
b047429ce0 | ||
|
|
1ba08f0f39 | ||
|
|
9461b8af65 | ||
|
|
db4866b822 | ||
|
|
ee4a5ef3b5 | ||
|
|
2591925556 | ||
|
|
e8166aa806 | ||
|
|
fee6304d76 | ||
|
|
8397ac6e38 | ||
|
|
40607f6d09 | ||
|
|
2f58a588a5 | ||
|
|
420a0b3d8d | ||
|
|
415b9e9a65 | ||
|
|
61b805e5fe | ||
|
|
b1a758b650 | ||
|
|
01f0698861 | ||
|
|
b98b1d8317 | ||
|
|
f2c046306a | ||
|
|
d9ea5f6a74 | ||
|
|
1cb8f0d5a1 | ||
|
|
977111b064 | ||
|
|
c0ad45f3f4 | ||
|
|
0bf0fbd043 | ||
|
|
a06f6f937a | ||
|
|
dfe70328bc | ||
|
|
164b6c2d9c | ||
|
|
9e10378c99 | ||
|
|
5313d52a52 | ||
|
|
b86a461c57 | ||
|
|
c5b11d6f50 | ||
|
|
d045d66f3a | ||
|
|
27045ad2ab | ||
|
|
a66fe0de69 | ||
|
|
3ac57c8588 | ||
|
|
cbcd9bdba7 | ||
|
|
5f0a43688d | ||
|
|
b7866d7b0c | ||
|
|
43caae661b | ||
|
|
e4c1837540 | ||
|
|
2251a9553b | ||
|
|
f6a3e260c1 | ||
|
|
746e24afdb | ||
|
|
1ed5688d99 | ||
|
|
b868f2beeb | ||
|
|
d55d649f15 | ||
|
|
bacd85ddec | ||
|
|
fb8caabb9a | ||
|
|
2c5aa37e08 | ||
|
|
8814936910 | ||
|
|
d98baa8728 | ||
|
|
0fb44504fa | ||
|
|
4fc4a53bc4 | ||
|
|
6260e46b97 | ||
|
|
86b0fa2497 | ||
|
|
cc09ab7093 | ||
|
|
144c5ccd02 | ||
|
|
0f820a6371 | ||
|
|
11eb1d50c0 | ||
|
|
17aa538084 | ||
|
|
bee5d2e7b5 | ||
|
|
7faad47330 | ||
|
|
dae85be57a | ||
|
|
f81b6b8fd1 | ||
|
|
d197f6cd36 |
+89
-4
@@ -1,6 +1,7 @@
|
||||
language: python
|
||||
|
||||
python:
|
||||
- 3.5
|
||||
- 3.4
|
||||
- 3.3
|
||||
- 2.7
|
||||
@@ -26,6 +27,7 @@ env:
|
||||
- DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
- DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=1 AUTH_USER_MODEL='emailuserapp.EmailUser'
|
||||
- DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=1 AUTH_USER_MODEL='customuserapp.User'
|
||||
- DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=1 AUTH_USER_MODEL='customuserapp.User'
|
||||
|
||||
before_script:
|
||||
- sh -c "if [ '$DATABASE_URL' = 'postgres://postgres@127.0.0.1/djangocms_test' ];
|
||||
@@ -41,15 +43,16 @@ before_install:
|
||||
- "sh -e /etc/init.d/xvfb start"
|
||||
|
||||
install:
|
||||
- pip install -q -r "test_requirements/django-$DJANGO.txt" xvfbwrapper
|
||||
- if [ $DATABASE_URL == 'postgres://postgres@127.0.0.1/djangocms_test' ]; then pip
|
||||
- pip install -q -r "test_requirements/django-$DJANGO.txt"
|
||||
- if [[ $TRAVIS_PYTHON_VERSION == '2.6' ]]; then pip install 'xvfbwrapper<0.2.7'; else pip install xvfbwrapper; fi
|
||||
- if [[ $DATABASE_URL == 'postgres://postgres@127.0.0.1/djangocms_test' ]]; then pip
|
||||
install -q psycopg2 ; fi
|
||||
- if [ $DATABASE_URL == 'mysql://root@127.0.0.1/djangocms_test' ]; then pip install
|
||||
- if [[ $DATABASE_URL == 'mysql://root@127.0.0.1/djangocms_test' ]]; then pip install
|
||||
-q mysqlclient ; fi
|
||||
|
||||
script: coverage run --rcfile=.coverage.rc develop.py test --migrate --xvfb
|
||||
|
||||
after_success: coverallscustomuserapp.User --config_file=.coverage.rc
|
||||
after_success: coveralls --config_file=.coverage.rc
|
||||
|
||||
notifications:
|
||||
irc:
|
||||
@@ -61,6 +64,15 @@ notifications:
|
||||
matrix:
|
||||
exclude:
|
||||
|
||||
- python: 2.6
|
||||
env: DJANGO=1.6 DATABASE_URL='sqlite://localhost/:memory:' SELENIUM=0
|
||||
- python: 2.6
|
||||
env: DJANGO=1.6 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
- python: 2.6
|
||||
env: DJANGO=1.6 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
- python: 2.6
|
||||
env: DJANGO=1.6 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=1 AUTH_USER_MODEL='emailuserapp.EmailUser'
|
||||
|
||||
- python: 2.6
|
||||
env: DJANGO=1.7 DATABASE_URL='sqlite://localhost/:memory:' SELENIUM=0
|
||||
- python: 2.6
|
||||
@@ -81,6 +93,72 @@ matrix:
|
||||
- python: 2.6
|
||||
env: DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=1 AUTH_USER_MODEL='customuserapp.User'
|
||||
|
||||
- python: 2.7
|
||||
env: DJANGO=1.6 DATABASE_URL='sqlite://localhost/:memory:' SELENIUM=0
|
||||
- python: 2.7
|
||||
env: DJANGO=1.6 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
- python: 2.7
|
||||
env: DJANGO=1.6 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=1 AUTH_USER_MODEL='emailuserapp.EmailUser'
|
||||
|
||||
- python: 2.7
|
||||
env: DJANGO=1.7 DATABASE_URL='sqlite://localhost/:memory:' SELENIUM=0
|
||||
- python: 2.7
|
||||
env: DJANGO=1.7 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
|
||||
- python: 3.3
|
||||
env: DJANGO=1.6 DATABASE_URL='sqlite://localhost/:memory:' SELENIUM=0
|
||||
- python: 3.3
|
||||
env: DJANGO=1.6 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
- python: 3.3
|
||||
env: DJANGO=1.6 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
- python: 3.3
|
||||
env: DJANGO=1.6 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=1 AUTH_USER_MODEL='emailuserapp.EmailUser'
|
||||
|
||||
- python: 3.3
|
||||
env: DJANGO=1.7 DATABASE_URL='sqlite://localhost/:memory:' SELENIUM=0
|
||||
- python: 3.3
|
||||
env: DJANGO=1.7 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
- python: 3.3
|
||||
env: DJANGO=1.7 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
|
||||
- python: 3.3
|
||||
env: DJANGO=1.8 DATABASE_URL='sqlite://localhost/:memory:' SELENIUM=0
|
||||
- python: 3.3
|
||||
env: DJANGO=1.8 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
- python: 3.3
|
||||
env: DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
- python: 3.3
|
||||
env: DJANGO=1.8 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=1 AUTH_USER_MODEL='emailuserapp.EmailUser'
|
||||
|
||||
- python: 3.5
|
||||
env: DJANGO=1.6 DATABASE_URL='sqlite://localhost/:memory:' SELENIUM=0
|
||||
- python: 3.5
|
||||
env: DJANGO=1.6 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
- python: 3.5
|
||||
env: DJANGO=1.6 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
- python: 3.5
|
||||
env: DJANGO=1.6 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=1 AUTH_USER_MODEL='emailuserapp.EmailUser'
|
||||
- python: 3.5
|
||||
env: DJANGO=1.6 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=1 AUTH_USER_MODEL='customuserapp.User'
|
||||
|
||||
- python: 3.5
|
||||
env: DJANGO=1.7 DATABASE_URL='sqlite://localhost/:memory:' SELENIUM=0
|
||||
- python: 3.5
|
||||
env: DJANGO=1.7 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
- python: 3.5
|
||||
env: DJANGO=1.7 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
- python: 3.5
|
||||
env: DJANGO=1.7 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=1 AUTH_USER_MODEL='emailuserapp.EmailUser'
|
||||
|
||||
- python: 2.6
|
||||
env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=1 AUTH_USER_MODEL='customuserapp.User'
|
||||
- python: 2.7
|
||||
env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=1 AUTH_USER_MODEL='customuserapp.User'
|
||||
- python: 3.3
|
||||
env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=1 AUTH_USER_MODEL='customuserapp.User'
|
||||
- python: 3.5
|
||||
env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=1 AUTH_USER_MODEL='customuserapp.User'
|
||||
|
||||
allow_failures:
|
||||
- python: 2.7
|
||||
env: DJANGO=1.7 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
@@ -101,4 +179,11 @@ matrix:
|
||||
- python: 3.4
|
||||
env: DJANGO=1.8 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
|
||||
- python: 3.5
|
||||
env: DJANGO=1.8 DATABASE_URL='mysql://root@127.0.0.1/djangocms_test' SELENIUM=0
|
||||
|
||||
- python: 3.4
|
||||
env: DJANGO=1.9 DATABASE_URL='postgres://postgres@127.0.0.1/djangocms_test' SELENIUM=1 AUTH_USER_MODEL='customuserapp.User'
|
||||
|
||||
fast_finish: true
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ Current and previous core designers:
|
||||
* Christian Bertschy
|
||||
|
||||
|
||||
Contributors (based on gitlog) (482):
|
||||
Contributors (based on gitlog) (456 authors):
|
||||
|
||||
* A. Bram Neijt
|
||||
* aaloy
|
||||
@@ -30,7 +30,6 @@ Contributors (based on gitlog) (482):
|
||||
* aball
|
||||
* Adi Sieker
|
||||
* Admin Adminaras
|
||||
* Adrián Ribao
|
||||
* Adrián Ribao Martínez
|
||||
* Alberto Paro
|
||||
* Ales Kocjancic
|
||||
@@ -41,7 +40,6 @@ Contributors (based on gitlog) (482):
|
||||
* Alex Marandon
|
||||
* Alexandre Leray
|
||||
* Alexey Subbotin
|
||||
* Aleš Kocjančič
|
||||
* Alvin Mites
|
||||
* Anatoly Ivanov
|
||||
* Andi Albrecht
|
||||
@@ -49,13 +47,11 @@ Contributors (based on gitlog) (482):
|
||||
* Andrea Stagi
|
||||
* Andrei Avram
|
||||
* Andrei Fokau
|
||||
* Andrew Cassidy
|
||||
* Andrew Schoen
|
||||
* Angelo Dini
|
||||
* angular_circle
|
||||
* Antoine Catton
|
||||
* Anton Parkhomenko
|
||||
* Antoni Aloy López
|
||||
* AQNOUCH Mohammed
|
||||
* Arcady Usov
|
||||
* Arne Gellhaus
|
||||
@@ -64,14 +60,12 @@ Contributors (based on gitlog) (482):
|
||||
* Arthur Debert
|
||||
* Artis Avotins
|
||||
* Aymeric Augustin
|
||||
* Bashar Al-Abdulhadi
|
||||
* Batiste Bieler
|
||||
* Basile LEGAL
|
||||
* behrooz
|
||||
* Behrooz Nobakht
|
||||
* Belegnar
|
||||
* Ben Northway
|
||||
* Ben Stähli
|
||||
* Beni Wohlwend
|
||||
* Benjamin
|
||||
* Benjamin Liles
|
||||
* Benjamin Wohlwend
|
||||
@@ -93,7 +87,6 @@ Contributors (based on gitlog) (482):
|
||||
* Carlo Ascani
|
||||
* Carlos de Paula
|
||||
* casio
|
||||
* Catalin Dragomirescu
|
||||
* centralniak
|
||||
* Chanita Siridechkun
|
||||
* Charlie Denton
|
||||
@@ -106,7 +99,7 @@ Contributors (based on gitlog) (482):
|
||||
* Chris Jones
|
||||
* Chris Wesseling
|
||||
* Chris Wilson
|
||||
* Christian Bertschy
|
||||
* Christian Strappazzon
|
||||
* Christof Hagedorn
|
||||
* Christopher Grebs
|
||||
* Christos Kopanos
|
||||
@@ -114,7 +107,6 @@ Contributors (based on gitlog) (482):
|
||||
* Claudio Bartolini
|
||||
* Colin Wirz
|
||||
* Conrado Buhrer
|
||||
* Conrado Bührer
|
||||
* Corey Farwell
|
||||
* Craig de Stigter
|
||||
* Craig Ricciuto
|
||||
@@ -155,7 +147,7 @@ Contributors (based on gitlog) (482):
|
||||
* DZ
|
||||
* eged
|
||||
* Egor V. Nazarkin
|
||||
* Ekrem Seren
|
||||
* Ekrem SEREN
|
||||
* Elias Probst
|
||||
* Eric Amador
|
||||
* Eric Eldredge
|
||||
@@ -163,10 +155,8 @@ Contributors (based on gitlog) (482):
|
||||
* ericr
|
||||
* Erik Allik
|
||||
* Erlend Dalen
|
||||
* Eugen MechanisM
|
||||
* Eugene MechanisM
|
||||
* Evandro Miquelito
|
||||
* Evgeny Demchenko
|
||||
* evildmp
|
||||
* F. Gabriel Gosselin
|
||||
* f4nt
|
||||
@@ -187,28 +177,25 @@ Contributors (based on gitlog) (482):
|
||||
* gentleShark
|
||||
* Geoffrey Hing
|
||||
* George Marshall
|
||||
* Gerard Świdersk
|
||||
* Gerard Świderski
|
||||
* Germano Gabbianelli
|
||||
* Germano Gabbianellii
|
||||
* Gilles Lenfant
|
||||
* Gleb Chipiga
|
||||
* Gregory Klupar
|
||||
* guandalino
|
||||
* Hamish Downer
|
||||
* Hans Andersen
|
||||
* hedberg
|
||||
* henning
|
||||
* Henning Spran
|
||||
* Henning Sprang
|
||||
* Herbert Poul
|
||||
* hjkelly
|
||||
* homebrew79
|
||||
* Horst Gutmann
|
||||
* hysia
|
||||
* Iacopo Spalletti
|
||||
* Ian Lewis
|
||||
* ikudryavtsev
|
||||
* indexofire
|
||||
* Ionel Cristian Maries
|
||||
* Ionel Maries Cristian
|
||||
* Ivan Vershigora
|
||||
* Iván Raskovsky
|
||||
@@ -220,14 +207,14 @@ Contributors (based on gitlog) (482):
|
||||
* Jameel Al-Aziz
|
||||
* James Richards
|
||||
* James Rutherford
|
||||
* Jana Deutschlaender
|
||||
* Jannis Leidel
|
||||
* Janusz Harkot
|
||||
* Jared Proffitt
|
||||
* Jason Brown
|
||||
* Jason Davies
|
||||
* Jason Jenkins
|
||||
* Jason Robinson
|
||||
* Jason Zylks
|
||||
* Javi Nievas
|
||||
* Jeffrey Goettsch
|
||||
* JensDiemer
|
||||
* Jeroen Noten
|
||||
@@ -242,7 +229,6 @@ Contributors (based on gitlog) (482):
|
||||
* Jonathan Stoppani
|
||||
* jordanjambazov
|
||||
* Jorge Vargas
|
||||
* Jorge Vargas (elpargo)
|
||||
* Jos van Velzen
|
||||
* Joseph Bergantine
|
||||
* Joseph Melettukunnel
|
||||
@@ -251,22 +237,17 @@ Contributors (based on gitlog) (482):
|
||||
* João Luiz Lorencetti
|
||||
* Julien Poissonnier
|
||||
* Kalle Bronsen
|
||||
* kar1m
|
||||
* kater169
|
||||
* kblomqvis
|
||||
* kblomqvist
|
||||
* Kegan Holtzhausen
|
||||
* Keryn Knight
|
||||
* Kevin Richardson
|
||||
* Kim Blomqvist
|
||||
* Kim Thoenen
|
||||
* kochin
|
||||
* Kristian Øllegaard
|
||||
* Krzysztof Bandurski
|
||||
* kunitoki
|
||||
* Lars Smit
|
||||
* Lars van de Kerkhof
|
||||
* limpbrains :P
|
||||
* Lio Mendonca
|
||||
* Lionardo Mendonça
|
||||
* littlepea
|
||||
@@ -288,13 +269,13 @@ Contributors (based on gitlog) (482):
|
||||
* Marco Paolini
|
||||
* Marco Rimoldi
|
||||
* marcor
|
||||
* Marijn Goedegebure
|
||||
* Mark Rogers
|
||||
* Markus Holtermann
|
||||
* Markus Zapke-Gründemann
|
||||
* Markus Zapke-Gründemann
|
||||
* Marti Raudsepp
|
||||
* Martin
|
||||
* Martin Bommeli
|
||||
* Martin Bambas
|
||||
* Martin Brochhaus
|
||||
* Martin Koistinen
|
||||
* Martin Kosír
|
||||
@@ -334,7 +315,6 @@ Contributors (based on gitlog) (482):
|
||||
* Nelson Brochado
|
||||
* neoprolog
|
||||
* Nick Jones
|
||||
* Nickolay V. Shmyrev
|
||||
* nikolas
|
||||
* nsh
|
||||
* o-zander
|
||||
@@ -346,7 +326,6 @@ Contributors (based on gitlog) (482):
|
||||
* Oyvind Saltvik
|
||||
* padelt
|
||||
* Pankrat
|
||||
* Paolo
|
||||
* Paolo Leggio
|
||||
* Pascal Mouret
|
||||
* pascal.beyeler
|
||||
@@ -364,7 +343,6 @@ Contributors (based on gitlog) (482):
|
||||
* pcicman
|
||||
* Pedro Gracia
|
||||
* Pete Loggie
|
||||
* Peter Ciciman
|
||||
* Peter Farrell
|
||||
* Peter J. Farrell
|
||||
* Peter Landry
|
||||
@@ -376,10 +354,9 @@ Contributors (based on gitlog) (482):
|
||||
* philomat
|
||||
* phuihock
|
||||
* Pigletto
|
||||
* Piotr Jakimiak
|
||||
* Piotr Kilczuk
|
||||
* piquadrat
|
||||
* poweredbypenguins
|
||||
* Pratik Vyas
|
||||
* pumalo
|
||||
* Rafal Radulski
|
||||
* raidsan
|
||||
@@ -399,7 +376,7 @@ Contributors (based on gitlog) (482):
|
||||
* Robert Feldbinder
|
||||
* Robert Pogorzelski
|
||||
* Roberto
|
||||
* Roberto Lopez
|
||||
* Roberto Bampi
|
||||
* Robin Lewis
|
||||
* robint
|
||||
* Rodolfo Carvalho
|
||||
@@ -413,7 +390,6 @@ Contributors (based on gitlog) (482):
|
||||
* Samuel Lüscher
|
||||
* sbussetti
|
||||
* Schoen
|
||||
* Scott Barnham
|
||||
* scottbarnham
|
||||
* sealibora
|
||||
* Sean Bleier
|
||||
@@ -435,19 +411,18 @@ Contributors (based on gitlog) (482):
|
||||
* ssteinerX
|
||||
* Stavros Korokithakis
|
||||
* Stefan Foulis
|
||||
* Stefan T. Oertel
|
||||
* Stefan Wehrmeyer
|
||||
* stefanfoulis
|
||||
* Stefano Brentegani
|
||||
* Stefano Crosta
|
||||
* Stefano Morandi
|
||||
* Steffen Jasper
|
||||
* Stephan
|
||||
* Stephan Hepper
|
||||
* Stephan Herzog
|
||||
* Stephan Jaekel
|
||||
* Stephen Muss
|
||||
* Stephen Watkin
|
||||
* Steve R. Jones
|
||||
* Steve Steiner
|
||||
* Steven Laroche
|
||||
* Sylvain Fankhauser
|
||||
@@ -457,7 +432,6 @@ Contributors (based on gitlog) (482):
|
||||
* Thomas Parslow
|
||||
* Thomas Remmert
|
||||
* Thomas Woolford
|
||||
* Tibor Balogh
|
||||
* Tim Anderegg
|
||||
* Tim Davies
|
||||
* Tim Graham
|
||||
@@ -470,17 +444,16 @@ Contributors (based on gitlog) (482):
|
||||
* Tom de Simone
|
||||
* Tom S
|
||||
* Tom V
|
||||
* Tom Wardill
|
||||
* Ulrich Petri
|
||||
* unknown
|
||||
* User
|
||||
* Vadim Sikora
|
||||
* Vasil Vangelovski
|
||||
* Venelin Stoykov
|
||||
* Viktor Nagy
|
||||
* Viliam Segeda
|
||||
* Vinit (Vermicelli on IRC)
|
||||
* vinit kumar
|
||||
* Vitor Figueiro
|
||||
* Vladimir Bolshakov
|
||||
* Vladyslav
|
||||
* vvangelovski
|
||||
@@ -490,6 +463,7 @@ Contributors (based on gitlog) (482):
|
||||
* wildermesser
|
||||
* Xavier Fernandez
|
||||
* Xavier Ordoquy
|
||||
* xie wei
|
||||
* xray7224
|
||||
* Yann Malet
|
||||
* yann.malet@gmail.com
|
||||
@@ -503,4 +477,4 @@ Contributors (based on gitlog) (482):
|
||||
* Óscar M. Lage
|
||||
* Øyvind Saltvik
|
||||
* Žan Anderle
|
||||
* Антон Евжаков
|
||||
* Антон Евжаков
|
||||
+104
@@ -382,6 +382,35 @@ Please see Install/2.4 release notes *before* attempting to upgrade to version 2
|
||||
- Pin Html5lib version to 0.999 until a current bug is fixed
|
||||
- Fix language chooser template
|
||||
|
||||
=== 3.0.15 (2015-09-01) ===
|
||||
|
||||
- Relax html5lib versions
|
||||
- Fix redirect when deleting a page
|
||||
- Correct South migration error
|
||||
- Correct validation on numeric fields in modal popups
|
||||
- Exclude scssc from manifest
|
||||
- Remove unpublished pages from menu
|
||||
- Remove page from menu items for performance reason
|
||||
- Fix reachability of pages with expired ancestors
|
||||
- Don't try to modify an immutable QueryDict
|
||||
- Only attempt to delete cache keys if there are some to be deleted
|
||||
- Update documentation section
|
||||
- Fix language chooser template
|
||||
- Cast to int cache version
|
||||
- Fix extensions copy when using duplicate page/create page type
|
||||
|
||||
=== 3.0.16 (2015-11-24) ===
|
||||
|
||||
- Fix JS error when using PageSelectWidget
|
||||
- Fix whitespace markup issues in draft mode
|
||||
- Detect plugin migrations layout in tests
|
||||
|
||||
=== 3.0.17 (unreleased) ===
|
||||
|
||||
- Fix ExtensionToolbar when language is removed but titles still exists…
|
||||
- Fix PageSelectWidget JS syntax
|
||||
- Fix cache settings
|
||||
|
||||
=== 3.1 (2015-04-20) ===
|
||||
|
||||
- Remove django-mptt in favor of django-treebeard
|
||||
@@ -432,3 +461,78 @@ Please see Install/2.4 release notes *before* attempting to upgrade to version 2
|
||||
- Fix get_language_from_request if POST and GET exists
|
||||
- Fix an error in placeholder cache
|
||||
- Fix language chooser template
|
||||
|
||||
=== 3.1.2 (2015-07-02) ===
|
||||
|
||||
- Fix placeholder cache invalidation under some circumstances
|
||||
- Update translations
|
||||
|
||||
=== 3.1.3 (2015-09-01) ===
|
||||
|
||||
- Add missing migration
|
||||
- Exclude PageUser manager from migrations
|
||||
- Fix check for template instance in Django 1.8.x
|
||||
- Fix error in PageField for Django 1.8
|
||||
- Fix some Page tree bugs
|
||||
- Declare Django 1.6.9 dependency in setup.py
|
||||
- Make sure cache version returned is an int
|
||||
- Fix issue preventing migrations to run on a new database (django 1.8)
|
||||
- Fix get User model in 0010 migration
|
||||
- Fix support for unpublished language pages
|
||||
- Add documentation for plugins datamigration
|
||||
- Fix getting request in _show_placeholder_for_page on Django 1.8
|
||||
- Fix template inheritance order
|
||||
- Fix xframe options inheritance order
|
||||
- Fix placeholder inheritance order
|
||||
- Fix language chooser template
|
||||
- Relax html5lib versions
|
||||
- Fix redirect when deleting a page
|
||||
- Correct South migration error
|
||||
- Correct validation on numeric fields in modal popups
|
||||
- Exclude scssc from manifest
|
||||
- Remove unpublished pages from menu
|
||||
- Remove page from menu items for performance reason
|
||||
- Fix reachability of pages with expired ancestors
|
||||
- Don't try to modify an immutable QueryDict
|
||||
- Only attempt to delete cache keys if there are some to be deleted
|
||||
- Update documentation section
|
||||
- Fix language chooser template
|
||||
- Cast to int cache version
|
||||
- Fix extensions copy when using duplicate page/create page type
|
||||
|
||||
=== 3.1.4 (2015-11-24) ===
|
||||
|
||||
- Fix use structure migration
|
||||
- Fix fix_tree command
|
||||
- Remove some warning for Django 1.9
|
||||
- Fix using scroll bar of plugin menu in Firefox & IE moves plugins
|
||||
- Fix JS error when using PageSelectWidget
|
||||
- Fix whitespace markup issues in draft mode
|
||||
- Detect plugin migrations layout in tests
|
||||
- Fix some treebeard corruption issues
|
||||
|
||||
=== 3.1.5 (2016-01-29) ===
|
||||
|
||||
- Fixed a tree corruption when pasting a nested plugin under another plugin.
|
||||
- Improve CMSPluginBase.render documentation
|
||||
- Fix CMSEditableObject context generation which generates to errors with django-classy-tags 0.7.1
|
||||
- Fix error in toolbar when LocaleMiddleware is not used
|
||||
- Move templates validation in app.ready
|
||||
- Fix ExtensionToolbar when language is removed but titles still exists
|
||||
- Fix pages menu missing on fresh install 3.1
|
||||
- Fix incorrect language on placeholder text for redirect field
|
||||
- Fix PageSelectWidget JS syntax
|
||||
- Fix redirect when disabling toolbar
|
||||
- Fix CMS_TOOLBAR_HIDE causes 'WSGIRequest' object has no attribute 'toolbar'
|
||||
|
||||
=== 3.1.6 (unreleased) ===
|
||||
|
||||
- Fix cache settings
|
||||
- Fix user lookup for view restrictions/page permissions when using raw id field
|
||||
- Fixes an issue relating to uninstalling a namespaced application
|
||||
- Adds "Can change page" permission
|
||||
- Addresses security vulnerabilities in the `render_model` template tag that
|
||||
could lead to escalation of privileges or other security issues.
|
||||
- Addresses a security vulnerability in the cms' usage of the messages framework
|
||||
- Fixes security vulnerabilities in custom FormFields that could lead to
|
||||
escalation of privileges or other security issues.
|
||||
|
||||
+2
-1
@@ -9,4 +9,5 @@ recursive-include cms/plugins *
|
||||
recursive-include menus/templates *
|
||||
recursive-include stacks/templates *
|
||||
recursive-include docs *
|
||||
recursive-exclude * *.pyc
|
||||
recursive-exclude * *.pyc
|
||||
recursive-exclude * *.scssc
|
||||
|
||||
+2
-2
@@ -90,9 +90,9 @@ Getting Help
|
||||
Please head over to our IRC channel, #django-cms, on irc.freenode.net or write
|
||||
to our `mailing list <https://groups.google.com/forum/#!forum/django-cms>`_.
|
||||
|
||||
************
|
||||
******************
|
||||
Commercial support
|
||||
************
|
||||
******************
|
||||
|
||||
This project is backed by `Divio <https://divio.ch>`_. If you need help
|
||||
implementing or hosting django CMS, please contact us: sales@divio.ch.
|
||||
|
||||
+2
-1
@@ -1,4 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
__version__ = '3.1.1'
|
||||
|
||||
__version__ = '3.1.6'
|
||||
|
||||
default_app_config = 'cms.apps.CMSConfig'
|
||||
|
||||
@@ -14,17 +14,18 @@ def get_copy_dialog(request, page_id):
|
||||
if not get_cms_setting('PERMISSION'):
|
||||
return HttpResponse('')
|
||||
|
||||
target_id = request.GET.get('target', False) or request.POST.get('target', False)
|
||||
callback = request.GET.get('callback', False) or request.POST.get('callback', False)
|
||||
page = get_object_or_404(Page, pk=page_id)
|
||||
target = get_object_or_404(Page, pk=request.REQUEST['target'])
|
||||
target = get_object_or_404(Page, pk=target_id)
|
||||
|
||||
if not page.has_change_permission(request) or \
|
||||
not target.has_add_permission(request):
|
||||
if not page.has_change_permission(request) or not target.has_add_permission(request):
|
||||
raise Http404
|
||||
|
||||
context = {
|
||||
'dialog_id': 'dialog-copy',
|
||||
'form': PermissionForm(), # class needs to be instantiated
|
||||
'callback': request.REQUEST['callback'],
|
||||
'callback': callback,
|
||||
}
|
||||
|
||||
return render(request, "admin/cms/page/tree/copy_premissions.html", context)
|
||||
|
||||
+30
-17
@@ -12,9 +12,16 @@ from django.conf.urls import url
|
||||
from django.contrib import admin, messages
|
||||
from django.contrib.admin.models import LogEntry, CHANGE
|
||||
from django.contrib.admin.options import IncorrectLookupParameters
|
||||
from django.contrib.admin.util import get_deleted_objects
|
||||
try:
|
||||
from django.contrib.admin.utils import get_deleted_objects
|
||||
except ImportError:
|
||||
from django.contrib.admin.util import get_deleted_objects
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib.sites.models import Site, get_current_site
|
||||
from django.contrib.sites.models import Site
|
||||
try:
|
||||
from django.contrib.sites.shortcuts import get_current_site
|
||||
except ImportError:
|
||||
from django.contrib.sites.models import get_current_site
|
||||
from django.core.exceptions import PermissionDenied, ObjectDoesNotExist, ValidationError
|
||||
from django.db import router, transaction
|
||||
from django.db.models import Q
|
||||
@@ -165,6 +172,8 @@ class PageAdmin(PlaceholderAdminMixin, ModelAdmin):
|
||||
Move the page in the tree if necessary and save every placeholder
|
||||
Content object.
|
||||
"""
|
||||
from cms.extensions import extension_pool
|
||||
|
||||
target = request.GET.get('target', None)
|
||||
position = request.GET.get('position', None)
|
||||
|
||||
@@ -218,18 +227,19 @@ class PageAdmin(PlaceholderAdminMixin, ModelAdmin):
|
||||
obj = obj.move(target, pos=position)
|
||||
page_type_id = form.cleaned_data.get('page_type')
|
||||
copy_target_id = request.GET.get('copy_target')
|
||||
copy_target = None
|
||||
if copy_target_id or page_type_id:
|
||||
if page_type_id:
|
||||
copy_target_id = page_type_id
|
||||
copy_target = Page.objects.get(pk=copy_target_id)
|
||||
if not copy_target.has_view_permission(request):
|
||||
raise PermissionDenied()
|
||||
obj = Page.objects.get(pk=obj.pk) #mptt reload
|
||||
obj = obj.reload()
|
||||
copy_target._copy_attributes(obj, clean=True)
|
||||
obj.save()
|
||||
for lang in copy_target.languages.split(','):
|
||||
for lang in copy_target.get_languages():
|
||||
copy_target._copy_contents(obj, lang)
|
||||
if not 'permission' in request.path_info:
|
||||
if 'permission' not in request.path_info:
|
||||
language = form.cleaned_data['language']
|
||||
Title.objects.set_or_create(
|
||||
request,
|
||||
@@ -237,6 +247,8 @@ class PageAdmin(PlaceholderAdminMixin, ModelAdmin):
|
||||
form,
|
||||
language,
|
||||
)
|
||||
if copy_target:
|
||||
extension_pool.copy_extensions(copy_target, obj)
|
||||
# is it home? publish it right away
|
||||
if new and Page.objects.filter(site_id=obj.site_id).count() == 1:
|
||||
obj.publish(language)
|
||||
@@ -929,11 +941,13 @@ class PageAdmin(PlaceholderAdminMixin, ModelAdmin):
|
||||
site = Site.objects.get(pk=site)
|
||||
except (ObjectDoesNotExist, AssertionError):
|
||||
return HttpResponse("error")
|
||||
#context.update({'error': _('Page could not been moved.')})
|
||||
else:
|
||||
try:
|
||||
permissions = request.GET.get('copy_permissions', False)
|
||||
if not permissions:
|
||||
permissions = request.POST.get('copy_permissions', False)
|
||||
kwargs = {
|
||||
'copy_permissions': request.REQUEST.get('copy_permissions', False),
|
||||
'copy_permissions': permissions,
|
||||
}
|
||||
page.copy_page(target, site, position, **kwargs)
|
||||
return jsonify_request(HttpResponse("ok"))
|
||||
@@ -961,7 +975,7 @@ class PageAdmin(PlaceholderAdminMixin, ModelAdmin):
|
||||
all_published = False
|
||||
statics = request.GET.get('statics', '')
|
||||
if not statics and not page:
|
||||
return Http404("No page or stack found for publishing.")
|
||||
raise Http404("No page or stack found for publishing.")
|
||||
if statics:
|
||||
static_ids = statics .split(',')
|
||||
for pk in static_ids:
|
||||
@@ -991,7 +1005,7 @@ class PageAdmin(PlaceholderAdminMixin, ModelAdmin):
|
||||
self.cleanup_history(page, publish=True)
|
||||
helpers.make_revision_with_plugins(page, request.user, PUBLISH_COMMENT)
|
||||
# create a new publish reversion
|
||||
if 'node' in request.REQUEST:
|
||||
if 'node' in request.GET or 'node' in request.POST:
|
||||
# if request comes from tree..
|
||||
return admin_utils.render_admin_menu_item(request, page)
|
||||
|
||||
@@ -1092,14 +1106,13 @@ class PageAdmin(PlaceholderAdminMixin, ModelAdmin):
|
||||
|
||||
messages.info(request, _('The page "%s" was successfully reverted.') % page)
|
||||
|
||||
if 'node' in request.REQUEST:
|
||||
if 'node' in request.GET or 'node' in request.POST:
|
||||
# if request comes from tree..
|
||||
return admin_utils.render_admin_menu_item(request, page)
|
||||
|
||||
referer = request.META.get('HTTP_REFERER', '')
|
||||
path = '../../'
|
||||
if admin_reverse('index') not in referer:
|
||||
path = '%s?%s' % (referer.split('?')[0], get_cms_setting('CMS_TOOLBAR_URL__EDIT_OFF'))
|
||||
# TODO: This should never fail, but it may be a POF
|
||||
path = page.get_absolute_url(language=language)
|
||||
path = '%s?%s' % (path, get_cms_setting('CMS_TOOLBAR_URL__EDIT_OFF'))
|
||||
return HttpResponseRedirect(path)
|
||||
|
||||
@create_revision()
|
||||
@@ -1290,8 +1303,8 @@ class PageAdmin(PlaceholderAdminMixin, ModelAdmin):
|
||||
else:
|
||||
obj = None
|
||||
if not obj:
|
||||
pk = request.REQUEST.get('pk')
|
||||
full_model = request.REQUEST.get('model')
|
||||
pk = request.GET.get('pk', False) or request.POST.get('pk', False)
|
||||
full_model = request.GET.get('model') or request.POST.get('model', False)
|
||||
if pk and full_model:
|
||||
app_label, model = full_model.split('.')
|
||||
if pk and app_label:
|
||||
@@ -1305,7 +1318,7 @@ class PageAdmin(PlaceholderAdminMixin, ModelAdmin):
|
||||
except:
|
||||
obj = None
|
||||
if obj:
|
||||
if not request.toolbar or not request.toolbar.edit_mode:
|
||||
if not getattr(request, 'toolbar', False) or not getattr(request.toolbar, 'edit_mode', False):
|
||||
if isinstance(obj, Page):
|
||||
if obj.get_public_object():
|
||||
url = obj.get_public_object().get_absolute_url()
|
||||
|
||||
@@ -4,7 +4,8 @@ from django.contrib import admin
|
||||
from django.contrib.admin import site
|
||||
from django.contrib.auth import get_user_model, get_permission_codename
|
||||
from django.contrib.auth.admin import UserAdmin
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.db import OperationalError
|
||||
from django.utils.translation import ugettext, ugettext_lazy as _
|
||||
|
||||
from cms.admin.forms import GlobalPagePermissionAdminForm, PagePermissionInlineAdminForm, ViewRestrictionInlineAdminForm
|
||||
from cms.exceptions import NoPermissionsException
|
||||
@@ -37,9 +38,18 @@ class PagePermissionInlineAdmin(TabularInline):
|
||||
def raw_id_fields(cls):
|
||||
# Dynamically set raw_id_fields based on settings
|
||||
threshold = get_cms_setting('RAW_ID_USERS')
|
||||
if threshold and get_user_model().objects.count() > threshold:
|
||||
return ['user']
|
||||
return []
|
||||
|
||||
# Given a fresh django-cms install and a django settings with the
|
||||
# CMS_RAW_ID_USERS = CMS_PERMISSION = True
|
||||
# django throws an OperationalError when running
|
||||
# ./manage migrate
|
||||
# because auth_user doesn't exists yet
|
||||
try:
|
||||
threshold = threshold and get_user_model().objects.count() > threshold
|
||||
except OperationalError:
|
||||
threshold = False
|
||||
|
||||
return ['user'] if threshold else []
|
||||
|
||||
def get_queryset(self, request):
|
||||
"""
|
||||
@@ -145,9 +155,9 @@ class GenericCmsPermissionAdmin(object):
|
||||
"""
|
||||
fieldsets = deepcopy(self.fieldsets)
|
||||
perm_models = (
|
||||
(Page, _('Page permissions')),
|
||||
(PageUser, _('User & Group permissions')),
|
||||
(PagePermission, _('Page permissions management')),
|
||||
(Page, ugettext('Page permissions')),
|
||||
(PageUser, ugettext('User & Group permissions')),
|
||||
(PagePermission, ugettext('Page permissions management')),
|
||||
)
|
||||
for i, perm_model in enumerate(perm_models):
|
||||
model, title = perm_model
|
||||
|
||||
@@ -1,16 +1,23 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import json
|
||||
from cms.utils.compat import DJANGO_1_7
|
||||
|
||||
from django.conf import settings
|
||||
from django.conf.urls import url
|
||||
from django.contrib.admin.helpers import AdminForm
|
||||
from django.contrib.admin.util import get_deleted_objects
|
||||
try:
|
||||
from django.contrib.admin.utils import get_deleted_objects
|
||||
except ImportError:
|
||||
from django.contrib.admin.util import get_deleted_objects
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.db import router, transaction
|
||||
from django.http import (HttpResponse, HttpResponseBadRequest, HttpResponseNotFound,
|
||||
HttpResponseForbidden, HttpResponseRedirect)
|
||||
from django.shortcuts import render, get_object_or_404
|
||||
from django.http import (
|
||||
HttpResponse,
|
||||
HttpResponseBadRequest,
|
||||
HttpResponseForbidden,
|
||||
HttpResponseNotFound,
|
||||
HttpResponseRedirect,
|
||||
)
|
||||
from django.shortcuts import get_object_or_404, render
|
||||
from django.template.defaultfilters import force_escape, escapejs
|
||||
from django.template.response import TemplateResponse
|
||||
from django.utils.decorators import method_decorator
|
||||
@@ -25,9 +32,19 @@ from cms.models.placeholdermodel import Placeholder
|
||||
from cms.models.placeholderpluginmodel import PlaceholderReference
|
||||
from cms.models.pluginmodel import CMSPlugin
|
||||
from cms.plugin_pool import plugin_pool
|
||||
from cms.utils import copy_plugins, permissions, get_language_from_request, get_cms_setting
|
||||
from cms.utils import (
|
||||
copy_plugins,
|
||||
get_cms_setting,
|
||||
get_language_from_request,
|
||||
permissions,
|
||||
)
|
||||
from cms.utils.compat import DJANGO_1_7
|
||||
from cms.utils.i18n import get_language_list
|
||||
from cms.utils.plugins import requires_reload, has_reached_plugin_limit, reorder_plugins
|
||||
from cms.utils.plugins import (
|
||||
requires_reload,
|
||||
has_reached_plugin_limit,
|
||||
reorder_plugins
|
||||
)
|
||||
from cms.utils.urlutils import admin_reverse
|
||||
|
||||
|
||||
@@ -344,9 +361,11 @@ class PlaceholderAdminMixin(object):
|
||||
except Placeholder.DoesNotExist:
|
||||
pass
|
||||
if request.method == "POST":
|
||||
# set the continue flag, otherwise will plugin_admin make redirect to list
|
||||
# view, which actually doesn't exists
|
||||
request.POST['_continue'] = True
|
||||
# set the continue flag, otherwise plugin_admin will make redirect
|
||||
# to list view, which actually doesn't exists
|
||||
mutable_post = request.POST.copy()
|
||||
mutable_post['_continue'] = True
|
||||
request.POST = mutable_post
|
||||
if request.POST.get("_cancel", False):
|
||||
# cancel button was clicked
|
||||
context = {
|
||||
@@ -470,7 +489,7 @@ class PlaceholderAdminMixin(object):
|
||||
else:
|
||||
deleted_objects, __, perms_needed, protected = get_deleted_objects(
|
||||
[plugin], opts, request.user, self.admin_site, using)
|
||||
|
||||
|
||||
if request.POST: # The user has already confirmed the deletion.
|
||||
if perms_needed:
|
||||
raise PermissionDenied(_("You do not have permission to delete this plugin"))
|
||||
|
||||
+6
-2
@@ -6,14 +6,18 @@ try:
|
||||
except ImportError:
|
||||
# Python < 2.7
|
||||
from django.utils.datastructures import SortedDict as OrderedDict
|
||||
try:
|
||||
from importlib import import_module
|
||||
except ImportError:
|
||||
# Python < 2.7
|
||||
from django.utils.importlib import import_module
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.sites.models import Site
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.core.urlresolvers import (RegexURLResolver, Resolver404, reverse,
|
||||
RegexURLPattern)
|
||||
RegexURLPattern)
|
||||
from django.utils import six
|
||||
from django.utils.importlib import import_module
|
||||
from django.utils.translation import get_language
|
||||
|
||||
from cms.apphook_pool import apphook_pool
|
||||
|
||||
@@ -10,5 +10,3 @@ class CMSConfig(AppConfig):
|
||||
|
||||
def ready(self):
|
||||
setup()
|
||||
from cms.plugin_pool import plugin_pool
|
||||
plugin_pool.set_plugin_meta()
|
||||
|
||||
Vendored
+1
-72
@@ -1,78 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from collections import defaultdict
|
||||
from django.conf import settings
|
||||
from django.utils.datastructures import SortedDict
|
||||
from django.utils.safestring import mark_safe
|
||||
from cms.exceptions import LanguageError
|
||||
from cms.models import Title
|
||||
from cms.utils import i18n, get_cms_setting
|
||||
|
||||
|
||||
def update_site_and_page_choices(lang=None):
|
||||
lang = lang or i18n.get_current_language()
|
||||
SITE_CHOICES_KEY = _site_cache_key(lang)
|
||||
PAGE_CHOICES_KEY = _page_cache_key(lang)
|
||||
title_queryset = (Title.objects.drafts()
|
||||
.select_related('page', 'page__site')
|
||||
.order_by('page__path'))
|
||||
pages = defaultdict(SortedDict)
|
||||
sites = {}
|
||||
for title in title_queryset:
|
||||
page = pages[title.page.site.pk].get(title.page.pk, {})
|
||||
page[title.language] = title
|
||||
pages[title.page.site.pk][title.page.pk] = page
|
||||
sites[title.page.site.pk] = title.page.site.name
|
||||
|
||||
site_choices = []
|
||||
page_choices = [('', '----')]
|
||||
|
||||
try:
|
||||
fallbacks = i18n.get_fallback_languages(lang)
|
||||
except LanguageError:
|
||||
fallbacks = []
|
||||
language_order = [lang] + fallbacks
|
||||
|
||||
for sitepk, sitename in sites.items():
|
||||
site_choices.append((sitepk, sitename))
|
||||
|
||||
site_page_choices = []
|
||||
for titles in pages[sitepk].values():
|
||||
title = None
|
||||
for language in language_order:
|
||||
title = titles.get(language)
|
||||
if title:
|
||||
break
|
||||
if not title:
|
||||
continue
|
||||
|
||||
indent = u" " * (title.page.depth - 1)
|
||||
page_title = mark_safe(u"%s%s" % (indent, title.title))
|
||||
site_page_choices.append((title.page.pk, page_title))
|
||||
|
||||
page_choices.append((sitename, site_page_choices))
|
||||
from django.core.cache import cache
|
||||
# We set it to 1 day here because we actively invalidate this cache.
|
||||
cache.set(SITE_CHOICES_KEY, site_choices, 86400)
|
||||
cache.set(PAGE_CHOICES_KEY, page_choices, 86400)
|
||||
return site_choices, page_choices
|
||||
|
||||
|
||||
def get_site_choices(lang=None):
|
||||
from django.core.cache import cache
|
||||
lang = lang or i18n.get_current_language()
|
||||
site_choices = cache.get(_site_cache_key(lang))
|
||||
if site_choices is None:
|
||||
site_choices, page_choices = update_site_and_page_choices(lang)
|
||||
return site_choices
|
||||
|
||||
|
||||
def get_page_choices(lang=None):
|
||||
from django.core.cache import cache
|
||||
lang = lang or i18n.get_current_language()
|
||||
page_choices = cache.get(_page_cache_key(lang))
|
||||
if page_choices is None:
|
||||
site_choices, page_choices = update_site_and_page_choices(lang)
|
||||
return page_choices
|
||||
from cms.utils import get_cms_setting
|
||||
|
||||
|
||||
def _site_cache_key(lang):
|
||||
|
||||
Vendored
+4
-3
@@ -23,10 +23,11 @@ def get_cache_permission_version_key():
|
||||
|
||||
def get_cache_permission_version():
|
||||
from django.core.cache import cache
|
||||
version = cache.get(get_cache_permission_version_key())
|
||||
if version is None:
|
||||
try:
|
||||
version = int(cache.get(get_cache_permission_version_key()))
|
||||
except Exception:
|
||||
version = 1
|
||||
return version
|
||||
return int(version)
|
||||
|
||||
|
||||
def get_permission_cache(user, key):
|
||||
|
||||
Vendored
+1
-1
@@ -39,7 +39,7 @@ def get_placeholder_cache(placeholder, lang):
|
||||
def clear_placeholder_cache(placeholder, lang):
|
||||
from django.core.cache import cache
|
||||
|
||||
cache.delete(_placeholder_cache_key(placeholder, lang))
|
||||
cache.delete(_placeholder_cache_key(placeholder, lang), version=_get_cache_version())
|
||||
|
||||
|
||||
def _placeholder_page_cache_key(page_lookup, lang, site_id, placeholder_name):
|
||||
|
||||
+21
-6
@@ -19,7 +19,10 @@ from cms.toolbar_pool import toolbar_pool
|
||||
from cms.utils.i18n import get_language_tuple, force_language, get_language_dict
|
||||
from cms.utils.compat.dj import is_installed
|
||||
from cms.utils import get_cms_setting
|
||||
from cms.utils.permissions import get_user_sites_queryset
|
||||
from cms.utils.permissions import (
|
||||
get_user_sites_queryset,
|
||||
has_auth_page_permission,
|
||||
)
|
||||
from cms.utils.urlutils import add_url_parameters, admin_reverse
|
||||
from menus.utils import DefaultLanguageChanger
|
||||
|
||||
@@ -216,6 +219,7 @@ class BasicToolbar(CMSToolbar):
|
||||
|
||||
@toolbar_pool.register
|
||||
class PageToolbar(CMSToolbar):
|
||||
_changed_admin_menu = None
|
||||
watch_models = [Page]
|
||||
|
||||
# Helpers
|
||||
@@ -252,8 +256,16 @@ class PageToolbar(CMSToolbar):
|
||||
|
||||
def has_page_change_permission(self):
|
||||
if not hasattr(self, 'page_change_permission'):
|
||||
self.page_change_permission = can_change_page(self.request)
|
||||
|
||||
if not self.page and not get_cms_setting('PERMISSION'):
|
||||
# We can't check permissions for an individual page
|
||||
# and can't check global cms permissions because
|
||||
# user opted out of them.
|
||||
# So just check django auth permissions.
|
||||
user = self.request.user
|
||||
can_change = has_auth_page_permission(user, action='change')
|
||||
else:
|
||||
can_change = can_change_page(self.request)
|
||||
self.page_change_permission = can_change
|
||||
return self.page_change_permission
|
||||
|
||||
def page_is_pending(self, page, language):
|
||||
@@ -401,7 +413,7 @@ class PageToolbar(CMSToolbar):
|
||||
question=question % name, on_success=self.toolbar.REFRESH_PAGE)
|
||||
|
||||
def change_admin_menu(self):
|
||||
if self.has_page_change_permission():
|
||||
if not self._changed_admin_menu and self.has_page_change_permission():
|
||||
admin_menu = self.toolbar.get_or_create_menu(ADMIN_MENU_IDENTIFIER)
|
||||
url = admin_reverse('cms_page_changelist') # cms page admin
|
||||
params = {'language': self.toolbar.language}
|
||||
@@ -409,6 +421,8 @@ class PageToolbar(CMSToolbar):
|
||||
params['page_id'] = self.page.pk
|
||||
url = add_url_parameters(url, params)
|
||||
admin_menu.add_sideframe_item(_('Pages'), url=url, position=0)
|
||||
# Used to prevent duplicates
|
||||
self._changed_admin_menu = True
|
||||
|
||||
def add_page_menu(self):
|
||||
if self.page and self.has_page_change_permission():
|
||||
@@ -538,7 +552,8 @@ class PageToolbar(CMSToolbar):
|
||||
|
||||
revert_action = admin_reverse('cms_page_revert_page', args=(self.page.pk, self.current_lang))
|
||||
revert_question = _('Are you sure you want to revert to live?')
|
||||
is_enabled = self.page.is_dirty(self.current_lang) and self.page.publisher_public
|
||||
history_menu.add_ajax_item(_('Revert to live'), action=revert_action, question=revert_question,
|
||||
disabled=not self.page.is_dirty(self.current_lang),
|
||||
on_success=refresh, extra_classes=('cms_toolbar-revert',))
|
||||
disabled=not is_enabled,
|
||||
on_success=refresh, extra_classes=('cms-toolbar-revert',))
|
||||
history_menu.add_modal_item(_('View history'), url=admin_reverse('cms_page_history', args=(self.page.pk,)))
|
||||
|
||||
@@ -89,7 +89,7 @@ class ExtensionPool(object):
|
||||
|
||||
def copy_extensions(self, source_page, target_page, languages=None):
|
||||
if not languages:
|
||||
languages = source_page.get_languages()
|
||||
languages = target_page.get_languages()
|
||||
if self.page_extensions:
|
||||
self._copy_page_extensions(source_page, target_page, None, clone=True)
|
||||
self._remove_orphaned_page_extensions()
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
from cms.utils.urlutils import admin_reverse
|
||||
from cms.api import get_page_draft
|
||||
from cms.toolbar_base import CMSToolbar
|
||||
from cms.utils import get_cms_setting
|
||||
from cms.utils import get_cms_setting, get_language_list
|
||||
from cms.utils.permissions import has_page_change_permission
|
||||
from django.core.urlresolvers import NoReverseMatch
|
||||
|
||||
@@ -126,7 +126,7 @@ class ExtensionToolbar(CMSToolbar):
|
||||
if language:
|
||||
titles = page.get_title_obj(language),
|
||||
else:
|
||||
titles = page.title_set.all()
|
||||
titles = page.title_set.filter(language__in=get_language_list(page.site_id))
|
||||
# Titles
|
||||
for title in titles:
|
||||
try:
|
||||
|
||||
+4
-6
@@ -1,14 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import six
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django import forms
|
||||
from django.contrib.admin.widgets import RelatedFieldWidgetWrapper
|
||||
from django.forms.fields import EMPTY_VALUES
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from cms.cache.choices import get_site_choices, get_page_choices
|
||||
from cms.models.pagemodel import Page
|
||||
from cms.forms.utils import get_site_choices, get_page_choices
|
||||
from cms.forms.widgets import PageSelectWidget, PageSmartLinkWidget
|
||||
from cms.models.pagemodel import Page
|
||||
|
||||
|
||||
class SuperLazyIterator(object):
|
||||
@@ -86,5 +84,5 @@ class PageSmartLinkField(forms.CharField):
|
||||
|
||||
def widget_attrs(self, widget):
|
||||
attrs = super(PageSmartLinkField, self).widget_attrs(widget)
|
||||
attrs.update({'placeholder_text': six.text_type(self.placeholder_text)})
|
||||
attrs.update({'placeholder_text': self.placeholder_text})
|
||||
return attrs
|
||||
|
||||
+80
-2
@@ -1,11 +1,89 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from collections import defaultdict
|
||||
try:
|
||||
from collections import OrderedDict
|
||||
except ImportError:
|
||||
from django.utils.datastructures import SortedDict as OrderedDict
|
||||
|
||||
from django.contrib.sites.models import Site
|
||||
from django.db.models.signals import post_save, post_delete
|
||||
from django.utils.html import escape
|
||||
from django.utils.safestring import mark_safe
|
||||
|
||||
from cms.cache.choices import clean_site_choices_cache, clean_page_choices_cache
|
||||
from cms.cache.choices import (
|
||||
clean_site_choices_cache, clean_page_choices_cache,
|
||||
_site_cache_key, _page_cache_key)
|
||||
from cms.exceptions import LanguageError
|
||||
from cms.models import Page, Title
|
||||
from cms.utils import i18n
|
||||
|
||||
|
||||
def update_site_and_page_choices(lang=None):
|
||||
lang = lang or i18n.get_current_language()
|
||||
SITE_CHOICES_KEY = _site_cache_key(lang)
|
||||
PAGE_CHOICES_KEY = _page_cache_key(lang)
|
||||
title_queryset = (Title.objects.drafts()
|
||||
.select_related('page', 'page__site')
|
||||
.order_by('page__path'))
|
||||
pages = defaultdict(OrderedDict)
|
||||
sites = {}
|
||||
for title in title_queryset:
|
||||
page = pages[title.page.site.pk].get(title.page.pk, {})
|
||||
page[title.language] = title
|
||||
pages[title.page.site.pk][title.page.pk] = page
|
||||
sites[title.page.site.pk] = title.page.site.name
|
||||
|
||||
site_choices = []
|
||||
page_choices = [('', '----')]
|
||||
|
||||
try:
|
||||
fallbacks = i18n.get_fallback_languages(lang)
|
||||
except LanguageError:
|
||||
fallbacks = []
|
||||
language_order = [lang] + fallbacks
|
||||
|
||||
for sitepk, sitename in sites.items():
|
||||
site_choices.append((sitepk, sitename))
|
||||
|
||||
site_page_choices = []
|
||||
for titles in pages[sitepk].values():
|
||||
title = None
|
||||
for language in language_order:
|
||||
title = titles.get(language)
|
||||
if title:
|
||||
break
|
||||
if not title:
|
||||
continue
|
||||
|
||||
indent = u" " * (title.page.depth - 1)
|
||||
page_title = mark_safe(u"%s%s" % (indent, escape(title.title)))
|
||||
site_page_choices.append((title.page.pk, page_title))
|
||||
|
||||
page_choices.append((sitename, site_page_choices))
|
||||
from django.core.cache import cache
|
||||
# We set it to 1 day here because we actively invalidate this cache.
|
||||
cache.set(SITE_CHOICES_KEY, site_choices, 86400)
|
||||
cache.set(PAGE_CHOICES_KEY, page_choices, 86400)
|
||||
return site_choices, page_choices
|
||||
|
||||
|
||||
def get_site_choices(lang=None):
|
||||
from django.core.cache import cache
|
||||
lang = lang or i18n.get_current_language()
|
||||
site_choices = cache.get(_site_cache_key(lang))
|
||||
if site_choices is None:
|
||||
site_choices, page_choices = update_site_and_page_choices(lang)
|
||||
return site_choices
|
||||
|
||||
|
||||
def get_page_choices(lang=None):
|
||||
from django.core.cache import cache
|
||||
lang = lang or i18n.get_current_language()
|
||||
page_choices = cache.get(_page_cache_key(lang))
|
||||
if page_choices is None:
|
||||
site_choices, page_choices = update_site_and_page_choices(lang)
|
||||
return page_choices
|
||||
|
||||
from cms.models import Page
|
||||
|
||||
post_save.connect(clean_page_choices_cache, sender=Page)
|
||||
post_save.connect(clean_site_choices_cache, sender=Site)
|
||||
|
||||
@@ -8,10 +8,11 @@ from django.contrib.sites.models import Site
|
||||
from django.core.urlresolvers import NoReverseMatch, reverse_lazy
|
||||
from django.forms.widgets import Select, MultiWidget, TextInput
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.html import escape, escapejs
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from cms.cache.choices import get_site_choices, get_page_choices
|
||||
from cms.forms.utils import get_site_choices, get_page_choices
|
||||
from cms.models import Page, PageUser
|
||||
from cms.templatetags.cms_admin import CMS_ADMIN_ICON_BASE
|
||||
|
||||
@@ -102,9 +103,11 @@ class PageSelectWidget(MultiWidget):
|
||||
var handlePageChange = function(page_id) {
|
||||
if (page_id) {
|
||||
$("#id_%(name)s_2 option").attr('selected', false);
|
||||
$("#id_%(name)s_2 option[value=" + page_id + "]").attr('selected', true);
|
||||
$("#id_%(name)s_2 option[value='" + page_id + "']").attr('selected', true);
|
||||
} else {
|
||||
$("#id_%(name)s_2 option[value=]").attr('selected', true);
|
||||
if ($("#id_%(name)s_2").length) {
|
||||
$("#id_%(name)s_2 option[value='']").attr('selected', true);
|
||||
}
|
||||
};
|
||||
};
|
||||
$("#id_%(name)s_0").change(function(){
|
||||
@@ -250,7 +253,7 @@ class AppHookSelect(Select):
|
||||
selected_html = ''
|
||||
|
||||
if option_value in self.app_namespaces:
|
||||
data_html = mark_safe(' data-namespace="%s"' % self.app_namespaces[option_value])
|
||||
data_html = mark_safe(' data-namespace="%s"' % escape(self.app_namespaces[option_value]))
|
||||
else:
|
||||
data_html = ''
|
||||
|
||||
@@ -289,11 +292,11 @@ class ApplicationConfigSelect(Select):
|
||||
super(ApplicationConfigSelect, self).__init__(attrs, choices)
|
||||
|
||||
def render(self, name, value, attrs=None, choices=()):
|
||||
output = [super(ApplicationConfigSelect, self).render(name, value, attrs, choices)]
|
||||
output = list(super(ApplicationConfigSelect, self).render(name, value, attrs, choices))
|
||||
output.append('<script>\n')
|
||||
output.append('var apphooks_configuration = {\n')
|
||||
for application, cms_app in self.app_configs.items():
|
||||
output.append("'%s': [%s]," % (application, ",".join(["['%s', '%s']" % (config.pk, force_text(config)) for config in cms_app.get_configs()])))
|
||||
output.append("'%s': [%s]," % (application, ",".join(["['%s', '%s']" % (config.pk, escapejs(escape(config))) for config in cms_app.get_configs()]))) # noqa
|
||||
output.append('\n};\n')
|
||||
output.append('var apphooks_configuration_url = {\n')
|
||||
for application, cms_app in self.app_configs.items():
|
||||
|
||||
Binary file not shown.
+640
-394
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -7,16 +7,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-12 21:31+0100\n"
|
||||
"PO-Revision-Date: 2013-12-12 08:53+0000\n"
|
||||
"Last-Translator: Patrick Lauber <patrick.lauber@divio.ch>\n"
|
||||
"Language-Team: Afrikaans (http://www.transifex.com/projects/p/django-cms/language/af/)\n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2015-10-31 12:28+0000\n"
|
||||
"Last-Translator: yakky <i.spalletti@nephila.it>\n"
|
||||
"Language-Team: Afrikaans (http://www.transifex.com/divio/django-cms/language/af/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: af\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/cms/js/modules/cms.changeform.js:60
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
+652
-401
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -3,21 +3,23 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Abdelkader Maarouf <dep2g2@gmail.com>, 2015
|
||||
# Ahmed H <info@draco-003.com>, 2013
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-12 21:31+0100\n"
|
||||
"PO-Revision-Date: 2013-12-12 08:53+0000\n"
|
||||
"Last-Translator: Patrick Lauber <patrick.lauber@divio.ch>\n"
|
||||
"Language-Team: Arabic (http://www.transifex.com/projects/p/django-cms/language/ar/)\n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2015-10-31 12:28+0000\n"
|
||||
"Last-Translator: yakky <i.spalletti@nephila.it>\n"
|
||||
"Language-Team: Arabic (http://www.transifex.com/divio/django-cms/language/ar/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ar\n"
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
|
||||
|
||||
#: static/cms/js/modules/cms.changeform.js:60
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr "هل أنت متأكد من الإنتقال الى مكان آخر دون حفظ الصفحة أولاً؟"
|
||||
msgstr "هل أنت متأكد من الإنتقال الى jfويب أخر دون حفظ الصفحة أولاً؟"
|
||||
|
||||
Binary file not shown.
+635
-387
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -7,16 +7,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-12 21:31+0100\n"
|
||||
"PO-Revision-Date: 2013-12-12 08:53+0000\n"
|
||||
"Last-Translator: Patrick Lauber <patrick.lauber@divio.ch>\n"
|
||||
"Language-Team: Belarusian (http://www.transifex.com/projects/p/django-cms/language/be/)\n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2015-10-31 12:28+0000\n"
|
||||
"Last-Translator: yakky <i.spalletti@nephila.it>\n"
|
||||
"Language-Team: Belarusian (http://www.transifex.com/divio/django-cms/language/be/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: be\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
|
||||
#: static/cms/js/modules/cms.changeform.js:60
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
+688
-441
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -10,16 +10,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-12 21:31+0100\n"
|
||||
"PO-Revision-Date: 2013-12-12 08:53+0000\n"
|
||||
"Last-Translator: Patrick Lauber <patrick.lauber@divio.ch>\n"
|
||||
"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django-cms/language/bg/)\n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2015-10-31 12:28+0000\n"
|
||||
"Last-Translator: yakky <i.spalletti@nephila.it>\n"
|
||||
"Language-Team: Bulgarian (http://www.transifex.com/divio/django-cms/language/bg/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: bg\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/cms/js/modules/cms.changeform.js:60
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr "Наистина ли искате да промените раздели без първо да запазите страницата?"
|
||||
|
||||
Binary file not shown.
+640
-394
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -8,16 +8,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-12 21:31+0100\n"
|
||||
"PO-Revision-Date: 2013-12-12 08:53+0000\n"
|
||||
"Last-Translator: Patrick Lauber <patrick.lauber@divio.ch>\n"
|
||||
"Language-Team: Bengali (http://www.transifex.com/projects/p/django-cms/language/bn/)\n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2015-10-31 12:28+0000\n"
|
||||
"Last-Translator: yakky <i.spalletti@nephila.it>\n"
|
||||
"Language-Team: Bengali (http://www.transifex.com/divio/django-cms/language/bn/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: bn\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/cms/js/modules/cms.changeform.js:60
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr "আপনি কি নিশ্চিত যে, আপনি পৃষ্ঠাটি সংরক্ষণ না করেই ট্যাব পরিবর্তন করতে চান?"
|
||||
|
||||
Binary file not shown.
+653
-406
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -3,21 +3,22 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Roger Pons <rogerpons@gmail.com>, 2012
|
||||
# Roger Pons <rogerpons@gmail.com>, 2012,2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-12 21:31+0100\n"
|
||||
"PO-Revision-Date: 2013-12-12 08:53+0000\n"
|
||||
"Last-Translator: Patrick Lauber <patrick.lauber@divio.ch>\n"
|
||||
"Language-Team: Catalan (http://www.transifex.com/projects/p/django-cms/language/ca/)\n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2015-10-31 12:28+0000\n"
|
||||
"Last-Translator: yakky <i.spalletti@nephila.it>\n"
|
||||
"Language-Team: Catalan (http://www.transifex.com/divio/django-cms/language/ca/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ca\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/cms/js/modules/cms.changeform.js:60
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr "Estàs segur que voleu canviar de secció sense guardar la primera pàgina?"
|
||||
msgstr "Esteu segur que voleu canviar de secció sense guardar la primera pàgina?"
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -7,16 +7,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-12 21:31+0100\n"
|
||||
"PO-Revision-Date: 2013-12-12 08:53+0000\n"
|
||||
"Last-Translator: Patrick Lauber <patrick.lauber@divio.ch>\n"
|
||||
"Language-Team: Chinese (Mandarin) (http://www.transifex.com/projects/p/django-cms/language/cmn/)\n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2016-01-19 20:20+0000\n"
|
||||
"Last-Translator: Martin Koistinen <mkoistinen@gmail.com>\n"
|
||||
"Language-Team: Chinese (Mandarin) (http://www.transifex.com/divio/django-cms/language/cmn/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cmn\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: static/cms/js/modules/cms.changeform.js:60
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,26 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Jakub Dorňák <jdornak@redhat.com>, 2013
|
||||
# xlu <xlu@seznam.cz>, 2013
|
||||
# xlu <xlu@seznam.cz>, 2013
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2015-10-31 12:28+0000\n"
|
||||
"Last-Translator: yakky <i.spalletti@nephila.it>\n"
|
||||
"Language-Team: Czech (http://www.transifex.com/divio/django-cms/language/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr "Určitě chcete změnit záložku bez uložení změn?"
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,23 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2010-11-30 06:49+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Czech (Czech Republic) (http://www.transifex.com/divio/django-cms/language/cs_CZ/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cs_CZ\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr ""
|
||||
Binary file not shown.
+634
-386
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -7,16 +7,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-12 21:31+0100\n"
|
||||
"PO-Revision-Date: 2013-12-12 08:53+0000\n"
|
||||
"Last-Translator: Patrick Lauber <patrick.lauber@divio.ch>\n"
|
||||
"Language-Team: Welsh (http://www.transifex.com/projects/p/django-cms/language/cy/)\n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2015-10-31 12:28+0000\n"
|
||||
"Last-Translator: yakky <i.spalletti@nephila.it>\n"
|
||||
"Language-Team: Welsh (http://www.transifex.com/divio/django-cms/language/cy/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cy\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\n"
|
||||
|
||||
#: static/cms/js/modules/cms.changeform.js:60
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
+648
-400
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -5,20 +5,22 @@
|
||||
# Translators:
|
||||
# Kristian Øllegaard <kristian@oellegaard.com>, 2011
|
||||
# Kristian Øllegaard <kristian@oellegaard.com>, 2011
|
||||
# Kristian Øllegaard <kristian@oellegaard.com>, 2011
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-12 21:31+0100\n"
|
||||
"PO-Revision-Date: 2013-12-12 08:53+0000\n"
|
||||
"Last-Translator: Patrick Lauber <patrick.lauber@divio.ch>\n"
|
||||
"Language-Team: Danish (http://www.transifex.com/projects/p/django-cms/language/da/)\n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2015-10-31 12:28+0000\n"
|
||||
"Last-Translator: yakky <i.spalletti@nephila.it>\n"
|
||||
"Language-Team: Danish (http://www.transifex.com/divio/django-cms/language/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: da\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/cms/js/modules/cms.changeform.js:60
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr "Er du sikker på du vil ændre tabs uden at gemme siden først?"
|
||||
|
||||
Binary file not shown.
+685
-430
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -5,20 +5,22 @@
|
||||
# Translators:
|
||||
# Jonas Obrist <me@ojii.ch>, 2011
|
||||
# Michael P. Jung <michael.jung@terreon.de>, 2013
|
||||
# Stefan T. Oertel <me@schneck.cc>, 2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-12 21:31+0100\n"
|
||||
"PO-Revision-Date: 2013-12-12 08:53+0000\n"
|
||||
"Last-Translator: Patrick Lauber <patrick.lauber@divio.ch>\n"
|
||||
"Language-Team: German (http://www.transifex.com/projects/p/django-cms/language/de/)\n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2015-10-31 12:28+0000\n"
|
||||
"Last-Translator: yakky <i.spalletti@nephila.it>\n"
|
||||
"Language-Team: German (http://www.transifex.com/divio/django-cms/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: de\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/cms/js/modules/cms.changeform.js:60
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr "Sind Sie sicher Sie wollen die Sprache ändern ohne vorher zu speichern?"
|
||||
|
||||
Binary file not shown.
+648
-400
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -8,16 +8,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-12 21:31+0100\n"
|
||||
"PO-Revision-Date: 2013-12-12 08:53+0000\n"
|
||||
"Last-Translator: Patrick Lauber <patrick.lauber@divio.ch>\n"
|
||||
"Language-Team: Greek (http://www.transifex.com/projects/p/django-cms/language/el/)\n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2015-10-31 12:28+0000\n"
|
||||
"Last-Translator: yakky <i.spalletti@nephila.it>\n"
|
||||
"Language-Team: Greek (http://www.transifex.com/divio/django-cms/language/el/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: el\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/cms/js/modules/cms.changeform.js:60
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr "Είσαι σίγουρος πως θες να αλλάξεις καρτέλες χωρίς να έχεις αποθηκεύσει πρώτα τη σελίδα?"
|
||||
|
||||
Binary file not shown.
+984
-693
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -1,22 +1,24 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
# Translators:
|
||||
# Jonas Obrist <ojiidotch@gmail.com>, 2011
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-04-15 19:20+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"POT-Creation-Date: 2016-04-26 12:22-0400\n"
|
||||
"PO-Revision-Date: 2015-10-31 12:28+0000\n"
|
||||
"Last-Translator: yakky <i.spalletti@nephila.it>\n"
|
||||
"Language-Team: English (http://www.transifex.com/digi604/django-cms/language/"
|
||||
"en/)\n"
|
||||
"Language: en\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/cms/js/modules/cms.changeform.js:60
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr ""
|
||||
msgstr "Are you sure you want to change tabs without saving the page first?"
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,23 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2010-11-30 06:49+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: English (United Kingdom) (http://www.transifex.com/divio/django-cms/language/en_GB/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: en_GB\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr ""
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,23 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2010-11-30 06:49+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: English (Hong Kong) (http://www.transifex.com/divio/django-cms/language/en_HK/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: en_HK\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr ""
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,23 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2010-11-30 06:49+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: English (United States) (http://www.transifex.com/divio/django-cms/language/en_US/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: en_US\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr ""
|
||||
Binary file not shown.
+779
-532
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -7,16 +7,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-12 21:31+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 06:49+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Esperanto (http://www.transifex.com/projects/p/django-cms/language/eo/)\n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2015-10-31 12:28+0000\n"
|
||||
"Last-Translator: yakky <i.spalletti@nephila.it>\n"
|
||||
"Language-Team: Esperanto (http://www.transifex.com/divio/django-cms/language/eo/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: eo\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/cms/js/modules/cms.changeform.js:60
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
+664
-408
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -4,20 +4,22 @@
|
||||
#
|
||||
# Translators:
|
||||
# Edwin Caldon <edycop@gmail.com>, 2011
|
||||
# Ernesto Avilés Vázquez <whippiii@gmail.com>, 2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-12 21:31+0100\n"
|
||||
"PO-Revision-Date: 2013-12-12 08:53+0000\n"
|
||||
"Last-Translator: Patrick Lauber <patrick.lauber@divio.ch>\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/projects/p/django-cms/language/es/)\n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2015-10-31 12:28+0000\n"
|
||||
"Last-Translator: yakky <i.spalletti@nephila.it>\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/divio/django-cms/language/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/cms/js/modules/cms.changeform.js:60
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr "¿Estás seguro de que desea cambiar de pestañas sin guardar antes la página?"
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -8,16 +8,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django-cms\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-01-12 21:31+0100\n"
|
||||
"PO-Revision-Date: 2013-12-12 08:53+0000\n"
|
||||
"Last-Translator: Patrick Lauber <patrick.lauber@divio.ch>\n"
|
||||
"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/django-cms/language/es_AR/)\n"
|
||||
"POT-Creation-Date: 2015-11-05 10:16-0500\n"
|
||||
"PO-Revision-Date: 2015-10-31 12:28+0000\n"
|
||||
"Last-Translator: yakky <i.spalletti@nephila.it>\n"
|
||||
"Language-Team: Spanish (Argentina) (http://www.transifex.com/divio/django-cms/language/es_AR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: es_AR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: static/cms/js/modules/cms.changeform.js:60
|
||||
#: static/cms/js/dist/bundle.admin.changeform.min.js:1
|
||||
#: static/cms/js/modules/cms.changeform.js:75
|
||||
msgid "Are you sure you want to change tabs without saving the page first?"
|
||||
msgstr "¿Estás seguro de que desea cambiar de pestañas sin guardar antes la página?"
|
||||
|
||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user