Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f463de5a45 | ||
|
|
8829780def | ||
|
|
a302d52698 | ||
|
|
00087198e0 | ||
|
|
ea3aa62476 | ||
|
|
176c9f4ad9 | ||
|
|
0fdab02d68 | ||
|
|
0fcb5f2ccd | ||
|
|
27287d246a | ||
|
|
2234cd245c | ||
|
|
c5980cd312 | ||
|
|
4e8dbffd0e | ||
|
|
50dcd7a572 | ||
|
|
35f1cca768 | ||
|
|
e5bde6c0b1 | ||
|
|
d31bba2670 | ||
|
|
4f806a1db9 | ||
|
|
f64232df30 | ||
|
|
ecc2f0004c | ||
|
|
4f2e327d33 | ||
|
|
3ce3171dff | ||
|
|
0850cadfdc | ||
|
|
53a5a44def | ||
|
|
ad1d414485 | ||
|
|
ba22f9a3a5 | ||
|
|
51de1740f9 | ||
|
|
1c012b92d5 | ||
|
|
7377922211 | ||
|
|
fae120f1ea | ||
|
|
a915054602 | ||
|
|
dd97b9c8dd | ||
|
|
d1e25796e9 | ||
|
|
e38cfc5767 | ||
|
|
69c888d071 | ||
|
|
0138b1782d | ||
|
|
9b1b9e73c5 | ||
|
|
0fc60eedfb | ||
|
|
9e19833421 | ||
|
|
31318340e2 | ||
|
|
6cef27e69c | ||
|
|
4f6ab86491 | ||
|
|
4147867098 | ||
|
|
a0dead1586 | ||
|
|
0afc18fd24 | ||
|
|
9f695c783e | ||
|
|
15263ea1d6 | ||
|
|
693c5cd5e4 | ||
|
|
cc3f045efa | ||
|
|
43806a26e7 | ||
|
|
cb4c4b3eb5 | ||
|
|
39558267b9 | ||
|
|
59a3c5a6e6 | ||
|
|
2c9eeccc0e | ||
|
|
7576d85dba | ||
|
|
579f0d752f | ||
|
|
65e9cc2127 | ||
|
|
dc2fd49ecb | ||
|
|
a380ae69d5 | ||
|
|
0b84911d38 | ||
|
|
e64c556f84 | ||
|
|
18644e027e | ||
|
|
65642c029c | ||
|
|
11540a6132 | ||
|
|
a6e728316b | ||
|
|
4cb5e3c674 | ||
|
|
d918a6b2e2 | ||
|
|
d721451d15 | ||
|
|
c5aaebd4a8 | ||
|
|
4c1dbf4e40 | ||
|
|
c20c055788 | ||
|
|
44c13f9fa3 | ||
|
|
ae44a9e0ac | ||
|
|
97ba47f339 | ||
|
|
8671b897d0 | ||
|
|
1a3361a1bb | ||
|
|
9ac438d05a | ||
|
|
18e45ab994 | ||
|
|
f00090846e | ||
|
|
6590de030c | ||
|
|
714fcc5202 | ||
|
|
becc947556 | ||
|
|
d547a955ac | ||
|
|
97e0736d8e | ||
|
|
20db6daa65 | ||
|
|
3aefb5f6de | ||
|
|
30818cdf5e | ||
|
|
4089cf2145 | ||
|
|
d7893c5292 | ||
|
|
cdd3f6ed00 | ||
|
|
e44254346c | ||
|
|
adf82c1267 | ||
|
|
4d98b72702 | ||
|
|
f02240acd3 | ||
|
|
cabef57851 | ||
|
|
98ad12a06c | ||
|
|
d454eb2fe7 | ||
|
|
0facbe04ef | ||
|
|
8f9f4aae32 | ||
|
|
d5bfaf83ee | ||
|
|
9e46c3cbc4 | ||
|
|
d431206e30 | ||
|
|
6adfb8b944 | ||
|
|
0c8ccaac9a | ||
|
|
4f0ee4543b | ||
|
|
1383d13334 | ||
|
|
1b260c4b84 | ||
|
|
0ff586a1ca | ||
|
|
95adb233f7 | ||
|
|
e7f2e494af | ||
|
|
ded9e5886d | ||
|
|
d2757294af | ||
|
|
39da6a68fe | ||
|
|
8e4bc72fca | ||
|
|
bc481e954c | ||
|
|
e4ba924dc1 | ||
|
|
193510b57d | ||
|
|
88ad882d83 | ||
|
|
a90c4f7953 | ||
|
|
0c2d97b9db | ||
|
|
1c77fdd9e1 | ||
|
|
681bc9755e | ||
|
|
31e992696c | ||
|
|
813411a408 | ||
|
|
1702d1ac1f | ||
|
|
022a2af8b1 | ||
|
|
d46d16bc2b | ||
|
|
ae3ff2313d | ||
|
|
669586f15e | ||
|
|
46fbcc8d22 | ||
|
|
178f94af8c | ||
|
|
2f6b3a0bda | ||
|
|
97b70eff9f | ||
|
|
3efa77b57a | ||
|
|
48977ba04c | ||
|
|
94e3271481 | ||
|
|
04f6e7ee38 | ||
|
|
15c9e685c8 | ||
|
|
b00463bdf4 | ||
|
|
c17e642f1f | ||
|
|
a2e118ec50 | ||
|
|
45bda63ed3 | ||
|
|
c909af4a86 | ||
|
|
b5a7c7e30f | ||
|
|
6594e7a607 | ||
|
|
4d8dedeb27 | ||
|
|
b0e3e386e7 | ||
|
|
ad4870e338 | ||
|
|
c1f0bc3a6d | ||
|
|
887d4cc136 | ||
|
|
bbe787b7b4 | ||
|
|
7341988b01 | ||
|
|
44eb880108 | ||
|
|
c01f860009 | ||
|
|
f9315a8cc7 | ||
|
|
40918f44fd | ||
|
|
9fdb586d03 | ||
|
|
448c398341 | ||
|
|
618c322603 | ||
|
|
b5c9ed633b | ||
|
|
80342a22f5 | ||
|
|
c999b16a27 | ||
|
|
9bda793d46 | ||
|
|
5e9fbdd24f | ||
|
|
446e641e64 | ||
|
|
7d53ec6d71 | ||
|
|
7b0cf5bc12 | ||
|
|
a82034d516 | ||
|
|
4973361136 | ||
|
|
3b69d4bf7b | ||
|
|
fd5e14ea0d | ||
|
|
9fc3b2bc26 | ||
|
|
19cc977917 | ||
|
|
ce481d9002 | ||
|
|
2421a31b25 | ||
|
|
94c79820b9 | ||
|
|
80b38a743f | ||
|
|
af01b45852 | ||
|
|
a2de6f12d1 | ||
|
|
2af81d2e7a | ||
|
|
0f691f2757 | ||
|
|
be021db3d3 | ||
|
|
acd0ebd09d | ||
|
|
3d5e594070 | ||
|
|
58247e3d6b | ||
|
|
9f35635233 | ||
|
|
2119bacd22 | ||
|
|
d55fab540c | ||
|
|
1344c50f85 | ||
|
|
e8d97f5706 | ||
|
|
35704f3527 | ||
|
|
96fb5b0755 | ||
|
|
81f017a7c0 | ||
|
|
aca3d43f0a | ||
|
|
5a898cc80a | ||
|
|
bfb3a320bd | ||
|
|
c0b1e387b1 | ||
|
|
c175e6340d | ||
|
|
3a5f7b05df | ||
|
|
26babd7e96 | ||
|
|
349088a96e | ||
|
|
a4ff77bdb9 | ||
|
|
8f70d3a802 | ||
|
|
89021b6409 | ||
|
|
4a078705b3 | ||
|
|
6eea834777 | ||
|
|
b863ff048e | ||
|
|
79a4693f34 | ||
|
|
0f0a62ef7f | ||
|
|
cc8a21aedf | ||
|
|
38fff6fb91 | ||
|
|
e87a2bf0d5 | ||
|
|
6b3cdb5a99 | ||
|
|
e2191175da | ||
|
|
4a7f15bb04 | ||
|
|
e6c58c3c6f | ||
|
|
bb2407b468 | ||
|
|
07e809acb3 | ||
|
|
7714b5dc7b | ||
|
|
ca85d9adab | ||
|
|
41a9f12024 | ||
|
|
669691bbea | ||
|
|
6ac38e7c56 | ||
|
|
359758804b | ||
|
|
9400a0c7a1 | ||
|
|
ea34d1b3a0 | ||
|
|
72e9921901 | ||
|
|
d6af8279bc | ||
|
|
cd005b01c0 | ||
|
|
fa04c23bbf | ||
|
|
6ecc09f286 | ||
|
|
4b0f6aff73 | ||
|
|
c451f57d4e | ||
|
|
721cb2b90a | ||
|
|
01d5302a2d | ||
|
|
706324b9c6 | ||
|
|
244d3c68eb | ||
|
|
fcfa8aa917 | ||
|
|
8438a432e9 | ||
|
|
9d5e0b24f7 | ||
|
|
4480acd6f7 | ||
|
|
cd1ce28639 | ||
|
|
bf5fbd8b09 | ||
|
|
515e284c22 | ||
|
|
f98548827a | ||
|
|
b67e57f275 | ||
|
|
7005fb655c | ||
|
|
b9189771d0 | ||
|
|
b15211064d | ||
|
|
30ea9ac56b | ||
|
|
dab4950f14 | ||
|
|
0fce3655d5 | ||
|
|
91504fbc2c | ||
|
|
4b17684980 | ||
|
|
675245eb15 | ||
|
|
3494fa2d0d | ||
|
|
87a593845c | ||
|
|
b9d80fcdc7 | ||
|
|
3f7d085f73 | ||
|
|
d57dd72780 | ||
|
|
a8d1d5cfcf | ||
|
|
8857e3d521 | ||
|
|
3b1a5be1be | ||
|
|
c9a63a8524 | ||
|
|
cd967d2551 | ||
|
|
92b5247f9f | ||
|
|
45a5b436c8 | ||
|
|
bfd385f969 | ||
|
|
f693fe6b2a | ||
|
|
b040159a9b | ||
|
|
f3af2a1999 | ||
|
|
f613a4cc99 | ||
|
|
e4a96125a6 | ||
|
|
e48074ff54 | ||
|
|
2ed122a534 | ||
|
|
65c0d9b18b | ||
|
|
6702694590 | ||
|
|
6f0d4d039e | ||
|
|
1325b0e48f | ||
|
|
7421eb8068 | ||
|
|
6c7a9a4030 | ||
|
|
ba0a143717 | ||
|
|
28bcb5ed6c | ||
|
|
44fd637a1f | ||
|
|
f13aed1a84 | ||
|
|
cb3de825f2 | ||
|
|
fd4c775710 | ||
|
|
3e550b3e97 | ||
|
|
7a543250f9 | ||
|
|
a071f07634 | ||
|
|
a078f860d2 | ||
|
|
2bfd7a2467 | ||
|
|
55c9392de4 | ||
|
|
7991b555ff | ||
|
|
eab7815c24 | ||
|
|
79c09de103 | ||
|
|
24daa335b6 | ||
|
|
812ba9d52b | ||
|
|
00fb3b56cc | ||
|
|
3644d081f6 | ||
|
|
f05c46b3f1 | ||
|
|
13e76fe278 | ||
|
|
0906ae28c1 | ||
|
|
04905adb89 | ||
|
|
9767109d4e | ||
|
|
a57919bc4d | ||
|
|
c7c94d1f8f | ||
|
|
817e6c3313 | ||
|
|
a23f4c5c88 | ||
|
|
eac9768549 | ||
|
|
a42fb6b558 | ||
|
|
879e825b61 | ||
|
|
07f4310153 | ||
|
|
10c67e5be3 | ||
|
|
1279d5ddaa | ||
|
|
2af15e4b27 | ||
|
|
3096fcf045 | ||
|
|
831492448a | ||
|
|
a5284e846c | ||
|
|
22accaced3 | ||
|
|
f92d97f36e | ||
|
|
4f0a16a24c | ||
|
|
72dade793a | ||
|
|
8addc54015 | ||
|
|
25ab6f9a07 | ||
|
|
b853f72e0c | ||
|
|
449a658521 | ||
|
|
7776a22533 | ||
|
|
554eccc14a | ||
|
|
8cd6928da3 | ||
|
|
8c28be1041 | ||
|
|
810aa8f4f3 | ||
|
|
8e5be952bf | ||
|
|
5a560fee8a | ||
|
|
21819ffc5d | ||
|
|
1f8bdd6061 | ||
|
|
523c813439 | ||
|
|
7ee638bc36 | ||
|
|
76c515d3af | ||
|
|
1c8ce00657 | ||
|
|
0f4bbecd2a | ||
|
|
e292f5a869 | ||
|
|
da25c6f843 | ||
|
|
5122fbe110 | ||
|
|
dee3a3b655 | ||
|
|
4e2bcd22d9 | ||
|
|
17890027a6 | ||
|
|
5e93804525 | ||
|
|
778070dd8a | ||
|
|
74ecc762f3 | ||
|
|
63f7b35cf8 | ||
|
|
0c3f4601cc | ||
|
|
101b74398f |
@@ -0,0 +1,38 @@
|
|||||||
|
language: python
|
||||||
|
|
||||||
|
python:
|
||||||
|
- '2.5'
|
||||||
|
- '2.6'
|
||||||
|
- '2.7'
|
||||||
|
- 'pypy'
|
||||||
|
install:
|
||||||
|
- pip install -e . --use-mirrors
|
||||||
|
env:
|
||||||
|
- DB=sqlite:memory
|
||||||
|
- DB=mysql://root:@localhost/test_w2p
|
||||||
|
- DB=postgres://postgres:@localhost/test_w2p
|
||||||
|
before_script:
|
||||||
|
- if [[ $TRAVIS_PYTHON_VERSION != '2.7' ]]; then pip install --use-mirrors unittest2; fi
|
||||||
|
- if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then pip install --use-mirrors coverage; fi;
|
||||||
|
- if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then pip install --use-mirrors python-coveralls; fi
|
||||||
|
- if [[ $DB == postgres* ]]; then pip install --use-mirrors psycopg2; fi;
|
||||||
|
- if [[ $TRAVIS_PYTHON_VERSION == '2.5' ]]; then pip install --use-mirrors pysqlite; fi
|
||||||
|
- if [[ $DB == mysql* ]]; then mysql -e 'create database test_w2p;'; fi
|
||||||
|
- if [[ $DB == postgres* ]]; then psql -c 'create database test_w2p;' -U postgres; fi
|
||||||
|
#Temporal solution to travis issue #155
|
||||||
|
- sudo chmod 777 /dev/shm
|
||||||
|
- sudo rm -rf /dev/shm && sudo ln -s /run/shm /dev/shm
|
||||||
|
matrix:
|
||||||
|
exclude:
|
||||||
|
- python: 'pypy'
|
||||||
|
env: DB=postgres://postgres:@localhost/test_w2p
|
||||||
|
- python: 'pypy'
|
||||||
|
env: DB=mysql://root:@localhost/test_w2p
|
||||||
|
|
||||||
|
script: export COVERAGE_PROCESS_START=gluon/tests/coverage.ini; ./web2py.py --run_system_tests --with_coverage
|
||||||
|
after_success:
|
||||||
|
- if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then coverage combine; fi
|
||||||
|
- if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then coveralls --config_file=gluon/tests/coverage.ini; fi
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
email: true
|
||||||
@@ -1,4 +1,31 @@
|
|||||||
## 2.4.1- 2.4.2
|
## 2.5.1
|
||||||
|
|
||||||
|
- New style virtual fields in grid
|
||||||
|
- Conditional fields (experimental) ``db.table.field.show_id = db.table.otherfield==True`` or ``db.table.field.show_id = db.table.otherfiel.contains(values)``
|
||||||
|
- auth.settings.manager_group_role="manager" enables http://.../app/appadmin/auth_manage and http://.../app/appadmin/manage for members of the "manager" group. (also experimental)
|
||||||
|
- support for POST variables in DELETE
|
||||||
|
- Fixed memory leak when using the TAG helper
|
||||||
|
|
||||||
|
|
||||||
|
## 2.4.7
|
||||||
|
|
||||||
|
- pypy support, thanks Niphlod
|
||||||
|
- more bug fixes
|
||||||
|
- ...
|
||||||
|
|
||||||
|
## 2.4.6
|
||||||
|
|
||||||
|
- better tests
|
||||||
|
- new ANY_OF and IS_IPV6 validators
|
||||||
|
- new custom save option
|
||||||
|
- many small bug fixes
|
||||||
|
|
||||||
|
## 2.4.5
|
||||||
|
|
||||||
|
- travis.ci integration (thanks Marc Abramowitz and Niphlod). Passes all tests (thanks Niplod).
|
||||||
|
- IS_DATE and IS_DATETIME can specify timezone
|
||||||
|
|
||||||
|
## 2.4.1- 2.4.3
|
||||||
|
|
||||||
- 2D GEO API: geoPoint, getLine, geoPolygon
|
- 2D GEO API: geoPoint, getLine, geoPolygon
|
||||||
- support for 'json' field type in DAL
|
- support for 'json' field type in DAL
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
Web2py is Licensed under the LGPL license version 3
|
Web2py is Licensed under the LGPL license version 3
|
||||||
(http://www.gnu.org/licenses/lgpl.html)
|
(http://www.gnu.org/licenses/lgpl.html)
|
||||||
|
|
||||||
Copyrighted (c) by Massimo Di Pierro (2007-2011)
|
Copyrighted (c) by Massimo Di Pierro (2007-2013)
|
||||||
|
|
||||||
### On Commercial Redistribution
|
### On Commercial Redistribution
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ all:
|
|||||||
clean:
|
clean:
|
||||||
rm -f httpserver.log
|
rm -f httpserver.log
|
||||||
rm -f parameters*.py
|
rm -f parameters*.py
|
||||||
rm -f -r applications/*/compiled
|
rm -f -r applications/*/compiled
|
||||||
find ./ -name '*~' -exec rm -f {} \;
|
find ./ -name '*~' -exec rm -f {} \;
|
||||||
find ./ -name '*.orig' -exec rm -f {} \;
|
find ./ -name '*.orig' -exec rm -f {} \;
|
||||||
find ./ -name '*.rej' -exec rm -f {} \;
|
find ./ -name '*.rej' -exec rm -f {} \;
|
||||||
@@ -30,7 +30,7 @@ update:
|
|||||||
echo "remember that pymysql was tweaked"
|
echo "remember that pymysql was tweaked"
|
||||||
src:
|
src:
|
||||||
### Use semantic versioning
|
### Use semantic versioning
|
||||||
echo 'Version 2.4.2-stable+timestamp.'`date +%Y.%m.%d.%H.%M.%S` > VERSION
|
echo 'Version 2.5.1-stable+timestamp.'`date +%Y.%m.%d.%H.%M.%S` > VERSION
|
||||||
### rm -f all junk files
|
### rm -f all junk files
|
||||||
make clean
|
make clean
|
||||||
### clean up baisc apps
|
### clean up baisc apps
|
||||||
@@ -64,9 +64,10 @@ app:
|
|||||||
python2.7 -c 'import compileall; compileall.compile_dir("gluon/")'
|
python2.7 -c 'import compileall; compileall.compile_dir("gluon/")'
|
||||||
#python web2py.py -S welcome -R __exit__.py
|
#python web2py.py -S welcome -R __exit__.py
|
||||||
#cd ../web2py_osx/site-packages/; unzip ../site-packages.zip
|
#cd ../web2py_osx/site-packages/; unzip ../site-packages.zip
|
||||||
find gluon -path '*.pyc' -exec cp {} ../web2py_osx/site-packages/{} \;
|
#find gluon -path '*.pyc' -exec cp {} ../web2py_osx/site-packages/{} \;
|
||||||
cd ../web2py_osx/site-packages/; zip -r ../site-packages.zip *
|
#cd ../web2py_osx/site-packages/; zip -r ../site-packages.zip *
|
||||||
mv ../web2py_osx/site-packages.zip ../web2py_osx/web2py/web2py.app/Contents/Resources/lib/python2.7
|
#mv ../web2py_osx/site-packages.zip ../web2py_osx/web2py/web2py.app/Contents/Resources/lib/python2.7
|
||||||
|
find gluon -path '*.py' -exec cp {} ../web2py_osx/web2py/web2py.app/Contents/Resources/{} \;
|
||||||
cp README.markdown ../web2py_osx/web2py/web2py.app/Contents/Resources
|
cp README.markdown ../web2py_osx/web2py/web2py.app/Contents/Resources
|
||||||
cp NEWINSTALL ../web2py_osx/web2py/web2py.app/Contents/Resources
|
cp NEWINSTALL ../web2py_osx/web2py/web2py.app/Contents/Resources
|
||||||
cp LICENSE ../web2py_osx/web2py/web2py.app/Contents/Resources
|
cp LICENSE ../web2py_osx/web2py/web2py.app/Contents/Resources
|
||||||
@@ -114,11 +115,11 @@ commit:
|
|||||||
make src
|
make src
|
||||||
echo '' > NEWINSTALL
|
echo '' > NEWINSTALL
|
||||||
hg commit -m "$(S)"
|
hg commit -m "$(S)"
|
||||||
#bzr commit -m "$(S)"
|
|
||||||
git commit -a -m "$(S)"
|
git commit -a -m "$(S)"
|
||||||
push:
|
push:
|
||||||
hg push
|
hg push
|
||||||
git push
|
git push
|
||||||
|
git push --tags
|
||||||
tag:
|
tag:
|
||||||
git tag -l '$(S)'
|
git tag -l '$(S)'
|
||||||
hg tag -l '$(S)'
|
hg tag -l '$(S)'
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
@@ -6,6 +6,13 @@ It is written and programmable in Python. LGPLv3 License
|
|||||||
|
|
||||||
Learn more at http://web2py.com
|
Learn more at http://web2py.com
|
||||||
|
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
|
||||||
|
[](https://travis-ci.org/web2py/web2py)
|
||||||
|
|
||||||
|
[](https://coveralls.io/r/web2py/web2py)
|
||||||
|
|
||||||
## Installation Instructions
|
## Installation Instructions
|
||||||
|
|
||||||
To start web2py there is NO NEED to install it. Just unzip and do:
|
To start web2py there is NO NEED to install it. Just unzip and do:
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Version 2.4.2-stable+timestamp.2013.03.03.21.22.42
|
Version 2.5.1-stable+timestamp.2013.06.06.10.35.58
|
||||||
|
|||||||
@@ -180,6 +180,9 @@ def run(servername, ip, port, softcron=True, logging=False, profiler=None):
|
|||||||
if servername == 'gevent':
|
if servername == 'gevent':
|
||||||
from gevent import monkey
|
from gevent import monkey
|
||||||
monkey.patch_all()
|
monkey.patch_all()
|
||||||
|
elif servername == 'eventlet':
|
||||||
|
import eventlet
|
||||||
|
eventlet.monkey_patch()
|
||||||
|
|
||||||
import gluon.main
|
import gluon.main
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,17 @@ default_expiration: "24h" # for static files
|
|||||||
|
|
||||||
handlers:
|
handlers:
|
||||||
|
|
||||||
- url: /(?P<a>.+?)/static/(?P<b>.+)
|
# Warning! Static mapping - below - isn't compatible with
|
||||||
|
# the parametric router's language logic.
|
||||||
|
# You cannot use them together.
|
||||||
|
|
||||||
|
- url: /(.+?)/[^_]*\/?static/_\d.\d.\d\/?(.+)
|
||||||
|
static_files: applications/\1/static/\2
|
||||||
|
upload: applications/(.+?)/static/(.+)
|
||||||
|
secure: optional
|
||||||
|
expiration: "365d"
|
||||||
|
|
||||||
|
- url: /(.+?)/[^_]*\/?static/?(.+)
|
||||||
static_files: applications/\1/static/\2
|
static_files: applications/\1/static/\2
|
||||||
upload: applications/(.+?)/static/(.+)
|
upload: applications/(.+?)/static/(.+)
|
||||||
secure: optional
|
secure: optional
|
||||||
|
|||||||
@@ -37,14 +37,20 @@ if request.env.http_x_forwarded_for or request.is_https:
|
|||||||
elif (remote_addr not in hosts) and (remote_addr != "127.0.0.1"):
|
elif (remote_addr not in hosts) and (remote_addr != "127.0.0.1"):
|
||||||
raise HTTP(200, T('appadmin is disabled because insecure channel'))
|
raise HTTP(200, T('appadmin is disabled because insecure channel'))
|
||||||
|
|
||||||
if (request.application == 'admin' and not session.authorized) or \
|
if request.function in ('auth_manage','manage') and 'auth' in globals():
|
||||||
(request.application != 'admin' and not gluon.fileutils.check_credentials(request)):
|
auth.requires_membership(auth.settings.manager_group_role)(lambda: None)()
|
||||||
|
menu = False
|
||||||
|
elif (request.application == 'admin' and not session.authorized) or \
|
||||||
|
(request.application != 'admin' and not gluon.fileutils.check_credentials(request)):
|
||||||
redirect(URL('admin', 'default', 'index',
|
redirect(URL('admin', 'default', 'index',
|
||||||
vars=dict(send=URL(args=request.args, vars=request.vars))))
|
vars=dict(send=URL(args=request.args, vars=request.vars))))
|
||||||
|
else:
|
||||||
|
menu = True
|
||||||
|
|
||||||
ignore_rw = True
|
ignore_rw = True
|
||||||
response.view = 'appadmin.html'
|
response.view = 'appadmin.html'
|
||||||
response.menu = [[T('design'), False, URL('admin', 'default', 'design',
|
if menu:
|
||||||
|
response.menu = [[T('design'), False, URL('admin', 'default', 'design',
|
||||||
args=[request.application])], [T('db'), False,
|
args=[request.application])], [T('db'), False,
|
||||||
URL('index')], [T('state'), False,
|
URL('index')], [T('state'), False,
|
||||||
URL('state')], [T('cache'), False,
|
URL('state')], [T('cache'), False,
|
||||||
@@ -54,6 +60,10 @@ response.menu = [[T('design'), False, URL('admin', 'default', 'design',
|
|||||||
# ## auxiliary functions
|
# ## auxiliary functions
|
||||||
# ###########################################################
|
# ###########################################################
|
||||||
|
|
||||||
|
if False and request.tickets_db:
|
||||||
|
from gluon.restricted import TicketStorage
|
||||||
|
ts = TicketStorage()
|
||||||
|
ts._get_table(request.tickets_db, ts.tablename, request.application)
|
||||||
|
|
||||||
def get_databases(request):
|
def get_databases(request):
|
||||||
dbs = {}
|
dbs = {}
|
||||||
@@ -275,14 +285,15 @@ def update():
|
|||||||
(db, table) = get_table(request)
|
(db, table) = get_table(request)
|
||||||
keyed = hasattr(db[table], '_primarykey')
|
keyed = hasattr(db[table], '_primarykey')
|
||||||
record = None
|
record = None
|
||||||
|
db[table]._common_filter = None
|
||||||
if keyed:
|
if keyed:
|
||||||
key = [f for f in request.vars if f in db[table]._primarykey]
|
key = [f for f in request.vars if f in db[table]._primarykey]
|
||||||
if key:
|
if key:
|
||||||
record = db(db[table][key[0]] == request.vars[key[
|
record = db(db[table][key[0]] == request.vars[key[
|
||||||
0]], ignore_common_filters=True).select().first()
|
0]]).select().first()
|
||||||
else:
|
else:
|
||||||
record = db(db[table].id == request.args(
|
record = db(db[table].id == request.args(
|
||||||
2), ignore_common_filters=True).select().first()
|
2)).select().first()
|
||||||
|
|
||||||
if not record:
|
if not record:
|
||||||
qry = query_by_table_type(table, db)
|
qry = query_by_table_type(table, db)
|
||||||
@@ -319,6 +330,9 @@ def state():
|
|||||||
|
|
||||||
|
|
||||||
def ccache():
|
def ccache():
|
||||||
|
cache.ram.initialize()
|
||||||
|
cache.disk.initialize()
|
||||||
|
|
||||||
form = FORM(
|
form = FORM(
|
||||||
P(TAG.BUTTON(
|
P(TAG.BUTTON(
|
||||||
T("Clear CACHE?"), _type="submit", _name="yes", _value="yes")),
|
T("Clear CACHE?"), _type="submit", _name="yes", _value="yes")),
|
||||||
@@ -385,7 +399,7 @@ def ccache():
|
|||||||
|
|
||||||
return (hours, minutes, seconds)
|
return (hours, minutes, seconds)
|
||||||
|
|
||||||
for key, value in cache.ram.storage.items():
|
for key, value in cache.ram.storage.iteritems():
|
||||||
if isinstance(value, dict):
|
if isinstance(value, dict):
|
||||||
ram['hits'] = value['hit_total'] - value['misses']
|
ram['hits'] = value['hit_total'] - value['misses']
|
||||||
ram['misses'] = value['misses']
|
ram['misses'] = value['misses']
|
||||||
@@ -565,3 +579,35 @@ def bg_graph_model():
|
|||||||
|
|
||||||
def graph_model():
|
def graph_model():
|
||||||
return dict(databases=databases, pgv=pgv)
|
return dict(databases=databases, pgv=pgv)
|
||||||
|
|
||||||
|
def auth_manage():
|
||||||
|
tablename = request.args(0)
|
||||||
|
if not tablename or not tablename in auth.db.tables:
|
||||||
|
return dict()
|
||||||
|
table = auth.db[tablename]
|
||||||
|
formname = '%s_grid' % tablename
|
||||||
|
if tablename == auth.settings.table_user_name:
|
||||||
|
auth.settings.table_user._plural = T('Users')
|
||||||
|
auth.settings.table_membership._plural = T('Roles')
|
||||||
|
auth.settings.table_membership._id.readable = False
|
||||||
|
auth.settings.table_membership.user_id.label = T('User')
|
||||||
|
auth.settings.table_membership.group_id.label = T('Role')
|
||||||
|
grid = SQLFORM.smartgrid(table, args=request.args[:1], user_signature=True,
|
||||||
|
linked_tables=[auth.settings.table_membership_name],
|
||||||
|
maxtextlength=1000, formname=formname)
|
||||||
|
else:
|
||||||
|
table._id.readable = False
|
||||||
|
auth.settings.table_permission.group_id.label = T('Role')
|
||||||
|
auth.settings.table_permission.name.label = T('Permission')
|
||||||
|
orderby = 'role' if table == auth.settings.table_group_name else 'group_id'
|
||||||
|
grid = SQLFORM.grid(table, args=request.args[:1], orderby=table[orderby],
|
||||||
|
user_signature=True, maxtextlength=1000, formname=formname)
|
||||||
|
return grid if request.extension=='load' else dict(grid=grid)
|
||||||
|
|
||||||
|
def manage():
|
||||||
|
tablename = request.args(0)
|
||||||
|
if tablename in auth.db.tables:
|
||||||
|
grid = SQLFORM.smartgrid(auth.db[tablename], args=request.args[:1])
|
||||||
|
else:
|
||||||
|
return dict()
|
||||||
|
return grid if request.extension=='load' else dict(grid=grid)
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ from gluon.languages import (read_possible_languages, read_dict, write_dict,
|
|||||||
read_plural_dict, write_plural_dict)
|
read_plural_dict, write_plural_dict)
|
||||||
|
|
||||||
|
|
||||||
if DEMO_MODE and request.function in ['change_password', 'pack', 'pack_plugin', 'upgrade_web2py', 'uninstall', 'cleanup', 'compile_app', 'remove_compiled_app', 'delete', 'delete_plugin', 'create_file', 'upload_file', 'update_languages', 'reload_routes', 'git_push', 'git_pull']:
|
if DEMO_MODE and request.function in ['change_password', 'pack', 'pack_custom','pack_plugin', 'upgrade_web2py', 'uninstall', 'cleanup', 'compile_app', 'remove_compiled_app', 'delete', 'delete_plugin', 'create_file', 'upload_file', 'update_languages', 'reload_routes', 'git_push', 'git_pull']:
|
||||||
session.flash = T('disabled in demo mode')
|
session.flash = T('disabled in demo mode')
|
||||||
redirect(URL('site'))
|
redirect(URL('site'))
|
||||||
|
|
||||||
@@ -138,19 +138,17 @@ def check_version():
|
|||||||
session.forget()
|
session.forget()
|
||||||
session._unlock(response)
|
session._unlock(response)
|
||||||
|
|
||||||
new_version, version_number = check_new_version(request.env.web2py_version,
|
new_version, version = check_new_version(request.env.web2py_version,
|
||||||
WEB2PY_VERSION_URL)
|
WEB2PY_VERSION_URL)
|
||||||
|
|
||||||
if new_version == -1:
|
if new_version == -1:
|
||||||
return A(T('Unable to check for upgrades'), _href=WEB2PY_URL)
|
return A(T('Unable to check for upgrades'), _href=WEB2PY_URL)
|
||||||
elif new_version != True:
|
elif new_version != True:
|
||||||
return A(T('web2py is up to date'), _href=WEB2PY_URL)
|
return A(T('web2py is up to date'), _href=WEB2PY_URL)
|
||||||
elif platform.system().lower() in ('windows', 'win32', 'win64') and os.path.exists("web2py.exe"):
|
elif platform.system().lower() in ('windows', 'win32', 'win64') and os.path.exists("web2py.exe"):
|
||||||
return SPAN('You should upgrade to version %s.%s.%s' % version_number[:3])
|
return SPAN('You should upgrade to %s' % version.split('(')[0])
|
||||||
else:
|
else:
|
||||||
return sp_button(URL('upgrade_web2py'), T('upgrade now')) \
|
return sp_button(URL('upgrade_web2py'), T('upgrade now to %s') % version.split('(')[0])
|
||||||
+ XML(' <strong class="upgrade_version">%s.%s.%s</strong>'
|
|
||||||
% version_number[:3])
|
|
||||||
|
|
||||||
|
|
||||||
def logout():
|
def logout():
|
||||||
@@ -205,14 +203,12 @@ def site():
|
|||||||
|
|
||||||
is_appname = IS_VALID_APPNAME()
|
is_appname = IS_VALID_APPNAME()
|
||||||
form_create = SQLFORM.factory(Field('name', requires=is_appname),
|
form_create = SQLFORM.factory(Field('name', requires=is_appname),
|
||||||
table_name='appcreate',
|
table_name='appcreate')
|
||||||
_class='well well-small')
|
|
||||||
form_update = SQLFORM.factory(Field('name', requires=is_appname),
|
form_update = SQLFORM.factory(Field('name', requires=is_appname),
|
||||||
Field('file', 'upload', uploadfield=False),
|
Field('file', 'upload', uploadfield=False),
|
||||||
Field('url'),
|
Field('url'),
|
||||||
Field('overwrite', 'boolean'),
|
Field('overwrite', 'boolean'),
|
||||||
table_name='appupdate',
|
table_name='appupdate')
|
||||||
_class='well well-small')
|
|
||||||
form_create.process()
|
form_create.process()
|
||||||
form_update.process()
|
form_update.process()
|
||||||
|
|
||||||
@@ -345,7 +341,6 @@ def pack():
|
|||||||
session.flash = T('internal error: %s' % e)
|
session.flash = T('internal error: %s' % e)
|
||||||
redirect(URL('site'))
|
redirect(URL('site'))
|
||||||
|
|
||||||
|
|
||||||
def pack_plugin():
|
def pack_plugin():
|
||||||
app = get_app()
|
app = get_app()
|
||||||
if len(request.args) == 2:
|
if len(request.args) == 2:
|
||||||
@@ -360,6 +355,33 @@ def pack_plugin():
|
|||||||
session.flash = T('internal error')
|
session.flash = T('internal error')
|
||||||
redirect(URL('plugin', args=request.args))
|
redirect(URL('plugin', args=request.args))
|
||||||
|
|
||||||
|
def pack_custom():
|
||||||
|
app = get_app()
|
||||||
|
base = apath(app, r=request)
|
||||||
|
if request.post_vars.file:
|
||||||
|
files = request.post_vars.file
|
||||||
|
files = [files] if not isinstance(files,list) else files
|
||||||
|
fname = 'web2py.app.%s.w2p' % app
|
||||||
|
try:
|
||||||
|
filename = app_pack(app, request, raise_ex=True, filenames=files)
|
||||||
|
except Exception, e:
|
||||||
|
filename = None
|
||||||
|
if filename:
|
||||||
|
response.headers['Content-Type'] = 'application/w2p'
|
||||||
|
disposition = 'attachment; filename=%s' % fname
|
||||||
|
response.headers['Content-Disposition'] = disposition
|
||||||
|
return safe_read(filename, 'rb')
|
||||||
|
else:
|
||||||
|
session.flash = T('internal error: %s' % e)
|
||||||
|
redirect(URL(args=request.args))
|
||||||
|
def ignore(fs):
|
||||||
|
return [f for f in fs if not (
|
||||||
|
f[:1] in '#' or f.endswith('~') or f.endswith('.bak'))]
|
||||||
|
files = {}
|
||||||
|
for (r,d,f) in os.walk(base):
|
||||||
|
files[r] = {'folders':ignore(d),'files':ignore(f)}
|
||||||
|
return locals()
|
||||||
|
|
||||||
|
|
||||||
def upgrade_web2py():
|
def upgrade_web2py():
|
||||||
dialog = FORM.confirm(T('Upgrade'),
|
dialog = FORM.confirm(T('Upgrade'),
|
||||||
@@ -686,7 +708,7 @@ def edit():
|
|||||||
cfilename = os.path.join(request.args[0], 'controllers',
|
cfilename = os.path.join(request.args[0], 'controllers',
|
||||||
request.args[2] + '.py')
|
request.args[2] + '.py')
|
||||||
if os.path.exists(apath(cfilename, r=request)):
|
if os.path.exists(apath(cfilename, r=request)):
|
||||||
edit_controller = URL('edit', args=[cfilename])
|
edit_controller = URL('edit',args=[cfilename.replace(os.sep, "/")])
|
||||||
view = request.args[3].replace('.html', '')
|
view = request.args[3].replace('.html', '')
|
||||||
view_link = URL(request.args[0], request.args[2], view)
|
view_link = URL(request.args[0], request.args[2], view)
|
||||||
elif filetype == 'python' and request.args[1] == 'controllers':
|
elif filetype == 'python' and request.args[1] == 'controllers':
|
||||||
@@ -1430,7 +1452,7 @@ def errors():
|
|||||||
hash2error[hash]['count'] += 1
|
hash2error[hash]['count'] += 1
|
||||||
except KeyError:
|
except KeyError:
|
||||||
error_lines = error['traceback'].split("\n")
|
error_lines = error['traceback'].split("\n")
|
||||||
last_line = error_lines[-2]
|
last_line = error_lines[-2] if len(error_lines)>1 else 'unknown'
|
||||||
error_causer = os.path.split(error['layer'])[1]
|
error_causer = os.path.split(error['layer'])[1]
|
||||||
hash2error[hash] = dict(count=1, pickel=error,
|
hash2error[hash] = dict(count=1, pickel=error,
|
||||||
causer=error_causer,
|
causer=error_causer,
|
||||||
@@ -1655,26 +1677,6 @@ def update_languages():
|
|||||||
redirect(URL('design', args=app, anchor='languages'))
|
redirect(URL('design', args=app, anchor='languages'))
|
||||||
|
|
||||||
|
|
||||||
def twitter():
|
|
||||||
session.forget()
|
|
||||||
session._unlock(response)
|
|
||||||
import gluon.tools
|
|
||||||
import gluon.contrib.simplejson as sj
|
|
||||||
try:
|
|
||||||
if TWITTER_HASH:
|
|
||||||
page = urllib.urlopen("http://search.twitter.com/search.json?q=%%40%s" % TWITTER_HASH).read()
|
|
||||||
data = sj.loads(page, encoding="utf-8")['results']
|
|
||||||
d = dict()
|
|
||||||
for e in data:
|
|
||||||
d[e["id"]] = e
|
|
||||||
r = reversed(sorted(d))
|
|
||||||
return dict(tweets=[d[k] for k in r])
|
|
||||||
else:
|
|
||||||
return 'disabled'
|
|
||||||
except Exception, e:
|
|
||||||
return DIV(T('Unable to download because:'), BR(), str(e))
|
|
||||||
|
|
||||||
|
|
||||||
def user():
|
def user():
|
||||||
if MULTI_USER_MODE:
|
if MULTI_USER_MODE:
|
||||||
if not db(db.auth_user).count():
|
if not db(db.auth_user).count():
|
||||||
|
|||||||
@@ -1,390 +1,480 @@
|
|||||||
# coding: utf8
|
# coding: utf8
|
||||||
{
|
{
|
||||||
'!langcode!': 'cs-cz',
|
'!langcode!': 'cs-cz',
|
||||||
'!langname!': '?e?tina',
|
'!langname!': 'čeština',
|
||||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': 'Kolonka "Upravit" je nepovinn? v?raz, nap??klad "pole1=\'nov?hodnota\'". V?sledky datab?zov?ho JOINu nem??ete mazat ani upravovat.',
|
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': 'Kolonka "Upravit" je nepovinný výraz, například "pole1=\'nováhodnota\'". Výsledky databázového JOINu nemůžete mazat ani upravovat.',
|
||||||
'%%{Row} in Table': '%%{??dek} v tabulce',
|
'"User Exception" debug mode. An error ticket could be issued!': '"User Exception" debug mode. An error ticket could be issued!',
|
||||||
'%%{Row} selected': 'ozna?en?ch %%{??dek}',
|
'%%{Row} in Table': '%%{řádek} v tabulce',
|
||||||
'%s %%{row} deleted': '%s smazan?ch %%{z?znam}',
|
'%%{Row} selected': 'označených %%{řádek}',
|
||||||
'%s %%{row} updated': '%s upraven?ch %%{z?znam}',
|
'%s %%{row} deleted': '%s smazaných %%{záznam}',
|
||||||
'%s selected': '%s ozna?en?ch',
|
'%s %%{row} updated': '%s upravených %%{záznam}',
|
||||||
'%Y-%m-%d': '%d.%m.%Y',
|
'%s selected': '%s označených',
|
||||||
'%Y-%m-%d %H:%M:%S': '%d.%m.%Y %H:%M:%S',
|
'%Y-%m-%d': '%d.%m.%Y',
|
||||||
'(requires internet access)': '(vy?aduje p?ipojen? k internetu)',
|
'%Y-%m-%d %H:%M:%S': '%d.%m.%Y %H:%M:%S',
|
||||||
'(something like "it-it")': '(nap??klad "cs-cs")',
|
'(requires internet access)': '(vyžaduje připojení k internetu)',
|
||||||
'@markmin\x01(file **gluon/contrib/plural_rules/%s.py** is not found)': '(soubor **gluon/contrib/plural_rules/%s.py** nenalezen)',
|
'(requires internet access, experimental)': '(requires internet access, experimental)',
|
||||||
'@markmin\x01Searching: **%s** %%{file}': 'Hled?n?: **%s** %%{soubor}',
|
'(something like "it-it")': '(například "cs-cs")',
|
||||||
'About': 'O programu',
|
'@markmin\x01(file **gluon/contrib/plural_rules/%s.py** is not found)': '(soubor **gluon/contrib/plural_rules/%s.py** nenalezen)',
|
||||||
'About application': 'O aplikaci',
|
'@markmin\x01Searching: **%s** %%{file}': 'Hledání: **%s** %%{soubor}',
|
||||||
'Access Control': '??zen? p??stupu',
|
'About': 'O programu',
|
||||||
'Add breakpoint': 'P?idat bod p?eru?en?',
|
'About application': 'O aplikaci',
|
||||||
'Additional code for your application': 'Dal?? k?d pro Va?i aplikaci',
|
'Access Control': 'Řízení přístupu',
|
||||||
'Admin language': 'jazyk rozhran?',
|
'Add breakpoint': 'Přidat bod přerušení',
|
||||||
'Administrative interface': 'pro administr?torsk? rozhran? klikn?te sem',
|
'Additional code for your application': 'Další kód pro Vaši aplikaci',
|
||||||
'Administrative Interface': 'Administr?torsk? rozhran?',
|
'Admin design page': 'Admin design page',
|
||||||
'administrative interface': 'rozhran? pro spr?vu',
|
'Admin language': 'jazyk rozhraní',
|
||||||
'Administrator Password:': 'Administr?torsk? heslo:',
|
'Administrative interface': 'pro administrátorské rozhraní klikněte sem',
|
||||||
'Ajax Recipes': 'Recepty s ajaxem',
|
'Administrative Interface': 'Administrátorské rozhraní',
|
||||||
'and rename it:': 'a p?ejmenovat na:',
|
'administrative interface': 'rozhraní pro správu',
|
||||||
'appadmin': 'appadmin',
|
'Administrator Password:': 'Administrátorské heslo:',
|
||||||
'appadmin is disabled because insecure channel': 'appadmin je zak?zan? bez zabezpe?en?ho spojen?',
|
'Ajax Recipes': 'Recepty s ajaxem',
|
||||||
'application "%s" uninstalled': 'application "%s" odinstalov?na',
|
'An error occured, please %s the page': 'An error occured, please %s the page',
|
||||||
'application compiled': 'aplikace zkompilov?na',
|
'and rename it:': 'a přejmenovat na:',
|
||||||
'Application name:': 'N?zev aplikace:',
|
'appadmin': 'appadmin',
|
||||||
'are not used': 'nepou?ita',
|
'appadmin is disabled because insecure channel': 'appadmin je zakázaná bez zabezpečeného spojení',
|
||||||
'are not used yet': 'je?t? nepou?ita',
|
'Application': 'Application',
|
||||||
'Are you sure you want to delete this object?': 'Opravdu chcete odstranit tento objekt?',
|
'application "%s" uninstalled': 'application "%s" odinstalována',
|
||||||
'Are you sure you want to uninstall application "%s"?': 'Opravdu chcete odinstalovat aplikaci "%s"?',
|
'application compiled': 'aplikace zkompilována',
|
||||||
'Available Databases and Tables': 'Dostupn? datab?ze a tabulky',
|
'Application name:': 'Název aplikace:',
|
||||||
'back': 'zp?t',
|
'are not used': 'nepoužita',
|
||||||
'Basics': 'Basics',
|
'are not used yet': 'ještě nepoužita',
|
||||||
'Begin': 'Za??t',
|
'Are you sure you want to delete this object?': 'Opravdu chcete odstranit tento objekt?',
|
||||||
'breakpoint': 'bod p?eru?en?',
|
'Are you sure you want to uninstall application "%s"?': 'Opravdu chcete odinstalovat aplikaci "%s"?',
|
||||||
'Breakpoints': 'Body p?eru?en?',
|
'arguments': 'arguments',
|
||||||
'breakpoints': 'body p?eru?en?',
|
'at char %s': 'at char %s',
|
||||||
'Buy this book': 'Koupit web2py knihu',
|
'at line %s': 'at line %s',
|
||||||
'Cache': 'Cache',
|
'ATTENTION:': 'ATTENTION:',
|
||||||
'cache': 'cache',
|
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.',
|
||||||
'Cache Keys': 'Kl??e cache',
|
'Available Databases and Tables': 'Dostupné databáze a tabulky',
|
||||||
'cache, errors and sessions cleaned': 'cache, chyby a relace byly pro?i?t?ny',
|
'back': 'zpět',
|
||||||
'can be a git repo': 'm??e to b?t git repo',
|
'Back to wizard': 'Back to wizard',
|
||||||
'Cancel': 'Storno',
|
'Basics': 'Basics',
|
||||||
'Cannot be empty': 'Nem??e b?t pr?zdn?',
|
'Begin': 'Začít',
|
||||||
'Change admin password': 'Zm?nit heslo pro str?vu aplikac?',
|
'breakpoint': 'bod přerušení',
|
||||||
'Change password': 'Zm?na hesla',
|
'Breakpoints': 'Body přerušení',
|
||||||
'check all': 'v?e ozna?it',
|
'breakpoints': 'body přerušení',
|
||||||
'Check for upgrades': 'Zkusit aktualizovat',
|
'Buy this book': 'Koupit web2py knihu',
|
||||||
'Check to delete': 'Ozna?it ke smaz?n?',
|
'Cache': 'Cache',
|
||||||
'Check to delete:': 'Ozna?it ke smaz?n?:',
|
'cache': 'cache',
|
||||||
'Checking for upgrades...': 'Zji??uji, zda jsou k dispozici aktualizace...',
|
'Cache Keys': 'Klíče cache',
|
||||||
'Clean': 'Pro?istit',
|
'cache, errors and sessions cleaned': 'cache, chyby a relace byly pročištěny',
|
||||||
'Clear CACHE?': 'Vymazat CACHE?',
|
'can be a git repo': 'může to být git repo',
|
||||||
'Clear DISK': 'Vymazat DISK',
|
'Cancel': 'Storno',
|
||||||
'Clear RAM': 'Vymazat RAM',
|
'Cannot be empty': 'Nemůže být prázdné',
|
||||||
'Click row to expand traceback': 'Pro rozbalen? stopy, klikn?te na ??dek',
|
'Change Admin Password': 'Změnit heslo pro správu',
|
||||||
'Click row to view a ticket': 'Pro zobrazen? chyby (ticketu), klikn?te na ??dku...',
|
'Change admin password': 'Změnit heslo pro správu aplikací',
|
||||||
'Client IP': 'IP adresa klienta',
|
'Change password': 'Změna hesla',
|
||||||
'collapse/expand all': 'v?e sbalit/rozbalit',
|
'check all': 'vše označit',
|
||||||
'Community': 'Komunita',
|
'Check for upgrades': 'Zkusit aktualizovat',
|
||||||
'Compile': 'Zkompilovat',
|
'Check to delete': 'Označit ke smazání',
|
||||||
'compiled application removed': 'zkompilovan? aplikace smaz?na',
|
'Check to delete:': 'Označit ke smazání:',
|
||||||
'Components and Plugins': 'Komponenty a z?suvn? moduly',
|
'Checking for upgrades...': 'Zjišťuji, zda jsou k dispozici aktualizace...',
|
||||||
'Condition': 'Podm?nka',
|
'Clean': 'Pročistit',
|
||||||
'Controller': 'Kontrol?r (Controller)',
|
'Clear CACHE?': 'Vymazat CACHE?',
|
||||||
'Controllers': 'Kontrol?ry',
|
'Clear DISK': 'Vymazat DISK',
|
||||||
'controllers': 'kontrol?ry',
|
'Clear RAM': 'Vymazat RAM',
|
||||||
'Copyright': 'Copyright',
|
'Click row to expand traceback': 'Pro rozbalení stopy, klikněte na řádek',
|
||||||
'Count': 'Po?et',
|
'Click row to view a ticket': 'Pro zobrazení chyby (ticketu), klikněte na řádku...',
|
||||||
'Create': 'Vytvo?it',
|
'Client IP': 'IP adresa klienta',
|
||||||
'create file with filename:': 'vytvo?it soubor s n?zvem:',
|
'code': 'code',
|
||||||
'created by': 'vytvo?il',
|
'Code listing': 'Code listing',
|
||||||
'Created By': 'Vytvo?eno - k?m',
|
'collapse/expand all': 'vše sbalit/rozbalit',
|
||||||
'Created On': 'Vytvo?eno - kdy',
|
'Community': 'Komunita',
|
||||||
'crontab': 'crontab',
|
'Compile': 'Zkompilovat',
|
||||||
'Current request': 'Aktu?ln? po?adavek',
|
'compiled application removed': 'zkompilovaná aplikace smazána',
|
||||||
'Current response': 'Aktu?ln? odpov??',
|
'Components and Plugins': 'Komponenty a zásuvné moduly',
|
||||||
'Current session': 'Aktu?ln? relace',
|
'Condition': 'Podmínka',
|
||||||
'currently running': 'pr?v? b???',
|
'continue': 'continue',
|
||||||
'currently saved or': 'ulo?eno nebo',
|
'Controller': 'Kontrolér (Controller)',
|
||||||
'customize me!': 'upravte m?!',
|
'Controllers': 'Kontroléry',
|
||||||
'data uploaded': 'data nahr?na',
|
'controllers': 'kontroléry',
|
||||||
'Database': 'Rozhran? datab?ze',
|
'Copyright': 'Copyright',
|
||||||
'Database %s select': 'datab?ze %s v?b?r',
|
'Count': 'Počet',
|
||||||
'database administration': 'spr?va datab?ze',
|
'Create': 'Vytvořit',
|
||||||
'Date and Time': 'Datum a ?as',
|
'create file with filename:': 'vytvořit soubor s názvem:',
|
||||||
'day': 'den',
|
'created by': 'vytvořil',
|
||||||
'db': 'db',
|
'Created By': 'Vytvořeno - kým',
|
||||||
'DB Model': 'Datab?zov? model',
|
'Created On': 'Vytvořeno - kdy',
|
||||||
'Debug': 'Lad?n?',
|
'crontab': 'crontab',
|
||||||
'Delete': 'Smazat',
|
'Current request': 'Aktuální požadavek',
|
||||||
'delete': 'smazat',
|
'Current response': 'Aktuální odpověď',
|
||||||
'delete all checked': 'smazat v?e ozna?en?',
|
'Current session': 'Aktuální relace',
|
||||||
'Delete this file (you will be asked to confirm deletion)': 'Smazat tento soubor (budete po??d?n o potvrzen? maz?n?)',
|
'currently running': 'právě běží',
|
||||||
'Delete:': 'Smazat:',
|
'currently saved or': 'uloženo nebo',
|
||||||
'deleted after first hit': 'smazat po prvn?m dosa?en?',
|
'customize me!': 'upravte mě!',
|
||||||
'Demo': 'Demo',
|
'data uploaded': 'data nahrána',
|
||||||
'Deploy': 'Nahr?t',
|
'Database': 'Rozhraní databáze',
|
||||||
'Deploy on Google App Engine': 'Nahr?t na Google App Engine',
|
'Database %s select': 'databáze %s výběr',
|
||||||
'Deploy to OpenShift': 'Nahr?t na OpenShift',
|
'Database administration': 'Database administration',
|
||||||
'Deployment Recipes': 'Postupy pro deployment',
|
'database administration': 'správa databáze',
|
||||||
'Description': 'Popis',
|
'Date and Time': 'Datum a čas',
|
||||||
'design': 'n?vrh',
|
'day': 'den',
|
||||||
'direction: ltr': 'direction: ltr',
|
'db': 'db',
|
||||||
'Disable': 'Zablokovat',
|
'DB Model': 'Databázový model',
|
||||||
'DISK': 'DISK',
|
'Debug': 'Ladění',
|
||||||
'Disk Cache Keys': 'Kl??e diskov? cache',
|
'defines tables': 'defines tables',
|
||||||
'Disk Cleared': 'Disk smaz?n',
|
'Delete': 'Smazat',
|
||||||
'docs': 'dokumentace',
|
'delete': 'smazat',
|
||||||
'Documentation': 'Dokumentace',
|
'delete all checked': 'smazat vše označené',
|
||||||
"Don't know what to do?": 'Nev?te kudy kam?',
|
'delete plugin': 'delete plugin',
|
||||||
'done!': 'hotovo!',
|
'Delete this file (you will be asked to confirm deletion)': 'Smazat tento soubor (budete požádán o potvrzení mazání)',
|
||||||
'Download': 'St?hnout',
|
'Delete:': 'Smazat:',
|
||||||
'download layouts': 'st?hnout moduly rozvr?en? str?nky',
|
'deleted after first hit': 'smazat po prvním dosažení',
|
||||||
'download plugins': 'st?hnout z?suvn? moduly',
|
'Demo': 'Demo',
|
||||||
'E-mail': 'E-mail',
|
'Deploy': 'Nahrát',
|
||||||
'Edit': 'Upravit',
|
'Deploy on Google App Engine': 'Nahrát na Google App Engine',
|
||||||
'edit all': 'edit all',
|
'Deploy to OpenShift': 'Nahrát na OpenShift',
|
||||||
'Edit application': 'Spr?va aplikace',
|
'Deployment Recipes': 'Postupy pro deployment',
|
||||||
'Edit current record': 'Upravit aktu?ln? z?znam',
|
'Description': 'Popis',
|
||||||
'Edit Profile': 'Upravit profil',
|
'design': 'návrh',
|
||||||
'Editing file "%s"': '?prava souboru "%s"',
|
'Detailed traceback description': 'Podrobný výpis prostředí',
|
||||||
'Editing Language file': '?prava jazykov?ho souboru',
|
'details': 'podrobnosti',
|
||||||
'Email and SMS': 'Email a SMS',
|
'direction: ltr': 'směr: ltr',
|
||||||
'Enable': 'Odblokovat',
|
'Disable': 'Zablokovat',
|
||||||
'enter a number between %(min)g and %(max)g': 'zadejte ??slo mezi %(min)g a %(max)g',
|
'DISK': 'DISK',
|
||||||
'enter an integer between %(min)g and %(max)g': 'zadejte cel? ??slo mezi %(min)g a %(max)g',
|
'Disk Cache Keys': 'Klíče diskové cache',
|
||||||
'Error': 'Chyba',
|
'Disk Cleared': 'Disk smazán',
|
||||||
'Error logs for "%(app)s"': 'Seznam v?skytu chyb pro aplikaci "%(app)s"',
|
'docs': 'dokumentace',
|
||||||
'Errors': 'Chyby',
|
'Documentation': 'Dokumentace',
|
||||||
'export as csv file': 'exportovat do .csv souboru',
|
"Don't know what to do?": 'Nevíte kudy kam?',
|
||||||
'exposes': 'vystavuje',
|
'done!': 'hotovo!',
|
||||||
'extends': 'roz?i?uje',
|
'Download': 'Stáhnout',
|
||||||
'FAQ': '?asto kladen? dotazy',
|
'download layouts': 'stáhnout moduly rozvržení stránky',
|
||||||
'File': 'Soubor',
|
'download plugins': 'stáhnout zásuvné moduly',
|
||||||
'file': 'soubor',
|
'E-mail': 'E-mail',
|
||||||
'file saved on %(time)s': 'soubor ulo?en %(time)s',
|
'Edit': 'Upravit',
|
||||||
'Filename': 'N?zev souboru',
|
'edit all': 'edit all',
|
||||||
'filter': 'filtr',
|
'Edit application': 'Správa aplikace',
|
||||||
'Find Next': 'Naj?t dal??',
|
'edit controller': 'edit controller',
|
||||||
'Find Previous': 'Naj?t p?edchoz?',
|
'Edit current record': 'Upravit aktuální záznam',
|
||||||
'First name': 'K?estn? jm?no',
|
'Edit Profile': 'Upravit profil',
|
||||||
'Forgot username?': 'Zapomn?l jste svoje p?ihla?ovac? jm?no?',
|
'edit views:': 'upravit pohled:',
|
||||||
'forgot username?': 'zapomn?l jste svoje p?ihla?ovac? jm?no?',
|
'Editing file "%s"': 'Úprava souboru "%s"',
|
||||||
'Forms and Validators': 'Formul??e a valid?tory',
|
'Editing Language file': 'Úprava jazykového souboru',
|
||||||
'Free Applications': 'Aplikace zdarma',
|
'Editing Plural Forms File': 'Editing Plural Forms File',
|
||||||
'Generate': 'Vytvo?it',
|
'Email and SMS': 'Email a SMS',
|
||||||
'Get from URL:': 'St?hnout z internetu:',
|
'Enable': 'Odblokovat',
|
||||||
'Git Pull': 'Git Pull',
|
'enter a number between %(min)g and %(max)g': 'zadejte číslo mezi %(min)g a %(max)g',
|
||||||
'Git Push': 'Git Push',
|
'enter an integer between %(min)g and %(max)g': 'zadejte celé číslo mezi %(min)g a %(max)g',
|
||||||
'Globals##debug': 'Glob?ln? prom?nn?',
|
'Error': 'Chyba',
|
||||||
'go!': 'OK!',
|
'Error logs for "%(app)s"': 'Seznam výskytu chyb pro aplikaci "%(app)s"',
|
||||||
'Group %(group_id)s created': 'Skupina %(group_id)s vytvo?ena',
|
'Error snapshot': 'Snapshot chyby',
|
||||||
'Group ID': 'ID skupiny',
|
'Error ticket': 'Ticket chyby',
|
||||||
'Groups': 'Skupiny',
|
'Errors': 'Chyby',
|
||||||
'Hello World': 'Ahoj sv?te',
|
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
|
||||||
'Help': 'N?pov?da',
|
'Exception %s': 'Exception %s',
|
||||||
'Hide/Show Translated strings': 'Skr?t/Zobrazit p?elo?en? texty',
|
'Exception instance attributes': 'Prvky instance výjimky',
|
||||||
'Hits': 'Kolikr?t dosa?eno',
|
'Expand Abbreviation': 'Expand Abbreviation',
|
||||||
'Home': 'Domovsk? str?nka',
|
'export as csv file': 'exportovat do .csv souboru',
|
||||||
'honored only if the expression evaluates to true': 'br?t v potaz jen kdy? se tato podm?nka vyhodnot? kladn?',
|
'exposes': 'vystavuje',
|
||||||
'How did you get here?': 'Jak jste se sem vlastn? dostal?',
|
'exposes:': 'vystavuje funkce:',
|
||||||
'import': 'import',
|
'extends': 'rozšiřuje',
|
||||||
'Import/Export': 'Import/Export',
|
'failed to compile file because:': 'soubor se nepodařilo zkompilovat, protože:',
|
||||||
'includes': 'zahrnuje',
|
'FAQ': 'Často kladené dotazy',
|
||||||
'Index': 'Index',
|
'File': 'Soubor',
|
||||||
'insert new': 'vlo?it nov? z?znam ',
|
'file': 'soubor',
|
||||||
'insert new %s': 'vlo?it nov? z?znam %s',
|
'file "%(filename)s" created': 'file "%(filename)s" created',
|
||||||
'Install': 'Instalovat',
|
'file saved on %(time)s': 'soubor uložen %(time)s',
|
||||||
'Installed applications': 'Nainstalovan? aplikace',
|
'file saved on %s': 'soubor uložen %s',
|
||||||
'Internal State': 'Vnit?n? stav',
|
'Filename': 'Název souboru',
|
||||||
'Introduction': '?vod',
|
'filter': 'filtr',
|
||||||
'Invalid email': 'Neplatn? email',
|
'Find Next': 'Najít další',
|
||||||
'Invalid password': 'Nespr?vn? heslo',
|
'Find Previous': 'Najít předchozí',
|
||||||
'invalid password.': 'neplatn? heslo',
|
'First name': 'Křestní jméno',
|
||||||
'Invalid Query': 'Neplatn? dotaz',
|
'Forgot username?': 'Zapomněl jste svoje přihlašovací jméno?',
|
||||||
'invalid request': 'Neplatn? po?adavek',
|
'forgot username?': 'zapomněl jste svoje přihlašovací jméno?',
|
||||||
'Is Active': 'Je aktivn?',
|
'Forms and Validators': 'Formuláře a validátory',
|
||||||
'It is %s %%{day} today.': 'Dnes je to %s %%{den}.',
|
'Frames': 'Frames',
|
||||||
'Key': 'Kl??',
|
'Free Applications': 'Aplikace zdarma',
|
||||||
'Key bindings': 'Vazby kl???',
|
'Functions with no doctests will result in [passed] tests.': 'Functions with no doctests will result in [passed] tests.',
|
||||||
'languages': 'jazyky',
|
'Generate': 'Vytvořit',
|
||||||
'Languages': 'Jazyky',
|
'Get from URL:': 'Stáhnout z internetu:',
|
||||||
'Last name': 'P??jmen?',
|
'Git Pull': 'Git Pull',
|
||||||
'Last saved on:': 'Naposledy ulo?eno:',
|
'Git Push': 'Git Push',
|
||||||
'Layout': 'Rozvr?en? str?nky (layout)',
|
'Globals##debug': 'Globální proměnné',
|
||||||
'Layout Plugins': 'Moduly rozvr?en? str?nky (Layout Plugins)',
|
'go!': 'OK!',
|
||||||
'Layouts': 'Rozvr?en? str?nek',
|
'Goto': 'Goto',
|
||||||
'License for': 'Licence pro',
|
'graph model': 'graph model',
|
||||||
'Line number': '??slo ??dku',
|
'Group %(group_id)s created': 'Skupina %(group_id)s vytvořena',
|
||||||
'LineNo': '?.??dku',
|
'Group ID': 'ID skupiny',
|
||||||
'Live Chat': 'Online pokec',
|
'Groups': 'Skupiny',
|
||||||
'loading...': 'nahr?v?m...',
|
'Hello World': 'Ahoj světe',
|
||||||
'Locals##debug': 'Lok?ln? prom?nn?',
|
'Help': 'Nápověda',
|
||||||
'Logged in': 'P?ihl??en? prob?hlo ?sp??n?',
|
'Hide/Show Translated strings': 'Skrýt/Zobrazit přeložené texty',
|
||||||
'Logged out': 'Odhl??en? prob?hlo ?sp??n?',
|
'Hits': 'Kolikrát dosaženo',
|
||||||
'Login': 'P?ihl?sit se',
|
'Home': 'Domovská stránka',
|
||||||
'login': 'p?ihl?sit se',
|
'honored only if the expression evaluates to true': 'brát v potaz jen když se tato podmínka vyhodnotí kladně',
|
||||||
'Login to the Administrative Interface': 'P?ihl?sit se do Spr?vce aplikac?',
|
'How did you get here?': 'Jak jste se sem vlastně dostal?',
|
||||||
'logout': 'odhl?sit se',
|
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
|
||||||
'Logout': 'Odhl?sit se',
|
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
|
||||||
'Lost Password': 'Zapomn?l jste heslo',
|
'import': 'import',
|
||||||
'Lost password?': 'Zapomn?l jste heslo?',
|
'Import/Export': 'Import/Export',
|
||||||
'lost password?': 'zapomn?l jste heslo?',
|
'includes': 'zahrnuje',
|
||||||
'Manage Cache': 'Manage Cache',
|
'Index': 'Index',
|
||||||
'Menu Model': 'Model rozbalovac? nab?dky',
|
'insert new': 'vložit nový záznam ',
|
||||||
'Models': 'Modely',
|
'insert new %s': 'vložit nový záznam %s',
|
||||||
'models': 'modely',
|
'inspect attributes': 'inspect attributes',
|
||||||
'Modified By': 'Zm?n?no - k?m',
|
'Install': 'Instalovat',
|
||||||
'Modified On': 'Zm?n?no - kdy',
|
'Installed applications': 'Nainstalované aplikace',
|
||||||
'Modules': 'Moduly',
|
'Interaction at %s line %s': 'Interakce v %s, na řádce %s',
|
||||||
'modules': 'moduly',
|
'Interactive console': 'Interaktivní příkazová řádka',
|
||||||
'My Sites': 'Spr?va aplikac?',
|
'Internal State': 'Vnitřní stav',
|
||||||
'Name': 'Jm?no',
|
'Introduction': 'Úvod',
|
||||||
'New Application Wizard': 'Nov? pr?vodce aplikac?',
|
'Invalid email': 'Neplatný email',
|
||||||
'New application wizard': 'Nov? pr?vodce aplikac?',
|
'Invalid password': 'Nesprávné heslo',
|
||||||
'New password': 'Nov? heslo',
|
'invalid password.': 'neplatné heslo',
|
||||||
'New Record': 'Nov? z?znam',
|
'Invalid Query': 'Neplatný dotaz',
|
||||||
'new record inserted': 'nov? z?znam byl zalo?en',
|
'invalid request': 'Neplatný požadavek',
|
||||||
'New simple application': 'Vytvo?it primitivn? aplikaci',
|
'Is Active': 'Je aktivní',
|
||||||
'next 100 rows': 'dal??ch 100 ??dk?',
|
'It is %s %%{day} today.': 'Dnes je to %s %%{den}.',
|
||||||
'No databases in this application': 'V t?to aplik?ci nejsou ??dn? datab?ze',
|
'Key': 'Klíč',
|
||||||
'No Interaction yet': 'Je?t? ??dn? interakce nenastala',
|
'Key bindings': 'Vazby klíčů',
|
||||||
'No ticket_storage.txt found under /private folder': 'Soubor ticket_storage.txt v adres??i /private nenalezen',
|
'Key bindings for ZenCoding Plugin': 'Key bindings for ZenCoding Plugin',
|
||||||
'Object or table name': 'Objekt ?i tabulka',
|
'languages': 'jazyky',
|
||||||
'Old password': 'P?vodn? heslo',
|
'Languages': 'Jazyky',
|
||||||
'online designer': 'online n?vrh??',
|
'Last name': 'Příjmení',
|
||||||
'Online examples': 'P??klady online',
|
'Last saved on:': 'Naposledy uloženo:',
|
||||||
'or import from csv file': 'nebo importovat z .csv souboru',
|
'Layout': 'Rozvržení stránky (layout)',
|
||||||
'Origin': 'P?vod',
|
'Layout Plugins': 'Moduly rozvržení stránky (Layout Plugins)',
|
||||||
'Original/Translation': 'Origin?l/P?eklad',
|
'Layouts': 'Rozvržení stránek',
|
||||||
'Other Plugins': 'Ostatn? moduly',
|
'License for': 'Licence pro',
|
||||||
'Other Recipes': 'Ostatn? z?suvn? moduly',
|
'Line number': 'Číslo řádku',
|
||||||
'Overview': 'P?ehled',
|
'LineNo': 'Č.řádku',
|
||||||
'Overwrite installed app': 'P?epsat instalovanou aplikaci',
|
'Live Chat': 'Online pokec',
|
||||||
'Pack all': 'Zabalit',
|
'loading...': 'nahrávám...',
|
||||||
'Pack compiled': 'Zabalit zkompilovan?',
|
'locals': 'locals',
|
||||||
'password': 'heslo',
|
'Locals##debug': 'Lokální proměnné',
|
||||||
'Password': 'Heslo',
|
'Logged in': 'Přihlášení proběhlo úspěšně',
|
||||||
"Password fields don't match": 'Hesla se neshoduj?',
|
'Logged out': 'Odhlášení proběhlo úspěšně',
|
||||||
'Please': 'Pros?m',
|
'Login': 'Přihlásit se',
|
||||||
'plugins': 'z?suvn? moduly',
|
'login': 'přihlásit se',
|
||||||
'Plugins': 'Z?suvn? moduly',
|
'Login to the Administrative Interface': 'Přihlásit se do Správce aplikací',
|
||||||
'Plural-Forms:': 'Mno?n? ??sla:',
|
'logout': 'odhlásit se',
|
||||||
'Powered by': 'Poh?n?no',
|
'Logout': 'Odhlásit se',
|
||||||
'Preface': 'P?edmluva',
|
'Lost Password': 'Zapomněl jste heslo',
|
||||||
'previous 100 rows': 'p?edchoz?ch 100 ??dk?',
|
'Lost password?': 'Zapomněl jste heslo?',
|
||||||
'Private files': 'Soukrom? soubory',
|
'lost password?': 'zapomněl jste heslo?',
|
||||||
'private files': 'soukrom? soubory',
|
'Manage': 'Manage',
|
||||||
'profile': 'profil',
|
'Manage Cache': 'Manage Cache',
|
||||||
'Project Progress': 'V?voj projektu',
|
'Menu Model': 'Model rozbalovací nabídky',
|
||||||
'Python': 'Python',
|
'Models': 'Modely',
|
||||||
'Query:': 'Dotaz:',
|
'models': 'modely',
|
||||||
'Quick Examples': 'Kr?tk? p??klady',
|
'Modified By': 'Změněno - kým',
|
||||||
'RAM': 'RAM',
|
'Modified On': 'Změněno - kdy',
|
||||||
'RAM Cache Keys': 'Kl??e RAM Cache',
|
'Modules': 'Moduly',
|
||||||
'Ram Cleared': 'RAM smaz?na',
|
'modules': 'moduly',
|
||||||
'Readme': 'N?pov?da',
|
'My Sites': 'Správa aplikací',
|
||||||
'Recipes': 'Postupy jak na to',
|
'Name': 'Jméno',
|
||||||
'Record': 'Z?znam',
|
'new application "%s" created': 'nová aplikace "%s" vytvořena',
|
||||||
'record does not exist': 'z?znam neexistuje',
|
'New Application Wizard': 'Nový průvodce aplikací',
|
||||||
'Record ID': 'ID z?znamu',
|
'New application wizard': 'Nový průvodce aplikací',
|
||||||
'Record id': 'id z?znamu',
|
'New password': 'Nové heslo',
|
||||||
'refresh': 'obnovte',
|
'New Record': 'Nový záznam',
|
||||||
'register': 'registrovat',
|
'new record inserted': 'nový záznam byl založen',
|
||||||
'Register': 'Zaregistrovat se',
|
'New simple application': 'Vytvořit primitivní aplikaci',
|
||||||
'Registration identifier': 'Registra?n? identifik?tor',
|
'next': 'next',
|
||||||
'Registration key': 'Registra?n? kl??',
|
'next 100 rows': 'dalších 100 řádků',
|
||||||
'Reload routes': 'Znovu nahr?t cesty',
|
'No databases in this application': 'V této aplikaci nejsou žádné databáze',
|
||||||
'Remember me (for 30 days)': 'Zapamatovat na 30 dn?',
|
'No Interaction yet': 'Ještě žádná interakce nenastala',
|
||||||
'Remove compiled': 'Odstranit zkompilovan?',
|
'No ticket_storage.txt found under /private folder': 'Soubor ticket_storage.txt v adresáři /private nenalezen',
|
||||||
'Removed Breakpoint on %s at line %s': 'Bod p?eru?en? smaz?n - soubor %s na ??dce %s',
|
'Object or table name': 'Objekt či tabulka',
|
||||||
'Replace': 'Zam?nit',
|
'Old password': 'Původní heslo',
|
||||||
'Replace All': 'Zam?nit v?e',
|
'online designer': 'online návrhář',
|
||||||
'Reset Password key': 'Reset registra?n?ho kl??e',
|
'Online examples': 'Příklady online',
|
||||||
'restart': 'restart',
|
'Open new app in new window': 'Open new app in new window',
|
||||||
'restore': 'obnovit',
|
'or alternatively': 'or alternatively',
|
||||||
'Retrieve username': 'Z?skat p?ihla?ovac? jm?no',
|
'Or Get from URL:': 'Or Get from URL:',
|
||||||
'revert': 'vr?tit se k p?vodn?mu',
|
'or import from csv file': 'nebo importovat z .csv souboru',
|
||||||
'Role': 'Role',
|
'Origin': 'Původ',
|
||||||
'Rows in Table': 'Z?znamy v tabulce',
|
'Original/Translation': 'Originál/Překlad',
|
||||||
'Rows selected': 'Z?znam? zobrazeno',
|
'Other Plugins': 'Ostatní moduly',
|
||||||
'rules are not defined': 'pravidla nejsou definov?na',
|
'Other Recipes': 'Ostatní zásuvné moduly',
|
||||||
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Spust? testy v tomto souboru (ke spu?t?n? v?ech test?, pou?ijte tla??tko 'test')",
|
'Overview': 'Přehled',
|
||||||
'Running on %s': 'B??? na %s',
|
'Overwrite installed app': 'Přepsat instalovanou aplikaci',
|
||||||
'Save': 'Ulo?it',
|
'Pack all': 'Zabalit',
|
||||||
'Save via Ajax': 'Ulo?it pomoc? Ajaxu',
|
'Pack compiled': 'Zabalit zkompilované',
|
||||||
'Saved file hash:': 'hash ulo?en?ho souboru:',
|
'pack plugin': 'pack plugin',
|
||||||
'Semantic': 'Modul semantic',
|
'password': 'heslo',
|
||||||
'Services': 'Slu?by',
|
'Password': 'Heslo',
|
||||||
'Set Breakpoint on %s at line %s: %s': 'Bod p?eru?en? nastaven v souboru %s na ??dce %s: %s',
|
"Password fields don't match": 'Hesla se neshodují',
|
||||||
'shell': 'p??kazov? ??dka',
|
'Peeking at file': 'Peeking at file',
|
||||||
'Site': 'Spr?va aplikac?',
|
'Please': 'Prosím',
|
||||||
'Size of cache:': 'Velikost cache:',
|
'Plugin "%s" in application': 'Plugin "%s" in application',
|
||||||
'skip to generate': 'skip to generate',
|
'plugins': 'zásuvné moduly',
|
||||||
'Sorry, could not find mercurial installed': 'Bohu?el mercurial nen? nainstalov?n.',
|
'Plugins': 'Zásuvné moduly',
|
||||||
'Start a new app': 'Vytvo?it novou aplikaci',
|
'Plural Form #%s': 'Plural Form #%s',
|
||||||
'Start searching': 'Za??t hled?n?',
|
'Plural-Forms:': 'Množná čísla:',
|
||||||
'Start wizard': 'Spustit pr?vodce',
|
'Powered by': 'Poháněno',
|
||||||
'state': 'stav',
|
'Preface': 'Předmluva',
|
||||||
'static': 'statick? soubory',
|
'previous 100 rows': 'předchozích 100 řádků',
|
||||||
'Static files': 'Statick? soubory',
|
'Private files': 'Soukromé soubory',
|
||||||
'Statistics': 'Statistika',
|
'private files': 'soukromé soubory',
|
||||||
'Step': 'Step',
|
'profile': 'profil',
|
||||||
'Stylesheet': 'CSS styly',
|
'Project Progress': 'Vývoj projektu',
|
||||||
'submit': 'odeslat',
|
'Python': 'Python',
|
||||||
'Submit': 'Odeslat',
|
'Query:': 'Dotaz:',
|
||||||
'successful': '?sp??n?',
|
'Quick Examples': 'Krátké příklady',
|
||||||
'Support': 'Podpora',
|
'RAM': 'RAM',
|
||||||
'Sure you want to delete this object?': 'Opravdu chcete smazat tento objekt?',
|
'RAM Cache Keys': 'Klíče RAM Cache',
|
||||||
'Table': 'tabulka',
|
'Ram Cleared': 'RAM smazána',
|
||||||
'Table name': 'N?zev tabulky',
|
'Readme': 'Nápověda',
|
||||||
'Temporary': 'Do?asn?',
|
'Recipes': 'Postupy jak na to',
|
||||||
'test': 'test',
|
'Record': 'Záznam',
|
||||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"Dotaz" je podm?nka, nap??klad "db.tabulka1.pole1==\'hodnota\'". Podm?nka "db.tabulka1.pole1==db.tabulka2.pole2" pak vytvo?? SQL JOIN.',
|
'record does not exist': 'záznam neexistuje',
|
||||||
'The application logic, each URL path is mapped in one exposed function in the controller': 'Logika aplikace: ka?d? URL je mapov?na na funkci vystavovanou kontrol?rem.',
|
'Record ID': 'ID záznamu',
|
||||||
'The Core': 'J?dro (The Core)',
|
'Record id': 'id záznamu',
|
||||||
'The data representation, define database tables and sets': 'Reprezentace dat: definovat tabulky datab?ze a z?znamy',
|
'refresh': 'obnovte',
|
||||||
'The output of the file is a dictionary that was rendered by the view %s': 'V?stup ze souboru je slovn?k, kter? se zobrazil v pohledu %s.',
|
'register': 'registrovat',
|
||||||
'The presentations layer, views are also known as templates': 'Prezenta?n? vrstva: pohledy ?i templaty (?ablony)',
|
'Register': 'Zaregistrovat se',
|
||||||
'The Views': 'Pohledy (The Views)',
|
'Registration identifier': 'Registrační identifikátor',
|
||||||
'There are no plugins': '??dn? moduly nejsou instalov?ny.',
|
'Registration key': 'Registrační klíč',
|
||||||
'There are no private files': '??dn? soukrom? soubory neexistuj?.',
|
'reload': 'reload',
|
||||||
'These files are not served, they are only available from within your app': 'Tyto soubory jsou klient?m nep??stupn?. K dispozici jsou pouze v r?mci aplikace.',
|
'Reload routes': 'Znovu nahrát cesty',
|
||||||
'These files are served without processing, your images go here': 'Tyto soubory jsou serv?rov?ny bez p??davn? logiky, sem pat?? nap?. obr?zky.',
|
'Remember me (for 30 days)': 'Zapamatovat na 30 dní',
|
||||||
'This App': 'Tato aplikace',
|
'Remove compiled': 'Odstranit zkompilované',
|
||||||
'This is a copy of the scaffolding application': 'Toto je kopie aplikace skelet.',
|
'Removed Breakpoint on %s at line %s': 'Bod přerušení smazán - soubor %s na řádce %s',
|
||||||
'this page to see if a breakpoint was hit and debug interaction is required.': 'tuto str?nku, abyste uvid?li, zda se dos?hlo bodu p?eru?en?.',
|
'Replace': 'Zaměnit',
|
||||||
'Ticket': 'Ticket',
|
'Replace All': 'Zaměnit vše',
|
||||||
'Time in Cache (h:m:s)': '?as v Cache (h:m:s)',
|
'request': 'request',
|
||||||
'Timestamp': '?asov? raz?tko',
|
'Reset Password key': 'Reset registračního klíče',
|
||||||
'to previous version.': 'k p?edchoz? verzi.',
|
'response': 'response',
|
||||||
'To create a plugin, name a file/folder plugin_[name]': 'Z?suvn? modul vytvo??te tak, ?e pojmenujete soubor/adres?? plugin_[jm?no modulu]',
|
'restart': 'restart',
|
||||||
'To emulate a breakpoint programatically, write:': 'K nastaven? bodu p?eru?en? v k?du programu, napi?te:',
|
'restore': 'obnovit',
|
||||||
'to use the debugger!': ', abyste mohli lad?c? program pou??vat!',
|
'Retrieve username': 'Získat přihlašovací jméno',
|
||||||
'toggle breakpoint': 'vyp./zap. bod p?eru?en?',
|
'return': 'return',
|
||||||
'Toggle Fullscreen': 'Na celou obrazovku a zp?t',
|
'revert': 'vrátit se k původnímu',
|
||||||
'too short': 'P??li? kr?tk?',
|
'Role': 'Role',
|
||||||
'Translation strings for the application': 'P?eklad text? pro aplikaci',
|
'Rows in Table': 'Záznamy v tabulce',
|
||||||
'Try the mobile interface': 'Zkuste rozhran? pro mobiln? za??zen?',
|
'Rows selected': 'Záznamů zobrazeno',
|
||||||
'Twitter': 'Twitter',
|
'rules are not defined': 'pravidla nejsou definována',
|
||||||
'unable to parse csv file': 'csv soubor ned? sa zpracovat',
|
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Spustí testy v tomto souboru (ke spuštění všech testů, použijte tlačítko 'test')",
|
||||||
'uncheck all': 'v?e odzna?it',
|
'Running on %s': 'Běží na %s',
|
||||||
'Uninstall': 'Odinstalovat',
|
'Save': 'Uložit',
|
||||||
'update': 'aktualizovat',
|
'Save file:': 'Save file:',
|
||||||
'update all languages': 'aktualizovat v?echny jazyky',
|
'Save via Ajax': 'Uložit pomocí Ajaxu',
|
||||||
'Update:': 'Upravit:',
|
'Saved file hash:': 'hash uloženého souboru:',
|
||||||
'upload': 'nahr?t',
|
'Semantic': 'Modul semantic',
|
||||||
'Upload a package:': 'Nahr?t bal?k:',
|
'Services': 'Služby',
|
||||||
'Upload and install packed application': 'Nahr?t a instalovat zabalenou aplikaci',
|
'session': 'session',
|
||||||
'upload file:': 'nahr?t soubor:',
|
'session expired': 'session expired',
|
||||||
'upload plugin file:': 'nahr?t soubor modulu:',
|
'Set Breakpoint on %s at line %s: %s': 'Bod přerušení nastaven v souboru %s na řádce %s: %s',
|
||||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Pou?ijte (...)&(...) pro AND, (...)|(...) pro OR a ~(...) pro NOT pro sestaven? slo?it?j??ch dotaz?.',
|
'shell': 'příkazová řádka',
|
||||||
'User %(id)s Logged-in': 'U?ivatel %(id)s p?ihl??en',
|
'Singular Form': 'Singular Form',
|
||||||
'User %(id)s Logged-out': 'U?ivatel %(id)s odhl??en',
|
'Site': 'Správa aplikací',
|
||||||
'User %(id)s Password changed': 'U?ivatel %(id)s zm?nil heslo',
|
'Size of cache:': 'Velikost cache:',
|
||||||
'User %(id)s Profile updated': 'U?ivatel %(id)s upravil profil',
|
'skip to generate': 'skip to generate',
|
||||||
'User %(id)s Registered': 'U?ivatel %(id)s se zaregistroval',
|
'Sorry, could not find mercurial installed': 'Bohužel mercurial není nainstalován.',
|
||||||
'User %(id)s Username retrieved': 'U?ivatel %(id)s si nachal zaslat p?ihla?ovac? jm?no',
|
'Start a new app': 'Vytvořit novou aplikaci',
|
||||||
'User ID': 'ID u?ivatele',
|
'Start searching': 'Začít hledání',
|
||||||
'Username': 'P?ihla?ovac? jm?no',
|
'Start wizard': 'Spustit průvodce',
|
||||||
'Verify Password': 'Zopakujte heslo',
|
'state': 'stav',
|
||||||
'Version %s.%s.%s (%s) %s': 'Verze %s.%s.%s (%s) %s',
|
'Static': 'Static',
|
||||||
'Versioning': 'Verzov?n?',
|
'static': 'statické soubory',
|
||||||
'Videos': 'Videa',
|
'Static files': 'Statické soubory',
|
||||||
'View': 'Pohled (View)',
|
'Statistics': 'Statistika',
|
||||||
'Views': 'Pohledy',
|
'Step': 'Step',
|
||||||
'views': 'pohledy',
|
'step': 'step',
|
||||||
'Web Framework': 'Web Framework',
|
'stop': 'stop',
|
||||||
'web2py is up to date': 'M?te aktu?ln? verzi web2py.',
|
'Stylesheet': 'CSS styly',
|
||||||
'web2py online debugger': 'Lad?c? online web2py program',
|
'submit': 'odeslat',
|
||||||
'web2py Recent Tweets': '?t?bet?n? na Twitteru o web2py',
|
'Submit': 'Odeslat',
|
||||||
'Welcome': 'V?tejte',
|
'successful': 'úspěšně',
|
||||||
'Welcome to web2py': 'Vitejte ve web2py',
|
'Support': 'Podpora',
|
||||||
'Welcome to web2py!': 'V?tejte ve web2py!',
|
'Sure you want to delete this object?': 'Opravdu chcete smazat tento objekt?',
|
||||||
'Which called the function %s located in the file %s': 'kter? zavolala funkci %s v souboru (kontrol?ru) %s.',
|
'Table': 'tabulka',
|
||||||
'You are successfully running web2py': '?sp??n? jste spustili web2py.',
|
'Table name': 'Název tabulky',
|
||||||
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'Nastavovat a mazat body p?eru?en? je t?? mo?no v r?mci editov?n? zdrojov?ho souboru p?es tla??tko Vyp./Zap. bod p?eru?en?',
|
'Temporary': 'Dočasný',
|
||||||
'You can modify this application and adapt it to your needs': 'Tuto aplikaci si m??ete upravit a p?izp?sobit ji sv?m pot?eb?m.',
|
'test': 'test',
|
||||||
'You need to set up and reach a': 'Je t?eba nejprve nastavit a doj?t a? na',
|
'Testing application': 'Testing application',
|
||||||
'You visited the url %s': 'Nav?t?vili jste str?nku %s,',
|
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"Dotaz" je podmínka, například "db.tabulka1.pole1==\'hodnota\'". Podmínka "db.tabulka1.pole1==db.tabulka2.pole2" pak vytvoří SQL JOIN.',
|
||||||
}
|
'The application logic, each URL path is mapped in one exposed function in the controller': 'Logika aplikace: každá URL je mapována na funkci vystavovanou kontrolérem.',
|
||||||
|
'The Core': 'Jádro (The Core)',
|
||||||
|
'The data representation, define database tables and sets': 'Reprezentace dat: definovat tabulky databáze a záznamy',
|
||||||
|
'The output of the file is a dictionary that was rendered by the view %s': 'Výstup ze souboru je slovník, který se zobrazil v pohledu %s.',
|
||||||
|
'The presentations layer, views are also known as templates': 'Prezentační vrstva: pohledy či templaty (šablony)',
|
||||||
|
'The Views': 'Pohledy (The Views)',
|
||||||
|
'There are no controllers': 'There are no controllers',
|
||||||
|
'There are no modules': 'There are no modules',
|
||||||
|
'There are no plugins': 'Žádné moduly nejsou instalovány.',
|
||||||
|
'There are no private files': 'Žádné soukromé soubory neexistují.',
|
||||||
|
'There are no static files': 'There are no static files',
|
||||||
|
'There are no translators, only default language is supported': 'There are no translators, only default language is supported',
|
||||||
|
'There are no views': 'There are no views',
|
||||||
|
'These files are not served, they are only available from within your app': 'Tyto soubory jsou klientům nepřístupné. K dispozici jsou pouze v rámci aplikace.',
|
||||||
|
'These files are served without processing, your images go here': 'Tyto soubory jsou servírovány bez přídavné logiky, sem patří např. obrázky.',
|
||||||
|
'This App': 'Tato aplikace',
|
||||||
|
'This is a copy of the scaffolding application': 'Toto je kopie aplikace skelet.',
|
||||||
|
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
|
||||||
|
'This is the %(filename)s template': 'This is the %(filename)s template',
|
||||||
|
'this page to see if a breakpoint was hit and debug interaction is required.': 'tuto stránku, abyste uviděli, zda se dosáhlo bodu přerušení.',
|
||||||
|
'Ticket': 'Ticket',
|
||||||
|
'Ticket ID': 'Ticket ID',
|
||||||
|
'Time in Cache (h:m:s)': 'Čas v Cache (h:m:s)',
|
||||||
|
'Timestamp': 'Časové razítko',
|
||||||
|
'to previous version.': 'k předchozí verzi.',
|
||||||
|
'To create a plugin, name a file/folder plugin_[name]': 'Zásuvný modul vytvoříte tak, že pojmenujete soubor/adresář plugin_[jméno modulu]',
|
||||||
|
'To emulate a breakpoint programatically, write:': 'K nastavení bodu přerušení v kódu programu, napište:',
|
||||||
|
'to use the debugger!': ', abyste mohli ladící program používat!',
|
||||||
|
'toggle breakpoint': 'vyp./zap. bod přerušení',
|
||||||
|
'Toggle Fullscreen': 'Na celou obrazovku a zpět',
|
||||||
|
'too short': 'Příliš krátké',
|
||||||
|
'Traceback': 'Traceback',
|
||||||
|
'Translation strings for the application': 'Překlad textů pro aplikaci',
|
||||||
|
'try something like': 'try something like',
|
||||||
|
'Try the mobile interface': 'Zkuste rozhraní pro mobilní zařízení',
|
||||||
|
'try view': 'try view',
|
||||||
|
'Twitter': 'Twitter',
|
||||||
|
'Type python statement in here and hit Return (Enter) to execute it.': 'Type python statement in here and hit Return (Enter) to execute it.',
|
||||||
|
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
|
||||||
|
'Unable to check for upgrades': 'Unable to check for upgrades',
|
||||||
|
'unable to parse csv file': 'csv soubor nedá sa zpracovat',
|
||||||
|
'uncheck all': 'vše odznačit',
|
||||||
|
'Uninstall': 'Odinstalovat',
|
||||||
|
'update': 'aktualizovat',
|
||||||
|
'update all languages': 'aktualizovat všechny jazyky',
|
||||||
|
'Update:': 'Upravit:',
|
||||||
|
'Upgrade': 'Upgrade',
|
||||||
|
'upgrade now': 'upgrade now',
|
||||||
|
'upgrade now to %s': 'upgrade now to %s',
|
||||||
|
'upload': 'nahrát',
|
||||||
|
'Upload': 'Upload',
|
||||||
|
'Upload a package:': 'Nahrát balík:',
|
||||||
|
'Upload and install packed application': 'Nahrát a instalovat zabalenou aplikaci',
|
||||||
|
'upload file:': 'nahrát soubor:',
|
||||||
|
'upload plugin file:': 'nahrát soubor modulu:',
|
||||||
|
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Použijte (...)&(...) pro AND, (...)|(...) pro OR a ~(...) pro NOT pro sestavení složitějších dotazů.',
|
||||||
|
'User %(id)s Logged-in': 'Uživatel %(id)s přihlášen',
|
||||||
|
'User %(id)s Logged-out': 'Uživatel %(id)s odhlášen',
|
||||||
|
'User %(id)s Password changed': 'Uživatel %(id)s změnil heslo',
|
||||||
|
'User %(id)s Profile updated': 'Uživatel %(id)s upravil profil',
|
||||||
|
'User %(id)s Registered': 'Uživatel %(id)s se zaregistroval',
|
||||||
|
'User %(id)s Username retrieved': 'Uživatel %(id)s si nachal zaslat přihlašovací jméno',
|
||||||
|
'User ID': 'ID uživatele',
|
||||||
|
'Username': 'Přihlašovací jméno',
|
||||||
|
'variables': 'variables',
|
||||||
|
'Verify Password': 'Zopakujte heslo',
|
||||||
|
'Version': 'Verze',
|
||||||
|
'Version %s.%s.%s (%s) %s': 'Verze %s.%s.%s (%s) %s',
|
||||||
|
'Versioning': 'Verzování',
|
||||||
|
'Videos': 'Videa',
|
||||||
|
'View': 'Pohled (View)',
|
||||||
|
'Views': 'Pohledy',
|
||||||
|
'views': 'pohledy',
|
||||||
|
'Web Framework': 'Web Framework',
|
||||||
|
'web2py is up to date': 'Máte aktuální verzi web2py.',
|
||||||
|
'web2py online debugger': 'Ladící online web2py program',
|
||||||
|
'web2py Recent Tweets': 'Štěbetání na Twitteru o web2py',
|
||||||
|
'web2py upgrade': 'web2py upgrade',
|
||||||
|
'web2py upgraded; please restart it': 'web2py upgraded; please restart it',
|
||||||
|
'Welcome': 'Vítejte',
|
||||||
|
'Welcome to web2py': 'Vitejte ve web2py',
|
||||||
|
'Welcome to web2py!': 'Vítejte ve web2py!',
|
||||||
|
'Which called the function %s located in the file %s': 'která zavolala funkci %s v souboru (kontroléru) %s.',
|
||||||
|
'You are successfully running web2py': 'Úspěšně jste spustili web2py.',
|
||||||
|
'You can also set and remove breakpoint in the edit window, using the Toggle Breakpoint button': 'Nastavovat a mazat body přerušení je též možno v rámci editování zdrojového souboru přes tlačítko Vyp./Zap. bod přerušení',
|
||||||
|
'You can modify this application and adapt it to your needs': 'Tuto aplikaci si můžete upravit a přizpůsobit ji svým potřebám.',
|
||||||
|
'You need to set up and reach a': 'Je třeba nejprve nastavit a dojít až na',
|
||||||
|
'You visited the url %s': 'Navštívili jste stránku %s,',
|
||||||
|
'Your application will be blocked until you click an action button (next, step, continue, etc.)': 'Aplikace bude blokována než se klikne na jedno z tlačítek (další, krok, pokračovat, atd.)',
|
||||||
|
'Your can inspect variables using the console bellow': 'Níže pomocí příkazové řádky si můžete prohlédnout proměnné',
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,119 +1,126 @@
|
|||||||
# coding: utf8
|
# coding: utf8
|
||||||
|
# Translation by: Klaus Kappel <kkappel@yahoo.de>
|
||||||
{
|
{
|
||||||
'!langcode!': 'de',
|
'!langcode!': 'de',
|
||||||
'!langname!': 'Deutsch',
|
'!langname!': 'Deutsch',
|
||||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"Update" ist ein optionaler Ausdruck wie "Feld1 = \'newvalue". JOIN Ergebnisse können nicht aktualisiert oder gelöscht werden',
|
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"Update" ist ein optionaler Ausdruck wie "Feld1 = \'newvalue". JOIN Ergebnisse k?nnen nicht aktualisiert oder gel?scht werden',
|
||||||
'%s %%{row} deleted': '%s Zeilen gelöscht',
|
'%s %%{row} deleted': '%s %%{row} Zeilen gel?scht',
|
||||||
'%s %%{row} updated': '%s Zeilen aktualisiert',
|
'%s %%{row} updated': '%s %%{row} Zeilen aktualisiert',
|
||||||
'%Y-%m-%d': '%Y-%m-%d',
|
'%Y-%m-%d': '%d.%m.%Y',
|
||||||
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
'%Y-%m-%d %H:%M:%S': '%d.%m.%Y %H:%M:%S',
|
||||||
'(requires internet access)': '(requires internet access)',
|
'(requires internet access)': '(Internet Zugang wir ben?tigt)',
|
||||||
|
'(requires internet access, experimental)': '(ben?tigt Internet Zugang)',
|
||||||
'(something like "it-it")': '(so etwas wie "it-it")',
|
'(something like "it-it")': '(so etwas wie "it-it")',
|
||||||
'@markmin\x01Searching: **%s** %%{file}': 'Searching: **%s** files',
|
'@markmin\x01Searching: **%s** %%{file}': '@markmin\x01Suche: **%s** Dateien',
|
||||||
'A new version of web2py is available': 'Eine neue Version von web2py ist verfügbar',
|
'A new version of web2py is available': 'Eine neue Version von web2py ist verf?gbar',
|
||||||
'A new version of web2py is available: %s': 'Eine neue Version von web2py ist verfügbar: %s',
|
'A new version of web2py is available: %s': 'Eine neue Version von web2py ist verf?gbar: %s',
|
||||||
'Abort': 'Abbrechen',
|
'Abort': 'Abbrechen',
|
||||||
'About': 'Über',
|
'About': '?ber',
|
||||||
'About application': 'Über die Anwendung',
|
'About application': '?ber die Anwendung',
|
||||||
'Additional code for your application': 'Additional code for your application',
|
'Additional code for your application': 'zus?tzlicher Code f?r Ihre Anwendung',
|
||||||
'additional code for your application': 'zusätzlicher Code für Ihre Anwendung',
|
'admin disabled because no admin password': 'admin ist deaktiviert, weil kein Admin-Passwort gesetzt ist',
|
||||||
'admin disabled because no admin password': ' admin ist deaktiviert, weil kein Admin-Passwort gesetzt ist',
|
'admin disabled because not supported on google apps engine': 'admin ist deaktiviert, es existiert daf?r keine Unterst?tzung auf der google apps engine',
|
||||||
'admin disabled because not supported on google apps engine': 'admin ist deaktiviert, es existiert dafür keine Unterstützung auf der google apps engine',
|
|
||||||
'admin disabled because unable to access password file': 'admin ist deaktiviert, weil kein Zugriff auf die Passwortdatei besteht',
|
'admin disabled because unable to access password file': 'admin ist deaktiviert, weil kein Zugriff auf die Passwortdatei besteht',
|
||||||
'Admin is disabled because insecure channel': 'Appadmin ist deaktiviert, wegen der Benutzung eines unsicheren Kanals',
|
'Admin is disabled because insecure channel': 'Appadmin ist deaktiviert, wegen der Benutzung eines unsicheren Kanals',
|
||||||
'Admin is disabled because unsecure channel': 'Appadmin ist deaktiviert, wegen der Benutzung eines unsicheren Kanals',
|
'Admin is disabled because unsecure channel': 'Appadmin ist deaktiviert, wegen der Benutzung eines unsicheren Kanals',
|
||||||
'Admin language': 'Admin language',
|
'Admin language': 'Admin-Sprache',
|
||||||
'administrative interface': 'administrative interface',
|
'administrative interface': 'Administrative Schnittstelle',
|
||||||
'Administrator Password:': 'Administrator Passwort:',
|
'Administrator Password:': 'Administrator Passwort:',
|
||||||
|
'An error occured, please %s the page': 'Ein Fehler ist aufgetereten, bitte %s die Seite',
|
||||||
'and rename it (required):': 'und benenne sie um (erforderlich):',
|
'and rename it (required):': 'und benenne sie um (erforderlich):',
|
||||||
'and rename it:': ' und benenne sie um:',
|
'and rename it:': ' und benenne sie um:',
|
||||||
'appadmin': 'appadmin',
|
'appadmin': 'appadmin',
|
||||||
'appadmin is disabled because insecure channel': 'Appadmin ist deaktiviert, wegen der Benutzung eines unsicheren Kanals',
|
'appadmin is disabled because insecure channel': 'Appadmin ist deaktiviert, wegen der Benutzung eines unsicheren Kanals',
|
||||||
|
'Application': 'Anwendung',
|
||||||
'application "%s" uninstalled': 'Anwendung "%s" deinstalliert',
|
'application "%s" uninstalled': 'Anwendung "%s" deinstalliert',
|
||||||
'application compiled': 'Anwendung kompiliert',
|
'application compiled': 'Anwendung kompiliert',
|
||||||
'application is compiled and cannot be designed': 'Die Anwendung ist kompiliert kann deswegen nicht mehr geändert werden',
|
'application is compiled and cannot be designed': 'Die Anwendung ist kompiliert kann deswegen nicht mehr ge?ndert werden',
|
||||||
'Application name:': 'Application name:',
|
'Application name:': 'Name der Applikation:',
|
||||||
'Are you sure you want to delete file "%s"?': 'Sind Sie sich sicher, dass Sie diese Datei löschen wollen "%s"?',
|
'Are you sure you want to delete file "%s"?': 'Sind Sie sich sicher, dass Sie diese Datei l?schen wollen "%s"?',
|
||||||
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
|
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
|
||||||
'Are you sure you want to uninstall application "%s"': 'Sind Sie sich sicher, dass Sie diese Anwendung deinstallieren wollen "%s"',
|
'Are you sure you want to uninstall application "%s"': 'Sind Sie sich sicher, dass Sie diese Anwendung deinstallieren wollen "%s"',
|
||||||
'Are you sure you want to uninstall application "%s"?': 'Sind Sie sich sicher, dass Sie diese Anwendung deinstallieren wollen "%s"?',
|
'Are you sure you want to uninstall application "%s"?': 'Sind Sie sich sicher, dass Sie diese Anwendung deinstallieren wollen "%s"?',
|
||||||
'Are you sure you want to upgrade web2py now?': 'Sind Sie sich sicher, dass Sie web2py jetzt upgraden möchten?',
|
'Are you sure you want to upgrade web2py now?': 'Sind Sie sich sicher, dass Sie web2py jetzt upgraden m?chten?',
|
||||||
'arguments': 'arguments',
|
'arguments': 'arguments',
|
||||||
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ACHTUNG: Die Einwahl benötigt eine sichere (HTTPS) Verbindung. Es sei denn sie läuft Lokal(localhost).',
|
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ACHTUNG: Die Einwahl ben?tigt eine sichere (HTTPS) Verbindung. Es sei denn sie l?uft Lokal(localhost).',
|
||||||
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ACHTUNG: Testen ist nicht threadsicher. Führen sie also nicht mehrere Tests gleichzeitig aus.',
|
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ACHTUNG: Testen ist nicht threadsicher. F?hren sie also nicht mehrere Tests gleichzeitig aus.',
|
||||||
'ATTENTION: This is an experimental feature and it needs more testing.': 'ACHTUNG: Dies ist eine experimentelle Funktion und benötigt noch weitere Tests.',
|
'ATTENTION: This is an experimental feature and it needs more testing.': 'ACHTUNG: Dies ist eine experimentelle Funktion und ben?tigt noch weitere Tests.',
|
||||||
'ATTENTION: you cannot edit the running application!': 'ACHTUNG: Eine laufende Anwendung kann nicht editiert werden!',
|
'ATTENTION: you cannot edit the running application!': 'ACHTUNG: Eine laufende Anwendung kann nicht editiert werden!',
|
||||||
'Authentication': 'Authentifizierung',
|
'Authentication': 'Authentifizierung',
|
||||||
'Available databases and tables': 'Verfügbare Datenbanken und Tabellen',
|
'Available databases and tables': 'Verf?gbare Datenbanken und Tabellen',
|
||||||
'back': 'zurück',
|
'back': 'zur?ck',
|
||||||
'beautify': 'beautify',
|
'beautify': 'versch?nern',
|
||||||
'cache': 'Cache',
|
'cache': 'Pufferspeicher',
|
||||||
'cache, errors and sessions cleaned': 'Zwischenspeicher (cache), Fehler und Sitzungen (sessions) gelöscht',
|
'cache, errors and sessions cleaned': 'Zwischenspeicher (cache), Fehler und Sitzungen (sessions) gel?scht',
|
||||||
'call': 'call',
|
'call': 'Aufruf',
|
||||||
'can be a git repo': 'can be a git repo',
|
'can be a git repo': 'kann ein git Repository sein',
|
||||||
'Cannot be empty': 'Darf nicht leer sein',
|
'Cannot be empty': 'Darf nicht leer sein',
|
||||||
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'Nicht Kompilierbar:Es sind Fehler in der Anwendung. Beseitigen Sie die Fehler und versuchen Sie es erneut.',
|
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'Nicht Kompilierbar:Es sind Fehler in der Anwendung. Beseitigen Sie die Fehler und versuchen Sie es erneut.',
|
||||||
'cannot create file': 'Kann Datei nicht erstellen',
|
'cannot create file': 'Kann Datei nicht erstellen',
|
||||||
'cannot upload file "%(filename)s"': 'Kann Datei nicht Hochladen "%(filename)s"',
|
'cannot upload file "%(filename)s"': 'Kann Datei nicht Hochladen "%(filename)s"',
|
||||||
'Change admin password': 'Administrator-Passwort ändern',
|
'Change admin password': 'Administrator-Passwort ?ndern',
|
||||||
'Change Password': 'Passwort ändern',
|
'Change Password': 'Passwort ?ndern',
|
||||||
'change password': 'Passwort ändern',
|
'change password': 'Passwort ?ndern',
|
||||||
'check all': 'alles auswählen',
|
'check all': 'alles ausw?hlen',
|
||||||
'Check for upgrades': 'check for upgrades',
|
'Check for upgrades': 'check for upgrades',
|
||||||
'Check to delete': 'Markiere zum löschen',
|
'Check to delete': 'Markiere zum l?schen',
|
||||||
'Checking for upgrades...': 'Auf Updates überprüfen...',
|
'Checking for upgrades...': 'Auf Updates ?berpr?fen...',
|
||||||
'Clean': 'löschen',
|
'Clean': 'leeren',
|
||||||
'click here for online examples': 'hier klicken für online Beispiele',
|
'click here for online examples': 'hier klicken f?r online Beispiele',
|
||||||
'click here for the administrative interface': 'hier klicken für die Administrationsoberfläche ',
|
'click here for the administrative interface': 'hier klicken f?r die Administrationsoberfl?che ',
|
||||||
|
'Click row to expand traceback': 'Klicke auf die Zeile f?r Fehlerverfolgung',
|
||||||
'click to check for upgrades': 'hier klicken um nach Upgrades zu suchen',
|
'click to check for upgrades': 'hier klicken um nach Upgrades zu suchen',
|
||||||
'Client IP': 'Client IP',
|
'Client IP': 'Client IP',
|
||||||
'code': 'code',
|
'code': 'code',
|
||||||
'collapse/expand all': 'collapse/expand all',
|
'collapse/expand all': 'alles zu- bzw. aufklappen',
|
||||||
'Compile': 'kompilieren',
|
'Compile': 'kompilieren',
|
||||||
'compiled application removed': 'kompilierte Anwendung gelöscht',
|
'compiled application removed': 'kompilierte Anwendung gel?scht',
|
||||||
'Controller': 'Controller',
|
'Controller': 'Controller',
|
||||||
'Controllers': 'Controller',
|
'Controllers': 'Controller',
|
||||||
'controllers': 'Controllers',
|
'controllers': 'Controllers',
|
||||||
'Copyright': 'Urheberrecht',
|
'Copyright': 'Urheberrecht',
|
||||||
|
'Count': 'Anzahl',
|
||||||
'Create': 'erstellen',
|
'Create': 'erstellen',
|
||||||
'create file with filename:': 'erzeuge Datei mit Dateinamen:',
|
'create file with filename:': 'erzeuge Datei mit Dateinamen:',
|
||||||
'create new application:': 'erzeuge neue Anwendung:',
|
'create new application:': 'erzeuge neue Anwendung:',
|
||||||
'Create new simple application': 'Erzeuge neue Anwendung',
|
'Create new simple application': 'Erzeuge neue Anwendung',
|
||||||
'created by': 'created by',
|
'created by': 'erstellt von',
|
||||||
'crontab': 'crontab',
|
'crontab': 'crontab',
|
||||||
'Current request': 'Aktuelle Anfrage (request)',
|
'Current request': 'Aktuelle Anfrage (request)',
|
||||||
'Current response': 'Aktuelle Antwort (response)',
|
'Current response': 'Aktuelle Antwort (response)',
|
||||||
'Current session': 'Aktuelle Sitzung (session)',
|
'Current session': 'Aktuelle Sitzung (session)',
|
||||||
'currently running': 'currently running',
|
'currently running': 'aktuell in Betrieb',
|
||||||
'currently saved or': 'des derzeit gespeicherten oder',
|
'currently saved or': 'des derzeit gespeicherten oder',
|
||||||
'customize me!': 'pass mich an!',
|
'customize me!': 'pass mich an!',
|
||||||
'data uploaded': 'Daten hochgeladen',
|
'data uploaded': 'Daten hochgeladen',
|
||||||
'Database': 'Datenbank',
|
'Database': 'Datenbank',
|
||||||
'database': 'Datenbank',
|
'database': 'Datenbank',
|
||||||
'database %s select': 'Datenbank %s ausgewählt',
|
'database %s select': 'Datenbank %s ausgew?hlt',
|
||||||
'database administration': 'Datenbankadministration',
|
'database administration': 'Datenbankadministration',
|
||||||
'Date and Time': 'Datum und Uhrzeit',
|
'Date and Time': 'Datum und Uhrzeit',
|
||||||
'db': 'db',
|
'db': 'db',
|
||||||
'DB Model': 'DB Modell',
|
'DB Model': 'DB Modell',
|
||||||
'Debug': 'Debug',
|
'Debug': 'Debug',
|
||||||
'defines tables': 'definiere Tabellen',
|
'defines tables': 'definiere Tabellen',
|
||||||
'Delete': 'Löschen',
|
'Delete': 'L?schen',
|
||||||
'delete': 'löschen',
|
'delete': 'l?schen',
|
||||||
'delete all checked': 'lösche alle markierten',
|
'delete all checked': 'l?sche alle markierten',
|
||||||
'delete plugin': 'Plugin löschen',
|
'delete plugin': 'Plugin l?schen',
|
||||||
'Delete:': 'Löschen:',
|
'Delete:': 'L?schen:',
|
||||||
'Deploy': 'deploy',
|
'Deploy': 'Installieren',
|
||||||
'Deploy on Google App Engine': 'Auf Google App Engine installieren',
|
'Deploy on Google App Engine': 'Auf Google App Engine installieren',
|
||||||
'Deploy to OpenShift': 'Deploy to OpenShift',
|
'Deploy to OpenShift': 'Auf OpenShift installieren',
|
||||||
'Description': 'Beschreibung',
|
'Description': 'Beschreibung',
|
||||||
'design': 'design',
|
'design': 'design',
|
||||||
'DESIGN': 'design',
|
'DESIGN': 'design',
|
||||||
'Design for': 'Design für',
|
'Design for': 'Design f?r',
|
||||||
|
'Detailed traceback description': 'Detailed traceback description',
|
||||||
'direction: ltr': 'direction: ltr',
|
'direction: ltr': 'direction: ltr',
|
||||||
'Disable': 'Disable',
|
'Disable': 'Deaktivieren',
|
||||||
'documentation': 'Dokumentation',
|
'documentation': 'Dokumentation',
|
||||||
'done!': 'fertig!',
|
'done!': 'fertig!',
|
||||||
'download layouts': 'download layouts',
|
'Download .w2p': 'Download .w2p',
|
||||||
|
'download layouts': 'Layouts herunterladen',
|
||||||
'download plugins': 'download plugins',
|
'download plugins': 'download plugins',
|
||||||
'E-mail': 'E-mail',
|
'E-mail': 'E-mail',
|
||||||
'EDIT': 'BEARBEITEN',
|
'EDIT': 'BEARBEITEN',
|
||||||
@@ -129,56 +136,64 @@
|
|||||||
'Editing file "%s"': 'Bearbeite Datei "%s"',
|
'Editing file "%s"': 'Bearbeite Datei "%s"',
|
||||||
'Editing Language file': 'Sprachdatei bearbeiten',
|
'Editing Language file': 'Sprachdatei bearbeiten',
|
||||||
'Enterprise Web Framework': 'Enterprise Web Framework',
|
'Enterprise Web Framework': 'Enterprise Web Framework',
|
||||||
'Error logs for "%(app)s"': 'Fehlerprotokoll für "%(app)s"',
|
'Error': 'Fehler',
|
||||||
|
'Error logs for "%(app)s"': 'Fehlerprotokoll f?r "%(app)s"',
|
||||||
|
'Error snapshot': 'Error snapshot',
|
||||||
|
'Error ticket': 'Error ticket',
|
||||||
'Errors': 'Fehler',
|
'Errors': 'Fehler',
|
||||||
'escape': 'escape',
|
'escape': 'escape',
|
||||||
'Exception instance attributes': 'Atribute der Ausnahmeinstanz',
|
'Exception instance attributes': 'Atribute der Ausnahmeinstanz',
|
||||||
'Expand Abbreviation': 'Kürzel erweitern',
|
'Expand Abbreviation': 'K?rzel erweitern',
|
||||||
'export as csv file': 'Exportieren als CSV-Datei',
|
'export as csv file': 'Exportieren als CSV-Datei',
|
||||||
'exposes': 'stellt zur Verfügung',
|
'exposes': 'stellt zur Verf?gung',
|
||||||
'extends': 'erweitert',
|
'extends': 'erweitert',
|
||||||
'failed to reload module': 'neu laden des Moduls fehlgeschlagen',
|
'failed to reload module': 'neu laden des Moduls fehlgeschlagen',
|
||||||
|
'File': 'Datei',
|
||||||
'file "%(filename)s" created': 'Datei "%(filename)s" erstellt',
|
'file "%(filename)s" created': 'Datei "%(filename)s" erstellt',
|
||||||
'file "%(filename)s" deleted': 'Datei "%(filename)s" gelöscht',
|
'file "%(filename)s" deleted': 'Datei "%(filename)s" gel?scht',
|
||||||
'file "%(filename)s" uploaded': 'Datei "%(filename)s" hochgeladen',
|
'file "%(filename)s" uploaded': 'Datei "%(filename)s" hochgeladen',
|
||||||
'file "%(filename)s" was not deleted': 'Datei "%(filename)s" wurde nicht gelöscht',
|
'file "%(filename)s" was not deleted': 'Datei "%(filename)s" wurde nicht gel?scht',
|
||||||
'file "%s" of %s restored': 'Datei "%s" von %s wiederhergestellt',
|
'file "%s" of %s restored': 'Datei "%s" von %s wiederhergestellt',
|
||||||
'file changed on disk': 'Datei auf Festplatte geändert',
|
'file changed on disk': 'Datei auf Festplatte ge?ndert',
|
||||||
'file does not exist': 'Datei existiert nicht',
|
'file does not exist': 'Datei existiert nicht',
|
||||||
'file saved on %(time)s': 'Datei gespeichert am %(time)s',
|
'file saved on %(time)s': 'Datei gespeichert am %(time)s',
|
||||||
'file saved on %s': 'Datei gespeichert auf %s',
|
'file saved on %s': 'Datei gespeichert auf %s',
|
||||||
'filter': 'filter',
|
'filter': 'filter',
|
||||||
'First name': 'Vorname',
|
'First name': 'Vorname',
|
||||||
|
'Frames': 'Frames',
|
||||||
'Functions with no doctests will result in [passed] tests.': 'Funktionen ohne doctests erzeugen [passed] in Tests',
|
'Functions with no doctests will result in [passed] tests.': 'Funktionen ohne doctests erzeugen [passed] in Tests',
|
||||||
'Get from URL:': 'Get from URL:',
|
'Get from URL:': 'Get from URL:',
|
||||||
'Git Pull': 'Git Pull',
|
'Git Pull': 'Git Pull',
|
||||||
'Git Push': 'Git Push',
|
'Git Push': 'Git Push',
|
||||||
'Go to Matching Pair': 'gehe zum übereinstimmenden Paar',
|
'Go to Matching Pair': 'gehe zum ?bereinstimmenden Paar',
|
||||||
|
'Goto': 'Goto',
|
||||||
'Group ID': 'Gruppen ID',
|
'Group ID': 'Gruppen ID',
|
||||||
'Hello World': 'Hallo Welt',
|
'Hello World': 'Hallo Welt',
|
||||||
'Help': 'Hilfe',
|
'Help': 'Hilfe',
|
||||||
|
'Home': 'Home',
|
||||||
'htmledit': 'htmledit',
|
'htmledit': 'htmledit',
|
||||||
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Falls der obere Test eine Fehler-Ticketnummer enthält deutet das auf einen Fehler in der Ausführung des Controllers hin, noch bevor der Doctest ausgeführt werden konnte. Gewöhnlich führen fehlerhafte Einrückungen oder fehlerhafter Code ausserhalb der Funktion zu solchen Fehlern. Ein grüner Titel deutet darauf hin, dass alle Test(wenn sie vorhanden sind) erfolgreich durchlaufen wurden. In diesem Fall werden die Testresultate nicht angezeigt.',
|
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'Falls der obere Test eine Fehler-Ticketnummer enth?lt deutet das auf einen Fehler in der Ausf?hrung des Controllers hin, noch bevor der Doctest ausgef?hrt werden konnte. Gew?hnlich f?hren fehlerhafte Einr?ckungen oder fehlerhafter Code ausserhalb der Funktion zu solchen Fehlern. Ein gr?ner Titel deutet darauf hin, dass alle Test(wenn sie vorhanden sind) erfolgreich durchlaufen wurden. In diesem Fall werden die Testresultate nicht angezeigt.',
|
||||||
'If you answer "yes", be patient, it may take a while to download': '',
|
'If you answer "yes", be patient, it may take a while to download': '',
|
||||||
'If you answer yes, be patient, it may take a while to download': 'If you answer yes, be patient, it may take a while to download',
|
'If you answer yes, be patient, it may take a while to download': 'If you answer yes, be patient, it may take a while to download',
|
||||||
'Import/Export': 'Importieren/Exportieren',
|
'Import/Export': 'Importieren/Exportieren',
|
||||||
'includes': 'Einfügen',
|
'includes': 'Einf?gen',
|
||||||
'Index': 'Index',
|
'Index': 'Index',
|
||||||
'index': 'index',
|
'index': 'index',
|
||||||
'insert new': 'neu einfügen',
|
'insert new': 'neu einf?gen',
|
||||||
'insert new %s': 'neu einfügen %s',
|
'insert new %s': 'neu einf?gen %s',
|
||||||
|
'inspect attributes': 'inspect attributes',
|
||||||
'Install': 'installieren',
|
'Install': 'installieren',
|
||||||
'Installed applications': 'Installierte Anwendungen',
|
'Installed applications': 'Installierte Anwendungen',
|
||||||
'internal error': 'interner Fehler',
|
'internal error': 'interner Fehler',
|
||||||
'Internal State': 'interner Status',
|
'Internal State': 'interner Status',
|
||||||
'Invalid action': 'Ungültige Aktion',
|
'Invalid action': 'Ung?ltige Aktion',
|
||||||
'Invalid email': 'Ungültige Email',
|
'Invalid email': 'Ung?ltige Email',
|
||||||
'invalid password': 'Ungültiges Passwort',
|
'invalid password': 'Ung?ltiges Passwort',
|
||||||
'Invalid Query': 'Ungültige Abfrage',
|
'Invalid Query': 'Ung?ltige Abfrage',
|
||||||
'invalid request': 'ungültige Anfrage',
|
'invalid request': 'ung?ltige Anfrage',
|
||||||
'invalid ticket': 'ungültiges Ticket',
|
'invalid ticket': 'ung?ltiges Ticket',
|
||||||
'Key bindings': 'Tastenbelegungen',
|
'Key bindings': 'Tastenbelegungen',
|
||||||
'Key bindings for ZenConding Plugin': 'Tastenbelegungen für das ZenConding Plugin',
|
'Key bindings for ZenConding Plugin': 'Tastenbelegungen f?r das ZenConding Plugin',
|
||||||
'language file "%(filename)s" created/updated': 'Sprachdatei "%(filename)s" erstellt/aktualisiert',
|
'language file "%(filename)s" created/updated': 'Sprachdatei "%(filename)s" erstellt/aktualisiert',
|
||||||
'Language files (static strings) updated': 'Sprachdatei (statisch Strings) aktualisiert',
|
'Language files (static strings) updated': 'Sprachdatei (statisch Strings) aktualisiert',
|
||||||
'languages': 'Sprachen',
|
'languages': 'Sprachen',
|
||||||
@@ -187,8 +202,9 @@
|
|||||||
'Last name': 'Nachname',
|
'Last name': 'Nachname',
|
||||||
'Last saved on:': 'Zuletzt gespeichert am:',
|
'Last saved on:': 'Zuletzt gespeichert am:',
|
||||||
'Layout': 'Layout',
|
'Layout': 'Layout',
|
||||||
'License for': 'Lizenz für',
|
'License for': 'Lizenz f?r',
|
||||||
'loading...': 'lade...',
|
'loading...': 'lade...',
|
||||||
|
'locals': 'locals',
|
||||||
'located in the file': 'located in Datei',
|
'located in the file': 'located in Datei',
|
||||||
'Login': 'Anmelden',
|
'Login': 'Anmelden',
|
||||||
'login': 'anmelden',
|
'login': 'anmelden',
|
||||||
@@ -196,33 +212,37 @@
|
|||||||
'Logout': 'abmelden',
|
'Logout': 'abmelden',
|
||||||
'Lost Password': 'Passwort vergessen',
|
'Lost Password': 'Passwort vergessen',
|
||||||
'lost password?': 'Passwort vergessen?',
|
'lost password?': 'Passwort vergessen?',
|
||||||
'Main Menu': 'Menú principal',
|
'Main Menu': 'Men? principal',
|
||||||
|
'Manage': 'Verwalten',
|
||||||
'Match Pair': 'Paare finden',
|
'Match Pair': 'Paare finden',
|
||||||
'Menu Model': 'Menü Modell',
|
'Menu Model': 'Men? Modell',
|
||||||
'merge': 'verbinden',
|
'merge': 'verbinden',
|
||||||
'Merge Lines': 'Zeilen zusammenfügen',
|
'Merge Lines': 'Zeilen zusammenf?gen',
|
||||||
'Models': 'Modelle',
|
'Models': 'Modelle',
|
||||||
'models': 'Modelle',
|
'models': 'Modelle',
|
||||||
'Modules': 'Module',
|
'Modules': 'Module',
|
||||||
'modules': 'Module',
|
'modules': 'Module',
|
||||||
'Name': 'Name',
|
'Name': 'Name',
|
||||||
'new application "%s" created': 'neue Anwendung "%s" erzeugt',
|
'new application "%s" created': 'neue Anwendung "%s" erzeugt',
|
||||||
'New application wizard': 'New application wizard',
|
'New application wizard': 'Neue Anwendung per Assistent',
|
||||||
'New Record': 'Neuer Datensatz',
|
'New Record': 'Neuer Datensatz',
|
||||||
'new record inserted': 'neuer Datensatz eingefügt',
|
'new record inserted': 'neuer Datensatz eingef?gt',
|
||||||
'New simple application': 'New simple application',
|
'New simple application': 'Neue einfache Anwendung',
|
||||||
'next 100 rows': 'nächsten 100 Zeilen',
|
'next 100 rows': 'n?chsten 100 Zeilen',
|
||||||
'Next Edit Point': 'nächster Bearbeitungsschritt',
|
'Next Edit Point': 'n?chster Bearbeitungsschritt',
|
||||||
'NO': 'NEIN',
|
'NO': 'NEIN',
|
||||||
'No databases in this application': 'Keine Datenbank in dieser Anwendung',
|
'No databases in this application': 'Keine Datenbank in dieser Anwendung',
|
||||||
|
'No ticket_storage.txt found under /private folder': 'No ticket_storage.txt found under /private folder',
|
||||||
|
'Or Get from URL:': 'oder hole es von folgender URL:',
|
||||||
'or import from csv file': 'oder importieren von cvs Datei',
|
'or import from csv file': 'oder importieren von cvs Datei',
|
||||||
'or provide app url:': 'oder geben Sie eine Anwendungs-URL an:',
|
'or provide app url:': 'oder geben Sie eine Anwendungs-URL an:',
|
||||||
'or provide application url:': 'oder geben Sie eine Anwendungs-URL an:',
|
'or provide application url:': 'oder geben Sie eine Anwendungs-URL an:',
|
||||||
'Origin': 'Herkunft',
|
'Origin': 'Herkunft',
|
||||||
'Original/Translation': 'Original/Übersetzung',
|
'Original/Translation': 'Original/?bersetzung',
|
||||||
'Overwrite installed app': 'installierte Anwendungen überschreiben',
|
'Overwrite installed app': 'installierte Anwendungen ?berschreiben',
|
||||||
'Pack all': 'verpacke alles',
|
'Pack all': 'verpacke alles',
|
||||||
'Pack compiled': 'Verpacke kompiliert',
|
'Pack compiled': 'Verpacke kompiliert',
|
||||||
|
'Pack custom': 'Verpacke individuell',
|
||||||
'pack plugin': 'Plugin verpacken',
|
'pack plugin': 'Plugin verpacken',
|
||||||
'Password': 'Passwort',
|
'Password': 'Passwort',
|
||||||
'Peeking at file': 'Dateiansicht',
|
'Peeking at file': 'Dateiansicht',
|
||||||
@@ -230,9 +250,10 @@
|
|||||||
'Plugin "%s" in application': 'Plugin "%s" in Anwendung',
|
'Plugin "%s" in application': 'Plugin "%s" in Anwendung',
|
||||||
'plugins': 'plugins',
|
'plugins': 'plugins',
|
||||||
'Plugins': 'Plugins',
|
'Plugins': 'Plugins',
|
||||||
'Powered by': 'Unterstützt von',
|
'Powered by': 'Unterst?tzt von',
|
||||||
'previous 100 rows': 'vorherige 100 zeilen',
|
'previous 100 rows': 'vorherige 100 zeilen',
|
||||||
'Previous Edit Point': 'vorheriger Bearbeitungsschritt',
|
'Previous Edit Point': 'vorheriger Bearbeitungsschritt',
|
||||||
|
'Project Progress': 'Projekt Fortschritt',
|
||||||
'Query:': 'Abfrage:',
|
'Query:': 'Abfrage:',
|
||||||
'record': 'Datensatz',
|
'record': 'Datensatz',
|
||||||
'record does not exist': 'Datensatz existiert nicht',
|
'record does not exist': 'Datensatz existiert nicht',
|
||||||
@@ -240,33 +261,38 @@
|
|||||||
'Record ID': 'Datensatz ID',
|
'Record ID': 'Datensatz ID',
|
||||||
'register': 'Registrierung',
|
'register': 'Registrierung',
|
||||||
'Register': 'registrieren',
|
'Register': 'registrieren',
|
||||||
'Registration key': 'Registrierungsschlüssel',
|
'Registration key': 'Registrierungsschl?ssel',
|
||||||
'Reload routes': 'Reload routes',
|
'reload': 'Neu laden',
|
||||||
'Remove compiled': 'kompilat gelöscht',
|
'Reload routes': 'Routen neu laden',
|
||||||
'Reset Password key': 'Passwortschlüssel zurücksetzen',
|
'Remove compiled': 'Bytecode l?schen',
|
||||||
|
'request': 'request',
|
||||||
|
'Reset Password key': 'Passwortschl?ssel zur?cksetzen',
|
||||||
'Resolve Conflict file': 'bereinige Konflikt-Datei',
|
'Resolve Conflict file': 'bereinige Konflikt-Datei',
|
||||||
|
'response': 'Antwort',
|
||||||
'restore': 'wiederherstellen',
|
'restore': 'wiederherstellen',
|
||||||
'revert': 'zurückkehren',
|
'revert': 'zur?ckkehren',
|
||||||
'Role': 'Rolle',
|
'Role': 'Rolle',
|
||||||
'Rows in table': 'Zeilen in Tabelle',
|
'Rows in table': 'Zeilen in Tabelle',
|
||||||
'Rows selected': 'Zeilen ausgewählt',
|
'Rows selected': 'Zeilen ausgew?hlt',
|
||||||
'Running on %s': 'Running on %s',
|
'Running on %s': 'L?uft auf %s',
|
||||||
'save': 'sichern',
|
'save': 'sichern',
|
||||||
'Save via Ajax': 'via Ajax sichern',
|
'Save via Ajax': 'via Ajax sichern',
|
||||||
'Saved file hash:': 'Gespeicherter Datei-Hash:',
|
'Saved file hash:': 'Gespeicherter Datei-Hash:',
|
||||||
'selected': 'ausgewählt(e)',
|
'Select Files to Package': 'Dateien zum Paketieren w?hlen',
|
||||||
'session expired': 'Sitzung Abgelaufen',
|
'selected': 'ausgew?hlt(e)',
|
||||||
|
'session': 'Sitzung',
|
||||||
|
'session expired': 'Sitzung abgelaufen',
|
||||||
'shell': 'shell',
|
'shell': 'shell',
|
||||||
'Site': 'Seite',
|
'Site': 'Seite',
|
||||||
'some files could not be removed': 'einige Dateien konnten nicht gelöscht werden',
|
'some files could not be removed': 'einige Dateien konnten nicht gel?scht werden',
|
||||||
'Start wizard': 'start wizard',
|
'Start wizard': 'Assistent starten',
|
||||||
'state': 'Status',
|
'state': 'Status',
|
||||||
'static': 'statische Dateien',
|
'static': 'statische Dateien',
|
||||||
'Static files': 'statische Dateien',
|
'Static files': 'statische Dateien',
|
||||||
'Stylesheet': 'Stylesheet',
|
'Stylesheet': 'Stylesheet',
|
||||||
'Submit': 'Submit',
|
'Submit': 'Submit',
|
||||||
'submit': 'Absenden',
|
'submit': 'Absenden',
|
||||||
'Sure you want to delete this object?': 'Wollen Sie das Objekt wirklich löschen?',
|
'Sure you want to delete this object?': 'Wollen Sie das Objekt wirklich l?schen?',
|
||||||
'table': 'Tabelle',
|
'table': 'Tabelle',
|
||||||
'Table name': 'Tabellen Name',
|
'Table name': 'Tabellen Name',
|
||||||
'test': 'Test',
|
'test': 'Test',
|
||||||
@@ -276,42 +302,45 @@
|
|||||||
'test_try': 'test_try',
|
'test_try': 'test_try',
|
||||||
'Testing application': 'Teste die Anwendung',
|
'Testing application': 'Teste die Anwendung',
|
||||||
'Testing controller': 'teste Controller',
|
'Testing controller': 'teste Controller',
|
||||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'Die "query" ist eine Bedingung wie "db.table1.field1 == \'Wert\'". Etwas wie "db.table1.field1 db.table2.field2 ==" führt zu einem SQL JOIN.',
|
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'Die "query" ist eine Bedingung wie "db.table1.field1 == \'Wert\'". Etwas wie "db.table1.field1 db.table2.field2 ==" f?hrt zu einem SQL JOIN.',
|
||||||
'the application logic, each URL path is mapped in one exposed function in the controller': 'Die Logik der Anwendung, jeder URL-Pfad wird auf eine Funktion abgebildet die der Controller zur Verfügung stellt',
|
'the application logic, each URL path is mapped in one exposed function in the controller': 'Die Logik der Anwendung, jeder URL-Pfad wird auf eine Funktion abgebildet die der Controller zur Verf?gung stellt',
|
||||||
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
|
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
|
||||||
'the data representation, define database tables and sets': 'Die Datenrepräsentation definiert Mengen von Tabellen und Datenbanken ',
|
'the data representation, define database tables and sets': 'Die Datenrepr?sentation definiert Mengen von Tabellen und Datenbanken ',
|
||||||
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
|
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
|
||||||
'The output of the file is a dictionary that was rendered by the view': 'The output of the file is a dictionary that was rendered by the view',
|
'The output of the file is a dictionary that was rendered by the view': 'The output of the file is a dictionary that was rendered by the view',
|
||||||
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
|
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
|
||||||
'the presentations layer, views are also known as templates': 'Die Präsentationsschicht, Views sind auch bekannt als Vorlagen/Templates',
|
'the presentations layer, views are also known as templates': 'Die Pr?sentationsschicht, Views sind auch bekannt als Vorlagen/Templates',
|
||||||
'There are no controllers': 'Keine Controller vorhanden',
|
'There are no controllers': 'Keine Controller vorhanden',
|
||||||
'There are no models': 'Keine Modelle vorhanden',
|
'There are no models': 'Keine Modelle vorhanden',
|
||||||
'There are no modules': 'Keine Module vorhanden',
|
'There are no modules': 'Keine Module vorhanden',
|
||||||
'There are no plugins': 'There are no plugins',
|
'There are no plugins': 'There are no plugins',
|
||||||
'There are no static files': 'Keine statischen Dateien vorhanden',
|
'There are no static files': 'Keine statischen Dateien vorhanden',
|
||||||
'There are no translators, only default language is supported': 'Keine Übersetzungen vorhanden, nur die voreingestellte Sprache wird unterstützt',
|
'There are no translators, only default language is supported': 'Keine ?bersetzungen vorhanden, nur die voreingestellte Sprache wird unterst?tzt',
|
||||||
'There are no views': 'Keine Views vorhanden',
|
'There are no views': 'Keine Views vorhanden',
|
||||||
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
|
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
|
||||||
'these files are served without processing, your images go here': 'Diese Dateien werden ohne Verarbeitung ausgeliefert. Beispielsweise Bilder kommen hier hin.',
|
'these files are served without processing, your images go here': 'Diese Dateien werden ohne Verarbeitung ausgeliefert. Beispielsweise Bilder kommen hier hin.',
|
||||||
'This is a copy of the scaffolding application': 'Dies ist eine Kopie einer Grundgerüst-Anwendung',
|
'This is a copy of the scaffolding application': 'Dies ist eine Kopie einer Grundger?st-Anwendung',
|
||||||
'This is the %(filename)s template': 'Dies ist das Template %(filename)s',
|
'This is the %(filename)s template': 'Dies ist das Template %(filename)s',
|
||||||
'Ticket': 'Ticket',
|
'Ticket': 'Ticket',
|
||||||
'Timestamp': 'Timestamp',
|
'Ticket ID': 'Ticket ID',
|
||||||
|
'Timestamp': 'Zeitstempel',
|
||||||
'TM': 'TM',
|
'TM': 'TM',
|
||||||
'to previous version.': 'zu einer früheren Version.',
|
'to previous version.': 'zu einer fr?heren Version.',
|
||||||
'To create a plugin, name a file/folder plugin_[name]': 'Um ein Plugin zu erstellen benennen Sie eine(n) Datei/Ordner plugin_[Name]',
|
'To create a plugin, name a file/folder plugin_[name]': 'Um ein Plugin zu erstellen benennen Sie eine(n) Datei/Ordner plugin_[Name]',
|
||||||
'translation strings for the application': 'Übersetzungs-Strings für die Anwendung',
|
'Traceback': 'Traceback',
|
||||||
'Translation strings for the application': 'Translation strings for the application',
|
'translation strings for the application': '?bersetzungs-Strings f?r die Anwendung',
|
||||||
|
'Translation strings for the application': '?bersetzungs-Strings f?r die Anwendung',
|
||||||
'try': 'versuche',
|
'try': 'versuche',
|
||||||
'try something like': 'versuche so etwas wie',
|
'try something like': 'versuche so etwas wie',
|
||||||
'Unable to check for upgrades': 'überprüfen von Upgrades nicht möglich',
|
'Try the mobile interface': 'Try the mobile interface',
|
||||||
'unable to create application "%s"': 'erzeugen von Anwendung "%s" nicht möglich',
|
'Unable to check for upgrades': '?berpr?fen von Upgrades nicht m?glich',
|
||||||
'unable to delete file "%(filename)s"': 'löschen von Datein "%(filename)s" nicht möglich',
|
'unable to create application "%s"': 'erzeugen von Anwendung "%s" nicht m?glich',
|
||||||
'Unable to download': 'herunterladen nicht möglich',
|
'unable to delete file "%(filename)s"': 'l?schen von Datein "%(filename)s" nicht m?glich',
|
||||||
'Unable to download app': 'herunterladen der Anwendung nicht möglich',
|
'Unable to download': 'herunterladen nicht m?glich',
|
||||||
'unable to parse csv file': 'analysieren der cvs Datei nicht möglich',
|
'Unable to download app': 'herunterladen der Anwendung nicht m?glich',
|
||||||
'unable to uninstall "%s"': 'deinstallieren von "%s" nicht möglich',
|
'unable to parse csv file': 'analysieren der cvs Datei nicht m?glich',
|
||||||
'uncheck all': 'alles demarkieren',
|
'unable to uninstall "%s"': 'deinstallieren von "%s" nicht m?glich',
|
||||||
|
'uncheck all': 'Selektionen entfernen',
|
||||||
'Uninstall': 'deinstallieren',
|
'Uninstall': 'deinstallieren',
|
||||||
'update': 'aktualisieren',
|
'update': 'aktualisieren',
|
||||||
'update all languages': 'aktualisiere alle Sprachen',
|
'update all languages': 'aktualisiere alle Sprachen',
|
||||||
@@ -319,33 +348,35 @@
|
|||||||
'upgrade web2py now': 'jetzt web2py upgraden',
|
'upgrade web2py now': 'jetzt web2py upgraden',
|
||||||
'upload': 'upload',
|
'upload': 'upload',
|
||||||
'Upload & install packed application': 'Verpackte Anwendung hochladen und installieren',
|
'Upload & install packed application': 'Verpackte Anwendung hochladen und installieren',
|
||||||
'Upload a package:': 'Upload a package:',
|
'Upload a package:': 'Ein Packet hochladen:',
|
||||||
'Upload and install packed application': 'Upload and install packed application',
|
'Upload and install packed application': 'Verpackte Anwendung hochladen und installieren',
|
||||||
'upload application:': 'lade Anwendung hoch:',
|
'upload application:': 'lade Anwendung hoch:',
|
||||||
'Upload existing application': 'lade existierende Anwendung hoch',
|
'Upload existing application': 'lade existierende Anwendung hoch',
|
||||||
'upload file:': 'lade Datei hoch:',
|
'upload file:': 'lade Datei hoch:',
|
||||||
'upload plugin file:': 'Plugin-Datei hochladen:',
|
'upload plugin file:': 'Plugin-Datei hochladen:',
|
||||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Benutze (...)&(...) für AND, (...)|(...) für OR, und ~(...) für NOT, um komplexe Abfragen zu erstellen.',
|
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Benutze (...)&(...) f?r AND, (...)|(...) f?r OR, und ~(...) f?r NOT, um komplexe Abfragen zu erstellen.',
|
||||||
'Use an url:': 'Use an url:',
|
'Use an url:': 'Verwende URL:',
|
||||||
'user': 'user',
|
'user': 'Nutzer',
|
||||||
'User ID': 'Benutzer ID',
|
'User ID': 'Benutzer ID',
|
||||||
'variables': 'variables',
|
'variables': 'Variablen',
|
||||||
'Version': 'Version',
|
'Version': 'Version',
|
||||||
'Version %s.%s.%s (%s) %s': 'Version %s.%s.%s (%s) %s',
|
'Version %s.%s.%s (%s) %s': 'Version %s.%s.%s (%s) %s',
|
||||||
'versioning': 'Versionierung',
|
'versioning': 'Versionierung',
|
||||||
'View': 'View',
|
'Versioning': 'Versionierung',
|
||||||
'view': 'View',
|
'View': 'Ansicht',
|
||||||
'Views': 'Views',
|
'view': 'Ansicht',
|
||||||
'views': 'Views',
|
'Views': 'Ansichten',
|
||||||
|
'views': 'Ansichten',
|
||||||
|
'Web Framework': 'Web Framework',
|
||||||
'web2py is up to date': 'web2py ist auf dem neuesten Stand',
|
'web2py is up to date': 'web2py ist auf dem neuesten Stand',
|
||||||
'web2py Recent Tweets': 'neuste Tweets von web2py',
|
'web2py Recent Tweets': 'neuste Tweets von web2py',
|
||||||
'Welcome %s': 'Willkommen %s',
|
'Welcome %s': 'Willkommen %s',
|
||||||
'Welcome to web2py': 'Willkommen zu web2py',
|
'Welcome to web2py': 'Willkommen zu web2py',
|
||||||
'Which called the function': 'Which called the function',
|
'Which called the function': 'welche die Funktion aufrief',
|
||||||
'Wrap with Abbreviation': 'mit Kürzel einhüllen',
|
'Wrap with Abbreviation': 'mit K?rzel einh?llen',
|
||||||
'xml': 'xml',
|
'xml': 'xml',
|
||||||
'YES': 'JA',
|
'YES': 'JA',
|
||||||
'You are successfully running web2py': 'web2by wird erfolgreich ausgeführt',
|
'You are successfully running web2py': 'web2by wird erfolgreich ausgef?hrt',
|
||||||
'You can modify this application and adapt it to your needs': 'Sie können diese Anwendung verändern und Ihren Bedürfnissen anpassen',
|
'You can modify this application and adapt it to your needs': 'Sie k?nnen diese Anwendung ver?ndern und Ihren Bed?rfnissen anpassen',
|
||||||
'You visited the url': 'Sie besuchten die URL',
|
'You visited the url': 'Sie besuchten die URL',
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,11 +5,11 @@
|
|||||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" est une expression en option tels que "field1 = \'newvalue\'". Vous ne pouvez pas mettre à jour ou supprimer les résultats d\'une jointure "a JOIN"',
|
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" est une expression en option tels que "field1 = \'newvalue\'". Vous ne pouvez pas mettre à jour ou supprimer les résultats d\'une jointure "a JOIN"',
|
||||||
'%Y-%m-%d': '%d-%m-%Y',
|
'%Y-%m-%d': '%d-%m-%Y',
|
||||||
'%Y-%m-%d %H:%M:%S': '%d-%m-%Y %H:%M:%S',
|
'%Y-%m-%d %H:%M:%S': '%d-%m-%Y %H:%M:%S',
|
||||||
'%s %%{row} deleted': 'lignes %s supprimé',
|
'%s %%{row} deleted': 'lignes %s supprimées',
|
||||||
'%s %%{row} updated': 'lignes %s mis à jour',
|
'%s %%{row} updated': 'lignes %s mises à jour',
|
||||||
'(requires internet access)': '(requires internet access)',
|
'(requires internet access)': '(nécessite un accès Internet)',
|
||||||
'(something like "it-it")': '(quelque chose comme "it-it") ',
|
'(something like "it-it")': '(quelque chose comme "it-it") ',
|
||||||
'@markmin\x01Searching: **%s** %%{file}': 'Searching: **%s** files',
|
'@markmin\x01Searching: **%s** %%{file}': 'Cherche: **%s** fichiers',
|
||||||
'A new version of web2py is available: %s': 'Une nouvelle version de web2py est disponible: %s ',
|
'A new version of web2py is available: %s': 'Une nouvelle version de web2py est disponible: %s ',
|
||||||
'A new version of web2py is available: Version 1.68.2 (2009-10-21 09:59:29)\n': 'Une nouvelle version de web2py est disponible: Version 1.68.2 (2009-10-21 09:59:29)\r\n',
|
'A new version of web2py is available: Version 1.68.2 (2009-10-21 09:59:29)\n': 'Une nouvelle version de web2py est disponible: Version 1.68.2 (2009-10-21 09:59:29)\r\n',
|
||||||
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATTENTION: nécessite une connexion sécurisée (HTTPS) ou être en localhost. ',
|
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATTENTION: nécessite une connexion sécurisée (HTTPS) ou être en localhost. ',
|
||||||
@@ -17,59 +17,59 @@
|
|||||||
'ATTENTION: you cannot edit the running application!': "ATTENTION: vous ne pouvez pas modifier l'application qui tourne!",
|
'ATTENTION: you cannot edit the running application!': "ATTENTION: vous ne pouvez pas modifier l'application qui tourne!",
|
||||||
'About': 'à propos',
|
'About': 'à propos',
|
||||||
'About application': "A propos de l'application",
|
'About application': "A propos de l'application",
|
||||||
'Additional code for your application': 'Additional code for your application',
|
'Additional code for your application': 'Code additionnel pour votre application',
|
||||||
'Admin is disabled because insecure channel': 'Admin est désactivé parce que canal non sécurisé',
|
'Admin is disabled because insecure channel': 'Admin est désactivé parce que canal non sécurisé',
|
||||||
'Admin language': 'Admin language',
|
'Admin language': "Language de l'admin",
|
||||||
'Administrator Password:': 'Mot de passe Administrateur:',
|
'Administrator Password:': 'Mot de passe Administrateur:',
|
||||||
'Application name:': 'Application name:',
|
'Application name:': "Nom de l'application:",
|
||||||
'Are you sure you want to delete file "%s"?': 'Etes-vous sûr de vouloir supprimer le fichier «%s»?',
|
'Are you sure you want to delete file "%s"?': 'Êtes-vous sûr de vouloir supprimer le fichier «%s»?',
|
||||||
'Are you sure you want to delete plugin "%s"?': 'Etes-vous sûr de vouloir effacer le plugin "%s"?',
|
'Are you sure you want to delete plugin "%s"?': 'Êtes-vous sûr de vouloir supprimer le plugin "%s"?',
|
||||||
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
|
'Are you sure you want to delete this object?': 'Êtes-vous sûr de vouloir supprimer cet objet?',
|
||||||
'Are you sure you want to uninstall application "%s"?': "Êtes-vous sûr de vouloir désinstaller l'application «%s»?",
|
'Are you sure you want to uninstall application "%s"?': "Êtes-vous sûr de vouloir désinstaller l'application «%s»?",
|
||||||
'Are you sure you want to upgrade web2py now?': 'Are you sure you want to upgrade web2py now?',
|
'Are you sure you want to upgrade web2py now?': 'Êtes-vous sûr de vouloir mettre à jour web2py maintenant?',
|
||||||
'Available databases and tables': 'Bases de données et tables disponible',
|
'Available databases and tables': 'Bases de données et tables disponible',
|
||||||
'Cannot be empty': 'Ne peut pas être vide',
|
'Cannot be empty': 'Ne peut pas être vide',
|
||||||
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'Ne peut pas compiler: il y a des erreurs dans votre application. corriger les erreurs et essayez à nouveau.',
|
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'Ne peut pas compiler: il y a des erreurs dans votre application. corriger les erreurs et essayez à nouveau.',
|
||||||
'Cannot compile: there are errors in your app:': 'Cannot compile: there are errors in your app:',
|
'Cannot compile: there are errors in your app:': 'Ne peut pas compiler: il y a des erreurs dans votre application:',
|
||||||
'Change admin password': 'change admin password',
|
'Change admin password': 'Changer le mot de passe admin',
|
||||||
'Check for upgrades': 'check for upgrades',
|
'Check for upgrades': 'Vérifier les mises à jour',
|
||||||
'Check to delete': 'Cocher pour supprimer',
|
'Check to delete': 'Cocher pour supprimer',
|
||||||
'Checking for upgrades...': 'Vérification des mises à jour ... ',
|
'Checking for upgrades...': 'Vérification des mises à jour ... ',
|
||||||
'Clean': 'nettoyer',
|
'Clean': 'nettoyer',
|
||||||
'Compile': 'compiler',
|
'Compile': 'compiler',
|
||||||
'Controllers': 'Contrôleurs',
|
'Controllers': 'Contrôleurs',
|
||||||
'Create': 'create',
|
'Create': 'Créer',
|
||||||
'Create new simple application': 'Créer une nouvelle application',
|
'Create new simple application': 'Créer une nouvelle application',
|
||||||
'Current request': 'Requête actuel',
|
'Current request': 'Requête actuelle',
|
||||||
'Current response': 'Réponse actuelle',
|
'Current response': 'Réponse actuelle',
|
||||||
'Current session': 'Session en cours',
|
'Current session': 'Session en cours',
|
||||||
'Date and Time': 'Date et heure',
|
'Date and Time': 'Date et heure',
|
||||||
'Delete': 'Supprimer',
|
'Delete': 'Supprimer',
|
||||||
'Delete this file (you will be asked to confirm deletion)': 'Delete this file (you will be asked to confirm deletion)',
|
'Delete this file (you will be asked to confirm deletion)': 'Supprimer ce fichier (on vous demandera de confirmer la suppression)',
|
||||||
'Delete:': 'Supprimer:',
|
'Delete:': 'Supprimer:',
|
||||||
'Deploy': 'deploy',
|
'Deploy': 'Déployer',
|
||||||
'Deploy on Google App Engine': 'Déployer sur Google App Engine',
|
'Deploy on Google App Engine': 'Déployer sur Google App Engine',
|
||||||
'EDIT': 'MODIFIER',
|
'EDIT': 'MODIFIER',
|
||||||
'Edit': 'modifier',
|
'Edit': 'modifier',
|
||||||
'Edit application': "Modifier l'application",
|
'Edit application': "Modifier l'application",
|
||||||
'Edit current record': 'Modifier cet entrée',
|
'Edit current record': 'Modifier cette entrée',
|
||||||
'Editing Language file': 'Modifier le fichier de langue',
|
'Editing Language file': 'Modifier le fichier de langue',
|
||||||
'Editing file': 'Modifier le fichier',
|
'Editing file': 'Modifier le fichier',
|
||||||
'Editing file "%s"': 'Modifier le fichier "% s" ',
|
'Editing file "%s"': 'Modifier le fichier "% s" ',
|
||||||
'Enterprise Web Framework': 'Enterprise Web Framework',
|
'Enterprise Web Framework': 'Enterprise Web Framework',
|
||||||
'Error logs for "%(app)s"': 'Journal d\'erreurs pour "%(app)s"',
|
'Error logs for "%(app)s"': 'Journal d\'erreurs pour "%(app)s"',
|
||||||
'Errors': 'erreurs',
|
'Errors': 'erreurs',
|
||||||
'Exception instance attributes': 'Exception instance attributes',
|
'Exception instance attributes': "Attributs d'instance Exception",
|
||||||
'Functions with no doctests will result in [passed] tests.': 'Des fonctions sans doctests entraînera tests [passed] .',
|
'Functions with no doctests will result in [passed] tests.': 'Des fonctions sans doctests entraîneront des tests [passed] .',
|
||||||
'Help': 'aide',
|
'Help': 'aide',
|
||||||
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': "Si le rapport ci-dessus contient un numéro de ticket, cela indique une défaillance dans l'exécution du contrôleur, avant toute tentative d'exécuter les doctests. Cela est généralement dû à une erreur d'indentation ou une erreur à l'extérieur du code de la fonction.\r\nUn titre verte indique que tous les tests (si définie) passed. Dans ce cas, les résultats des essais ne sont pas affichées.",
|
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': "Si le rapport ci-dessus contient un numéro de ticket, cela indique une défaillance dans l'exécution du contrôleur, avant toute tentative d'exécuter les doctests. Cela est généralement dû à une erreur d'indentation ou une erreur à l'extérieur du code de la fonction.\r\nUn titre vert indique que tous les tests (si définis) sont passés. Dans ce cas, les résultats des essais ne sont pas affichées.",
|
||||||
'Import/Export': 'Importer/Exporter',
|
'Import/Export': 'Importer/Exporter',
|
||||||
'Install': 'install',
|
'Install': 'Installer',
|
||||||
'Installed applications': 'Les applications installées',
|
'Installed applications': 'Applications installées',
|
||||||
'Internal State': 'État Interne',
|
'Internal State': 'État Interne',
|
||||||
'Invalid Query': 'Requête non valide',
|
'Invalid Query': 'Requête non valide',
|
||||||
'Invalid action': 'Action non valide',
|
'Invalid action': 'Action non valide',
|
||||||
'Language files (static strings) updated': 'Fichiers de langue (static strings) Mise à jour ',
|
'Language files (static strings) updated': 'Fichiers de langue (chaînes statiques) mis à jour ',
|
||||||
'Languages': 'Langues',
|
'Languages': 'Langues',
|
||||||
'Last saved on:': 'Dernière sauvegarde le:',
|
'Last saved on:': 'Dernière sauvegarde le:',
|
||||||
'License for': 'Licence pour',
|
'License for': 'Licence pour',
|
||||||
@@ -79,13 +79,13 @@
|
|||||||
'Models': 'Modèles',
|
'Models': 'Modèles',
|
||||||
'Modules': 'Modules',
|
'Modules': 'Modules',
|
||||||
'NO': 'NON',
|
'NO': 'NON',
|
||||||
'New Record': 'Nouvel Entrée',
|
'New Record': 'Nouvelle Entrée',
|
||||||
'New application wizard': 'New application wizard',
|
'New application wizard': 'Assistant nouvelle application',
|
||||||
'New simple application': 'New simple application',
|
'New simple application': 'Nouvelle application simple',
|
||||||
'No databases in this application': 'Aucune base de données dans cette application',
|
'No databases in this application': 'Aucune base de données dans cette application',
|
||||||
'Original/Translation': 'Original / Traduction',
|
'Original/Translation': 'Original / Traduction',
|
||||||
'Overwrite installed app': 'overwrite installed app',
|
'Overwrite installed app': "Écraser l'application installée",
|
||||||
'PAM authenticated user, cannot change password here': 'PAM authenticated user, cannot change password here',
|
'PAM authenticated user, cannot change password here': 'Utilisateur authentifié par PAM, vous ne pouvez pas changer le mot de passe ici',
|
||||||
'Pack all': 'tout empaqueter',
|
'Pack all': 'tout empaqueter',
|
||||||
'Pack compiled': 'paquet compilé',
|
'Pack compiled': 'paquet compilé',
|
||||||
'Peeking at file': 'Jeter un oeil au fichier',
|
'Peeking at file': 'Jeter un oeil au fichier',
|
||||||
@@ -97,101 +97,101 @@
|
|||||||
'Resolve Conflict file': 'Résoudre les conflits de fichiers',
|
'Resolve Conflict file': 'Résoudre les conflits de fichiers',
|
||||||
'Rows in table': 'Lignes de la table',
|
'Rows in table': 'Lignes de la table',
|
||||||
'Rows selected': 'Lignes sélectionnées',
|
'Rows selected': 'Lignes sélectionnées',
|
||||||
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Run tests in this file (to run all files, you may also use the button labelled 'test')",
|
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Lancer les tests dans ce fichier (pour lancer tous les fichiers, vous pouvez également utiliser le bouton nommé 'test')",
|
||||||
'Save': 'Save',
|
'Save': 'Enregistrer',
|
||||||
'Saved file hash:': 'Hash du Fichier enregistré:',
|
'Saved file hash:': 'Hash du Fichier enregistré:',
|
||||||
'Site': 'site',
|
'Site': 'Site',
|
||||||
'Start wizard': 'start wizard',
|
'Start wizard': "Démarrer l'assistant",
|
||||||
'Static files': 'Fichiers statiques',
|
'Static files': 'Fichiers statiques',
|
||||||
'Sure you want to delete this object?': 'Vous êtes sûr de vouloir supprimer cet objet? ',
|
'Sure you want to delete this object?': 'Vous êtes sûr de vouloir supprimer cet objet? ',
|
||||||
'TM': 'MD',
|
'TM': 'MD',
|
||||||
'Testing application': "Test de l'application",
|
'Testing application': "Test de l'application",
|
||||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'La "requête" est une condition comme "db.table1.field1==\'value\'". Quelque chose comme "db.table1.field1==db.table2.field2" aboutit à un JOIN SQL.',
|
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'La "requête" est une condition comme "db.table1.field1==\'value\'". Quelque chose comme "db.table1.field1==db.table2.field2" aboutit à un JOIN SQL.',
|
||||||
'The application logic, each URL path is mapped in one exposed function in the controller': 'The application logic, each URL path is mapped in one exposed function in the controller',
|
'The application logic, each URL path is mapped in one exposed function in the controller': "La logique de l'application, chaque chemin d'URL est mappé avec une fonction exposée dans le contrôleur",
|
||||||
'The data representation, define database tables and sets': 'The data representation, define database tables and sets',
|
'The data representation, define database tables and sets': 'La représentation des données, définir les tables et ensembles de la base de données',
|
||||||
'The presentations layer, views are also known as templates': 'The presentations layer, views are also known as templates',
|
'The presentations layer, views are also known as templates': "Les couches de présentation, les vues sont également appelées modples",
|
||||||
'There are no controllers': "Il n'existe pas de contrôleurs",
|
'There are no controllers': "Il n'y a pas de contrôleurs",
|
||||||
'There are no models': "Il n'existe pas de modèles",
|
'There are no models': "Il n'y a pas de modèles",
|
||||||
'There are no modules': "Il n'existe pas de modules",
|
'There are no modules': "Il n'y a pas de modules",
|
||||||
'There are no plugins': 'There are no plugins',
|
'There are no plugins': "Il n'y a pas de plugins",
|
||||||
'There are no static files': "Il n'existe pas de fichiers statiques",
|
'There are no static files': "Il n'y a pas de fichiers statiques",
|
||||||
'There are no translators, only default language is supported': "Il n'y a pas de traducteurs, est prise en charge uniquement la langue par défaut",
|
'There are no translators, only default language is supported': "Il n'y a pas de traducteurs, seule la langue par défaut est prise en charge",
|
||||||
'There are no views': "Il n'existe pas de vues",
|
'There are no views': "Il n'y a pas de vues",
|
||||||
'These files are served without processing, your images go here': 'These files are served without processing, your images go here',
|
'These files are served without processing, your images go here': 'Ces fichiers sont renvoyés sans traitement, vos images viennent ici',
|
||||||
'This is the %(filename)s template': 'Ceci est le modèle %(filename)s ',
|
'This is the %(filename)s template': 'Ceci est le modèle %(filename)s ',
|
||||||
'Ticket': 'Ticket',
|
'Ticket': 'Ticket',
|
||||||
'To create a plugin, name a file/folder plugin_[name]': 'Pour créer un plugin, créer un fichier /dossier plugin_[nom]',
|
'To create a plugin, name a file/folder plugin_[name]': 'Pour créer un plugin, créer un fichier /dossier plugin_[nom]',
|
||||||
'Translation strings for the application': 'Translation strings for the application',
|
'Translation strings for the application': "Chaînes de traduction pour l'application",
|
||||||
'Unable to check for upgrades': 'Impossible de vérifier les mises à niveau',
|
'Unable to check for upgrades': 'Impossible de vérifier les mises à jour',
|
||||||
'Unable to download': 'Impossible de télécharger',
|
'Unable to download': 'Impossible de télécharger',
|
||||||
'Unable to download app': 'Impossible de télécharger app',
|
'Unable to download app': "Impossible de télécharger l'app",
|
||||||
'Unable to download app because:': 'Unable to download app because:',
|
'Unable to download app because:': "Impossible de télécharger l'app car:",
|
||||||
'Unable to download because': 'Unable to download because',
|
'Unable to download because': 'Impossible de télécharger car',
|
||||||
'Uninstall': 'désinstaller',
|
'Uninstall': 'désinstaller',
|
||||||
'Update:': 'Mise à jour:',
|
'Update:': 'Mise à jour:',
|
||||||
'Upload & install packed application': 'Upload & install packed application',
|
'Upload & install packed application': "Charger & installer l'application empaquetée",
|
||||||
'Upload a package:': 'Upload a package:',
|
'Upload a package:': 'Charger un paquet:',
|
||||||
'Upload existing application': 'charger une application existante',
|
'Upload existing application': 'Charger une application existante',
|
||||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Utilisez (...)&(...) pour AND, (...)|(...) pour OR, et ~(...) pour NOT et construire des requêtes plus complexes. ',
|
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Utilisez (...)&(...) pour AND, (...)|(...) pour OR, et ~(...) pour NOT afin de construire des requêtes plus complexes. ',
|
||||||
'Use an url:': 'Use an url:',
|
'Use an url:': 'Utiliser une url:',
|
||||||
'Version': 'Version',
|
'Version': 'Version',
|
||||||
'Views': 'Vues',
|
'Views': 'Vues',
|
||||||
'Web Framework': 'Web Framework',
|
'Web Framework': 'Framework Web',
|
||||||
'YES': 'OUI',
|
'YES': 'OUI',
|
||||||
'additional code for your application': 'code supplémentaire pour votre application',
|
'additional code for your application': 'code supplémentaire pour votre application',
|
||||||
'admin disabled because no admin password': 'admin désactivé car aucun mot de passe admin',
|
'admin disabled because no admin password': 'admin désactivée car aucun mot de passe admin',
|
||||||
'admin disabled because not supported on google app engine': 'admin désactivé car non pris en charge sur Google Apps engine',
|
'admin disabled because not supported on google app engine': 'admin désactivée car non prise en charge sur Google Apps engine',
|
||||||
'admin disabled because unable to access password file': "admin désactivé car incapable d'accéder au fichier mot de passe",
|
'admin disabled because unable to access password file': "admin désactivée car incapable d'accéder au fichier mot de passe",
|
||||||
'administrative interface': 'administrative interface',
|
'administrative interface': "interface d'administration",
|
||||||
'and rename it (required):': 'et renommez-la (obligatoire):',
|
'and rename it (required):': 'et renommez-la (obligatoire):',
|
||||||
'and rename it:': 'et renommez-le:',
|
'and rename it:': 'et renommez-le:',
|
||||||
'appadmin': 'appadmin',
|
'appadmin': 'appadmin',
|
||||||
'appadmin is disabled because insecure channel': 'appadmin est désactivé parce que canal non sécurisé',
|
'appadmin is disabled because insecure channel': 'appadmin est désactivé parce que canal non sécurisé',
|
||||||
'application "%s" uninstalled': 'application "%s" désinstallé',
|
'application "%s" uninstalled': 'application "%s" désinstallée',
|
||||||
'application %(appname)s installed with md5sum: %(digest)s': 'application %(appname)s installed with md5sum: %(digest)s',
|
'application %(appname)s installed with md5sum: %(digest)s': 'application %(appname)s installée avec md5sum: %(digest)s',
|
||||||
'application compiled': 'application compilée',
|
'application compiled': 'application compilée',
|
||||||
'application is compiled and cannot be designed': "l'application est compilée et ne peut être désigné",
|
'application is compiled and cannot be designed': "l'application est compilée et ne peut être modifiée",
|
||||||
'arguments': 'arguments',
|
'arguments': 'arguments',
|
||||||
'back': 'retour',
|
'back': 'retour',
|
||||||
'cache': 'cache',
|
'cache': 'cache',
|
||||||
'cache, errors and sessions cleaned': 'cache, erreurs et sessions nettoyé',
|
'cache, errors and sessions cleaned': 'cache, erreurs et sessions nettoyés',
|
||||||
'cannot create file': 'ne peu pas créer de fichier',
|
'cannot create file': 'ne peut pas créer de fichier',
|
||||||
'cannot upload file "%(filename)s"': 'ne peu pas charger le fichier "%(filename)s"',
|
'cannot upload file "%(filename)s"': 'ne peut pas charger le fichier "%(filename)s"',
|
||||||
'check all': 'tous vérifier ',
|
'check all': 'tout vérifier ',
|
||||||
'click to check for upgrades': 'Cliquez pour vérifier les mises à niveau',
|
'click to check for upgrades': 'Cliquez pour vérifier les mises jour',
|
||||||
'code': 'code',
|
'code': 'code',
|
||||||
'collapse/expand all': 'collapse/expand all',
|
'collapse/expand all': 'tout réduire/agrandir',
|
||||||
'compiled application removed': 'application compilée enlevé',
|
'compiled application removed': 'application compilée enlevée',
|
||||||
'controllers': 'contrôleurs',
|
'controllers': 'contrôleurs',
|
||||||
'create file with filename:': 'créer un fichier avec nom de fichier:',
|
'create file with filename:': 'créer un fichier avec nom de fichier:',
|
||||||
'create new application:': 'créer une nouvelle application:',
|
'create new application:': 'créer une nouvelle application:',
|
||||||
'created by': 'créé par',
|
'created by': 'créé par',
|
||||||
'crontab': 'crontab',
|
'crontab': 'crontab',
|
||||||
'currently running': 'currently running',
|
'currently running': 'tourne actuellement',
|
||||||
'currently saved or': 'actuellement enregistrés ou',
|
'currently saved or': 'actuellement enregistré ou',
|
||||||
'data uploaded': 'données chargées',
|
'data uploaded': 'données chargées',
|
||||||
'database': 'base de données',
|
'database': 'base de données',
|
||||||
'database %s select': 'base de données %s sélectionner',
|
'database %s select': 'base de données %s sélectionner',
|
||||||
'database administration': 'administration base de données',
|
'database administration': 'administration base de données',
|
||||||
'db': 'db',
|
'db': 'bdd',
|
||||||
'defines tables': 'définit les tables',
|
'defines tables': 'définit les tables',
|
||||||
'delete': 'supprimer',
|
'delete': 'supprimer',
|
||||||
'delete all checked': 'supprimer tout ce qui est cocher',
|
'delete all checked': 'supprimer tout ce qui est coché',
|
||||||
'delete plugin': ' supprimer plugin',
|
'delete plugin': ' supprimer le plugin',
|
||||||
'design': 'conception',
|
'design': 'conception',
|
||||||
'direction: ltr': 'direction: ltr',
|
'direction: ltr': 'direction: ltr',
|
||||||
'docs': 'docs',
|
'docs': 'docs',
|
||||||
'done!': 'fait!',
|
'done!': 'fait!',
|
||||||
'download layouts': 'download layouts',
|
'download layouts': 'télécharger layouts',
|
||||||
'download plugins': 'download plugins',
|
'download plugins': 'télécharger plugins',
|
||||||
'edit controller': 'modifier contrôleur',
|
'edit controller': 'modifier contrôleur',
|
||||||
'edit views:': 'edit views:',
|
'edit views:': 'modifier vues:',
|
||||||
'export as csv file': 'exportation au format CSV',
|
'export as csv file': 'export au format CSV',
|
||||||
'exposes': 'expose',
|
'exposes': 'expose',
|
||||||
'exposes:': 'exposes:',
|
'exposes:': 'expose:',
|
||||||
'extends': 'étend',
|
'extends': 'étend',
|
||||||
'failed to reload module': 'impossible de recharger le module',
|
'failed to reload module': 'impossible de recharger le module',
|
||||||
'failed to reload module because:': 'failed to reload module because:',
|
'failed to reload module because:': 'impossible de recharger le module car:',
|
||||||
'file "%(filename)s" created': 'fichier "%(filename)s" créé',
|
'file "%(filename)s" created': 'fichier "%(filename)s" créé',
|
||||||
'file "%(filename)s" deleted': 'fichier "%(filename)s" supprimé',
|
'file "%(filename)s" deleted': 'fichier "%(filename)s" supprimé',
|
||||||
'file "%(filename)s" uploaded': 'fichier "%(filename)s" chargé',
|
'file "%(filename)s" uploaded': 'fichier "%(filename)s" chargé',
|
||||||
@@ -200,7 +200,7 @@
|
|||||||
'file does not exist': "fichier n'existe pas",
|
'file does not exist': "fichier n'existe pas",
|
||||||
'file saved on %(time)s': 'fichier enregistré le %(time)s',
|
'file saved on %(time)s': 'fichier enregistré le %(time)s',
|
||||||
'file saved on %s': 'fichier enregistré le %s',
|
'file saved on %s': 'fichier enregistré le %s',
|
||||||
'filter': 'filter',
|
'filter': 'filtre',
|
||||||
'htmledit': 'edition html',
|
'htmledit': 'edition html',
|
||||||
'includes': 'inclus',
|
'includes': 'inclus',
|
||||||
'index': 'index',
|
'index': 'index',
|
||||||
@@ -219,14 +219,14 @@
|
|||||||
'modules': 'modules',
|
'modules': 'modules',
|
||||||
'new application "%s" created': 'nouvelle application "%s" créée',
|
'new application "%s" created': 'nouvelle application "%s" créée',
|
||||||
'new plugin installed': 'nouveau plugin installé',
|
'new plugin installed': 'nouveau plugin installé',
|
||||||
'new record inserted': 'nouvelle entrée inséré',
|
'new record inserted': 'nouvelle entrée insérée',
|
||||||
'next 100 rows': '100 lignes suivantes',
|
'next 100 rows': '100 lignes suivantes',
|
||||||
'no match': 'no match',
|
'no match': 'aucune correspondance',
|
||||||
'or import from csv file': 'ou importer depuis un fichier CSV ',
|
'or import from csv file': 'ou importer depuis un fichier CSV ',
|
||||||
'or provide app url:': 'or provide app url:',
|
'or provide app url:': "ou fournir l'URL de l'app:",
|
||||||
'or provide application url:': "ou fournir l'URL de l'application:",
|
'or provide application url:': "ou fournir l'URL de l'application:",
|
||||||
'pack plugin': 'paquet plugin',
|
'pack plugin': 'paquet plugin',
|
||||||
'password changed': 'password changed',
|
'password changed': 'mot de passe modifié',
|
||||||
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" supprimé',
|
'plugin "%(plugin)s" deleted': 'plugin "%(plugin)s" supprimé',
|
||||||
'plugins': 'plugins',
|
'plugins': 'plugins',
|
||||||
'previous 100 rows': '100 lignes précédentes',
|
'previous 100 rows': '100 lignes précédentes',
|
||||||
@@ -245,9 +245,9 @@
|
|||||||
'submit': 'envoyer',
|
'submit': 'envoyer',
|
||||||
'table': 'table',
|
'table': 'table',
|
||||||
'test': 'tester',
|
'test': 'tester',
|
||||||
'the application logic, each URL path is mapped in one exposed function in the controller': "la logique de l'application, chaque route URL est mappé dans une fonction exposée dans le contrôleur",
|
'the application logic, each URL path is mapped in one exposed function in the controller': "la logique de l'application, chaque chemin d'URL est mappé dans une fonction exposée dans le contrôleur",
|
||||||
'the data representation, define database tables and sets': 'la représentation des données, défini les tables de bases de données et sets',
|
'the data representation, define database tables and sets': 'La représentation des données, définir les tables et ensembles de la base de données',
|
||||||
'the presentations layer, views are also known as templates': 'la couche des présentations, les vues sont également connus en tant que modèles',
|
'the presentations layer, views are also known as templates': 'la couche de présentation, les vues sont également appelées modèles',
|
||||||
'these files are served without processing, your images go here': 'ces fichiers sont servis sans transformation, vos images vont ici',
|
'these files are served without processing, your images go here': 'ces fichiers sont servis sans transformation, vos images vont ici',
|
||||||
'to previous version.': 'à la version précédente.',
|
'to previous version.': 'à la version précédente.',
|
||||||
'translation strings for the application': "chaînes de traduction de l'application",
|
'translation strings for the application': "chaînes de traduction de l'application",
|
||||||
@@ -258,22 +258,22 @@
|
|||||||
'unable to delete file plugin "%(plugin)s"': 'impossible de supprimer le plugin "%(plugin)s"',
|
'unable to delete file plugin "%(plugin)s"': 'impossible de supprimer le plugin "%(plugin)s"',
|
||||||
'unable to parse csv file': "impossible d'analyser les fichiers CSV",
|
'unable to parse csv file': "impossible d'analyser les fichiers CSV",
|
||||||
'unable to uninstall "%s"': 'impossible de désinstaller "%s"',
|
'unable to uninstall "%s"': 'impossible de désinstaller "%s"',
|
||||||
'unable to upgrade because "%s"': 'unable to upgrade because "%s"',
|
'unable to upgrade because "%s"': 'impossible de mettre à jour car "%s"',
|
||||||
'uncheck all': 'tout décocher',
|
'uncheck all': 'tout décocher',
|
||||||
'update': 'mettre à jour',
|
'update': 'mettre à jour',
|
||||||
'update all languages': 'mettre à jour toutes les langues',
|
'update all languages': 'mettre à jour toutes les langues',
|
||||||
'upgrade now': 'upgrade now',
|
'upgrade now': 'mettre à jour maintenant',
|
||||||
'upgrade web2py now': 'upgrade web2py now',
|
'upgrade web2py now': 'mettre à jour web2py maintenant',
|
||||||
'upload': 'upload',
|
'upload': 'charger',
|
||||||
'upload application:': "charger l'application:",
|
'upload application:': "charger l'application:",
|
||||||
'upload file:': 'charger le fichier:',
|
'upload file:': 'charger le fichier:',
|
||||||
'upload plugin file:': 'charger fichier plugin:',
|
'upload plugin file:': 'charger fichier plugin:',
|
||||||
'user': 'user',
|
'user': 'utilisateur',
|
||||||
'variables': 'variables',
|
'variables': 'variables',
|
||||||
'versioning': 'versioning',
|
'versioning': 'versioning',
|
||||||
'view': 'vue',
|
'view': 'vue',
|
||||||
'views': 'vues',
|
'views': 'vues',
|
||||||
'web2py Recent Tweets': 'web2py Tweets récentes',
|
'web2py Recent Tweets': 'Tweets récents sur web2py ',
|
||||||
'web2py is up to date': 'web2py est à jour',
|
'web2py is up to date': 'web2py est à jour',
|
||||||
'web2py upgraded; please restart it': 'web2py upgraded; please restart it',
|
'web2py upgraded; please restart it': 'web2py mis à jour; veuillez le redémarrer',
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,9 +23,9 @@ if request.vars.app or request.args:
|
|||||||
|
|
||||||
if os.path.exists('applications/examples'):
|
if os.path.exists('applications/examples'):
|
||||||
response.menu.append(
|
response.menu.append(
|
||||||
(T('Help'), False, URL('examples', 'default', 'index')))
|
(T('Help'), False, URL('examples', 'default', 'documentation')))
|
||||||
else:
|
else:
|
||||||
response.menu.append((T('Help'), False, 'http://web2py.com/examples'))
|
response.menu.append((T('Help'), False, 'http://web2py.com/examples/default/documentation'))
|
||||||
|
|
||||||
if not session.authorized:
|
if not session.authorized:
|
||||||
response.menu = [(T('Login'), True, URL('site'))]
|
response.menu = [(T('Login'), True, URL('site'))]
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ div.flash {
|
|||||||
position:fixed;
|
position:fixed;
|
||||||
padding:10px;
|
padding:10px;
|
||||||
top:48px;
|
top:48px;
|
||||||
right:50px;
|
right:250px;
|
||||||
min-width:280px;
|
min-width:280px;
|
||||||
opacity:0.95;
|
opacity:0.95;
|
||||||
margin:0px 0px 10px 10px;
|
margin:0px 0px 10px 10px;
|
||||||
@@ -191,6 +191,7 @@ div.error {
|
|||||||
.web2py_grid {width:100%}
|
.web2py_grid {width:100%}
|
||||||
.web2py_grid table {width:100%}
|
.web2py_grid table {width:100%}
|
||||||
.web2py_grid tbody td {padding:2px 5px 2px 5px; vertical-align: middle;}
|
.web2py_grid tbody td {padding:2px 5px 2px 5px; vertical-align: middle;}
|
||||||
|
.web2py_grid .web2py_form td {vertical-align: top;}
|
||||||
|
|
||||||
.web2py_grid thead th,.web2py_grid tfoot td {
|
.web2py_grid thead th,.web2py_grid tfoot td {
|
||||||
background-color:#EAEAEA;
|
background-color:#EAEAEA;
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ td.w2p_fl,td.w2p_fc {padding:0;}
|
|||||||
==============================================================*/
|
==============================================================*/
|
||||||
|
|
||||||
/* because web2py handles this via js */
|
/* because web2py handles this via js */
|
||||||
|
textarea { width:90%}
|
||||||
.hidden{visibility:visible;}
|
.hidden{visibility:visible;}
|
||||||
/* right folder for bootstrap black images/icons */
|
/* right folder for bootstrap black images/icons */
|
||||||
[class^="icon-"],[class*=" icon-"]{
|
[class^="icon-"],[class*=" icon-"]{
|
||||||
|
|||||||
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
@@ -35,6 +35,7 @@ function web2py_ajax_init(target) {
|
|||||||
jQuery('.hidden', target).hide();
|
jQuery('.hidden', target).hide();
|
||||||
jQuery('.error', target).hide().slideDown('slow');
|
jQuery('.error', target).hide().slideDown('slow');
|
||||||
web2py_ajax_fields(target);
|
web2py_ajax_fields(target);
|
||||||
|
web2py_show_if(target);
|
||||||
};
|
};
|
||||||
|
|
||||||
function web2py_event_handlers() {
|
function web2py_event_handlers() {
|
||||||
@@ -216,3 +217,26 @@ function web2py_validate_entropy(myfield, req_entropy) {
|
|||||||
if(!myfield.hasClass('entropy_check')) myfield.on('keyup', validator).on('keydown', validator).addClass('entropy_check');
|
if(!myfield.hasClass('entropy_check')) myfield.on('keyup', validator).on('keydown', validator).addClass('entropy_check');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function web2py_show_if(target) {
|
||||||
|
var triggers = {};
|
||||||
|
var show_if = function () {
|
||||||
|
var t = jQuery(this);
|
||||||
|
var id = t.attr('id');
|
||||||
|
t.attr('value', t.val());
|
||||||
|
for(var k = 0; k < triggers[id].length; k++) {
|
||||||
|
var dep = jQuery('#' + triggers[id][k], target);
|
||||||
|
var tr = jQuery('#' + triggers[id][k] + '__row', target);
|
||||||
|
if(t.is(dep.attr('data-show-if'))) tr.slideDown();
|
||||||
|
else tr.hide();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
jQuery('[data-show-trigger]', target).each(function () {
|
||||||
|
var name = jQuery(this).attr('data-show-trigger');
|
||||||
|
if(!triggers[name]) triggers[name] = [];
|
||||||
|
triggers[name].push(jQuery(this).attr('id'));
|
||||||
|
});
|
||||||
|
for(var name in triggers) {
|
||||||
|
jQuery('#' + name, target).change(show_if).keyup(show_if);
|
||||||
|
show_if.call(jQuery('#' + name, target));
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -8,21 +8,28 @@ jQuery(function(){
|
|||||||
if(jQuery(this).find('ul').length)
|
if(jQuery(this).find('ul').length)
|
||||||
jQuery(this).addClass('dropdown-submenu');
|
jQuery(this).addClass('dropdown-submenu');
|
||||||
});
|
});
|
||||||
|
function adjust_height_of_collapsed_nav() {
|
||||||
|
var cn = jQuery('div.collapse');
|
||||||
|
if (cn.get(0)) {
|
||||||
|
var cnh = cn.get(0).style.height;
|
||||||
|
if (cnh>'0px'){
|
||||||
|
cn.css('height','auto');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
function hoverMenu(){
|
function hoverMenu(){
|
||||||
var wid = document.documentElement.clientWidth; //faster than $(window).width() and cross browser
|
jQuery('ul.nav a.dropdown-toggle').parent().hover(function(){
|
||||||
if (wid>=980){
|
adjust_height_of_collapsed_nav();
|
||||||
jQuery('ul.nav a.dropdown-toggle').parent().hover(function(){
|
mi = jQuery(this).addClass('open');
|
||||||
mi = jQuery(this).addClass('open');
|
mi.children('.dropdown-menu').stop(true, true).delay(200).fadeIn(400);
|
||||||
mi.children('.dropdown-menu').stop(true, true).delay(200).fadeIn(400);
|
}, function(){
|
||||||
}, function(){
|
mi = jQuery(this);
|
||||||
mi = jQuery(this);
|
mi.children('.dropdown-menu').stop(true, true).delay(200).fadeOut(function(){mi.removeClass('open')});
|
||||||
mi.children('.dropdown-menu').stop(true, true).delay(200).fadeOut(function(){mi.removeClass('open')});
|
});
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
hoverMenu(); // first page load
|
hoverMenu(); // first page load
|
||||||
jQuery(window).resize(hoverMenu); // on resize event
|
jQuery(window).resize(hoverMenu); // on resize event
|
||||||
jQuery('ul.nav li.dropdown a').click(function(){window.location=jQuery(this).attr('href');});
|
jQuery('ul.nav li.dropdown a').click(function(){window.location=jQuery(this).attr('href');});
|
||||||
// make all buttons bootstrap buttons
|
// make all buttons bootstrap buttons
|
||||||
jQuery('button, form input[type="submit"], form input[type="button"]').addClass('btn');
|
jQuery('button, form input[type="submit"], form input[type="button"]').addClass('btn');
|
||||||
});
|
});
|
||||||
@@ -247,3 +247,39 @@
|
|||||||
{{=IMG(_src=URL('appadmin', 'bg_graph_model'))}}
|
{{=IMG(_src=URL('appadmin', 'bg_graph_model'))}}
|
||||||
{{pass}}
|
{{pass}}
|
||||||
{{pass}}
|
{{pass}}
|
||||||
|
|
||||||
|
{{if request.function == 'auth_manage':}}
|
||||||
|
<h2>{{=T('Manage Access Control')}}</h2>
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<li class="active"><a href="#users" data-toggle="tab">Users</a></li>
|
||||||
|
<li><a href="#roles" data-toggle="tab">Roles</a></li>
|
||||||
|
<li><a href="#permissions" data-toggle="tab">Permissions</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="tab-content">
|
||||||
|
<div class="tab-pane active" id="users">
|
||||||
|
{{=LOAD(f='auth_manage.load', args=auth.settings.table_user_name,ajax=True)}}
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane" id="roles">
|
||||||
|
{{=LOAD(f='auth_manage.load', args=auth.settings.table_group_name,ajax=True)}}
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane" id="permissions">
|
||||||
|
{{=LOAD(f='auth_manage.load', args=auth.settings.table_permission_name,ajax=True)}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{elif request.function == 'manage':}}
|
||||||
|
<h2>{{=T('Manage Access Control')}}</h2>
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
{{for k,tablename in enumerate(auth.db.tables):}}
|
||||||
|
<li><a href="#table-{{=tablename}}" data-toggle="tab">{{=tablename}}</a></li>
|
||||||
|
{{pass}}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="tab-content">
|
||||||
|
{{for tablename in auth.db.tables:}}
|
||||||
|
<div class="tab-pane" id="table-{{=tablename}}">
|
||||||
|
{{=LOAD(f='manage.load', args=tablename,ajax=True)}}
|
||||||
|
</div>
|
||||||
|
{{pass}}
|
||||||
|
</div>
|
||||||
|
{{pass}}
|
||||||
|
|||||||
@@ -1,69 +1,69 @@
|
|||||||
{{extend 'layout.html'}}
|
{{extend 'layout.html'}}
|
||||||
{{
|
{{
|
||||||
def all(items):
|
def all(items):
|
||||||
return reduce(lambda a,b:a and b,items,True)
|
return reduce(lambda a,b:a and b,items,True)
|
||||||
def peekfile(path,file,vars={},title=None):
|
def peekfile(path,file,vars={},title=None):
|
||||||
args=(path,file) if 'app' in vars else (app,path,file)
|
args=(path,file) if 'app' in vars else (app,path,file)
|
||||||
return A(file.replace('\\\\','/'),_title=title,_href=URL('peek', args=args, vars=vars))
|
return A(file.replace('\\\\','/'),_title=title,_href=URL('peek', args=args, vars=vars))
|
||||||
def editfile(path,file,vars={}):
|
def editfile(path,file,vars={}):
|
||||||
args=(path,file) if 'app' in vars else (app,path,file)
|
args=(path,file) if 'app' in vars else (app,path,file)
|
||||||
return A(SPAN(T('Edit')),_class='button editbutton btn',_href=URL('edit', args=args, vars=vars))
|
return A(SPAN(T('Edit')),_class='button editbutton btn btn-mini',_href=URL('edit', args=args, vars=vars))
|
||||||
def testfile(path,file):
|
def testfile(path,file):
|
||||||
return A(TAG[''](IMG(_src=URL('static', 'images/test_icon.png'), _alt=T('test')),
|
return A(TAG[''](IMG(_src=URL('static', 'images/test_icon.png'), _alt=T('test')),
|
||||||
SPAN(T("Run tests in this file (to run all files, you may also use the button labelled 'test')"))),
|
SPAN(T("Run tests in this file (to run all files, you may also use the button labelled 'test')"))),
|
||||||
_class='icon test',
|
_class='icon test',
|
||||||
_href=URL('test', args=(app, file)),
|
_href=URL('test', args=(app, file)),
|
||||||
_rel="tooltip",
|
_rel="tooltip",
|
||||||
**{'_data-placement':'right',
|
**{'_data-placement':'right',
|
||||||
'_data-original-title':T("Run tests in this file (to run all files, you may also use the button labelled 'test')")})
|
'_data-original-title':T("Run tests in this file (to run all files, you may also use the button labelled 'test')")})
|
||||||
def editlanguagefile(path,file,vars={}):
|
def editlanguagefile(path,file,vars={}):
|
||||||
return A(SPAN(T('Edit')),_class='button editbutton btn',_href=URL('edit_language', args=(app, path, file), vars=vars))
|
return A(SPAN(T('Edit')),_class='button editbutton btn btn-mini',_href=URL('edit_language', args=(app, path, file), vars=vars))
|
||||||
def editpluralsfile(path,file,vars={}):
|
def editpluralsfile(path,file,vars={}):
|
||||||
return A(SPAN(T('Edit')),_class='button editbutton btn',_href=URL('edit_plurals', args=(app, path, file), vars=vars))
|
return A(SPAN(T('Edit')),_class='button editbutton btn btn-mini',_href=URL('edit_plurals', args=(app, path, file), vars=vars))
|
||||||
def file_upload_form(location, anchor=None):
|
def file_upload_form(location, anchor=None):
|
||||||
form=FORM(
|
form=FORM(
|
||||||
LABEL(T("upload file:")),
|
LABEL(T("upload file:")),
|
||||||
INPUT(_type="file",_name="file"),
|
INPUT(_type="file",_name="file"),
|
||||||
LABEL(T("and rename it:")),
|
LABEL(T("and rename it:")),
|
||||||
INPUT(_type="text",_name="filename",requires=IS_NOT_EMPTY,_class=""),
|
INPUT(_type="text",_name="filename",requires=IS_NOT_EMPTY,_class=""),
|
||||||
DIV(TAG['BUTTON'](T("Upload"),_type="submit",_class="btn"),_class="controls"),
|
DIV(TAG['BUTTON'](T("Upload"),_type="submit",_class="btn"),_class="controls"),
|
||||||
INPUT(_type="hidden",_name="location",_value=location),
|
INPUT(_type="hidden",_name="location",_value=location),
|
||||||
INPUT(_type="hidden",_name="token",_value=session.token),
|
INPUT(_type="hidden",_name="token",_value=session.token),
|
||||||
INPUT(_type="hidden",_name="sender",_value=URL('design',args=app, anchor=anchor)),
|
INPUT(_type="hidden",_name="sender",_value=URL('design',args=app, anchor=anchor)),
|
||||||
_action=URL('upload_file'),
|
_action=URL('upload_file'),
|
||||||
_class="generatedbyw2p well well-small")
|
_class="generatedbyw2p well well-small")
|
||||||
return form
|
return form
|
||||||
def file_create_form(location, anchor=None, helptext=""):
|
def file_create_form(location, anchor=None, helptext=""):
|
||||||
form=FORM(
|
form=FORM(
|
||||||
LABEL(T("create file with filename:")),
|
LABEL(T("create file with filename:")),
|
||||||
INPUT(_type="text",_name="filename",requires=IS_NOT_EMPTY,_class=''),
|
INPUT(_type="text",_name="filename",requires=IS_NOT_EMPTY,_class=''),
|
||||||
TAG['SMALL'](helptext,_class="help-block"),
|
TAG['SMALL'](helptext,_class="help-block"),
|
||||||
DIV(TAG['BUTTON'](T("Create"),_type="submit",_class="btn"),_class="controls"),
|
DIV(TAG['BUTTON'](T("Create"),_type="submit",_class="btn"),_class="controls"),
|
||||||
INPUT(_type="hidden",_name="location",_value=location),
|
INPUT(_type="hidden",_name="location",_value=location),
|
||||||
INPUT(_type="hidden",_name="sender",_value=URL('design',args=app)),
|
INPUT(_type="hidden",_name="sender",_value=URL('design',args=app)),
|
||||||
INPUT(_type="hidden",_name="token",_value=session.token),
|
INPUT(_type="hidden",_name="token",_value=session.token),
|
||||||
INPUT(_type="hidden",_name="id",_value=anchor),
|
INPUT(_type="hidden",_name="id",_value=anchor),
|
||||||
_action=URL('create_file'),
|
_action=URL('create_file'),
|
||||||
_class="generatedbyw2p well well-small")
|
_class="generatedbyw2p well well-small")
|
||||||
return form
|
return form
|
||||||
def upload_plugin_form(app, anchor=None):
|
def upload_plugin_form(app, anchor=None):
|
||||||
form=FORM(
|
form=FORM(
|
||||||
LABEL(T("upload plugin file:")),
|
LABEL(T("upload plugin file:")),
|
||||||
INPUT(_type="file",_name="pluginfile"),
|
INPUT(_type="file",_name="pluginfile"),
|
||||||
INPUT(_type="hidden",_name="id",_value=anchor),
|
INPUT(_type="hidden",_name="id",_value=anchor),
|
||||||
INPUT(_type="hidden",_name="token",_value=session.token),
|
INPUT(_type="hidden",_name="token",_value=session.token),
|
||||||
DIV(TAG['BUTTON'](T("Upload"),_type="submit",_class="btn"),_class="controls"),
|
DIV(TAG['BUTTON'](T("Upload"),_type="submit",_class="btn"),_class="controls"),
|
||||||
_class="generatedbyw2p well well-small")
|
_class="generatedbyw2p well well-small")
|
||||||
return form
|
return form
|
||||||
def deletefile(arglist, vars={}):
|
def deletefile(arglist, vars={}):
|
||||||
vars.update({'sender':request.function+'/'+app})
|
vars.update({'sender':request.function+'/'+app})
|
||||||
return A(TAG[''](IMG(_src=URL('static', 'images/delete_icon.png')),
|
return A(TAG[''](IMG(_src=URL('static', 'images/delete_icon.png')),
|
||||||
SPAN(T('Delete this file (you will be asked to confirm deletion)'))),
|
SPAN(T('Delete this file (you will be asked to confirm deletion)'))),
|
||||||
_href=URL('delete',args=arglist,vars=vars),
|
_href=URL('delete',args=arglist,vars=vars),
|
||||||
_class='icon delete',
|
_class='icon delete',
|
||||||
_rel="tooltip",
|
_rel="tooltip",
|
||||||
**{'_data-placement':'right',
|
**{'_data-placement':'right',
|
||||||
'_data-original-title':T('Delete this file (you will be asked to confirm deletion)')})
|
'_data-original-title':T('Delete this file (you will be asked to confirm deletion)')})
|
||||||
}}
|
}}
|
||||||
|
|
||||||
{{block sectionclass}}design{{end}}
|
{{block sectionclass}}design{{end}}
|
||||||
@@ -91,44 +91,45 @@ def deletefile(arglist, vars={}):
|
|||||||
|
|
||||||
<!-- MODELS -->
|
<!-- MODELS -->
|
||||||
<h3 id="_models" rel="pagebookmark">
|
<h3 id="_models" rel="pagebookmark">
|
||||||
<span class="component" onclick="collapse('models_inner');">{{=T("Models")}}</span>
|
<span class="component" onclick="collapse('models_inner');">{{=T("Models")}}</span>
|
||||||
<a href="#models" rel="tooltip" data-placement="right" data-original-title="{{=T('The data representation, define database tables and sets')}}">
|
<a href="#models" rel="tooltip" data-placement="right" data-original-title="{{=T('The data representation, define database tables and sets')}}">
|
||||||
{{=helpicon()}}
|
{{=helpicon()}}
|
||||||
<span>{{=T("The data representation, define database tables and sets")}}</span>
|
<span>{{=T("The data representation, define database tables and sets")}}</span>
|
||||||
</a><span id="models" class="hashstick"> </span><a href="#" class="tophashlink btn btn-mini btn-warning"><span>top</span></a>
|
</a><span id="models" class="hashstick"> </span><a href="#" class="tophashlink btn btn-mini btn-warning"><span>top</span></a>
|
||||||
</h3>
|
</h3>
|
||||||
<div id="models_inner" class="component_contents">
|
<div id="models_inner" class="component_contents">
|
||||||
{{if not models:}}<p><strong>{{=T("There are no models")}}</strong></p>{{else:}}
|
{{if not models:}}<p><strong>{{=T("There are no models")}}</strong></p>{{else:}}
|
||||||
<div class="controls comptools">
|
<div class="controls comptools">
|
||||||
{{=button(URL(a=app,c='appadmin',f='index'), T('database administration'))}}
|
{{=button(URL(a=app,c='appadmin',f='index'), T('database administration'))}}
|
||||||
{{if os.access(os.path.join(request.folder,'..',app,'databases','sql.log'),os.R_OK):}}
|
{{if os.access(os.path.join(request.folder,'..',app,'databases','sql.log'),os.R_OK):}}
|
||||||
{{=button(URL('peek/%s/databases/sql.log'%app), 'sql.log')}}
|
{{=button(URL('peek/%s/databases/sql.log'%app), 'sql.log')}}
|
||||||
{{pass}}
|
{{pass}}
|
||||||
{{=button(URL(a=app, c='appadmin',f='graph_model'), T('graph model'))}}
|
{{=button(URL(a=app, c='appadmin',f='graph_model'), T('graph model'))}}
|
||||||
</div>
|
</div>
|
||||||
<ul class="unstyled act_edit">
|
<ul class="unstyled act_edit">
|
||||||
{{for m in models:}}
|
{{for m in models:}}
|
||||||
{{id="models__"+m.replace('.','__')}}
|
{{id="models__"+m.replace('.','__')}}
|
||||||
<li id="{{='_'+id}}" rel="pagebookmark"><span id="{{=id}}" class="hashstick"> </span>
|
<li id="{{='_'+id}}" rel="pagebookmark"><span id="{{=id}}" class="hashstick"> </span>
|
||||||
<span class="filetools controls">
|
<span class="filetools controls">
|
||||||
{{=editfile('models',m, dict(id=id))}}
|
{{=editfile('models',m, dict(id=id))}}
|
||||||
{{=deletefile([app, 'models', m], dict(id=id, id2='models'))}}
|
{{=deletefile([app, 'models', m], dict(id=id, id2='models'))}}
|
||||||
</span>
|
</span>
|
||||||
<span class="file">
|
<span class="file">
|
||||||
{{=peekfile('models',m, dict(id=id))}}
|
{{=peekfile('models',m, dict(id=id))}}
|
||||||
</span>
|
</span>
|
||||||
<span class="extras">
|
<span class="extras">
|
||||||
{{if len(defines[m]):}}{{=T("defines tables")}} {{pass}}{{=XML(', '.join([B(table).xml() for table in defines[m]]))}}
|
{{if len(defines[m]):}}{{=T("defines tables")}} {{pass}}{{=XML(', '.join([B(table).xml() for table in defines[m]]))}}
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</ul>
|
</ul>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
<div class="controls formfield">
|
<div class="controls formfield">
|
||||||
<div class="row-fluid">
|
<button onclick="jQuery('#form1').slideToggle()" class="btn btn-mini">Create</button>
|
||||||
<div class="span3">{{=file_create_form('%s/models/' % app, 'models')}}</div>
|
<div id="form1" class="row-fluid" style="display:none">
|
||||||
</div>
|
<div class="span3">{{=file_create_form('%s/models/' % app, 'models')}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- FIND CONTROLLER FUNCTIONS -->
|
<!-- FIND CONTROLLER FUNCTIONS -->
|
||||||
@@ -139,322 +140,330 @@ for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functi
|
|||||||
|
|
||||||
<!-- CONTROLLERS -->
|
<!-- CONTROLLERS -->
|
||||||
<h3 id="_controllers" rel="pagebookmark">
|
<h3 id="_controllers" rel="pagebookmark">
|
||||||
<span class="component" onclick="collapse('controllers_inner');">{{=T("Controllers")}}</span>
|
<span class="component" onclick="collapse('controllers_inner');">{{=T("Controllers")}}</span>
|
||||||
<a href="#controllers" rel="tooltip" data-placement="right" data-original-title="{{=T('The application logic, each URL path is mapped in one exposed function in the controller')}}">
|
<a href="#controllers" rel="tooltip" data-placement="right" data-original-title="{{=T('The application logic, each URL path is mapped in one exposed function in the controller')}}">
|
||||||
{{=helpicon()}}
|
{{=helpicon()}}
|
||||||
<span>{{=T("The application logic, each URL path is mapped in one exposed function in the controller")}}</span>
|
<span>{{=T("The application logic, each URL path is mapped in one exposed function in the controller")}}</span>
|
||||||
</a><span id="controllers" class="hashstick"> </span><a href="#" class="tophashlink btn btn-mini btn-warning"><span>top</span></a>
|
</a><span id="controllers" class="hashstick"> </span><a href="#" class="tophashlink btn btn-mini btn-warning"><span>top</span></a>
|
||||||
</h3>
|
</h3>
|
||||||
<div id="controllers_inner" class="component_contents">
|
<div id="controllers_inner" class="component_contents">
|
||||||
{{if not controllers:}}<p><strong>{{=T("There are no controllers")}}</strong></p>{{else:}}
|
{{if not controllers:}}<p><strong>{{=T("There are no controllers")}}</strong></p>{{else:}}
|
||||||
<div class="controls comptools">
|
<div class="controls comptools">
|
||||||
{{=button(URL(r=request,c='shell',f='index',args=app), T("shell"))}}
|
{{=button(URL(r=request,c='shell',f='index',args=app), T("shell"))}}
|
||||||
{{=button(URL('test',args=app), T("test"))}}
|
{{=button(URL('test',args=app), T("test"))}}
|
||||||
{{=button(URL('edit',args=[app,'cron','crontab']), T("crontab"))}}
|
{{=button(URL('edit',args=[app,'cron','crontab']), T("crontab"))}}
|
||||||
</div>
|
</div>
|
||||||
<ul class="unstyled act_edit">
|
<ul class="unstyled act_edit">
|
||||||
{{for c in controllers:}}
|
{{for c in controllers:}}
|
||||||
{{id="controllers__"+c.replace('.','__')}}
|
{{id="controllers__"+c.replace('.','__')}}
|
||||||
<li id="{{='_'+id}}" rel="pagebookmark"><span id="{{=id}}" class="hashstick"> </span>
|
<li id="{{='_'+id}}" rel="pagebookmark"><span id="{{=id}}" class="hashstick"> </span>
|
||||||
<span class="filetools controls">
|
<span class="filetools controls">
|
||||||
{{=editfile('controllers',c, dict(id=id))}}
|
{{=editfile('controllers',c, dict(id=id))}}
|
||||||
{{=deletefile([app, 'controllers', c], dict(id=id, id2='controllers'))}}
|
{{=deletefile([app, 'controllers', c], dict(id=id, id2='controllers'))}}
|
||||||
{{=testfile('controllers',c)}}
|
{{=testfile('controllers',c)}}
|
||||||
</span>
|
</span>
|
||||||
<span class="file">
|
<span class="file">
|
||||||
{{=peekfile('controllers',c, dict(id=id))}}
|
{{=peekfile('controllers',c, dict(id=id))}}
|
||||||
</span>
|
</span>
|
||||||
<span class="extras celled">
|
<span class="extras celled">
|
||||||
{{if functions[c]:}}{{=T("exposes")}}{{pass}} {{=XML(', '.join([A(f,_href=URL(a=app,c=c[:-3],f=f)).xml() for f in functions[c]]))}}
|
{{if functions[c]:}}{{=T("exposes")}}{{pass}} {{=XML(', '.join([A(f,_href=URL(a=app,c=c[:-3],f=f)).xml() for f in functions[c]]))}}
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</ul>
|
</ul>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
<div class="controls formfield">
|
<div class="controls formfield">
|
||||||
<div class="row-fluid">
|
<button onclick="jQuery('#form2').slideToggle()" class="btn btn-mini">Create</button>
|
||||||
<div class="span3">{{=file_create_form('%s/controllers/' % app, 'controllers')}}</div>
|
<div id="form2" class="row-fluid" style="display:none">
|
||||||
</div>
|
<div class="span3">{{=file_create_form('%s/controllers/' % app, 'controllers')}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- VIEWS -->
|
<!-- VIEWS -->
|
||||||
<h3 id="_views" rel="pagebookmark">
|
<h3 id="_views" rel="pagebookmark">
|
||||||
<span class="component" onclick="collapse('views_inner');">{{=T("Views")}}</span>
|
<span class="component" onclick="collapse('views_inner');">{{=T("Views")}}</span>
|
||||||
<a href="#views" rel="tooltip" data-placement="right" data-original-title="{{=T('The presentations layer, views are also known as templates')}}">
|
<a href="#views" rel="tooltip" data-placement="right" data-original-title="{{=T('The presentations layer, views are also known as templates')}}">
|
||||||
{{=helpicon()}}
|
{{=helpicon()}}
|
||||||
<span>{{=T("The presentations layer, views are also known as templates")}}</span>
|
<span>{{=T("The presentations layer, views are also known as templates")}}</span>
|
||||||
</a><span id="views" class="hashstick"> </span><a href="#" class="tophashlink btn btn-mini btn-warning"><span>top</span></a>
|
</a><span id="views" class="hashstick"> </span><a href="#" class="tophashlink btn btn-mini btn-warning"><span>top</span></a>
|
||||||
</h3>
|
</h3>
|
||||||
<div id="views_inner" class="component_contents">
|
<div id="views_inner" class="component_contents">
|
||||||
{{if not views:}}<p><strong>{{=T("There are no views")}}</strong></p>{{else:}}
|
{{if not views:}}<p><strong>{{=T("There are no views")}}</strong></p>{{else:}}
|
||||||
<div class="controls comptools">
|
<div class="controls comptools">
|
||||||
{{=button(LAYOUTS_APP, T("download layouts"))}}
|
{{=button(LAYOUTS_APP, T("download layouts"))}}
|
||||||
</div>
|
</div>
|
||||||
<ul class="unstyled act_edit">
|
<ul class="unstyled act_edit">
|
||||||
{{for c in views:}}
|
{{for c in views:}}
|
||||||
{{id="views__"+c.replace('/','__').replace('.','__')}}
|
{{id="views__"+c.replace('/','__').replace('.','__')}}
|
||||||
<li id="{{='_'+id}}" rel="pagebookmark"><span id="{{=id}}" class="hashstick"> </span>
|
<li id="{{='_'+id}}" rel="pagebookmark"><span id="{{=id}}" class="hashstick"> </span>
|
||||||
<span class="filetools controls">
|
<span class="filetools controls">
|
||||||
{{=editfile('views',c, dict(id=id))}}
|
{{=editfile('views',c, dict(id=id))}}
|
||||||
{{=deletefile([app, 'views', c], dict(id=id, id2='views'))}}
|
{{=deletefile([app, 'views', c], dict(id=id, id2='views'))}}
|
||||||
</span>
|
</span>
|
||||||
<span class="file">
|
<span class="file">
|
||||||
{{=peekfile('views',c, dict(id=id))}}
|
{{=peekfile('views',c, dict(id=id))}}
|
||||||
</span>
|
</span>
|
||||||
<span class="extras celled celled-one">
|
<span class="extras celled celled-one">
|
||||||
{{if extend.has_key(c):}}{{=T("extends")}} <b>{{=extend[c]}}</b> {{pass}}
|
{{if extend.has_key(c):}}{{=T("extends")}} <b>{{=extend[c]}}</b> {{pass}}
|
||||||
{{if include[c]:}}{{=T("includes")}} {{pass}}{{=XML(', '.join([B(f).xml() for f in include[c]]))}}
|
{{if include[c]:}}{{=T("includes")}} {{pass}}{{=XML(', '.join([B(f).xml() for f in include[c]]))}}
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</ul>
|
</ul>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
<div class="controls formfield">
|
<div class="controls formfield">
|
||||||
<div class="row-fluid">
|
<button onclick="jQuery('#form3').slideToggle()" class="btn btn-mini">Create</button>
|
||||||
<div class="span3">{{=file_create_form('%s/views/' % app, 'views')}}</div>
|
<div id="form3" class="row-fluid" style="display:none">
|
||||||
</div>
|
<div class="span3">{{=file_create_form('%s/views/' % app, 'views')}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- LANGUAGES -->
|
<!-- LANGUAGES -->
|
||||||
<h3 id="_languages" rel="pagebookmark">
|
<h3 id="_languages" rel="pagebookmark">
|
||||||
<span class="component" onclick="collapse('languages_inner');">{{=T("Languages")}}</span>
|
<span class="component" onclick="collapse('languages_inner');">{{=T("Languages")}}</span>
|
||||||
<a href="#languages" rel="tooltip" data-placement="right" data-original-title="{{=T('Translation strings for the application')}}">
|
<a href="#languages" rel="tooltip" data-placement="right" data-original-title="{{=T('Translation strings for the application')}}">
|
||||||
{{=helpicon()}}
|
{{=helpicon()}}
|
||||||
<span>{{=T("Translation strings for the application")}}</span>
|
<span>{{=T("Translation strings for the application")}}</span>
|
||||||
</a><span id="languages" class="hashstick"> </span><a href="#" class="tophashlink btn btn-mini btn-warning"><span>top</span></a>
|
</a><span id="languages" class="hashstick"> </span><a href="#" class="tophashlink btn btn-mini btn-warning"><span>top</span></a>
|
||||||
</h3>
|
</h3>
|
||||||
<div id="languages_inner" class="component_contents">
|
<div id="languages_inner" class="component_contents">
|
||||||
{{if not languages:}}<p><strong>{{=T("There are no translators, only default language is supported")}}</strong></p>{{else:}}
|
{{if not languages:}}<p><strong>{{=T("There are no translators, only default language is supported")}}</strong></p>{{else:}}
|
||||||
<div class="controls comptools">
|
<div class="controls comptools">
|
||||||
{{=button(URL('update_languages/'+app), T('update all languages'))}}
|
{{=button(URL('update_languages/'+app), T('update all languages'))}}
|
||||||
</div>
|
</div>
|
||||||
<ul class="unstyled act_edit">
|
<ul class="unstyled act_edit">
|
||||||
{{for lang in sorted(languages):
|
{{for lang in sorted(languages):
|
||||||
file = lang+'.py'
|
file = lang+'.py'
|
||||||
id = "languages__"+file.replace('.','__')}}
|
id = "languages__"+file.replace('.','__')}}
|
||||||
<li id="{{='_'+id}}" rel="pagebookmark" class="li-row"><span id="{{=id}}" class="hashstick"> </span>
|
<li id="{{='_'+id}}" rel="pagebookmark" class="li-row"><span id="{{=id}}" class="hashstick"> </span>
|
||||||
<span class="li-controls">
|
<span class="li-controls">
|
||||||
<span class="filetools controls">
|
<span class="filetools controls">
|
||||||
{{=editlanguagefile('languages',file)}}
|
{{=editlanguagefile('languages',file)}}
|
||||||
{{=deletefile([app, 'languages', file], dict(id=id, id2='languages'))}}
|
{{=deletefile([app, 'languages', file], dict(id=id, id2='languages'))}}
|
||||||
</span>
|
</span>
|
||||||
<span class="">
|
<span class="">
|
||||||
{{=peekfile('languages',file, dict(id=id))}}
|
{{=peekfile('languages',file, dict(id=id))}}
|
||||||
</span>
|
</span>
|
||||||
</span> <!-- /li-row -->
|
</span> <!-- /li-row -->
|
||||||
<span class="extras celled">
|
<span class="extras celled">
|
||||||
(
|
(
|
||||||
{{=T("Plural-Forms:")}}
|
{{=T("Plural-Forms:")}}
|
||||||
{{p=languages[lang][3:7]}}
|
{{p=languages[lang][3:7]}}
|
||||||
{{if p[2] == 'default':}}
|
{{if p[2] == 'default':}}
|
||||||
<span class='error text-error'>{{=T("rules are not defined")}}</span> {{=T.M("(file **gluon/contrib/plural_rules/%s.py** is not found)",lang[:2])}}
|
<span class='error text-error'>{{=T("rules are not defined")}}</span> {{=T.M("(file **gluon/contrib/plural_rules/%s.py** is not found)",lang[:2])}}
|
||||||
{{else:}}
|
{{else:}}
|
||||||
{{if p[3] == 1:}}
|
{{if p[3] == 1:}}
|
||||||
{{=B(T("are not used"))}}
|
{{=B(T("are not used"))}}
|
||||||
{{else:}}
|
{{else:}}
|
||||||
{{pfile=p[0]}}
|
{{pfile=p[0]}}
|
||||||
{{if p[1]!=0:}}<span style="display:inline-block;margin-top:-10px;">
|
{{if p[1]!=0:}}<span style="display:inline-block;margin-top:-10px;">
|
||||||
<span class="filetools controls">
|
<span class="filetools controls">
|
||||||
{{=editpluralsfile('languages',pfile,dict(nplurals=p[3]))}}
|
{{=editpluralsfile('languages',pfile,dict(nplurals=p[3]))}}
|
||||||
</span>
|
</span>
|
||||||
<span class="file">
|
<span class="file">
|
||||||
{{=peekfile('languages',pfile,dict(id=id))}}
|
{{=peekfile('languages',pfile,dict(id=id))}}
|
||||||
</span></span>
|
</span></span>
|
||||||
{{else:}}
|
{{else:}}
|
||||||
<b>{{=T("are not used yet")}}</b>
|
<b>{{=T("are not used yet")}}</b>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
{{pass}}
|
{{pass}}
|
||||||
{{pass}}
|
{{pass}}
|
||||||
)
|
)
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</ul>
|
</ul>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
<div class="controls formfield">
|
<div class="controls formfield">
|
||||||
<div class="row-fluid">
|
<button onclick="jQuery('#form4').slideToggle()" class="btn btn-mini">Create</button>
|
||||||
<div class="span3">{{=file_create_form('%s/languages/' % app, 'languages', T('(something like "it-it")'))}}</div>
|
<div id="form4" class="row-fluid" style="display:none">
|
||||||
</div>
|
<div class="span3">{{=file_create_form('%s/languages/' % app, 'languages', T('(something like "it-it")'))}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- STATIC -->
|
<!-- STATIC -->
|
||||||
<h3 id="_static" rel="pagebookmark">
|
<h3 id="_static" rel="pagebookmark">
|
||||||
<span class="component" onclick="collapse('static_inner');">{{=T("Static")}}</span>
|
<span class="component" onclick="collapse('static_inner');">{{=T("Static")}}</span>
|
||||||
<a href="#static" rel="tooltip" data-placement="right" data-original-title="{{=T('These files are served without processing, your images go here')}}">
|
<a href="#static" rel="tooltip" data-placement="right" data-original-title="{{=T('These files are served without processing, your images go here')}}">
|
||||||
{{=helpicon()}}
|
{{=helpicon()}}
|
||||||
<span>{{=T("These files are served without processing, your images go here")}}</span>
|
<span>{{=T("These files are served without processing, your images go here")}}</span>
|
||||||
</a><span id="static" class="hashstick"> </span><a href="#" class="tophashlink btn btn-mini btn-warning"><span>top</span></a>
|
</a><span id="static" class="hashstick"> </span><a href="#" class="tophashlink btn btn-mini btn-warning"><span>top</span></a>
|
||||||
</h3>
|
</h3>
|
||||||
<div id="static_inner" class="component_contents">
|
<div id="static_inner" class="component_contents">
|
||||||
{{if not statics:}}<p><strong>{{=T("There are no static files")}}</strong></p>{{else:}}
|
{{if not statics:}}<p><strong>{{=T("There are no static files")}}</strong></p>{{else:}}
|
||||||
<ul class="unstyled act_edit">
|
<ul class="unstyled act_edit">
|
||||||
{{
|
{{
|
||||||
path=[]
|
path=[]
|
||||||
for file in statics+['']:
|
for file in statics+['']:
|
||||||
items=file.split('/')
|
items=file.split('/')
|
||||||
file_path=items[:-1]
|
file_path=items[:-1]
|
||||||
filename=items[-1]
|
filename=items[-1]
|
||||||
while path!=file_path:
|
while path!=file_path:
|
||||||
if len(file_path)>=len(path) and all([v==file_path[k] for k,v in enumerate(path)]):
|
if len(file_path)>=len(path) and all([v==file_path[k] for k,v in enumerate(path)]):
|
||||||
path.append(file_path[len(path)])
|
path.append(file_path[len(path)])
|
||||||
thispath='static__'+'__'.join(path)
|
thispath='static__'+'__'.join(path)
|
||||||
}}
|
}}
|
||||||
<li class="folder"><i> </i>
|
<li class="folder"><i> </i>
|
||||||
<a href="javascript:collapse('{{=thispath}}');" class="file">{{=path[-1]}}/</a>
|
<a href="javascript:collapse('{{=thispath}}');" class="file">{{=path[-1]}}/</a>
|
||||||
<ul id="{{=thispath}}" style="display: none;" class="sublist">{{
|
<ul id="{{=thispath}}" style="display: none;" class="sublist">{{
|
||||||
else:
|
else:
|
||||||
path = path[:-1]
|
path = path[:-1]
|
||||||
}}
|
}}
|
||||||
</ul></li>
|
</ul></li>
|
||||||
{{
|
{{
|
||||||
pass
|
pass
|
||||||
pass
|
pass
|
||||||
if filename:
|
if filename:
|
||||||
}}
|
}}
|
||||||
<li>
|
<li>
|
||||||
<span class="filetools controls">
|
<span class="filetools controls">
|
||||||
{{=editfile('static',file, dict(id="static"))}} {{=deletefile([app,'static',file], dict(id="static",id2="static"))}}
|
{{=editfile('static',file, dict(id="static"))}} {{=deletefile([app,'static',file], dict(id="static",id2="static"))}}
|
||||||
</span>
|
</span>
|
||||||
<span class="file">
|
<span class="file">
|
||||||
<a href="{{=URL(a=app,c='static',f=file)}}">{{=filename}}</a>
|
<a href="{{=URL(a=app,c='static',f=file)}}">{{=filename}}</a>
|
||||||
</span>
|
</span>
|
||||||
</li>{{
|
</li>{{
|
||||||
pass
|
pass
|
||||||
pass
|
pass
|
||||||
}}
|
}}
|
||||||
</ul>
|
</ul>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
<div class="controls formfield">
|
<div class="controls formfield">
|
||||||
<div class="row-fluid">
|
<button onclick="jQuery('#form5').slideToggle()" class="btn btn-mini">Create/Upload</button>
|
||||||
<div class="span3">{{=file_create_form('%s/static/' % app, 'static')}}<em>{{=T('or alternatively')}}</em></div>
|
<div id="form5" class="row-fluid" style="display:none">
|
||||||
<div class="span3">{{=file_upload_form('%s/static/' % app, 'static')}}</div>
|
<div class="span3">{{=file_create_form('%s/static/' % app, 'static')}}<em>{{=T('or alternatively')}}</em></div>
|
||||||
</div>
|
<div class="span3">{{=file_upload_form('%s/static/' % app, 'static')}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- MODULES -->
|
<!-- MODULES -->
|
||||||
<h3 id="_modules" rel="pagebookmark">
|
<h3 id="_modules" rel="pagebookmark">
|
||||||
<span class="component" onclick="collapse('modules_inner');">{{=T("Modules")}}</span>
|
<span class="component" onclick="collapse('modules_inner');">{{=T("Modules")}}</span>
|
||||||
<a href="#modules" rel="tooltip" data-placement="right" data-original-title="{{=T('Additional code for your application')}}">
|
<a href="#modules" rel="tooltip" data-placement="right" data-original-title="{{=T('Additional code for your application')}}">
|
||||||
{{=helpicon()}}
|
{{=helpicon()}}
|
||||||
<span>{{=T("Additional code for your application")}}</span>
|
<span>{{=T("Additional code for your application")}}</span>
|
||||||
</a><span id="modules" class="hashstick"> </span><a href="#" class="tophashlink btn btn-mini btn-warning"><span>top</span></a>
|
</a><span id="modules" class="hashstick"> </span><a href="#" class="tophashlink btn btn-mini btn-warning"><span>top</span></a>
|
||||||
</h3>
|
</h3>
|
||||||
<div id="modules_inner" class="component_contents">
|
<div id="modules_inner" class="component_contents">
|
||||||
{{if not modules:}}<p><strong>{{=T("There are no modules")}}</strong></p>{{else:}}
|
{{if not modules:}}<p><strong>{{=T("There are no modules")}}</strong></p>{{else:}}
|
||||||
<ul class="unstyled act_edit">
|
<ul class="unstyled act_edit">
|
||||||
{{for m in modules:}}
|
{{for m in modules:}}
|
||||||
{{id="modules__"+m.replace('/','__').replace('.','__')}}
|
{{id="modules__"+m.replace('/','__').replace('.','__')}}
|
||||||
<li id="{{='_'+id}}" rel="pagebookmark"><span id="{{=id}}" class="hashstick"> </span>
|
<li id="{{='_'+id}}" rel="pagebookmark"><span id="{{=id}}" class="hashstick"> </span>
|
||||||
<span class="filetols controls">
|
<span class="filetols controls">
|
||||||
{{=editfile('modules',m,dict(id=id))}}
|
{{=editfile('modules',m,dict(id=id))}}
|
||||||
{{if m!='__init__.py':}}
|
{{if m!='__init__.py':}}
|
||||||
{{=deletefile([app, 'modules', m], dict(id=id, id2='modules'))}}
|
{{=deletefile([app, 'modules', m], dict(id=id, id2='modules'))}}
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</span>
|
</span>
|
||||||
<span class="file">
|
<span class="file">
|
||||||
{{=peekfile('modules',m, dict(id=id))}}
|
{{=peekfile('modules',m, dict(id=id))}}
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</ul>
|
</ul>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
<div class="controls formfield">
|
<div class="controls formfield">
|
||||||
<div class="row-fluid">
|
<button onclick="jQuery('#form6').slideToggle()" class="btn btn-mini">Create/Upload</button>
|
||||||
<div class="span3">{{=file_create_form('%s/modules/' % app, 'modules')}}<em>{{=T('or alternatively')}}</em></div>
|
<div id="form6" class="row-fluid" style="display:none">
|
||||||
<div class="span3">{{=file_upload_form('%s/modules/' % app, 'modules')}}</div>
|
<div class="span3">{{=file_create_form('%s/modules/' % app, 'modules')}}<em>{{=T('or alternatively')}}</em></div>
|
||||||
</div>
|
<div class="span3">{{=file_upload_form('%s/modules/' % app, 'modules')}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- PRIVATE -->
|
<!-- PRIVATE -->
|
||||||
<h3 id="_private" rel="pagebookmark">
|
<h3 id="_private" rel="pagebookmark">
|
||||||
<span class="component" onclick="collapse('private_inner');">{{=T("Private files")}}</span>
|
<span class="component" onclick="collapse('private_inner');">{{=T("Private files")}}</span>
|
||||||
<a href="#private" rel="tooltip" data-placement="right" data-original-title="{{=T('These files are not served, they are only available from within your app')}}">
|
<a href="#private" rel="tooltip" data-placement="right" data-original-title="{{=T('These files are not served, they are only available from within your app')}}">
|
||||||
{{=helpicon()}}
|
{{=helpicon()}}
|
||||||
<span>{{=T("These files are not served, they are only available from within your app")}}</span>
|
<span>{{=T("These files are not served, they are only available from within your app")}}</span>
|
||||||
</a><span id="private" class="hashstick"> </span><a href="#" class="tophashlink btn btn-mini btn-warning"><span>top</span></a>
|
</a><span id="private" class="hashstick"> </span><a href="#" class="tophashlink btn btn-mini btn-warning"><span>top</span></a>
|
||||||
</h3>
|
</h3>
|
||||||
<div id="private_inner" class="component_contents">
|
<div id="private_inner" class="component_contents">
|
||||||
{{if not privates:}}<p><strong>{{=T("There are no private files")}}</strong></p>{{else:}}
|
{{if not privates:}}<p><strong>{{=T("There are no private files")}}</strong></p>{{else:}}
|
||||||
<ul class="unstyled act_edit">
|
<ul class="unstyled act_edit">
|
||||||
{{
|
{{
|
||||||
path=[]
|
path=[]
|
||||||
for file in privates+['']:
|
for file in privates+['']:
|
||||||
items=file.split('/')
|
items=file.split('/')
|
||||||
file_path=items[:-1]
|
file_path=items[:-1]
|
||||||
filename=items[-1]
|
filename=items[-1]
|
||||||
while path!=file_path:
|
while path!=file_path:
|
||||||
if len(file_path)>=len(path) and all([v==file_path[k] for k,v in enumerate(path)]):
|
if len(file_path)>=len(path) and all([v==file_path[k] for k,v in enumerate(path)]):
|
||||||
path.append(file_path[len(path)])
|
path.append(file_path[len(path)])
|
||||||
thispath='private__'+'__'.join(path)
|
thispath='private__'+'__'.join(path)
|
||||||
}}
|
}}
|
||||||
<li class="folder">
|
<li class="folder">
|
||||||
<a href="javascript:collapse('{{=thispath}}');" class="file">{{=path[-1]}}/</a>
|
<a href="javascript:collapse('{{=thispath}}');" class="file">{{=path[-1]}}/</a>
|
||||||
<ul id="{{=thispath}}" style="display: none;" class="sublist">{{
|
<ul id="{{=thispath}}" style="display: none;" class="sublist">{{
|
||||||
else:
|
else:
|
||||||
path = path[:-1]
|
path = path[:-1]
|
||||||
}}
|
}}
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
{{
|
{{
|
||||||
pass
|
pass
|
||||||
pass
|
pass
|
||||||
if filename:
|
if filename:
|
||||||
}}
|
}}
|
||||||
<li>
|
<li>
|
||||||
<span class="filetools controls">
|
<span class="filetools controls">
|
||||||
{{=editfile('private',file, dict(id="private"))}} {{=deletefile([app,'private',file], dict(id="private",id2="private"))}}
|
{{=editfile('private',file, dict(id="private"))}} {{=deletefile([app,'private',file], dict(id="private",id2="private"))}}
|
||||||
</span>
|
</span>
|
||||||
<span class="file">
|
<span class="file">
|
||||||
{{=peekfile('private',file, dict(id="private"))}}
|
{{=peekfile('private',file, dict(id="private"))}}
|
||||||
</span>
|
</span>
|
||||||
</li>{{
|
</li>{{
|
||||||
pass
|
pass
|
||||||
pass
|
pass
|
||||||
}}
|
}}
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</ul>
|
</ul>
|
||||||
<div class="controls formfield">
|
<div class="controls formfield">
|
||||||
<div class="row-fluid">
|
<button onclick="jQuery('#form7').slideToggle()" class="btn btn-mini">Create/Upload</button>
|
||||||
<div class="span3">{{=file_create_form('%s/private/' % app, 'private')}}<em>{{=T('or alternatively')}}</em></div>
|
<div id="form7" class="row-fluid" style="display:none">
|
||||||
<div class="span3">{{=file_upload_form('%s/private/' % app, 'private')}}</div>
|
<div class="span3">{{=file_create_form('%s/private/' % app, 'private')}}<em>{{=T('or alternatively')}}</em></div>
|
||||||
</div>
|
<div class="span3">{{=file_upload_form('%s/private/' % app, 'private')}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- PLUGINS -->
|
<!-- PLUGINS -->
|
||||||
<h3 id="_plugins" rel="pagebookmark">
|
<h3 id="_plugins" rel="pagebookmark">
|
||||||
<span class="component" onclick="collapse('plugins_inner');">{{=T("Plugins")}}</span>
|
<span class="component" onclick="collapse('plugins_inner');">{{=T("Plugins")}}</span>
|
||||||
<a href="#plugins" rel="tooltip" data-placement="right" data-original-title="{{=T('To create a plugin, name a file/folder plugin_[name]')}}">
|
<a href="#plugins" rel="tooltip" data-placement="right" data-original-title="{{=T('To create a plugin, name a file/folder plugin_[name]')}}">
|
||||||
{{=helpicon()}}
|
{{=helpicon()}}
|
||||||
<span>{{=T("To create a plugin, name a file/folder plugin_[name]")}}</span>
|
<span>{{=T("To create a plugin, name a file/folder plugin_[name]")}}</span>
|
||||||
</a><span id="plugins" class="hashstick"> </span><a href="#" class="tophashlink btn btn-mini btn-warning"><span>top</span></a>
|
</a><span id="plugins" class="hashstick"> </span><a href="#" class="tophashlink btn btn-mini btn-warning"><span>top</span></a>
|
||||||
</h3>
|
</h3>
|
||||||
<div id="plugins_inner" class="component_contents">
|
<div id="plugins_inner" class="component_contents">
|
||||||
<div class="controls comptools">
|
<div class="controls comptools">
|
||||||
{{=button(PLUGINS_APP, T('download plugins'))}}
|
{{=button(PLUGINS_APP, T('download plugins'))}}
|
||||||
</div>
|
</div>
|
||||||
{{if plugins:}}
|
{{if plugins:}}
|
||||||
<ul class="unstyled act_edit">
|
<ul class="unstyled act_edit">
|
||||||
{{for plugin in plugins:}}
|
{{for plugin in plugins:}}
|
||||||
{{id="plugins__"+plugin.replace('/','__').replace('.','__')}}
|
{{id="plugins__"+plugin.replace('/','__').replace('.','__')}}
|
||||||
<li id="{{=id}}">
|
<li id="{{=id}}">
|
||||||
{{=A('plugin_%s' % plugin, _class='file', _href=URL('plugin', args=[app, plugin], vars=dict(id=id, id2='plugins')))}}
|
{{=A('plugin_%s' % plugin, _class='file', _href=URL('plugin', args=[app, plugin], vars=dict(id=id, id2='plugins')))}}
|
||||||
</li>
|
</li>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</ul>
|
</ul>
|
||||||
{{else:}}
|
{{else:}}
|
||||||
<p><strong>{{=T('There are no plugins')}}</strong></p>
|
<p><strong>{{=T('There are no plugins')}}</strong></p>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
<div class="controls formfield">
|
<div class="controls formfield">
|
||||||
<div class="row-fluid">
|
<button onclick="jQuery('#form8').slideToggle()" class="btn btn-mini">Upload</button>
|
||||||
<div class="span3">{{=upload_plugin_form(app, 'plugins')}}</div>
|
<div id="form8" class="row-fluid" style="display:none">
|
||||||
</div>
|
<div class="row-fluid">
|
||||||
</div>
|
<div class="span3">{{=upload_plugin_form(app, 'plugins')}}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -465,7 +474,7 @@ function filter_files() {
|
|||||||
files=data['files'];
|
files=data['files'];
|
||||||
message=data['message'];
|
message=data['message'];
|
||||||
for(var i=0; i<files.length; i++)
|
for(var i=0; i<files.length; i++)
|
||||||
jQuery('li#'+files[i].replace(/\//g,'__').replace('.','__')).slideDown();
|
jQuery('li#_'+files[i].replace(/\//g,'__').replace('.','__')).slideDown();
|
||||||
jQuery('.flash').html(message).slideDown();
|
jQuery('.flash').html(message).slideDown();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -3,6 +3,16 @@
|
|||||||
{{
|
{{
|
||||||
def shortcut(combo, description):
|
def shortcut(combo, description):
|
||||||
return XML('<li><span class="teletype-text">%s</span><span>%s</span></li>' % (combo, description))
|
return XML('<li><span class="teletype-text">%s</span><span>%s</span></li>' % (combo, description))
|
||||||
|
def listfiles(app, dir, regexp='.*\.py$'):
|
||||||
|
files = sorted(
|
||||||
|
listdir(apath('%(app)s/%(dir)s/' % {'app':app, 'dir':dir}, r=request), regexp))
|
||||||
|
files = [x.replace('\\', '/') for x in files if not x.endswith('.bak')]
|
||||||
|
return files
|
||||||
|
|
||||||
|
def editfile(path,file,vars={}):
|
||||||
|
args=(path,file) if 'app' in vars else (app,path,file)
|
||||||
|
return A(file, _class='', _href=URL('edit', args=args, vars=vars), _style='word-wrap: break-word;')
|
||||||
|
|
||||||
}}
|
}}
|
||||||
{{if TEXT_EDITOR == 'amy':}}
|
{{if TEXT_EDITOR == 'amy':}}
|
||||||
{{include 'default/amy_ajax.html'}}
|
{{include 'default/amy_ajax.html'}}
|
||||||
@@ -128,11 +138,34 @@ jQuery(document).ready(function(){
|
|||||||
<a class="button btn" href="http://www.web2py.com/examples/static/epydoc/index.html" target="_blank"><span>{{=T('docs')}}</span></a>
|
<a class="button btn" href="http://www.web2py.com/examples/static/epydoc/index.html" target="_blank"><span>{{=T('docs')}}</span></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="editor_area">
|
<div id="editor_area" class="row-fluid">
|
||||||
<form action="{{=URL('edit',args=filename)}}" method="post" name="editform" id="editform">
|
|
||||||
|
<ul class="nav nav-list span2 well" rel="pagebookmark">
|
||||||
|
{{dirs=[{'name':'models', 'reg':'.*\.py$'},
|
||||||
|
{'name':'controllers', 'reg':'.*\.py$'},
|
||||||
|
{'name':'views', 'reg':'[\w/\-]+(\.\w+)+$'},
|
||||||
|
{'name':'modules', 'reg':'.*\.py$'},
|
||||||
|
{'name':'private', 'reg': '[^\.#].*'}]}}
|
||||||
|
{{for dir in dirs:}}
|
||||||
|
<li class="nav-header component" onclick="collapse('{{="%s_files" % dir['name']}}');">{{=dir['name']}}</li>
|
||||||
|
<li id="{{="%s_files" % dir['name']}}">
|
||||||
|
<ul class="nav nav-list">
|
||||||
|
{{for f in listfiles(app, dir['name'], regexp=dir['reg'] ):}}
|
||||||
|
{{id="%s__" % dir['name'] + f.replace('.','__')}}
|
||||||
|
{{current_file = request.args(len(request.args) - 1)}}
|
||||||
|
<li class="{{='active' if current_file==f else ''}}">
|
||||||
|
{{=editfile(dir['name'], f, dict(id=id))}}
|
||||||
|
</li>
|
||||||
|
{{pass}}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
{{pass}}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<form action="{{=URL('edit',args=filename)}}" method="post" name="editform" id="editform" class="span10">
|
||||||
<div class="editor-bar-column">
|
<div class="editor-bar-column">
|
||||||
<label>{{=T('Save file:')}}</label>
|
<label>{{=T('Save file:')}}</label>
|
||||||
<a value="save" name="save" onclick="return doClickSave();" class="icon saveicon btn btn-mini" style="background-image: -webkit-linear-gradient(top,white,#E6E6E6);">
|
<a value="save" name="save" onclick="return doClickSave();" class="icon saveicon" style="background-image: -webkit-linear-gradient(top,white,#E6E6E6);">
|
||||||
{{=IMG(_src=URL('static', 'images/save_icon.png'), _alt=T('Save'))}}
|
{{=IMG(_src=URL('static', 'images/save_icon.png'), _alt=T('Save'))}}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{{extend 'layout.html'}}
|
||||||
|
{{import os}}
|
||||||
|
|
||||||
|
{{def tree(path):}}
|
||||||
|
<input type="checkbox" onclick="jQuery(this).parent().find(':checkbox').attr('checked',this.checked)" checked="checked"/>
|
||||||
|
<a href="#" onclick="jQuery(this).next().slideToggle();return false;">
|
||||||
|
{{=path[len(base):] or '/%s' % app}}
|
||||||
|
</a>
|
||||||
|
<ul class="collapsible">
|
||||||
|
{{for file in files[path]['files']:}}
|
||||||
|
<li style="list-style-type: none;">
|
||||||
|
{{p = os.path.relpath(os.path.join(path,file),base)}}
|
||||||
|
<input type="checkbox" value="{{=p}}" name="file" checked="checked"/>
|
||||||
|
{{=file}}
|
||||||
|
</li>
|
||||||
|
{{pass}}
|
||||||
|
{{for dir in files[path]['folders']:}}
|
||||||
|
<li style="list-style-type: none;">
|
||||||
|
{{tree(os.path.join(path,dir))}}
|
||||||
|
</li>
|
||||||
|
{{pass}}
|
||||||
|
</ul>
|
||||||
|
{{return}}
|
||||||
|
|
||||||
|
<form action="{{=URL(args=request.args)}}" method="POST">
|
||||||
|
<h2>{{=T('Select Files to Package')}}</h2>
|
||||||
|
<input type="submit" value="{{=T('Download .w2p')}}" class="btn"/>
|
||||||
|
<div style="margin-top:20px">
|
||||||
|
{{tree(base)}}
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<script>jQuery(function(){jQuery('.collapsible').hide();});</script>
|
||||||
@@ -6,7 +6,7 @@ def all(items):
|
|||||||
def peekfile(path,file):
|
def peekfile(path,file):
|
||||||
return A(file.replace('\\\\','/'),_href=URL('peek', args=(app, path, file)))
|
return A(file.replace('\\\\','/'),_href=URL('peek', args=(app, path, file)))
|
||||||
def editfile(path,file):
|
def editfile(path,file):
|
||||||
return A(SPAN(T('Edit')),_class='button editbutton btn',_href=URL('edit', args=(app, path, file)))
|
return A(SPAN(T('Edit')),_class='button editbutton btn btn-mini',_href=URL('edit', args=(app, path, file)))
|
||||||
def testfile(path,file):
|
def testfile(path,file):
|
||||||
return A(TAG[''](IMG(_src=URL('static', 'images/test_icon.png'), _alt=T('test')),
|
return A(TAG[''](IMG(_src=URL('static', 'images/test_icon.png'), _alt=T('test')),
|
||||||
SPAN(T("Run tests in this file"))),
|
SPAN(T("Run tests in this file"))),
|
||||||
@@ -16,7 +16,7 @@ def testfile(path,file):
|
|||||||
**{'_data-placement':'right',
|
**{'_data-placement':'right',
|
||||||
'_data-original-title':T("Run tests in this file")})
|
'_data-original-title':T("Run tests in this file")})
|
||||||
def editlanguagefile(path,file):
|
def editlanguagefile(path,file):
|
||||||
return A(SPAN(T('Edit')),_class='button editbutton',_href=URL('edit_language', args=(app, path, file)))
|
return A(SPAN(T('Edit')),_class='button editbutton btn-mini',_href=URL('edit_language', args=(app, path, file)))
|
||||||
def file_upload_form(location):
|
def file_upload_form(location):
|
||||||
form=FORM(T("upload file:")," ",
|
form=FORM(T("upload file:")," ",
|
||||||
INPUT(_type="file",_name="file")," ",T("and rename it:")," ",
|
INPUT(_type="file",_name="file")," ",T("and rename it:")," ",
|
||||||
@@ -220,4 +220,4 @@ for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functi
|
|||||||
</ul>
|
</ul>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</div>
|
</div>
|
||||||
<!-- end "plugin" block -->
|
<!-- end "plugin" block -->
|
||||||
|
|||||||
@@ -3,143 +3,152 @@
|
|||||||
{{block sectionclass}}site{{end}}
|
{{block sectionclass}}site{{end}}
|
||||||
<!-- begin "site" block -->
|
<!-- begin "site" block -->
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="applist f60 span7">
|
<div class="applist f60 span7">
|
||||||
<div class="applist_inner">
|
<div class="applist_inner">
|
||||||
<h2>{{=T("Installed applications")}}</h2>
|
<h2>{{=T("Installed applications")}}</h2>
|
||||||
<ul class="unstyled">
|
<table width="100%" class="table">
|
||||||
{{for a in apps:}}
|
{{for a in apps:}}
|
||||||
<li class="application"> <!-- onmouseover="jQuery(this).children('p').show()" onmouseout="jQuery(this).children('p').hide()"-->
|
<tr>{{buttons = []}}
|
||||||
{{if a==request.application:}}
|
<td>
|
||||||
<h3 class="currentapp muted">{{=a}} ({{=T('currently running')}})</h3>
|
{{if a==request.application:}}
|
||||||
<p class="controls row-buttons">
|
<h4 class="currentapp">{{=a}} ({{=T('currently running')}})</h4>
|
||||||
{{else:}}
|
{{else:}}
|
||||||
<h3 class="editableapp muted">{{=A(a,_href=URL(a,'default','index'))}}</h3>
|
<h4 class="editableapp">{{=A(a,_href=URL(a,'default','index'))}}</h4>
|
||||||
{{if MULTI_USER_MODE and db.app(name=a):}}(created by {{="%(first_name)s %(last_name)s" % db.auth_user[db.app(name=a).owner]}}){{pass}}
|
{{if MULTI_USER_MODE and db.app(name=a):}}(created by {{="%(first_name)s %(last_name)s" % db.auth_user[db.app(name=a).owner]}}){{pass}}
|
||||||
<p class="controls row-buttons">
|
{{if not os.path.exists('applications/%s/compiled' % a):}}
|
||||||
{{if not os.path.exists('applications/%s/compiled' % a):}}
|
{{buttons.append((URL('design',args=a), T("Edit")))}}
|
||||||
{{=sp_button(URL('design',args=a), T("Edit"))}}
|
{{else:}}
|
||||||
{{else:}}
|
{{buttons.append((URL(a,'appadmin','index'), T("appadmin")))}}
|
||||||
{{=button(URL(a,'appadmin','index'), T("appadmin"))}}
|
{{pass}}
|
||||||
{{pass}}
|
{{buttons.append((URL('about',args=a), T("About")))}}
|
||||||
{{=button(URL('about',args=a), T("About"))}}
|
{{pass}}
|
||||||
{{pass}}
|
{{buttons.append((URL('errors',args=a), T("Errors")))}}
|
||||||
{{=button(URL('errors',args=a), T("Errors"))}}
|
{{buttons.append((URL('cleanup',args=a), T("Clean")))}}
|
||||||
{{=button(URL('cleanup',args=a), T("Clean"))}}
|
{{buttons.append((URL('pack',args=a), T("Pack all")))}}
|
||||||
{{=button(URL('pack',args=a), T("Pack all"))}}
|
{{buttons.append((URL('pack_custom',args=a), T("Pack custom")))}}
|
||||||
{{if not os.path.exists('applications/%s/compiled' % a):}}
|
{{if not os.path.exists('applications/%s/compiled' % a):}}
|
||||||
{{=button(URL('compile_app',args=a), T("Compile"))}}
|
{{buttons.append((URL('compile_app',args=a), T("Compile")))}}
|
||||||
{{else:}}
|
{{else:}}
|
||||||
{{=button(URL('pack',args=(a, 'compiled')), T("Pack compiled"))}}
|
{{buttons.append((URL('pack',args=(a, 'compiled')), T("Pack compiled")))}}
|
||||||
{{if glob.glob('applications/%s/controllers/*.py' % a):}}
|
{{if glob.glob('applications/%s/controllers/*.py' % a):}}
|
||||||
{{=button(URL('remove_compiled_app',args=a), T("Remove compiled"))}}
|
{{buttons.append((URL('remove_compiled_app',args=a), T("Remove compiled")))}}
|
||||||
{{pass}}
|
{{pass}}
|
||||||
{{pass}}
|
{{pass}}
|
||||||
{{if os.path.exists(os.path.join(apath(r=request),a,'.git')): }}
|
{{if os.path.exists(os.path.join(apath(r=request),a,'.git')): }}
|
||||||
{{=button(URL('git_pull',args=a), T("Git Pull"))}}
|
{{buttons.append((URL('git_pull',args=a), T("Git Pull")))}}
|
||||||
{{=button(URL('git_push',args=a), T("Git Push"))}}
|
{{buttons.append((URL('git_push',args=a), T("Git Push")))}}
|
||||||
{{pass}}
|
{{pass}}
|
||||||
{{if a!=request.application:}}
|
{{if a!=request.application:}}
|
||||||
{{=button(URL('uninstall',args=a), T("Uninstall"))}}
|
{{buttons.append((URL('uninstall',args=a), T("Uninstall")))}}
|
||||||
{{=button_enable(URL('enable',args=a), a)}}
|
{{pass}}
|
||||||
{{pass}}
|
</td>
|
||||||
</p>
|
<td>
|
||||||
</li>
|
<div class="btn-group">
|
||||||
{{pass}}
|
<a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
|
||||||
</ul>
|
{{=T('Manage')}}
|
||||||
</div>
|
<span class="caret"></span>
|
||||||
</div> <!-- /applist -->
|
</a>
|
||||||
<div class="sidebar fl60 span5">
|
<ul class="dropdown-menu">
|
||||||
<div class="sidebar_inner controls well well-small">
|
{{for link,name in buttons:}}
|
||||||
<!-- CHANGE ADMIN PWD -->
|
{{=LI(A(name,_href=link))}}
|
||||||
<div class="pwdchange pull-right">
|
{{pass}}
|
||||||
{{if MULTI_USER_MODE:}}
|
</ul>
|
||||||
{{=auth.navbar()}}
|
</div>
|
||||||
{{else:}}
|
{{=button_enable(URL('enable',args=a), a)}}
|
||||||
{{=sp_button(URL('change_password'), T('Change admin password'))}}
|
</td>
|
||||||
{{pass}}
|
</tr>
|
||||||
</div> <!-- /CHANGE ADMIN PWD -->
|
{{pass}}
|
||||||
{{if is_manager():}}
|
</table>
|
||||||
<!-- VERSION -->
|
</div>
|
||||||
<div class="box">
|
</div> <!-- /applist -->
|
||||||
<h3>{{=T("Version %s.%s.%s %s (%s)", myversion)}}</h3>
|
<div class="sidebar fl60 span5">
|
||||||
<p id="check_version" class="row-buttons">
|
<div class="sidebar_inner controls well well-small">
|
||||||
{{if session.check_version:}}
|
<!-- CHANGE ADMIN PWD -->
|
||||||
{{=T('Checking for upgrades...')}}
|
<div class="pwdchange pull-right">
|
||||||
</p>
|
{{if MULTI_USER_MODE:}}
|
||||||
<script>ajax('{{=URL('check_version')}}',[],'check_version');</script>
|
{{=auth.navbar()}}
|
||||||
{{session.check_version=False}}
|
{{else:}}
|
||||||
{{else:}}
|
{{=sp_button(URL('change_password'), T('Change admin password'))}}
|
||||||
{{=button("javascript:ajax('"+URL('check_version')+"',[],'check_version')", T('Check for upgrades'))}}
|
{{=button(URL('default','reload_routes'), T('Reload routes'))}}
|
||||||
{{=button(URL('default','reload_routes'), T('Reload routes'))}}
|
{{pass}}
|
||||||
</p>
|
</div> <!-- /CHANGE ADMIN PWD -->
|
||||||
{{pass}}
|
{{if is_manager():}}
|
||||||
<p>{{=T("Running on %s", request.env.server_software)}}</p>
|
<!-- VERSION -->
|
||||||
{{if session.is_mobile=='auto':}}
|
<div class="box">
|
||||||
<p>{{=A(T('Try the mobile interface'),_href=URL('plugin_jqmobile','about'))}}</p>
|
<h4>{{=T("Version")}}</h4>
|
||||||
{{pass}}
|
<p>
|
||||||
</div> <!-- /VERSION -->
|
<tt>{{=myversion}}</tt><br/>
|
||||||
{{pass}}
|
({{=T("Running on %s", request.env.server_software)}})
|
||||||
{{if MULTI_USER_MODE and is_manager():}}
|
</p>
|
||||||
<!-- MULTI_USER_INTERFACE -->
|
<p id="check_version" class="row-buttons">
|
||||||
<div class="box">
|
{{if session.check_version:}}
|
||||||
<h3>{{=T("Multi User Mode")}}</h3>
|
{{=T('Checking for upgrades...')}}
|
||||||
<p class="row-buttons">
|
<script>ajax('{{=URL('check_version')}}',[],'check_version');</script>
|
||||||
{{=button(URL('bulk_register'),T('Bulk Register'))}}
|
{{session.check_version=False}}
|
||||||
{{=button(URL('manage_students',vars={'order':'auth_user.id'}),T('Manage Students'))}}
|
{{else:}}
|
||||||
</p>
|
{{=button("javascript:ajax('"+URL('check_version')+"',[],'check_version')", T('Check for upgrades'))}}
|
||||||
</div> <!-- /MULTI_USER_INTERFACE -->
|
{{pass}}
|
||||||
{{pass}}
|
</p>
|
||||||
<!-- APP WIZARD -->
|
{{if session.is_mobile=='auto':}}
|
||||||
<div class="box">
|
<p>{{=A(T('Try the mobile interface'),_href=URL('plugin_jqmobile','about'))}}</p>
|
||||||
<h3>{{=T("New application wizard")}}</h3>
|
{{pass}}
|
||||||
<p>{{=button(URL('wizard','index'), T('Start wizard'))}}
|
</div> <!-- /VERSION -->
|
||||||
{{=T("(requires internet access)")}}</p>
|
{{pass}}
|
||||||
</div> <!-- /APP WIZARD -->
|
{{if MULTI_USER_MODE and is_manager():}}
|
||||||
<!-- SCAFFOLD APP -->
|
<!-- MULTI_USER_INTERFACE -->
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<h3>{{=T("New simple application")}}</h3>
|
<h4>{{=T("Multi User Mode")}}</h4>
|
||||||
{{=form_create.custom.begin}}
|
<p class="row-buttons">
|
||||||
{{=LABEL(T("Application name:"))}}
|
{{=button(URL('bulk_register'),T('Bulk Register'))}}
|
||||||
{{=form_create.custom.widget.name}}
|
{{=button(URL('manage_students',vars={'order':'auth_user.id'}),T('Manage Students'))}}
|
||||||
<div class="controls"><button type="submit" class="btn">{{=T('Create')}}</button></div>
|
</p>
|
||||||
{{=form_create.custom.end}}
|
</div> <!-- /MULTI_USER_INTERFACE -->
|
||||||
</div> <!-- /SCAFFOLD APP -->
|
{{pass}}
|
||||||
<!-- UPLOAD PACKAGE -->
|
<!-- SCAFFOLD APP -->
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<h3>{{=T("Upload and install packed application")}}</h3>
|
<h4>{{=T("New simple application")}}</h4>
|
||||||
{{=form_update.custom.begin}}
|
{{=form_create.custom.begin}}
|
||||||
<label for="appupdate_name">{{=T("Application name:")}}</label>
|
{{=LABEL(T("Application name:"))}}
|
||||||
{{=form_update.custom.widget.name}}
|
{{=form_create.custom.widget.name}}
|
||||||
<label for="appupdate_file">{{=T("Upload a package:")}}</label>
|
<div class="controls"><button type="submit" class="btn">{{=T('Create')}}</button></div>
|
||||||
{{=form_update.custom.widget.file}}
|
{{=form_create.custom.end}}
|
||||||
<label for="appupdate_url">{{=T("Or Get from URL:")}}</label>
|
</div> <!-- /SCAFFOLD APP -->
|
||||||
{{=form_update.custom.widget.url}}<small class="help-block">({{=T('can be a git repo')}})</small>
|
<!-- UPLOAD PACKAGE -->
|
||||||
<div class="controls">
|
<div class="box">
|
||||||
<label class="checkbox">
|
<h4>{{=T("Upload and install packed application")}}</h4>
|
||||||
{{=form_update.custom.widget.overwrite}} {{=T("Overwrite installed app")}}
|
{{=form_update.custom.begin}}
|
||||||
</label>
|
<label for="appupdate_name">{{=T("Application name:")}}</label>
|
||||||
<button type="submit" class='btn'>{{=T('Install')}}</button>
|
{{=form_update.custom.widget.name}}
|
||||||
</div>
|
<label for="appupdate_file">{{=T("Upload a package:")}}</label>
|
||||||
{{=form_update.custom.end}}
|
{{=form_update.custom.widget.file}}
|
||||||
</div> <!-- /UPLOAD PACKAGE -->
|
<label for="appupdate_url">{{=T("Or Get from URL:")}}</label>
|
||||||
<!-- DEPLOY ON GAE -->
|
{{=form_update.custom.widget.url}}<small class="help-block">({{=T('can be a git repo')}})</small>
|
||||||
<div class="box">
|
<div class="controls">
|
||||||
<h3>{{=T("Deploy")}}</h3>
|
<label class="checkbox">
|
||||||
<p class="row-buttons">
|
{{=form_update.custom.widget.overwrite}} {{=T("Overwrite installed app")}}
|
||||||
{{=button(URL('gae','deploy'), T('Deploy on Google App Engine'))}}
|
</label>
|
||||||
{{=button(URL('openshift','deploy'),T('Deploy to OpenShift'))}}
|
<button type="submit" class='btn'>{{=T('Install')}}</button>
|
||||||
</p>
|
</div>
|
||||||
</div> <!-- /DEPLOY ON GAE -->
|
{{=form_update.custom.end}}
|
||||||
<br/>
|
</div> <!-- /UPLOAD PACKAGE -->
|
||||||
{{if TWITTER_HASH:}}
|
<!-- DEPLOY ON GAE -->
|
||||||
<!-- TWITTER -->
|
<div class="box">
|
||||||
<div class="box">
|
<h4>{{=T("Deploy")}}</h4>
|
||||||
<h3>{{=T("%s Recent Tweets"%TWITTER_HASH)}}</h3>
|
<p class="row-buttons">
|
||||||
<div id="tweets">{{=T('loading...')}}</div>
|
{{=button(URL('gae','deploy'), T('Deploy on Google App Engine'))}}
|
||||||
<script>jQuery(document).ready(function(){jQuery('#tweets').load('{{=URL('twitter.load')}}');});</script>
|
{{=button(URL('openshift','deploy'),T('Deploy to OpenShift'))}}
|
||||||
</div> <!-- /TWITTER -->
|
</p>
|
||||||
{{pass}}
|
</div> <!-- /DEPLOY ON GAE -->
|
||||||
</div>
|
<!-- APP WIZARD -->
|
||||||
</div> <!-- /sidebar -->
|
<div class="box">
|
||||||
|
<h4>{{=T("New application wizard")}}</h4>
|
||||||
|
<p>{{=button(URL('wizard','index'), T('Start wizard'))}}<br/>
|
||||||
|
{{=T("(requires internet access, experimental)")}}</p>
|
||||||
|
</div> <!-- /APP WIZARD -->
|
||||||
|
<a class="twitter-timeline" href="https://twitter.com/web2py" data-widget-id="340456915207327745">Tweets by @web2py</a>
|
||||||
|
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
|
||||||
|
</div>
|
||||||
|
</div> <!-- /sidebar -->
|
||||||
</div> <!-- /row-fluid
|
</div> <!-- /row-fluid
|
||||||
<!-- end "site" block -->
|
<!-- end "site" block -->
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<th>web2py™</th>
|
<th>web2py™</th>
|
||||||
<td>{{=myversion}}</td>
|
<td>Version {{=myversion}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{if snapshot:}}
|
{{if snapshot:}}
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -27,8 +27,17 @@ Tweet attributes
|
|||||||
"""
|
"""
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
{{import re}}
|
||||||
|
{{hashtag = re.compile('([#@])(\w+)')}}
|
||||||
|
{{link = re.compile('(?!<")https?\:\/\/[\w\./?&]+')}}
|
||||||
|
<table class="twitter">
|
||||||
{{ for t in tweets: }}
|
{{ for t in tweets: }}
|
||||||
{{ =DIV(H5(t["from_user_name"])) }}
|
<tr class="tweet">
|
||||||
{{ =DIV(t["text"]) }}
|
<td><img src="{{=t['profile_image_url_https']}}"/></td>
|
||||||
{{ =BR() }}
|
<td>
|
||||||
|
<a href="http://twitter.com/{{=t['from_user']}}">{{=t["from_user_name"]}}</a>:
|
||||||
|
{{=XML(hashtag.sub('<a href="http://twitter.com/\\g<2>">\\g<1>\\g<2></a>',link.sub('<a href="\\g<0>">\\g<0></a>',t["text"].encode('utf8'))),sanitize=True)}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
{{ pass }}
|
{{ pass }}
|
||||||
|
</table>
|
||||||
@@ -9,7 +9,6 @@
|
|||||||
{{
|
{{
|
||||||
response.files.append(URL('static','css/bootstrap.min.css'))
|
response.files.append(URL('static','css/bootstrap.min.css'))
|
||||||
response.files.append(URL('static','css/bootstrap_essentials.css'))
|
response.files.append(URL('static','css/bootstrap_essentials.css'))
|
||||||
# response.files.append(URL('static','css/bootstrap_adapters.css'))
|
|
||||||
response.files.append(URL('static','css/bootstrap-responsive.min.css'))
|
response.files.append(URL('static','css/bootstrap-responsive.min.css'))
|
||||||
}}
|
}}
|
||||||
{{include 'web2py_ajax.html'}}
|
{{include 'web2py_ajax.html'}}
|
||||||
@@ -79,6 +78,11 @@
|
|||||||
jQuery("[rel=tooltip]").tooltip();
|
jQuery("[rel=tooltip]").tooltip();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
{{if request.function in ('index','site'):}}
|
||||||
|
<a style="position:fixed;bottom:0;left:0;z-index:1000" href="https://groups.google.com/forum/?fromgroups#!forum/web2py" target="_blank">
|
||||||
|
<!-- http://webchat.freenode.net/?channels=web2py" //-->
|
||||||
|
<img src="{{=URL('static','images/questions.png')}}" />
|
||||||
|
</a>
|
||||||
|
{{pass}}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ for application "{{=request.args[0]}}"</h2>
|
|||||||
<h3>Commit form</h3>
|
<h3>Commit form</h3>
|
||||||
{{=form}}
|
{{=form}}
|
||||||
|
|
||||||
|
|
||||||
{{if repo['.'].rev()>=0:}}
|
{{if repo['.'].rev()>=0:}}
|
||||||
<h3>Last Revision</h3>
|
<h3>Last Revision</h3>
|
||||||
<table>
|
<table>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
var w2p_ajax_confirm_message = "{{=T('Are you sure you want to delete this object?')}}";
|
var w2p_ajax_confirm_message = "{{=T('Are you sure you want to delete this object?')}}";
|
||||||
var w2p_ajax_date_format = "{{=T('%Y-%m-%d')}}";
|
var w2p_ajax_date_format = "{{=T('%Y-%m-%d')}}";
|
||||||
var w2p_ajax_datetime_format = "{{=T('%Y-%m-%d %H:%M:%S')}}";
|
var w2p_ajax_datetime_format = "{{=T('%Y-%m-%d %H:%M:%S')}}";
|
||||||
var ajax_error_500 = '{{=XML(T('An error occured, please %s the page') % A(T('reload'), _href=URL(args=request.args, vars=request.vars))) }}'
|
var ajax_error_500 = '{{=XML(T('An error occured, please %s the page') % A(T('reload'), _href=URL(args=request.args, vars=request.get_vars))) }}'
|
||||||
//--></script>
|
//--></script>
|
||||||
{{
|
{{
|
||||||
response.files.insert(0,URL('static','js/jquery.js'))
|
response.files.insert(0,URL('static','js/jquery.js'))
|
||||||
|
|||||||
@@ -37,14 +37,20 @@ if request.env.http_x_forwarded_for or request.is_https:
|
|||||||
elif (remote_addr not in hosts) and (remote_addr != "127.0.0.1"):
|
elif (remote_addr not in hosts) and (remote_addr != "127.0.0.1"):
|
||||||
raise HTTP(200, T('appadmin is disabled because insecure channel'))
|
raise HTTP(200, T('appadmin is disabled because insecure channel'))
|
||||||
|
|
||||||
if (request.application == 'admin' and not session.authorized) or \
|
if request.function in ('auth_manage','manage') and 'auth' in globals():
|
||||||
(request.application != 'admin' and not gluon.fileutils.check_credentials(request)):
|
auth.requires_membership(auth.settings.manager_group_role)(lambda: None)()
|
||||||
|
menu = False
|
||||||
|
elif (request.application == 'admin' and not session.authorized) or \
|
||||||
|
(request.application != 'admin' and not gluon.fileutils.check_credentials(request)):
|
||||||
redirect(URL('admin', 'default', 'index',
|
redirect(URL('admin', 'default', 'index',
|
||||||
vars=dict(send=URL(args=request.args, vars=request.vars))))
|
vars=dict(send=URL(args=request.args, vars=request.vars))))
|
||||||
|
else:
|
||||||
|
menu = True
|
||||||
|
|
||||||
ignore_rw = True
|
ignore_rw = True
|
||||||
response.view = 'appadmin.html'
|
response.view = 'appadmin.html'
|
||||||
response.menu = [[T('design'), False, URL('admin', 'default', 'design',
|
if menu:
|
||||||
|
response.menu = [[T('design'), False, URL('admin', 'default', 'design',
|
||||||
args=[request.application])], [T('db'), False,
|
args=[request.application])], [T('db'), False,
|
||||||
URL('index')], [T('state'), False,
|
URL('index')], [T('state'), False,
|
||||||
URL('state')], [T('cache'), False,
|
URL('state')], [T('cache'), False,
|
||||||
@@ -54,6 +60,10 @@ response.menu = [[T('design'), False, URL('admin', 'default', 'design',
|
|||||||
# ## auxiliary functions
|
# ## auxiliary functions
|
||||||
# ###########################################################
|
# ###########################################################
|
||||||
|
|
||||||
|
if False and request.tickets_db:
|
||||||
|
from gluon.restricted import TicketStorage
|
||||||
|
ts = TicketStorage()
|
||||||
|
ts._get_table(request.tickets_db, ts.tablename, request.application)
|
||||||
|
|
||||||
def get_databases(request):
|
def get_databases(request):
|
||||||
dbs = {}
|
dbs = {}
|
||||||
@@ -275,14 +285,15 @@ def update():
|
|||||||
(db, table) = get_table(request)
|
(db, table) = get_table(request)
|
||||||
keyed = hasattr(db[table], '_primarykey')
|
keyed = hasattr(db[table], '_primarykey')
|
||||||
record = None
|
record = None
|
||||||
|
db[table]._common_filter = None
|
||||||
if keyed:
|
if keyed:
|
||||||
key = [f for f in request.vars if f in db[table]._primarykey]
|
key = [f for f in request.vars if f in db[table]._primarykey]
|
||||||
if key:
|
if key:
|
||||||
record = db(db[table][key[0]] == request.vars[key[
|
record = db(db[table][key[0]] == request.vars[key[
|
||||||
0]], ignore_common_filters=True).select().first()
|
0]]).select().first()
|
||||||
else:
|
else:
|
||||||
record = db(db[table].id == request.args(
|
record = db(db[table].id == request.args(
|
||||||
2), ignore_common_filters=True).select().first()
|
2)).select().first()
|
||||||
|
|
||||||
if not record:
|
if not record:
|
||||||
qry = query_by_table_type(table, db)
|
qry = query_by_table_type(table, db)
|
||||||
@@ -319,6 +330,9 @@ def state():
|
|||||||
|
|
||||||
|
|
||||||
def ccache():
|
def ccache():
|
||||||
|
cache.ram.initialize()
|
||||||
|
cache.disk.initialize()
|
||||||
|
|
||||||
form = FORM(
|
form = FORM(
|
||||||
P(TAG.BUTTON(
|
P(TAG.BUTTON(
|
||||||
T("Clear CACHE?"), _type="submit", _name="yes", _value="yes")),
|
T("Clear CACHE?"), _type="submit", _name="yes", _value="yes")),
|
||||||
@@ -385,7 +399,7 @@ def ccache():
|
|||||||
|
|
||||||
return (hours, minutes, seconds)
|
return (hours, minutes, seconds)
|
||||||
|
|
||||||
for key, value in cache.ram.storage.items():
|
for key, value in cache.ram.storage.iteritems():
|
||||||
if isinstance(value, dict):
|
if isinstance(value, dict):
|
||||||
ram['hits'] = value['hit_total'] - value['misses']
|
ram['hits'] = value['hit_total'] - value['misses']
|
||||||
ram['misses'] = value['misses']
|
ram['misses'] = value['misses']
|
||||||
@@ -565,3 +579,35 @@ def bg_graph_model():
|
|||||||
|
|
||||||
def graph_model():
|
def graph_model():
|
||||||
return dict(databases=databases, pgv=pgv)
|
return dict(databases=databases, pgv=pgv)
|
||||||
|
|
||||||
|
def auth_manage():
|
||||||
|
tablename = request.args(0)
|
||||||
|
if not tablename or not tablename in auth.db.tables:
|
||||||
|
return dict()
|
||||||
|
table = auth.db[tablename]
|
||||||
|
formname = '%s_grid' % tablename
|
||||||
|
if tablename == auth.settings.table_user_name:
|
||||||
|
auth.settings.table_user._plural = T('Users')
|
||||||
|
auth.settings.table_membership._plural = T('Roles')
|
||||||
|
auth.settings.table_membership._id.readable = False
|
||||||
|
auth.settings.table_membership.user_id.label = T('User')
|
||||||
|
auth.settings.table_membership.group_id.label = T('Role')
|
||||||
|
grid = SQLFORM.smartgrid(table, args=request.args[:1], user_signature=True,
|
||||||
|
linked_tables=[auth.settings.table_membership_name],
|
||||||
|
maxtextlength=1000, formname=formname)
|
||||||
|
else:
|
||||||
|
table._id.readable = False
|
||||||
|
auth.settings.table_permission.group_id.label = T('Role')
|
||||||
|
auth.settings.table_permission.name.label = T('Permission')
|
||||||
|
orderby = 'role' if table == auth.settings.table_group_name else 'group_id'
|
||||||
|
grid = SQLFORM.grid(table, args=request.args[:1], orderby=table[orderby],
|
||||||
|
user_signature=True, maxtextlength=1000, formname=formname)
|
||||||
|
return grid if request.extension=='load' else dict(grid=grid)
|
||||||
|
|
||||||
|
def manage():
|
||||||
|
tablename = request.args(0)
|
||||||
|
if tablename in auth.db.tables:
|
||||||
|
grid = SQLFORM.smartgrid(auth.db[tablename], args=request.args[:1])
|
||||||
|
else:
|
||||||
|
return dict()
|
||||||
|
return grid if request.extension=='load' else dict(grid=grid)
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ def what():
|
|||||||
import urllib
|
import urllib
|
||||||
try:
|
try:
|
||||||
images = XML(urllib.urlopen(
|
images = XML(urllib.urlopen(
|
||||||
'http://web2py.com/poweredby/default/images').read())
|
'http://www.web2py.com/poweredby/default/images').read())
|
||||||
except:
|
except:
|
||||||
images = []
|
images = []
|
||||||
return response.render(images=images)
|
return response.render(images=images)
|
||||||
@@ -61,11 +61,11 @@ def videos():
|
|||||||
|
|
||||||
|
|
||||||
def security():
|
def security():
|
||||||
redirect('http://www.web2py.com/book/default/chapter/01#security')
|
redirect('http://www.web2py.com/book/default/chapter/01#Security')
|
||||||
|
|
||||||
|
|
||||||
def api():
|
def api():
|
||||||
redirect('http://web2py.com/book/default/chapter/04#API')
|
redirect('http://www.web2py.com/book/default/chapter/04#API')
|
||||||
|
|
||||||
|
|
||||||
@cache('license', time_expire=cache_expire)
|
@cache('license', time_expire=cache_expire)
|
||||||
@@ -74,10 +74,14 @@ def license():
|
|||||||
filename = os.path.join(request.env.gluon_parent, 'LICENSE')
|
filename = os.path.join(request.env.gluon_parent, 'LICENSE')
|
||||||
return response.render(dict(license=MARKMIN(read_file(filename))))
|
return response.render(dict(license=MARKMIN(read_file(filename))))
|
||||||
|
|
||||||
|
|
||||||
def version():
|
def version():
|
||||||
return 'Version %s.%s.%s (%s) %s' % request.env.web2py_version
|
if request.args(0)=='raw':
|
||||||
|
return request.env.web2py_version
|
||||||
|
from gluon.fileutils import parse_version
|
||||||
|
(a, b, c, pre_release, build) = parse_version(request.env.web2py_version)
|
||||||
|
return 'Version %i.%i.%i (%.4i-%.2i-%.2i %.2i:%.2i:%.2i) %s' % (
|
||||||
|
a,b,c,build.year,build.month,build.day,
|
||||||
|
build.hour,build.minute,build.second,pre_release)
|
||||||
|
|
||||||
@cache('examples', time_expire=cache_expire)
|
@cache('examples', time_expire=cache_expire)
|
||||||
def examples():
|
def examples():
|
||||||
|
|||||||
@@ -1,75 +1,49 @@
|
|||||||
session.forget()
|
session.forget()
|
||||||
|
|
||||||
response.menu = [['home', False, '/%s/default/index'
|
def get(args):
|
||||||
% request.application], ['docs', True,
|
if args[0].startswith('__'):
|
||||||
'/%s/global/vars' % request.application]]
|
return None
|
||||||
|
try:
|
||||||
|
obj = globals(),get(args[0])
|
||||||
|
for k in range(1,len(args)):
|
||||||
|
obj = getattr(obj,args[k])
|
||||||
|
return obj
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
def vars():
|
def vars():
|
||||||
"""the running controller function!"""
|
"""the running controller function!"""
|
||||||
|
title = '.'.join(request.args)
|
||||||
|
attributes = {}
|
||||||
if not request.args:
|
if not request.args:
|
||||||
(
|
(doc,keys,t,c,d,value)=('Global variables',globals(),None,None,[],None)
|
||||||
doc,
|
|
||||||
keys,
|
|
||||||
t,
|
|
||||||
c,
|
|
||||||
d,
|
|
||||||
value,
|
|
||||||
) = (
|
|
||||||
'Global variables',
|
|
||||||
globals(),
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
(),
|
|
||||||
None,
|
|
||||||
)
|
|
||||||
(title, args) = ('globals()', '')
|
|
||||||
elif len(request.args) < 3:
|
elif len(request.args) < 3:
|
||||||
args = '.'.join(request.args)
|
obj = get(request.args)
|
||||||
try:
|
if obj:
|
||||||
doc = eval(args + '.__doc__')
|
doc = getattr(obj,'__doc__','no documentation')
|
||||||
except:
|
keys = dir(obj)
|
||||||
doc = 'no documentation'
|
t = type(obj)
|
||||||
try:
|
c = getattr(obj,'__class__',None)
|
||||||
keys = eval('dir(%s)' % args)
|
d = getattr(obj,'__bases__',None)
|
||||||
except:
|
|
||||||
|
for key in keys:
|
||||||
|
a = getattr(obj,key,None)
|
||||||
|
if a and not isinstance(a,DAL):
|
||||||
|
doc1 = getattr(a, '__doc__', '')
|
||||||
|
t1 = type(a)
|
||||||
|
c1 = getattr(a,'__class__',None)
|
||||||
|
d1 = getattr(a,'__bases__',None)
|
||||||
|
key = '.'.join(request.args)+'.'+key
|
||||||
|
attributes[key] = (doc1, t1, c1, d1)
|
||||||
|
else:
|
||||||
|
doc = 'Unkown'
|
||||||
keys = []
|
keys = []
|
||||||
t = eval('type(%s)' % args)
|
t = c = d = None
|
||||||
try:
|
|
||||||
c = eval('%s.__class__' % args)
|
|
||||||
except:
|
|
||||||
c = None
|
|
||||||
try:
|
|
||||||
d = eval('%s.__bases__' % args)
|
|
||||||
except:
|
|
||||||
d = None
|
|
||||||
title = args
|
|
||||||
args += '.'
|
|
||||||
else:
|
else:
|
||||||
raise HTTP(400)
|
raise HTTP(400)
|
||||||
attributes = {}
|
|
||||||
for key in keys:
|
|
||||||
a = args + key
|
|
||||||
if eval('isinstance(%s,SQLDB)' % a) or a == 'vars':
|
|
||||||
continue
|
|
||||||
try:
|
|
||||||
doc1 = eval(a + '.__doc__')
|
|
||||||
except:
|
|
||||||
doc1 = 'no documentation'
|
|
||||||
t1 = eval('type(%s)' % a)
|
|
||||||
try:
|
|
||||||
c1 = eval('%s.__class__' % a)
|
|
||||||
except:
|
|
||||||
c1 = None
|
|
||||||
try:
|
|
||||||
d1 = eval('%s.__bases__' % a)
|
|
||||||
except:
|
|
||||||
d1 = ()
|
|
||||||
attributes[a] = (doc1, t1, c1, d1)
|
|
||||||
return dict(
|
return dict(
|
||||||
title=title,
|
title=title,
|
||||||
args=args,
|
args=request.args,
|
||||||
t=t,
|
t=t,
|
||||||
c=c,
|
c=c,
|
||||||
d=d,
|
d=d,
|
||||||
|
|||||||
@@ -54,13 +54,6 @@ def raisehttp():
|
|||||||
raise HTTP(400, 'internal error')
|
raise HTTP(400, 'internal error')
|
||||||
|
|
||||||
|
|
||||||
def raiseexception():
|
|
||||||
""" generates an exeption, logs the event and returns a ticket number """
|
|
||||||
|
|
||||||
1 / 0
|
|
||||||
return 'oops'
|
|
||||||
|
|
||||||
|
|
||||||
def servejs():
|
def servejs():
|
||||||
""" serves a js document """
|
""" serves a js document """
|
||||||
|
|
||||||
@@ -69,7 +62,6 @@ def servejs():
|
|||||||
gluon.contenttype.contenttype('.js')
|
gluon.contenttype.contenttype('.js')
|
||||||
return 'alert("This is a Javascript document, it is not supposed to run!");'
|
return 'alert("This is a Javascript document, it is not supposed to run!");'
|
||||||
|
|
||||||
|
|
||||||
def makejson():
|
def makejson():
|
||||||
import gluon.contrib.simplejson as sj
|
import gluon.contrib.simplejson as sj
|
||||||
return sj.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
|
return sj.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from gluon.contrib.spreadsheet import Sheet
|
from gluon.contrib.spreadsheet import Sheet
|
||||||
|
|
||||||
|
|
||||||
def callback():
|
def callback():
|
||||||
return cache.ram('sheet1', lambda: None, None).process(request)
|
return cache.ram('sheet1', lambda: None, None).process(request)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
session.connect(request,response,cookie_key='yoursecret')
|
||||||
@@ -47,7 +47,7 @@ Here is a more complex complete application that lets the visitor upload images
|
|||||||
``
|
``
|
||||||
db=DAL('sqlite://storage.db')
|
db=DAL('sqlite://storage.db')
|
||||||
db.define_table('image',
|
db.define_table('image',
|
||||||
Field('name'),
|
Field('name', notnull=True),
|
||||||
Field('file','upload'))
|
Field('file','upload'))
|
||||||
``:code_python
|
``:code_python
|
||||||
|
|
||||||
@@ -55,10 +55,10 @@ db.define_table('image',
|
|||||||
|
|
||||||
``
|
``
|
||||||
def index():
|
def index():
|
||||||
form = SQLFORM(db.image)
|
form = SQLFORM(db.image).process()
|
||||||
if form.process().accepted:
|
if form.accepted:
|
||||||
response.flash = 'image uploaded'
|
response.flash = 'image uploaded'
|
||||||
return dict(form = form)""",counter=None,_class='boxCode')}}
|
return locals()
|
||||||
``:code_python
|
``:code_python
|
||||||
|
|
||||||
### In View
|
### In View
|
||||||
@@ -66,7 +66,7 @@ def index():
|
|||||||
``
|
``
|
||||||
{{extend 'layout.html'}}
|
{{extend 'layout.html'}}
|
||||||
<h1>Image upload form</h1>
|
<h1>Image upload form</h1>
|
||||||
{{form}}
|
{{=form}}
|
||||||
``:code_python
|
``:code_python
|
||||||
|
|
||||||
Uploaded images are safely renamed to avoid directory traversal vulnerabilities, stored on the filesystem (or database) and a corresponding entry is inserted in the database, linking the file. A built-in mechanism prevents involuntary double form submission. All DB IO is transaction safe by default. Any exception in the code causes the transaction to rollback.
|
Uploaded images are safely renamed to avoid directory traversal vulnerabilities, stored on the filesystem (or database) and a corresponding entry is inserted in the database, linking the file. A built-in mechanism prevents involuntary double form submission. All DB IO is transaction safe by default. Any exception in the code causes the transaction to rollback.
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
403
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
404
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
500
|
||||||
@@ -1,117 +1,16 @@
|
|||||||
footer-content {position: relative; bottom: 0; width: 100%;}
|
@import url(http://fonts.googleapis.com/css?family=Economica);
|
||||||
|
@@import url(http://fonts.googleapis.com/css?family=Belleza);
|
||||||
.statusbar {
|
|
||||||
padding: 2px 0;
|
|
||||||
border: 0;
|
|
||||||
margin-bottom: 15px;
|
|
||||||
background-color: #C1CDCD;
|
|
||||||
/*background: url('../images/menu.png') repeat-x;*/
|
|
||||||
}
|
|
||||||
.statusbar a, .statusbar a:visited {
|
|
||||||
color: #406361;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.footer-content {
|
|
||||||
height: 100%;
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
body { font-family: Arial, Helvetica; }
|
||||||
a, a:visited, a:hover, h1,h2,h3,h4,h5 {color: #658883}
|
a, a:visited, a:hover, h1,h2,h3,h4,h5 {color: #658883}
|
||||||
a.button {color: #658883}
|
a.btn-danger, a.btn-warning, a.btn-success {color:white}
|
||||||
|
h1,h2,h3,h4,h5 { font-family: "Economica", Arial, Helevtica; }
|
||||||
.sf-menu li, .sf-menu li a { border-radius: 5px;}
|
body {
|
||||||
|
background: url('../images/stripes.png') repeat-x;
|
||||||
.wrapper {
|
|
||||||
background: url('../images/back-02.png') repeat-x;
|
|
||||||
padding-top:10px;
|
|
||||||
}
|
}
|
||||||
h1 { font-size: 32px }
|
#header {
|
||||||
h2 { font-size: 24px }
|
margin-top: 40px;
|
||||||
h3 { font-size: 20px }
|
|
||||||
h4 { font-size: 14px }
|
|
||||||
sup {
|
|
||||||
font-size: 0.5em;
|
|
||||||
line-height: 2em;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
ul { list-style: circle outside; padding-left: 30px;}
|
|
||||||
|
|
||||||
.frame {
|
|
||||||
border: 3px solid #959595;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header h5 {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
.logo: {
|
|
||||||
float:left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.announce {
|
|
||||||
text-align: center;
|
|
||||||
color: white;
|
|
||||||
top: 0;
|
|
||||||
font-weight: bold;
|
|
||||||
text-align: center;
|
|
||||||
left: 0;
|
|
||||||
position: relative;
|
|
||||||
background: #000;
|
|
||||||
border-radius: 5px;
|
|
||||||
margin: 7px 0 15px;
|
|
||||||
}
|
|
||||||
.announce a {color: white}
|
|
||||||
|
|
||||||
input:focus, textarea:focus {background:#f0f0f0}
|
|
||||||
|
|
||||||
table.downloads { width:100%; }
|
|
||||||
table.downloads th, table.downloads td {text-align:center;}
|
|
||||||
table.downloads a.button { width: 150px; }
|
|
||||||
th,td {padding-right: 10px;}
|
|
||||||
|
|
||||||
p {text-align: left;}
|
|
||||||
|
|
||||||
p + p {
|
|
||||||
margin-bottom: .75em;
|
|
||||||
}
|
|
||||||
|
|
||||||
strong {color: inherit;}
|
|
||||||
|
|
||||||
img.centered {
|
|
||||||
margin: 0 auto;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tagCloud {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 489px;
|
|
||||||
}
|
|
||||||
.mainbody {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
.aboutW2P {
|
|
||||||
margin-top: 23px;
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
.aboutW2P p {
|
|
||||||
padding: 0 0.5em;
|
|
||||||
font-size: 1.15em;
|
|
||||||
}
|
|
||||||
.aboutW2P h3 {
|
|
||||||
padding: 0 0.3em;
|
|
||||||
}
|
|
||||||
.userQuotes {
|
|
||||||
/*border-top: #eee 2px solid;*/
|
|
||||||
padding-top: 15px;
|
|
||||||
}
|
|
||||||
.userQuotes p {
|
|
||||||
text-align: left;
|
|
||||||
font-size: 111%;
|
|
||||||
color: #777;
|
|
||||||
}
|
|
||||||
#menu {
|
|
||||||
padding: 0.1em 0.5em;
|
|
||||||
}
|
}
|
||||||
|
.btn-180 {
|
||||||
|
width: 180px;
|
||||||
|
}
|
||||||
@@ -1,629 +0,0 @@
|
|||||||
/*
|
|
||||||
* Skeleton V1.1
|
|
||||||
* Copyright 2011, Dave Gamache
|
|
||||||
* www.getskeleton.com
|
|
||||||
* Free to use under the MIT license.
|
|
||||||
* http://www.opensource.org/licenses/mit-license.php
|
|
||||||
* 8/17/2011
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/* Table of Content
|
|
||||||
==================================================
|
|
||||||
#Reset & Basics
|
|
||||||
#Basic Styles
|
|
||||||
#Site Styles
|
|
||||||
#Typography
|
|
||||||
#Links
|
|
||||||
#Lists
|
|
||||||
#Images
|
|
||||||
#Buttons
|
|
||||||
#Tabs
|
|
||||||
#Forms
|
|
||||||
#Misc */
|
|
||||||
|
|
||||||
|
|
||||||
/* #Reset & Basics (Inspired by E. Meyers)
|
|
||||||
================================================== */
|
|
||||||
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
border: 0;
|
|
||||||
font-size: 100%;
|
|
||||||
font: inherit;
|
|
||||||
vertical-align: baseline; }
|
|
||||||
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
|
|
||||||
display: block; }
|
|
||||||
body {
|
|
||||||
line-height: 1; }
|
|
||||||
// ol, ul { list-style: none; } /* WEB2PY EDIT */
|
|
||||||
blockquote, q {
|
|
||||||
quotes: none; }
|
|
||||||
blockquote:before, blockquote:after,
|
|
||||||
q:before, q:after {
|
|
||||||
content: '';
|
|
||||||
content: none; }
|
|
||||||
table {
|
|
||||||
border-collapse: collapse;
|
|
||||||
border-spacing: 0; }
|
|
||||||
|
|
||||||
|
|
||||||
/* #Basic Styles
|
|
||||||
================================================== */
|
|
||||||
body {
|
|
||||||
background: #fff;
|
|
||||||
font: 14px/21px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
||||||
color: #444;
|
|
||||||
-webkit-font-smoothing: antialiased; /* Fix for webkit rendering */
|
|
||||||
-webkit-text-size-adjust: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* #Typography
|
|
||||||
================================================== */
|
|
||||||
h1, h2, h3, h4, h5, h6 {
|
|
||||||
color: #181818;
|
|
||||||
font-family: "Georgia", "Times New Roman", Helvetica, Arial, sans-serif;
|
|
||||||
font-weight: normal; }
|
|
||||||
h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { font-weight: inherit; }
|
|
||||||
h1 { font-size: 46px; line-height: 50px; }
|
|
||||||
h2 { font-size: 35px; line-height: 40px; }
|
|
||||||
h3 { font-size: 28px; line-height: 34px; }
|
|
||||||
h4 { font-size: 21px; line-height: 30px; }
|
|
||||||
h5 { font-size: 17px; line-height: 24px; }
|
|
||||||
h6 { font-size: 14px; line-height: 21px; }
|
|
||||||
|
|
||||||
.subheader { color: #777; }
|
|
||||||
|
|
||||||
p { margin: 0 0 20px 0; }
|
|
||||||
p img { margin: 0; }
|
|
||||||
p.lead { font-size: 21px; line-height: 27px; color: #777; }
|
|
||||||
|
|
||||||
em { font-style: italic; }
|
|
||||||
strong { font-weight: bold; color: #333; }
|
|
||||||
small { font-size: 80%; }
|
|
||||||
|
|
||||||
/* Blockquotes */
|
|
||||||
blockquote, blockquote p { font-size: 17px; line-height: 24px; color: #777; font-style: italic; }
|
|
||||||
blockquote { margin: 0 0 20px; padding: 9px 20px 0 19px;} /* WEB2PY EDIT */
|
|
||||||
blockquote cite { display: block; font-size: 12px; color: #555; }
|
|
||||||
blockquote cite:before { content: "\2014 \0020"; }
|
|
||||||
blockquote cite a, blockquote cite a:visited, blockquote cite a:visited { color: #555; }
|
|
||||||
|
|
||||||
hr { border: solid #ddd; border-width: 1px 0 0; clear: both; margin: 10px 0 30px; height: 0; }
|
|
||||||
|
|
||||||
|
|
||||||
/* #Links
|
|
||||||
================================================== */
|
|
||||||
a, a:visited { color: #333; text-decoration: underline; outline: 0; }
|
|
||||||
a:hover, a:focus { color: #000; }
|
|
||||||
p a, p a:visited { line-height: inherit; }
|
|
||||||
|
|
||||||
|
|
||||||
/* #Lists
|
|
||||||
================================================== */
|
|
||||||
ul, ol { margin-bottom: 20px; }
|
|
||||||
// ul { list-style: none outside; } /* WEB2PY EDIT */
|
|
||||||
ol { list-style: decimal; }
|
|
||||||
ol, ul.square, ul.circle, ul.disc { margin-left: 30px; }
|
|
||||||
ul.square { list-style: square outside; }
|
|
||||||
ul.circle { list-style: circle outside; }
|
|
||||||
ul.disc { list-style: disc outside; }
|
|
||||||
ul ul, ul ol,
|
|
||||||
ol ol, ol ul { margin: 4px 0 5px 30px; font-size: 90%; }
|
|
||||||
ul ul li, ul ol li,
|
|
||||||
ol ol li, ol ul li { margin-bottom: 6px; }
|
|
||||||
li { line-height: 18px; margin-bottom: 12px; }
|
|
||||||
ul.large li { line-height: 21px; }
|
|
||||||
li p { line-height: 21px; }
|
|
||||||
|
|
||||||
/* #Images
|
|
||||||
================================================== */
|
|
||||||
|
|
||||||
img.scale-with-grid {
|
|
||||||
max-width: 100%;
|
|
||||||
height: auto; }
|
|
||||||
|
|
||||||
|
|
||||||
/* #Buttons
|
|
||||||
================================================== */
|
|
||||||
|
|
||||||
a.button,
|
|
||||||
button,
|
|
||||||
input[type="submit"],
|
|
||||||
input[type="reset"],
|
|
||||||
input[type="button"] {
|
|
||||||
background: #eee; /* Old browsers */
|
|
||||||
background: #eee -moz-linear-gradient(top, rgba(255,255,255,.2) 0%, rgba(0,0,0,.2) 100%); /* FF3.6+ */
|
|
||||||
background: #eee -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.2)), color-stop(100%,rgba(0,0,0,.2))); /* Chrome,Safari4+ */
|
|
||||||
background: #eee -webkit-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* Chrome10+,Safari5.1+ */
|
|
||||||
background: #eee -o-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* Opera11.10+ */
|
|
||||||
background: #eee -ms-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* IE10+ */
|
|
||||||
background: #eee linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* W3C */
|
|
||||||
border: 1px solid #aaa;
|
|
||||||
border-top: 1px solid #ccc;
|
|
||||||
border-left: 1px solid #ccc;
|
|
||||||
padding: 4px 12px;
|
|
||||||
-moz-border-radius: 3px;
|
|
||||||
-webkit-border-radius: 3px;
|
|
||||||
border-radius: 3px;
|
|
||||||
color: #444;
|
|
||||||
display: inline-block;
|
|
||||||
font-size: 1em; /** WEB2PY EDIT **/
|
|
||||||
font-weight: bold;
|
|
||||||
text-decoration: none;
|
|
||||||
text-shadow: 0 1px rgba(255, 255, 255, .75);
|
|
||||||
cursor: pointer;
|
|
||||||
margin-bottom: 5px; /** WEB2PY EDIT **/
|
|
||||||
line-height: 21px;
|
|
||||||
font-family: "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; }
|
|
||||||
|
|
||||||
a.button:hover,
|
|
||||||
button:hover,
|
|
||||||
input[type="submit"]:hover,
|
|
||||||
input[type="reset"]:hover,
|
|
||||||
input[type="button"]:hover {
|
|
||||||
color: #222;
|
|
||||||
background: #ddd; /* Old browsers */
|
|
||||||
background: #ddd -moz-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); /* FF3.6+ */
|
|
||||||
background: #ddd -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.3)), color-stop(100%,rgba(0,0,0,.3))); /* Chrome,Safari4+ */
|
|
||||||
background: #ddd -webkit-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* Chrome10+,Safari5.1+ */
|
|
||||||
background: #ddd -o-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* Opera11.10+ */
|
|
||||||
background: #ddd -ms-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* IE10+ */
|
|
||||||
background: #ddd linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* W3C */
|
|
||||||
border: 1px solid #888;
|
|
||||||
border-top: 1px solid #aaa;
|
|
||||||
border-left: 1px solid #aaa; }
|
|
||||||
|
|
||||||
a.button:active,
|
|
||||||
button:active,
|
|
||||||
input[type="submit"]:active,
|
|
||||||
input[type="reset"]:active,
|
|
||||||
input[type="button"]:active {
|
|
||||||
border: 1px solid #666;
|
|
||||||
background: #ccc; /* Old browsers */
|
|
||||||
background: #ccc -moz-linear-gradient(top, rgba(255,255,255,.35) 0%, rgba(10,10,10,.4) 100%); /* FF3.6+ */
|
|
||||||
background: #ccc -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.35)), color-stop(100%,rgba(10,10,10,.4))); /* Chrome,Safari4+ */
|
|
||||||
background: #ccc -webkit-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* Chrome10+,Safari5.1+ */
|
|
||||||
background: #ccc -o-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* Opera11.10+ */
|
|
||||||
background: #ccc -ms-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* IE10+ */
|
|
||||||
background: #ccc linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* W3C */ }
|
|
||||||
|
|
||||||
.button.full-width,
|
|
||||||
button.full-width,
|
|
||||||
input[type="submit"].full-width,
|
|
||||||
input[type="reset"].full-width,
|
|
||||||
input[type="button"].full-width {
|
|
||||||
width: 100%;
|
|
||||||
padding-left: 0 !important;
|
|
||||||
padding-right: 0 !important;
|
|
||||||
text-align: center; }
|
|
||||||
|
|
||||||
|
|
||||||
/* #Tabs (activate in tabs.js)
|
|
||||||
================================================== */
|
|
||||||
ul.tabs {
|
|
||||||
display: block;
|
|
||||||
margin: 0 0 20px 0;
|
|
||||||
padding: 0;
|
|
||||||
border-bottom: solid 1px #ddd; }
|
|
||||||
ul.tabs li {
|
|
||||||
display: block;
|
|
||||||
width: auto;
|
|
||||||
height: 30px;
|
|
||||||
padding: 0;
|
|
||||||
float: left;
|
|
||||||
margin-bottom: 0; }
|
|
||||||
ul.tabs li a {
|
|
||||||
display: block;
|
|
||||||
text-decoration: none;
|
|
||||||
width: auto;
|
|
||||||
height: 29px;
|
|
||||||
padding: 0px 20px;
|
|
||||||
line-height: 30px;
|
|
||||||
border: solid 1px #ddd;
|
|
||||||
border-width: 1px 1px 0 0;
|
|
||||||
margin: 0;
|
|
||||||
background: #f5f5f5;
|
|
||||||
font-size: 13px; }
|
|
||||||
ul.tabs li a.active {
|
|
||||||
background: #fff;
|
|
||||||
height: 30px;
|
|
||||||
position: relative;
|
|
||||||
top: -4px;
|
|
||||||
padding-top: 4px;
|
|
||||||
border-left-width: 1px;
|
|
||||||
margin: 0 0 0 -1px;
|
|
||||||
color: #111;
|
|
||||||
-moz-border-radius-topleft: 2px;
|
|
||||||
-webkit-border-top-left-radius: 2px;
|
|
||||||
border-top-left-radius: 2px;
|
|
||||||
-moz-border-radius-topright: 2px;
|
|
||||||
-webkit-border-top-right-radius: 2px;
|
|
||||||
border-top-right-radius: 2px; }
|
|
||||||
ul.tabs li:first-child a.active {
|
|
||||||
margin-left: 0; }
|
|
||||||
ul.tabs li:first-child a {
|
|
||||||
border-width: 1px 1px 0 1px;
|
|
||||||
-moz-border-radius-topleft: 2px;
|
|
||||||
-webkit-border-top-left-radius: 2px;
|
|
||||||
border-top-left-radius: 2px; }
|
|
||||||
ul.tabs li:last-child a {
|
|
||||||
-moz-border-radius-topright: 2px;
|
|
||||||
-webkit-border-top-right-radius: 2px;
|
|
||||||
border-top-right-radius: 2px; }
|
|
||||||
|
|
||||||
ul.tabs-content { margin: 0; display: block; }
|
|
||||||
ul.tabs-content > li { display:none; }
|
|
||||||
ul.tabs-content > li.active { display: block; }
|
|
||||||
|
|
||||||
/* Clearfixing tabs for beautiful stacking */
|
|
||||||
ul.tabs:before,
|
|
||||||
ul.tabs:after {
|
|
||||||
content: '\0020';
|
|
||||||
display: block;
|
|
||||||
overflow: hidden;
|
|
||||||
visibility: hidden;
|
|
||||||
width: 0;
|
|
||||||
height: 0; }
|
|
||||||
ul.tabs:after {
|
|
||||||
clear: both; }
|
|
||||||
ul.tabs {
|
|
||||||
zoom: 1; }
|
|
||||||
|
|
||||||
|
|
||||||
/* #Forms
|
|
||||||
================================================== */
|
|
||||||
|
|
||||||
form {
|
|
||||||
margin-bottom: 5px; } /** WEB2PY EDIT **/
|
|
||||||
fieldset {
|
|
||||||
margin-bottom: 5px; } /** WEB2PY EDIT **/
|
|
||||||
input[type="text"],
|
|
||||||
input[type="password"],
|
|
||||||
input[type="email"],
|
|
||||||
textarea,
|
|
||||||
select {
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
padding: 6px 4px;
|
|
||||||
outline: none;
|
|
||||||
-moz-border-radius: 2px;
|
|
||||||
-webkit-border-radius: 2px;
|
|
||||||
border-radius: 2px;
|
|
||||||
font: 13px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
||||||
color: #777;
|
|
||||||
margin: 0;
|
|
||||||
width: 210px;
|
|
||||||
max-width: 100%;
|
|
||||||
// display: block; /** WEB2PY EDIT **/
|
|
||||||
margin-bottom: 0; /** WEB2PY EDIT **/
|
|
||||||
background: #fff; }
|
|
||||||
select {
|
|
||||||
padding: 0; }
|
|
||||||
input[type="text"]:focus,
|
|
||||||
input[type="password"]:focus,
|
|
||||||
input[type="email"]:focus,
|
|
||||||
textarea:focus {
|
|
||||||
border: 1px solid #aaa;
|
|
||||||
color: #444;
|
|
||||||
-moz-box-shadow: 0 0 3px rgba(0,0,0,.2);
|
|
||||||
-webkit-box-shadow: 0 0 3px rgba(0,0,0,.2);
|
|
||||||
box-shadow: 0 0 3px rgba(0,0,0,.2); }
|
|
||||||
textarea {
|
|
||||||
min-height: 60px; }
|
|
||||||
label,
|
|
||||||
legend {
|
|
||||||
display: block;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 13px; }
|
|
||||||
select {
|
|
||||||
width: 220px; }
|
|
||||||
input[type="checkbox"] {
|
|
||||||
display: inline; }
|
|
||||||
label span,
|
|
||||||
legend span {
|
|
||||||
font-weight: normal;
|
|
||||||
font-size: 13px;
|
|
||||||
color: #444; }
|
|
||||||
|
|
||||||
/* #Misc
|
|
||||||
================================================== */
|
|
||||||
.remove-bottom { margin-bottom: 0 !important; }
|
|
||||||
.half-bottom { margin-bottom: 10px !important; }
|
|
||||||
.add-bottom { margin-bottom: 20px !important; }
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Skeleton V1.1
|
|
||||||
* Copyright 2011, Dave Gamache
|
|
||||||
* www.getskeleton.com
|
|
||||||
* Free to use under the MIT license.
|
|
||||||
* http://www.opensource.org/licenses/mit-license.php
|
|
||||||
* 8/17/2011
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Table of Content
|
|
||||||
==================================================
|
|
||||||
#Site Styles
|
|
||||||
#Page Styles
|
|
||||||
#Media Queries
|
|
||||||
#Font-Face */
|
|
||||||
|
|
||||||
/* #Site Styles
|
|
||||||
================================================== */
|
|
||||||
|
|
||||||
/* #Page Styles
|
|
||||||
================================================== */
|
|
||||||
|
|
||||||
/* #Media Queries
|
|
||||||
================================================== */
|
|
||||||
|
|
||||||
/* Smaller than standard 960 (devices and browsers) */
|
|
||||||
@media only screen and (max-width: 959px) {}
|
|
||||||
|
|
||||||
/* Tablet Portrait size to standard 960 (devices and browsers) */
|
|
||||||
@media only screen and (min-width: 768px) and (max-width: 959px) {}
|
|
||||||
|
|
||||||
/* All Mobile Sizes (devices and browser) */
|
|
||||||
@media only screen and (max-width: 767px) {}
|
|
||||||
|
|
||||||
/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
|
|
||||||
@media only screen and (min-width: 480px) and (max-width: 767px) {}
|
|
||||||
|
|
||||||
/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
|
|
||||||
@media only screen and (max-width: 479px) {}
|
|
||||||
|
|
||||||
|
|
||||||
/* #Font-Face
|
|
||||||
================================================== */
|
|
||||||
/* This is the proper syntax for an @font-face file
|
|
||||||
Just create a "fonts" folder at the root,
|
|
||||||
copy your FontName into code below and remove
|
|
||||||
comment brackets */
|
|
||||||
|
|
||||||
/* @font-face {
|
|
||||||
font-family: 'FontName';
|
|
||||||
src: url('../fonts/FontName.eot');
|
|
||||||
src: url('../fonts/FontName.eot?iefix') format('eot'),
|
|
||||||
url('../fonts/FontName.woff') format('woff'),
|
|
||||||
url('../fonts/FontName.ttf') format('truetype'),
|
|
||||||
url('../fonts/FontName.svg#webfontZam02nTh') format('svg');
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: normal; }
|
|
||||||
*//*
|
|
||||||
* Skeleton V1.1
|
|
||||||
* Copyright 2011, Dave Gamache
|
|
||||||
* www.getskeleton.com
|
|
||||||
* Free to use under the MIT license.
|
|
||||||
* http://www.opensource.org/licenses/mit-license.php
|
|
||||||
* 8/17/2011
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/* Table of Contents
|
|
||||||
==================================================
|
|
||||||
#Base 960 Grid
|
|
||||||
#Tablet (Portrait)
|
|
||||||
#Mobile (Portrait)
|
|
||||||
#Mobile (Landscape)
|
|
||||||
#Clearing */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* #Base 960 Grid
|
|
||||||
================================================== */
|
|
||||||
|
|
||||||
.container { position: relative; width: 960px; margin: 0 auto; padding: 0; }
|
|
||||||
.column, .columns { float: left; display: inline; margin-left: 10px; margin-right: 10px; }
|
|
||||||
.row { margin-bottom: 20px; }
|
|
||||||
|
|
||||||
/* Nested Column Classes */
|
|
||||||
.column.alpha, .columns.alpha { margin-left: 0; }
|
|
||||||
.column.omega, .columns.omega { margin-right: 0; }
|
|
||||||
|
|
||||||
/* Base Grid */
|
|
||||||
.container .one.column { width: 40px; }
|
|
||||||
.container .two.columns { width: 100px; }
|
|
||||||
.container .three.columns { width: 160px; }
|
|
||||||
.container .four.columns { width: 220px; }
|
|
||||||
.container .five.columns { width: 280px; }
|
|
||||||
.container .six.columns { width: 340px; }
|
|
||||||
.container .seven.columns { width: 400px; }
|
|
||||||
.container .eight.columns { width: 460px; }
|
|
||||||
.container .nine.columns { width: 520px; }
|
|
||||||
.container .ten.columns { width: 580px; }
|
|
||||||
.container .eleven.columns { width: 640px; }
|
|
||||||
.container .twelve.columns { width: 700px; }
|
|
||||||
.container .thirteen.columns { width: 760px; }
|
|
||||||
.container .fourteen.columns { width: 820px; }
|
|
||||||
.container .fifteen.columns { width: 880px; }
|
|
||||||
.container .sixteen.columns { width: 940px; }
|
|
||||||
|
|
||||||
.container .one-third.column { width: 300px; }
|
|
||||||
.container .two-thirds.column { width: 620px; }
|
|
||||||
|
|
||||||
/* Offsets */
|
|
||||||
.container .offset-by-one { padding-left: 60px; }
|
|
||||||
.container .offset-by-two { padding-left: 120px; }
|
|
||||||
.container .offset-by-three { padding-left: 180px; }
|
|
||||||
.container .offset-by-four { padding-left: 240px; }
|
|
||||||
.container .offset-by-five { padding-left: 300px; }
|
|
||||||
.container .offset-by-six { padding-left: 360px; }
|
|
||||||
.container .offset-by-seven { padding-left: 420px; }
|
|
||||||
.container .offset-by-eight { padding-left: 480px; }
|
|
||||||
.container .offset-by-nine { padding-left: 540px; }
|
|
||||||
.container .offset-by-ten { padding-left: 600px; }
|
|
||||||
.container .offset-by-eleven { padding-left: 660px; }
|
|
||||||
.container .offset-by-twelve { padding-left: 720px; }
|
|
||||||
.container .offset-by-thirteen { padding-left: 780px; }
|
|
||||||
.container .offset-by-fourteen { padding-left: 840px; }
|
|
||||||
.container .offset-by-fifteen { padding-left: 900px; }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* #Tablet (Portrait)
|
|
||||||
================================================== */
|
|
||||||
|
|
||||||
/* Note: Design for a width of 768px */
|
|
||||||
|
|
||||||
@media only screen and (min-width: 768px) and (max-width: 959px) {
|
|
||||||
.container { width: 768px; }
|
|
||||||
.container .column,
|
|
||||||
.container .columns { margin-left: 10px; margin-right: 10px; }
|
|
||||||
.column.alpha, .columns.alpha { margin-left: 0; margin-right: 10px; }
|
|
||||||
.column.omega, .columns.omega { margin-right: 0; margin-left: 10px; }
|
|
||||||
|
|
||||||
.container .one.column { width: 28px; }
|
|
||||||
.container .two.columns { width: 76px; }
|
|
||||||
.container .three.columns { width: 124px; }
|
|
||||||
.container .four.columns { width: 172px; }
|
|
||||||
.container .five.columns { width: 220px; }
|
|
||||||
.container .six.columns { width: 268px; }
|
|
||||||
.container .seven.columns { width: 316px; }
|
|
||||||
.container .eight.columns { width: 364px; }
|
|
||||||
.container .nine.columns { width: 412px; }
|
|
||||||
.container .ten.columns { width: 460px; }
|
|
||||||
.container .eleven.columns { width: 508px; }
|
|
||||||
.container .twelve.columns { width: 556px; }
|
|
||||||
.container .thirteen.columns { width: 604px; }
|
|
||||||
.container .fourteen.columns { width: 652px; }
|
|
||||||
.container .fifteen.columns { width: 700px; }
|
|
||||||
.container .sixteen.columns { width: 748px; }
|
|
||||||
|
|
||||||
.container .one-third.column { width: 236px; }
|
|
||||||
.container .two-thirds.column { width: 492px; }
|
|
||||||
|
|
||||||
/* Offsets */
|
|
||||||
.container .offset-by-one { padding-left: 48px; }
|
|
||||||
.container .offset-by-two { padding-left: 96px; }
|
|
||||||
.container .offset-by-three { padding-left: 144px; }
|
|
||||||
.container .offset-by-four { padding-left: 192px; }
|
|
||||||
.container .offset-by-five { padding-left: 240px; }
|
|
||||||
.container .offset-by-six { padding-left: 288px; }
|
|
||||||
.container .offset-by-seven { padding-left: 336px; }
|
|
||||||
.container .offset-by-eight { padding-left: 348px; }
|
|
||||||
.container .offset-by-nine { padding-left: 432px; }
|
|
||||||
.container .offset-by-ten { padding-left: 480px; }
|
|
||||||
.container .offset-by-eleven { padding-left: 528px; }
|
|
||||||
.container .offset-by-twelve { padding-left: 576px; }
|
|
||||||
.container .offset-by-thirteen { padding-left: 624px; }
|
|
||||||
.container .offset-by-fourteen { padding-left: 672px; }
|
|
||||||
.container .offset-by-fifteen { padding-left: 720px; }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* #Mobile (Portrait)
|
|
||||||
================================================== */
|
|
||||||
|
|
||||||
/* Note: Design for a width of 320px */
|
|
||||||
|
|
||||||
@media only screen and (max-width: 767px) {
|
|
||||||
.container { width: 300px; }
|
|
||||||
.columns, .column { margin: 0; }
|
|
||||||
|
|
||||||
.container .one.column,
|
|
||||||
.container .two.columns,
|
|
||||||
.container .three.columns,
|
|
||||||
.container .four.columns,
|
|
||||||
.container .five.columns,
|
|
||||||
.container .six.columns,
|
|
||||||
.container .seven.columns,
|
|
||||||
.container .eight.columns,
|
|
||||||
.container .nine.columns,
|
|
||||||
.container .ten.columns,
|
|
||||||
.container .eleven.columns,
|
|
||||||
.container .twelve.columns,
|
|
||||||
.container .thirteen.columns,
|
|
||||||
.container .fourteen.columns,
|
|
||||||
.container .fifteen.columns,
|
|
||||||
.container .sixteen.columns,
|
|
||||||
.container .one-third.column,
|
|
||||||
.container .two-thirds.column { width: 300px; }
|
|
||||||
|
|
||||||
/* Offsets */
|
|
||||||
.container .offset-by-one,
|
|
||||||
.container .offset-by-two,
|
|
||||||
.container .offset-by-three,
|
|
||||||
.container .offset-by-four,
|
|
||||||
.container .offset-by-five,
|
|
||||||
.container .offset-by-six,
|
|
||||||
.container .offset-by-seven,
|
|
||||||
.container .offset-by-eight,
|
|
||||||
.container .offset-by-nine,
|
|
||||||
.container .offset-by-ten,
|
|
||||||
.container .offset-by-eleven,
|
|
||||||
.container .offset-by-twelve,
|
|
||||||
.container .offset-by-thirteen,
|
|
||||||
.container .offset-by-fourteen,
|
|
||||||
.container .offset-by-fifteen { padding-left: 0; }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* #Mobile (Landscape)
|
|
||||||
================================================== */
|
|
||||||
|
|
||||||
/* Note: Design for a width of 480px */
|
|
||||||
|
|
||||||
@media only screen and (min-width: 480px) and (max-width: 767px) {
|
|
||||||
.container { width: 420px; }
|
|
||||||
.columns, .column { margin: 0; }
|
|
||||||
|
|
||||||
.container .one.column,
|
|
||||||
.container .two.columns,
|
|
||||||
.container .three.columns,
|
|
||||||
.container .four.columns,
|
|
||||||
.container .five.columns,
|
|
||||||
.container .six.columns,
|
|
||||||
.container .seven.columns,
|
|
||||||
.container .eight.columns,
|
|
||||||
.container .nine.columns,
|
|
||||||
.container .ten.columns,
|
|
||||||
.container .eleven.columns,
|
|
||||||
.container .twelve.columns,
|
|
||||||
.container .thirteen.columns,
|
|
||||||
.container .fourteen.columns,
|
|
||||||
.container .fifteen.columns,
|
|
||||||
.container .sixteen.columns,
|
|
||||||
.container .one-third.column,
|
|
||||||
.container .two-thirds.column { width: 420px; }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* #Clearing
|
|
||||||
================================================== */
|
|
||||||
|
|
||||||
/* Self Clearing Goodness */
|
|
||||||
.container:after { content: "\0020"; display: block; height: 0; clear: both; visibility: hidden; }
|
|
||||||
|
|
||||||
/* Use clearfix class on parent to clear nested columns,
|
|
||||||
or wrap each row of columns in a <div class="row"> */
|
|
||||||
.clearfix:before,
|
|
||||||
.clearfix:after,
|
|
||||||
.row:before,
|
|
||||||
.row:after {
|
|
||||||
content: '\0020';
|
|
||||||
display: block;
|
|
||||||
overflow: hidden;
|
|
||||||
visibility: hidden;
|
|
||||||
width: 0;
|
|
||||||
height: 0; }
|
|
||||||
.row:after,
|
|
||||||
.clearfix:after {
|
|
||||||
clear: both; }
|
|
||||||
.row,
|
|
||||||
.clearfix {
|
|
||||||
zoom: 1; }
|
|
||||||
|
|
||||||
/* You can also use a <br class="clear" /> to clear columns */
|
|
||||||
.clear {
|
|
||||||
clear: both;
|
|
||||||
display: block;
|
|
||||||
overflow: hidden;
|
|
||||||
visibility: hidden;
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,152 +0,0 @@
|
|||||||
|
|
||||||
/*** ESSENTIAL STYLES ***/
|
|
||||||
.sf-menu, .sf-menu * {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
.sf-menu {
|
|
||||||
line-height: 1.0;
|
|
||||||
}
|
|
||||||
.sf-menu ul {
|
|
||||||
position: absolute;
|
|
||||||
top: -999em;
|
|
||||||
width: 10em; /* left offset of submenus need to match (see below) */
|
|
||||||
}
|
|
||||||
.sf-menu ul li {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.sf-menu li:hover {
|
|
||||||
visibility: inherit; /* fixes IE7 'sticky bug' */
|
|
||||||
}
|
|
||||||
.sf-menu li {
|
|
||||||
float: left;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.sf-menu a {
|
|
||||||
padding: 5px;
|
|
||||||
display: block;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.sf-menu li:hover ul,
|
|
||||||
.sf-menu li.sfHover ul {
|
|
||||||
left: 0;
|
|
||||||
top: 26px; /* match top ul list item height */
|
|
||||||
z-index: 99;
|
|
||||||
}
|
|
||||||
ul.sf-menu li:hover li ul,
|
|
||||||
ul.sf-menu li.sfHover li ul {
|
|
||||||
top: -999em;
|
|
||||||
}
|
|
||||||
ul.sf-menu li li:hover ul,
|
|
||||||
ul.sf-menu li li.sfHover ul {
|
|
||||||
left: 10em; /* match ul width */
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
ul.sf-menu li li:hover li ul,
|
|
||||||
ul.sf-menu li li.sfHover li ul {
|
|
||||||
top: -999em;
|
|
||||||
}
|
|
||||||
ul.sf-menu li li li:hover ul,
|
|
||||||
ul.sf-menu li li li.sfHover ul {
|
|
||||||
left: 10em; /* match ul width */
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*** DEMO SKIN ***/
|
|
||||||
.sf-menu {
|
|
||||||
float: left;
|
|
||||||
/*margin-bottom: 1em;*/
|
|
||||||
}
|
|
||||||
.sf-menu a {
|
|
||||||
padding-left: 1em;
|
|
||||||
padding-right: 1em;
|
|
||||||
text-decoration:none;
|
|
||||||
}
|
|
||||||
.sf-menu a, .sf-menu a:visited { /* visited pseudo selector so IE6 applies text colour*/
|
|
||||||
// color: #959595;
|
|
||||||
background-color: transparent;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.sf-menu li {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
.sf-menu li li {
|
|
||||||
background: #232323;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
.sf-menu li li a {
|
|
||||||
padding-top: 0.25em;
|
|
||||||
padding-bottom: 0.25em;
|
|
||||||
color: #959595;
|
|
||||||
}
|
|
||||||
.sf-menu li li li {
|
|
||||||
background: #232323;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
.sf-menu li li li a {
|
|
||||||
padding-top: 0.25em;
|
|
||||||
padding-bottom: 0.25em;
|
|
||||||
color: #959595;
|
|
||||||
}
|
|
||||||
.sf-menu li:hover, .sf-menu a:focus, .sf-menu a:active, .sf-menu li.sfHover, .sf-menu a:hover {
|
|
||||||
color: #FFFFFF;
|
|
||||||
background-color: #303030;
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*** arrows **/
|
|
||||||
.sf-menu a.sf-with-ul {
|
|
||||||
padding-right: 2.25em;
|
|
||||||
min-width: 1px; /* trigger IE7 hasLayout so spans position accurately */
|
|
||||||
}
|
|
||||||
.sf-sub-indicator {
|
|
||||||
position: absolute;
|
|
||||||
display: block;
|
|
||||||
right: .75em;
|
|
||||||
top: 1.05em; /* IE6 only */
|
|
||||||
width: 10px;
|
|
||||||
height: 10px;
|
|
||||||
text-indent: -999em;
|
|
||||||
overflow: hidden;
|
|
||||||
background: url('../images/arrows-ffffff.png') no-repeat -10px -100px; /* 8-bit indexed alpha png. IE6 gets solid image only */
|
|
||||||
}
|
|
||||||
a > .sf-sub-indicator { /* give all except IE6 the correct values */
|
|
||||||
top: .8em;
|
|
||||||
background-position: 0 -100px; /* use translucent arrow for modern browsers*/
|
|
||||||
}
|
|
||||||
/* apply hovers to modern browsers */
|
|
||||||
a:focus > .sf-sub-indicator,
|
|
||||||
a:hover > .sf-sub-indicator,
|
|
||||||
a:active > .sf-sub-indicator,
|
|
||||||
li:hover > a > .sf-sub-indicator,
|
|
||||||
li.sfHover > a > .sf-sub-indicator {
|
|
||||||
background-position: -10px -100px; /* arrow hovers for modern browsers*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/* point right for anchors in subs */
|
|
||||||
.sf-menu ul .sf-sub-indicator { background-position: -10px 0; }
|
|
||||||
.sf-menu ul a > .sf-sub-indicator { background-position: 0 0; }
|
|
||||||
/* apply hovers to modern browsers */
|
|
||||||
.sf-menu ul a:focus > .sf-sub-indicator,
|
|
||||||
.sf-menu ul a:hover > .sf-sub-indicator,
|
|
||||||
.sf-menu ul a:active > .sf-sub-indicator,
|
|
||||||
.sf-menu ul li:hover > a > .sf-sub-indicator,
|
|
||||||
.sf-menu ul li.sfHover > a > .sf-sub-indicator {
|
|
||||||
background-position: -10px 0; /* arrow hovers for modern browsers*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/*** shadows for all but IE6 ***/
|
|
||||||
.sf-shadow ul {
|
|
||||||
background: url('../images/shadow.png') no-repeat bottom right;
|
|
||||||
padding: 0 8px 9px 0;
|
|
||||||
-moz-border-radius-bottomleft: 17px;
|
|
||||||
-moz-border-radius-topright: 17px;
|
|
||||||
-webkit-border-top-right-radius: 17px;
|
|
||||||
-webkit-border-bottom-left-radius: 17px;
|
|
||||||
}
|
|
||||||
.sf-shadow ul.sf-shadow-off {
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ div.flash {
|
|||||||
position:fixed;
|
position:fixed;
|
||||||
padding:10px;
|
padding:10px;
|
||||||
top:48px;
|
top:48px;
|
||||||
right:50px;
|
right:250px;
|
||||||
min-width:280px;
|
min-width:280px;
|
||||||
opacity:0.95;
|
opacity:0.95;
|
||||||
margin:0px 0px 10px 10px;
|
margin:0px 0px 10px 10px;
|
||||||
@@ -191,6 +191,7 @@ div.error {
|
|||||||
.web2py_grid {width:100%}
|
.web2py_grid {width:100%}
|
||||||
.web2py_grid table {width:100%}
|
.web2py_grid table {width:100%}
|
||||||
.web2py_grid tbody td {padding:2px 5px 2px 5px; vertical-align: middle;}
|
.web2py_grid tbody td {padding:2px 5px 2px 5px; vertical-align: middle;}
|
||||||
|
.web2py_grid .web2py_form td {vertical-align: top;}
|
||||||
|
|
||||||
.web2py_grid thead th,.web2py_grid tfoot td {
|
.web2py_grid thead th,.web2py_grid tfoot td {
|
||||||
background-color:#EAEAEA;
|
background-color:#EAEAEA;
|
||||||
|
|||||||
@@ -0,0 +1,232 @@
|
|||||||
|
/*=============================================================
|
||||||
|
CUSTOM RULES
|
||||||
|
==============================================================*/
|
||||||
|
|
||||||
|
body{height:auto;} /* to avoid vertical scroll bar */
|
||||||
|
div.flash.flash-center{left:25%;right:25%;}
|
||||||
|
div.flash.flash-top,div.flash.flash-top:hover{
|
||||||
|
position:relative;
|
||||||
|
display:block;
|
||||||
|
margin:0;
|
||||||
|
padding:1em;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
width:100%;
|
||||||
|
text-align:center;
|
||||||
|
text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);
|
||||||
|
color:#865100;
|
||||||
|
background:#feea9a;
|
||||||
|
border:1px solid;
|
||||||
|
border-top:0px;
|
||||||
|
border-left:0px;
|
||||||
|
border-right:0px;
|
||||||
|
border-radius:0;
|
||||||
|
opacity:1;
|
||||||
|
}
|
||||||
|
#header{margin-top:60px;}
|
||||||
|
.mastheader h1 {
|
||||||
|
margin-bottom:9px;
|
||||||
|
font-size:81px;
|
||||||
|
font-weight:bold;
|
||||||
|
letter-spacing:-1px;
|
||||||
|
line-height:1;
|
||||||
|
font-size:54px;
|
||||||
|
}
|
||||||
|
.mastheader small {
|
||||||
|
font-size:20px;
|
||||||
|
font-weight:300;
|
||||||
|
}
|
||||||
|
/* auth navbar - primitive style */
|
||||||
|
.auth_navbar,.auth_navbar a{color:inherit;}
|
||||||
|
.ie-lte7 .auth_navbar,.auth_navbar a{color:expression(this.parentNode.currentStyle['color']); /* ie7 doesn't support inherit */}
|
||||||
|
.auth_navbar a{white-space:nowrap;} /* to avoid the nav split on more lines */
|
||||||
|
.auth_navbar a:hover{color:white;text-decoration:none;}
|
||||||
|
ul#navbar>.auth_navbar{
|
||||||
|
display:inline-block;
|
||||||
|
padding:5px;
|
||||||
|
}
|
||||||
|
/* form errors message box customization */
|
||||||
|
div.error_wrapper{margin-bottom:9px;}
|
||||||
|
div.error_wrapper .error{
|
||||||
|
border-radius: 4px;
|
||||||
|
-o-border-radius: 4px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
}
|
||||||
|
/* below rules are only for formstyle = bootstrap
|
||||||
|
trying to make errors look like bootstrap ones */
|
||||||
|
div.controls .error_wrapper{
|
||||||
|
display:inline-block;
|
||||||
|
margin-bottom:0;
|
||||||
|
vertical-align:middle;
|
||||||
|
}
|
||||||
|
div.controls .error{
|
||||||
|
min-width:5px;
|
||||||
|
background:inherit;
|
||||||
|
color:#B94A48;
|
||||||
|
border:none;
|
||||||
|
padding:0;
|
||||||
|
margin:0;
|
||||||
|
/*display:inline;*/ /* uncommenting this, the animation effect is lost */
|
||||||
|
}
|
||||||
|
div.controls .help-inline{color:#3A87AD;}
|
||||||
|
div.controls .error_wrapper +.help-inline {margin-left:-99999px;}
|
||||||
|
div.controls select +.error_wrapper {margin-left:5px;}
|
||||||
|
.ie-lte7 div.error{color:#fff;}
|
||||||
|
|
||||||
|
/* beautify brand */
|
||||||
|
.navbar-inverse .brand{color:#c6cecc;}
|
||||||
|
.navbar-inverse .brand b{display:inline-block;margin-top:-1px;}
|
||||||
|
.navbar-inverse .brand b>span{font-size:22px;color:white}
|
||||||
|
.navbar-inverse .brand:hover b>span{color:white}
|
||||||
|
/* beautify web2py link in navbar */
|
||||||
|
span.highlighted{color:#d8d800;}
|
||||||
|
.open span.highlighted{color:#ffff00;}
|
||||||
|
|
||||||
|
/*=============================================================
|
||||||
|
OVERRIDING WEB2PY.CSS RULES
|
||||||
|
==============================================================*/
|
||||||
|
|
||||||
|
/* reset to default */
|
||||||
|
a{white-space:normal;}
|
||||||
|
li{margin-bottom:0;}
|
||||||
|
textarea,button{display:block;}
|
||||||
|
/*reset ul padding */
|
||||||
|
ul#navbar{padding:0;}
|
||||||
|
/* label aligned to related input */
|
||||||
|
td.w2p_fl,td.w2p_fc {padding:0;}
|
||||||
|
#web2py_user_form td{vertical-align:middle;}
|
||||||
|
|
||||||
|
/*=============================================================
|
||||||
|
OVERRIDING BOOTSTRAP.CSS RULES
|
||||||
|
==============================================================*/
|
||||||
|
|
||||||
|
/* because web2py handles this via js */
|
||||||
|
textarea { width:90%}
|
||||||
|
.hidden{visibility:visible;}
|
||||||
|
/* right folder for bootstrap black images/icons */
|
||||||
|
[class^="icon-"],[class*=" icon-"]{
|
||||||
|
background-image:url("../images/glyphicons-halflings.png")
|
||||||
|
}
|
||||||
|
/* right folder for bootstrap white images/icons */
|
||||||
|
.icon-white,
|
||||||
|
.nav-tabs > .active > a > [class^="icon-"],
|
||||||
|
.nav-tabs > .active > a > [class*=" icon-"],
|
||||||
|
.nav-pills > .active > a > [class^="icon-"],
|
||||||
|
.nav-pills > .active > a > [class*=" icon-"],
|
||||||
|
.nav-list > .active > a > [class^="icon-"],
|
||||||
|
.nav-list > .active > a > [class*=" icon-"],
|
||||||
|
.navbar-inverse .nav > .active > a > [class^="icon-"],
|
||||||
|
.navbar-inverse .nav > .active > a > [class*=" icon-"],
|
||||||
|
.dropdown-menu > li > a:hover > [class^="icon-"],
|
||||||
|
.dropdown-menu > li > a:hover > [class*=" icon-"],
|
||||||
|
.dropdown-menu > .active > a > [class^="icon-"],
|
||||||
|
.dropdown-menu > .active > a > [class*=" icon-"] {
|
||||||
|
background-image:url("../images/glyphicons-halflings-white.png");
|
||||||
|
}
|
||||||
|
/* bootstrap has a label as input's wrapper while web2py has a div */
|
||||||
|
div>input[type="radio"],div>input[type="checkbox"]{margin:0;}
|
||||||
|
/* bootstrap has button instead of input */
|
||||||
|
input[type="button"], input[type="submit"]{margin-right:8px;}
|
||||||
|
|
||||||
|
/*=============================================================
|
||||||
|
RULES FOR SOLVING CONFLICTS BETWEEN WEB2PY.CSS AND BOOTSTRAP.CSS
|
||||||
|
==============================================================*/
|
||||||
|
|
||||||
|
/*when formstyle=table3cols*/
|
||||||
|
tr#auth_user_remember__row>td.w2p_fw>div{padding-bottom:8px;}
|
||||||
|
td.w2p_fw div>label{vertical-align:middle;}
|
||||||
|
td.w2p_fc {padding-bottom:5px;}
|
||||||
|
/*when formstyle=divs*/
|
||||||
|
div#auth_user_remember__row{margin-top:4px;}
|
||||||
|
div#auth_user_remember__row>.w2p_fl{display:none;}
|
||||||
|
div#auth_user_remember__row>.w2p_fw{min-height:39px;}
|
||||||
|
div.w2p_fw,div.w2p_fc{
|
||||||
|
display:inline-block;
|
||||||
|
vertical-align:middle;
|
||||||
|
margin-bottom:0;
|
||||||
|
}
|
||||||
|
div.w2p_fc{
|
||||||
|
padding-left:5px;
|
||||||
|
margin-top:-8px;
|
||||||
|
}
|
||||||
|
/*when formstyle=ul*/
|
||||||
|
form>ul{
|
||||||
|
list-style:none;
|
||||||
|
margin:0;
|
||||||
|
}
|
||||||
|
li#auth_user_remember__row{margin-top:4px;}
|
||||||
|
li#auth_user_remember__row>.w2p_fl{display:none;}
|
||||||
|
li#auth_user_remember__row>.w2p_fw{min-height:39px;}
|
||||||
|
/*when formstyle=bootstrap*/
|
||||||
|
#auth_user_remember__row label.checkbox{display:block;}
|
||||||
|
span.inline-help{display:inline-block;}
|
||||||
|
input[type="text"].input-xlarge,input[type="password"].input-xlarge{width:270px;}
|
||||||
|
/*when recaptcha is used*/
|
||||||
|
#recaptcha{min-height:30px;display:inline-block;margin-bottom:0;line-height:30px;vertical-align:middle;}
|
||||||
|
td>#recaptcha{margin-bottom:6px;}
|
||||||
|
div>#recaptcha{margin-bottom:9px;}
|
||||||
|
div.control-group.error{
|
||||||
|
width:auto;
|
||||||
|
background:transparent;
|
||||||
|
border:0;
|
||||||
|
color:inherit;
|
||||||
|
padding:0;
|
||||||
|
background-repeat:repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*=============================================================
|
||||||
|
OTHER RULES
|
||||||
|
==============================================================*/
|
||||||
|
|
||||||
|
/* Massimo Di Pierro fixed alignment in forms with list:string */
|
||||||
|
form table tr{margin-bottom:9px;}
|
||||||
|
td.w2p_fw ul{margin-left:0px;}
|
||||||
|
|
||||||
|
/* web2py_console in grid and smartgrid */
|
||||||
|
.hidden{visibility:visible;}
|
||||||
|
.web2py_console input{
|
||||||
|
display: inline-block;
|
||||||
|
margin-bottom: 0;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.web2py_console input[type="submit"],
|
||||||
|
.web2py_console input[type="button"],
|
||||||
|
.web2py_console button{
|
||||||
|
padding-top:4px;
|
||||||
|
padding-bottom:4px;
|
||||||
|
margin:3px 0 0 2px;
|
||||||
|
}
|
||||||
|
.web2py_console a,
|
||||||
|
.web2py_console select,
|
||||||
|
.web2py_console input
|
||||||
|
{
|
||||||
|
margin:3px 0 0 2px;
|
||||||
|
}
|
||||||
|
.web2py_grid form table{width:auto;}
|
||||||
|
/* auth_user_remember checkbox extrapadding in IE fix */
|
||||||
|
.ie-lte9 input#auth_user_remember.checkbox {padding-left:0;}
|
||||||
|
|
||||||
|
/*=============================================================
|
||||||
|
MEDIA QUERIES
|
||||||
|
==============================================================*/
|
||||||
|
|
||||||
|
@media only screen and (max-width:979px){
|
||||||
|
body{padding-top:0px;}
|
||||||
|
#navbar{top:5px;}
|
||||||
|
div.flash{right:5px;}
|
||||||
|
.dropdown-menu ul{visibility:visible;}
|
||||||
|
}
|
||||||
|
@media only screen and (max-width:479px){
|
||||||
|
body{
|
||||||
|
padding-left:10px;
|
||||||
|
padding-right:10px;
|
||||||
|
}
|
||||||
|
.navbar-fixed-top,.navbar-fixed-bottom {
|
||||||
|
margin-left:-10px;
|
||||||
|
margin-right:-10px;
|
||||||
|
}
|
||||||
|
input[type="text"],input[type="password"],select{
|
||||||
|
width:95%;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
/*=============================================================
|
||||||
|
BOOTSTRAP DROPDOWN MENU
|
||||||
|
==============================================================*/
|
||||||
|
|
||||||
|
.dropdown-menu ul{
|
||||||
|
left:100%;
|
||||||
|
position:absolute;
|
||||||
|
top:0;
|
||||||
|
visibility:hidden;
|
||||||
|
margin-top:-1px;
|
||||||
|
}
|
||||||
|
.dropdown-menu li:hover ul{visibility:visible;}
|
||||||
|
.navbar .dropdown-menu ul:before{
|
||||||
|
border-bottom:7px solid transparent;
|
||||||
|
border-left:none;
|
||||||
|
border-right:7px solid rgba(0, 0, 0, 0.2);
|
||||||
|
border-top:7px solid transparent;
|
||||||
|
left:-7px;
|
||||||
|
top:5px;
|
||||||
|
}
|
||||||
|
.nav > li.dropdown > a:after {
|
||||||
|
border-left: 4px solid transparent;
|
||||||
|
border-right: 4px solid transparent;
|
||||||
|
border-top: 4px solid #000000;
|
||||||
|
content: "";
|
||||||
|
display: inline-block;
|
||||||
|
height: 0;
|
||||||
|
opacity: 0.7;
|
||||||
|
vertical-align: top;
|
||||||
|
width: 0;
|
||||||
|
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-top: 8px;
|
||||||
|
|
||||||
|
border-bottom-color: #FFFFFF;
|
||||||
|
border-top-color: #FFFFFF;
|
||||||
|
}
|
||||||
|
.dropdown-menu span{display:inline-block;}
|
||||||
|
ul.dropdown-menu li.dropdown > a:after {
|
||||||
|
border-left: 4px solid #000;
|
||||||
|
border-right: 4px solid transparent;
|
||||||
|
border-bottom: 4px solid transparent;
|
||||||
|
border-top: 4px solid transparent;
|
||||||
|
content: "";
|
||||||
|
display: inline-block;
|
||||||
|
height: 0;
|
||||||
|
opacity: 0.7;
|
||||||
|
vertical-align: top;
|
||||||
|
width: 0;
|
||||||
|
|
||||||
|
margin-left: 8px;
|
||||||
|
margin-top: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.nav li.dropdown:hover ul.dropdown-menu {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.open >.dropdown-menu ul{display:block;} /* fix menu issue when BS2.0.4 is applied */
|
||||||
|
|
||||||
|
/*=============================================================
|
||||||
|
BOOTSTRAP SUBMIT BUTTON
|
||||||
|
==============================================================*/
|
||||||
|
|
||||||
|
input[type='submit']:not(.btn) {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 4px 14px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
color: #333;
|
||||||
|
text-align: center;
|
||||||
|
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
|
||||||
|
vertical-align: middle;
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: whiteSmoke;
|
||||||
|
background-image: -webkit-gradient(linear,0 0,0 100%,from(white),to(#E6E6E6));
|
||||||
|
background-image: -webkit-linear-gradient(top,white,#E6E6E6);
|
||||||
|
background-image: -o-linear-gradient(top,white,#E6E6E6);
|
||||||
|
background-image: linear-gradient(to bottom,white,#E6E6E6);
|
||||||
|
background-image: -moz-linear-gradient(top,white,#E6E6E6);
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
border: 1px solid #BBB;
|
||||||
|
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||||
|
border-bottom-color: #A2A2A2;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);
|
||||||
|
filter: progid:dximagetransform.microsoft.gradient(enabled=false);
|
||||||
|
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type='submit']:not(.btn):hover {
|
||||||
|
color: #333;
|
||||||
|
text-decoration: none;
|
||||||
|
background-color: #E6E6E6;
|
||||||
|
background-position: 0 -15px;
|
||||||
|
-webkit-transition: background-position .1s linear;
|
||||||
|
-moz-transition: background-position .1s linear;
|
||||||
|
-o-transition: background-position .1s linear;
|
||||||
|
transition: background-position .1s linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type='submit']:not(.btn).active, input[type='submit']:not(.btn):active {
|
||||||
|
background-color: #E6E6E6;
|
||||||
|
background-color: #D9D9D9 9;
|
||||||
|
background-image: none;
|
||||||
|
outline: 0;
|
||||||
|
-webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
-moz-box-shadow: inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);
|
||||||
|
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*=============================================================
|
||||||
|
OTHER
|
||||||
|
==============================================================*/
|
||||||
|
|
||||||
|
.ie-lte8 .navbar-fixed-top {position:static;}
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 478 B |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 991 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 198 B |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 323 B |
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,44 @@
|
|||||||
|
/**
|
||||||
|
|
||||||
|
Created and copyrighted by Massimo Di Pierro <massimo.dipierro@gmail.com>
|
||||||
|
(MIT license)
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
<script src="share.js"></script>
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
jQuery(function(){
|
||||||
|
var script_source = jQuery('script[src*="share.js"]').attr('src');
|
||||||
|
var params = function(name,default_value) {
|
||||||
|
var match = RegExp('[?&]' + name + '=([^&]*)').exec(script_source);
|
||||||
|
return match && decodeURIComponent(match[1].replace(/\+/g, ' '))||default_value;
|
||||||
|
}
|
||||||
|
var path = params('static','social');
|
||||||
|
var url = encodeURIComponent(window.location.href);
|
||||||
|
var host = window.location.hostname;
|
||||||
|
var title = escape(jQuery('title').text());
|
||||||
|
var twit = 'http://twitter.com/home?status='+title+'%20'+url;
|
||||||
|
var facebook = 'http://www.facebook.com/sharer.php?u='+url;
|
||||||
|
var gplus = 'https://plus.google.com/share?url='+url;
|
||||||
|
var tbar = '<div id="socialdrawer"><span>Share<br/></span><div id="sicons"><a href="'+twit+'" id="twit" title="Share on twitter"><img src="'+path+'/twitter.png" alt="Share on Twitter" width="32" height="32" /></a><a href="'+facebook+'" id="facebook" title="Share on Facebook"><img src="'+path+'/facebook.png" alt="Share on facebook" width="32" height="32" /></a><a href="'+gplus+'" id="gplus" title="Share on Google Plus"><img src="'+path+'/gplus-32.png" alt="Share on Google Plus" width="32" height="32" /></a></div></div>';
|
||||||
|
// Add the share tool bar.
|
||||||
|
jQuery('body').append(tbar);
|
||||||
|
var st = jQuery('#socialdrawer');
|
||||||
|
st.css({'opacity':'.7','z-index':'3000','background':'#FFF','border':'solid 1px #666','border-width':' 1px 0 0 1px','height':'20px','width':'40px','position':'fixed','bottom':'0','right':'0','padding':'2px 5px','overflow':'hidden','-webkit-border-top-left-radius':' 12px','-moz-border-radius-topleft':' 12px','border-top-left-radius':' 12px','-moz-box-shadow':' -3px -3px 3px rgba(0,0,0,0.5)','-webkit-box-shadow':' -3px -3px 3px rgba(0,0,0,0.5)','box-shadow':' -3px -3px 3px rgba(0,0,0,0.5)'});
|
||||||
|
jQuery('#socialdrawer a').css({'float':'left','width':'32px','margin':'3px 2px 2px 2px','padding':'0','cursor':'pointer'});
|
||||||
|
jQuery('#socialdrawer span').css({'float':'left','margin':'2px 3px','text-shadow':' 1px 1px 1px #FFF','color':'#444','font-size':'12px','line-height':'1em'});
|
||||||
|
jQuery('#socialdrawer img').hide();
|
||||||
|
// hover
|
||||||
|
st.click(function(){
|
||||||
|
jQuery(this).animate({height:'40px', width:'160px', opacity: 0.95}, 300);
|
||||||
|
jQuery('#socialdrawer img').show();
|
||||||
|
});
|
||||||
|
//leave
|
||||||
|
st.mouseleave(function(){
|
||||||
|
st.animate({height:'20px', width: '40px', opacity: .7}, 300);
|
||||||
|
jQuery('#socialdrawer img').hide();
|
||||||
|
return false;
|
||||||
|
} );
|
||||||
|
});
|
||||||
@@ -1,223 +0,0 @@
|
|||||||
|
|
||||||
/*
|
|
||||||
* Superfish v1.4.8 - jQuery menu widget
|
|
||||||
* Copyright (c) 2008 Joel Birch
|
|
||||||
*
|
|
||||||
* Dual licensed under the MIT and GPL licenses:
|
|
||||||
* http://www.opensource.org/licenses/mit-license.php
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
* CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
|
|
||||||
*/
|
|
||||||
|
|
||||||
;(function($){
|
|
||||||
$.fn.superfish = function(op){
|
|
||||||
|
|
||||||
var sf = $.fn.superfish,
|
|
||||||
c = sf.c,
|
|
||||||
$arrow = $(['<span class="',c.arrowClass,'"> »</span>'].join('')),
|
|
||||||
over = function(){
|
|
||||||
var $$ = $(this), menu = getMenu($$);
|
|
||||||
clearTimeout(menu.sfTimer);
|
|
||||||
$$.showSuperfishUl().siblings().hideSuperfishUl();
|
|
||||||
},
|
|
||||||
out = function(){
|
|
||||||
var $$ = $(this), menu = getMenu($$), o = sf.op;
|
|
||||||
clearTimeout(menu.sfTimer);
|
|
||||||
menu.sfTimer=setTimeout(function(){
|
|
||||||
o.retainPath=($.inArray($$[0],o.$path)>-1);
|
|
||||||
$$.hideSuperfishUl();
|
|
||||||
if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
|
|
||||||
},o.delay);
|
|
||||||
},
|
|
||||||
getMenu = function($menu){
|
|
||||||
var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
|
|
||||||
sf.op = sf.o[menu.serial];
|
|
||||||
return menu;
|
|
||||||
},
|
|
||||||
addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
|
|
||||||
|
|
||||||
return this.each(function() {
|
|
||||||
var s = this.serial = sf.o.length;
|
|
||||||
var o = $.extend({},sf.defaults,op);
|
|
||||||
o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
|
|
||||||
$(this).addClass([o.hoverClass,c.bcClass].join(' '))
|
|
||||||
.filter('li:has(ul)').removeClass(o.pathClass);
|
|
||||||
});
|
|
||||||
sf.o[s] = sf.op = o;
|
|
||||||
|
|
||||||
$('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
|
|
||||||
if (o.autoArrows) addArrow( $('>a:first-child',this) );
|
|
||||||
})
|
|
||||||
.not('.'+c.bcClass)
|
|
||||||
.hideSuperfishUl();
|
|
||||||
|
|
||||||
var $a = $('a',this);
|
|
||||||
$a.each(function(i){
|
|
||||||
var $li = $a.eq(i).parents('li');
|
|
||||||
$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
|
|
||||||
});
|
|
||||||
o.onInit.call(this);
|
|
||||||
|
|
||||||
}).each(function() {
|
|
||||||
var menuClasses = [c.menuClass];
|
|
||||||
if (sf.op.dropShadows && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
|
|
||||||
$(this).addClass(menuClasses.join(' '));
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
var sf = $.fn.superfish;
|
|
||||||
sf.o = [];
|
|
||||||
sf.op = {};
|
|
||||||
sf.IE7fix = function(){
|
|
||||||
var o = sf.op;
|
|
||||||
if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
|
|
||||||
this.toggleClass(sf.c.shadowClass+'-off');
|
|
||||||
};
|
|
||||||
sf.c = {
|
|
||||||
bcClass : 'sf-breadcrumb',
|
|
||||||
menuClass : 'sf-js-enabled',
|
|
||||||
anchorClass : 'sf-with-ul',
|
|
||||||
arrowClass : 'sf-sub-indicator',
|
|
||||||
shadowClass : 'sf-shadow'
|
|
||||||
};
|
|
||||||
sf.defaults = {
|
|
||||||
hoverClass : 'sfHover',
|
|
||||||
pathClass : 'overideThisToUse',
|
|
||||||
pathLevels : 1,
|
|
||||||
delay : 800,
|
|
||||||
animation : {opacity:'show'},
|
|
||||||
speed : 'normal',
|
|
||||||
autoArrows : true,
|
|
||||||
dropShadows : true,
|
|
||||||
disableHI : false, // true disables hoverIntent detection
|
|
||||||
onInit : function(){}, // callback functions
|
|
||||||
onBeforeShow: function(){},
|
|
||||||
onShow : function(){},
|
|
||||||
onHide : function(){}
|
|
||||||
};
|
|
||||||
$.fn.extend({
|
|
||||||
hideSuperfishUl : function(){
|
|
||||||
var o = sf.op,
|
|
||||||
not = (o.retainPath===true) ? o.$path : '';
|
|
||||||
o.retainPath = false;
|
|
||||||
var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
|
|
||||||
.find('>ul').hide().css('visibility','hidden');
|
|
||||||
o.onHide.call($ul);
|
|
||||||
return this;
|
|
||||||
},
|
|
||||||
showSuperfishUl : function(){
|
|
||||||
var o = sf.op,
|
|
||||||
sh = sf.c.shadowClass+'-off',
|
|
||||||
$ul = this.addClass(o.hoverClass)
|
|
||||||
.find('>ul:hidden').css('visibility','visible');
|
|
||||||
sf.IE7fix.call($ul);
|
|
||||||
o.onBeforeShow.call($ul);
|
|
||||||
$ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
})(jQuery);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Supersubs v0.2b - jQuery plugin
|
|
||||||
* Copyright (c) 2008 Joel Birch
|
|
||||||
*
|
|
||||||
* Dual licensed under the MIT and GPL licenses:
|
|
||||||
* http://www.opensource.org/licenses/mit-license.php
|
|
||||||
* http://www.gnu.org/licenses/gpl.html
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* This plugin automatically adjusts submenu widths of suckerfish-style menus to that of
|
|
||||||
* their longest list item children. If you use this, please expect bugs and report them
|
|
||||||
* to the jQuery Google Group with the word 'Superfish' in the subject line.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
;(function($){ // $ will refer to jQuery within this closure
|
|
||||||
|
|
||||||
$.fn.supersubs = function(options){
|
|
||||||
var opts = $.extend({}, $.fn.supersubs.defaults, options);
|
|
||||||
// return original object to support chaining
|
|
||||||
return this.each(function() {
|
|
||||||
// cache selections
|
|
||||||
var $$ = $(this);
|
|
||||||
// support metadata
|
|
||||||
var o = $.meta ? $.extend({}, opts, $$.data()) : opts;
|
|
||||||
// get the font size of menu.
|
|
||||||
// .css('fontSize') returns various results cross-browser, so measure an em dash instead
|
|
||||||
var fontsize = $('<li id="menu-fontsize">—</li>').css({
|
|
||||||
'padding' : 0,
|
|
||||||
'position' : 'absolute',
|
|
||||||
'top' : '-999em',
|
|
||||||
'width' : 'auto'
|
|
||||||
}).appendTo($$).width(); //clientWidth is faster, but was incorrect here
|
|
||||||
// remove em dash
|
|
||||||
$('#menu-fontsize').remove();
|
|
||||||
// cache all ul elements
|
|
||||||
$ULs = $$.find('ul');
|
|
||||||
// loop through each ul in menu
|
|
||||||
$ULs.each(function(i) {
|
|
||||||
// cache this ul
|
|
||||||
var $ul = $ULs.eq(i);
|
|
||||||
// get all (li) children of this ul
|
|
||||||
var $LIs = $ul.children();
|
|
||||||
// get all anchor grand-children
|
|
||||||
var $As = $LIs.children('a');
|
|
||||||
// force content to one line and save current float property
|
|
||||||
var liFloat = $LIs.css('white-space','nowrap').css('float');
|
|
||||||
// remove width restrictions and floats so elements remain vertically stacked
|
|
||||||
var emWidth = $ul.add($LIs).add($As).css({
|
|
||||||
'float' : 'none',
|
|
||||||
'width' : 'auto'
|
|
||||||
})
|
|
||||||
// this ul will now be shrink-wrapped to longest li due to position:absolute
|
|
||||||
// so save its width as ems. Clientwidth is 2 times faster than .width() - thanks Dan Switzer
|
|
||||||
.end().end()[0].clientWidth / fontsize;
|
|
||||||
// add more width to ensure lines don't turn over at certain sizes in various browsers
|
|
||||||
emWidth += o.extraWidth;
|
|
||||||
// restrict to at least minWidth and at most maxWidth
|
|
||||||
if (emWidth > o.maxWidth) { emWidth = o.maxWidth; }
|
|
||||||
else if (emWidth < o.minWidth) { emWidth = o.minWidth; }
|
|
||||||
emWidth += 'em';
|
|
||||||
// set ul to width in ems
|
|
||||||
$ul.css('width',emWidth);
|
|
||||||
// restore li floats to avoid IE bugs
|
|
||||||
// set li width to full width of this ul
|
|
||||||
// revert white-space to normal
|
|
||||||
$LIs.css({
|
|
||||||
'float' : liFloat,
|
|
||||||
'width' : '100%',
|
|
||||||
'white-space' : 'normal'
|
|
||||||
})
|
|
||||||
// update offset position of descendant ul to reflect new width of parent
|
|
||||||
.each(function(){
|
|
||||||
var $childUl = $('>ul',this);
|
|
||||||
var offsetDirection = $childUl.css('left')!==undefined ? 'left' : 'right';
|
|
||||||
$childUl.css(offsetDirection,$ul.width());
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
|
||||||
// expose defaults
|
|
||||||
$.fn.supersubs.defaults = {
|
|
||||||
minWidth : 9, // requires em unit.
|
|
||||||
maxWidth : 25, // requires em unit.
|
|
||||||
extraWidth : 0 // extra width can ensure lines don't sometimes turn over due to slight browser differences in how they round-off values
|
|
||||||
};
|
|
||||||
|
|
||||||
})(jQuery); // plugin code ends
|
|
||||||
|
|
||||||
/**
|
|
||||||
* hoverIntent r6 // 2011.02.26 // jQuery 1.5.1+
|
|
||||||
* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
|
|
||||||
*
|
|
||||||
* @param f onMouseOver function || An object with configuration options
|
|
||||||
* @param g onMouseOut function || Nothing (use configuration options object)
|
|
||||||
* @author Brian Cherne brian(at)cherne(dot)net
|
|
||||||
*/
|
|
||||||
(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev])}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob)},cfg.interval)}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev])};var handleHover=function(e){var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t)}if(e.type=="mouseenter"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob)},cfg.interval)}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob)},cfg.timeout)}}};return this.bind('mouseenter',handleHover).bind('mouseleave',handleHover)}})(jQuery);
|
|
||||||
|
|
||||||
@@ -35,6 +35,7 @@ function web2py_ajax_init(target) {
|
|||||||
jQuery('.hidden', target).hide();
|
jQuery('.hidden', target).hide();
|
||||||
jQuery('.error', target).hide().slideDown('slow');
|
jQuery('.error', target).hide().slideDown('slow');
|
||||||
web2py_ajax_fields(target);
|
web2py_ajax_fields(target);
|
||||||
|
web2py_show_if(target);
|
||||||
};
|
};
|
||||||
|
|
||||||
function web2py_event_handlers() {
|
function web2py_event_handlers() {
|
||||||
@@ -216,3 +217,26 @@ function web2py_validate_entropy(myfield, req_entropy) {
|
|||||||
if(!myfield.hasClass('entropy_check')) myfield.on('keyup', validator).on('keydown', validator).addClass('entropy_check');
|
if(!myfield.hasClass('entropy_check')) myfield.on('keyup', validator).on('keydown', validator).addClass('entropy_check');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function web2py_show_if(target) {
|
||||||
|
var triggers = {};
|
||||||
|
var show_if = function () {
|
||||||
|
var t = jQuery(this);
|
||||||
|
var id = t.attr('id');
|
||||||
|
t.attr('value', t.val());
|
||||||
|
for(var k = 0; k < triggers[id].length; k++) {
|
||||||
|
var dep = jQuery('#' + triggers[id][k], target);
|
||||||
|
var tr = jQuery('#' + triggers[id][k] + '__row', target);
|
||||||
|
if(t.is(dep.attr('data-show-if'))) tr.slideDown();
|
||||||
|
else tr.hide();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
jQuery('[data-show-trigger]', target).each(function () {
|
||||||
|
var name = jQuery(this).attr('data-show-trigger');
|
||||||
|
if(!triggers[name]) triggers[name] = [];
|
||||||
|
triggers[name].push(jQuery(this).attr('id'));
|
||||||
|
});
|
||||||
|
for(var name in triggers) {
|
||||||
|
jQuery('#' + name, target).change(show_if).keyup(show_if);
|
||||||
|
show_if.call(jQuery('#' + name, target));
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
// this code improves bootstrap menus and adds dropdown support
|
||||||
|
jQuery(function(){
|
||||||
|
jQuery('.nav>li>a').each(function(){
|
||||||
|
if(jQuery(this).parent().find('ul').length)
|
||||||
|
jQuery(this).attr({'class':'dropdown-toggle','data-toggle':'dropdown'}).append('<b class="caret"></b>');
|
||||||
|
});
|
||||||
|
jQuery('.nav li li').each(function(){
|
||||||
|
if(jQuery(this).find('ul').length)
|
||||||
|
jQuery(this).addClass('dropdown-submenu');
|
||||||
|
});
|
||||||
|
function adjust_height_of_collapsed_nav() {
|
||||||
|
var cn = jQuery('div.collapse');
|
||||||
|
if (cn.get(0)) {
|
||||||
|
var cnh = cn.get(0).style.height;
|
||||||
|
if (cnh>'0px'){
|
||||||
|
cn.css('height','auto');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function hoverMenu(){
|
||||||
|
jQuery('ul.nav a.dropdown-toggle').parent().hover(function(){
|
||||||
|
adjust_height_of_collapsed_nav();
|
||||||
|
mi = jQuery(this).addClass('open');
|
||||||
|
mi.children('.dropdown-menu').stop(true, true).delay(200).fadeIn(400);
|
||||||
|
}, function(){
|
||||||
|
mi = jQuery(this);
|
||||||
|
mi.children('.dropdown-menu').stop(true, true).delay(200).fadeOut(function(){mi.removeClass('open')});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
hoverMenu(); // first page load
|
||||||
|
jQuery(window).resize(hoverMenu); // on resize event
|
||||||
|
jQuery('ul.nav li.dropdown a').click(function(){window.location=jQuery(this).attr('href');});
|
||||||
|
// make all buttons bootstrap buttons
|
||||||
|
jQuery('button, form input[type="submit"], form input[type="button"]').addClass('btn');
|
||||||
|
});
|
||||||
@@ -247,3 +247,39 @@
|
|||||||
{{=IMG(_src=URL('appadmin', 'bg_graph_model'))}}
|
{{=IMG(_src=URL('appadmin', 'bg_graph_model'))}}
|
||||||
{{pass}}
|
{{pass}}
|
||||||
{{pass}}
|
{{pass}}
|
||||||
|
|
||||||
|
{{if request.function == 'auth_manage':}}
|
||||||
|
<h2>{{=T('Manage Access Control')}}</h2>
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<li class="active"><a href="#users" data-toggle="tab">Users</a></li>
|
||||||
|
<li><a href="#roles" data-toggle="tab">Roles</a></li>
|
||||||
|
<li><a href="#permissions" data-toggle="tab">Permissions</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="tab-content">
|
||||||
|
<div class="tab-pane active" id="users">
|
||||||
|
{{=LOAD(f='auth_manage.load', args=auth.settings.table_user_name,ajax=True)}}
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane" id="roles">
|
||||||
|
{{=LOAD(f='auth_manage.load', args=auth.settings.table_group_name,ajax=True)}}
|
||||||
|
</div>
|
||||||
|
<div class="tab-pane" id="permissions">
|
||||||
|
{{=LOAD(f='auth_manage.load', args=auth.settings.table_permission_name,ajax=True)}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{elif request.function == 'manage':}}
|
||||||
|
<h2>{{=T('Manage Access Control')}}</h2>
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
{{for k,tablename in enumerate(auth.db.tables):}}
|
||||||
|
<li><a href="#table-{{=tablename}}" data-toggle="tab">{{=tablename}}</a></li>
|
||||||
|
{{pass}}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="tab-content">
|
||||||
|
{{for tablename in auth.db.tables:}}
|
||||||
|
<div class="tab-pane" id="table-{{=tablename}}">
|
||||||
|
{{=LOAD(f='manage.load', args=tablename,ajax=True)}}
|
||||||
|
</div>
|
||||||
|
{{pass}}
|
||||||
|
</div>
|
||||||
|
{{pass}}
|
||||||
|
|||||||
@@ -5,38 +5,32 @@
|
|||||||
|
|
||||||
<h2>web2py<sup style="font-size:0.5em;">TM</sup> Download</h2>
|
<h2>web2py<sup style="font-size:0.5em;">TM</sup> Download</h2>
|
||||||
|
|
||||||
<div style="width: 90%; margin: 0 auto;">
|
<center style="padding:20px">
|
||||||
<center>
|
|
||||||
<table class="downloads">
|
<table class="downloads">
|
||||||
<tr>
|
<tr>
|
||||||
<th>Current ({{="%s.%s.%s %s" % (version[0],version[1],version[2],version[4])}})</th>
|
<th>For Normal Users</th>
|
||||||
<th>Nightly Build (for testers)</th>
|
<th>For Testers</th>
|
||||||
<th>Trunk (for developers)</th>
|
<th>For Developers</th>
|
||||||
<th>plugin_wiki (add-on)</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a class="button" href="http://www.web2py.com/examples/static/web2py_win.zip">For Windows</a></td>
|
<td><a class="btn btn-180 btn-success" href="http://www.web2py.com/examples/static/web2py_win.zip">For Windows</a></td>
|
||||||
<td><a class="button" href="http://www.web2py.com/examples/static/nightly/web2py_win.zip">For Windows</a></td>
|
<td><a class="btn btn-180 btn-warning" href="http://www.web2py.com/examples/static/nightly/web2py_win.zip">For Windows</a></td>
|
||||||
<td><a class="button" href="http://github.com/web2py/web2py/" target="_blank">Git Repository</a></td>
|
<td><a class="btn btn-180 btn-danger" href="http://github.com/web2py/web2py/">Git Repository</a></td>
|
||||||
<td><a class="button" href="http://web2py.com/examples/static/web2py.plugin.wiki.w2p">Download</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a class="button" href="http://www.web2py.com/examples/static/web2py_osx.zip">For Mac</a></td>
|
<td><a class="btn btn-180 btn-success" href="http://www.web2py.com/examples/static/web2py_osx.zip">For Mac</a></td>
|
||||||
<td><a class="button" href="http://www.web2py.com/examples/static/nightly/web2py_osx.zip">For Mac</a></td>
|
<td><a class="btn btn-180 btn-warning" href="http://www.web2py.com/examples/static/nightly/web2py_osx.zip">For Mac</a></td>
|
||||||
<td><a class="button" href="http://code.google.com/p/web2py/" target="_blank">Mercurial Repository</a></td>
|
<td><a class="btn btn-180 btn-danger" href="http://code.google.com/p/web2py/">Mercurial Repository</a></td>
|
||||||
<td><a class="button" href="http://code.google.com/p/cube2py/" target="_blank">Mercurial Repository</a>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a class="button" href="http://www.web2py.com/examples/static/web2py_src.zip">Source Code</a></td>
|
<td><a class="btn btn-180 btn-success" href="http://www.web2py.com/examples/static/web2py_src.zip">Source Code</a></td>
|
||||||
<td><a class="button" href="http://www.web2py.com/examples/static/nightly/web2py_src.zip">Source Code</a></td>
|
<td><a class="btn btn-180 btn-warning" href="http://www.web2py.com/examples/static/nightly/web2py_src.zip">Source Code</a></td>
|
||||||
<td><a class="button" href="{{=URL('static', 'epydoc/index.html')}}" target="_blank">Source Code Docs</a></td>
|
<td><a class="btn btn-180 btn-danger" href="{{=URL('static', 'epydoc/index.html')}}">Epydoc</a></td>
|
||||||
<td><a class="button" href="http://vimeo.com/13485916" target="_blank">What is plugin_wiki?</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a class="button" href="{{=URL('changelog')}}">Change Log</a></td>
|
<td><a class="btn btn-180 btn-success" href="https://dl.dropbox.com/u/18065445/web2py/web2py_manual_5th.pdf">Manual</a></td>
|
||||||
<td><a class="button" href="http://www.web2py.com/examples/static/nightly/tests.log">Unittest Log</a></td>
|
<td><a class="btn btn-180" href="{{=URL('changelog')}}">Change Log</a></td>
|
||||||
<td><a class="button" href="http://code.google.com/p/web2py/issues/list" target="_blank">Issue Tracker</a></td>
|
<td><a class="btn btn-180" href="http://code.google.com/p/web2py/issues/list">Report a Bug</a></td>
|
||||||
<td></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</center>
|
</center>
|
||||||
@@ -64,28 +58,28 @@
|
|||||||
<p>Applications built with web2py can be released under any license the author wishes as long they do not contain web2py code. They can link unmodified web2py libraries and they can be distributed with official web2py binaries. In particular web2py applications can be distributed in closed source. The admin interface provides a button to byte-code compile.</p>
|
<p>Applications built with web2py can be released under any license the author wishes as long they do not contain web2py code. They can link unmodified web2py libraries and they can be distributed with official web2py binaries. In particular web2py applications can be distributed in closed source. The admin interface provides a button to byte-code compile.</p>
|
||||||
<p>It is fine to distribute web2py (source or compiled) with your applications as long as you make it clear in the license where your application ends and web2py starts.</p>
|
<p>It is fine to distribute web2py (source or compiled) with your applications as long as you make it clear in the license where your application ends and web2py starts.</p>
|
||||||
<p>web2py is copyrighted by Massimo Di Pierro. The web2py trademark is owned by Massimo Di Pierro.</p>
|
<p>web2py is copyrighted by Massimo Di Pierro. The web2py trademark is owned by Massimo Di Pierro.</p>
|
||||||
[<a href="{{=URL('license')}}">read more</a>]
|
<a class="btn btn-small" href="{{=URL('license')}}">read more</a>
|
||||||
|
|
||||||
<h3>Artwork</h3>
|
<h3>Artwork</h3>
|
||||||
<center>
|
<center>
|
||||||
<a href="{{=URL('static', 'images/logo_lb.png')}}"><img src="{{=URL('static', 'images/logo_lb.png')}}" width="200px"/></a>
|
<a href="{{=URL('static', 'images/logo_lb.png')}}"><img src="{{=URL('static', 'images/logo_lb.png')}}" width="200px"/></a>
|
||||||
<a href="{{=URL('static', 'images/logo_db.png')}}"><img src="{{=URL('static', '\
|
<a href="{{=URL('static', 'images/logo_db.png')}}"><img src="{{=URL('static', '\
|
||||||
images/logo_db.png')}}" width="200px"/></a>
|
images/logo_db.png')}}" width="200px"/></a>
|
||||||
<a href="{{=URL('static', 'images/logo_bw.png')}}"><img src="{{=URL('static', '\
|
<a href="{{=URL('static', 'images/logo_bw.png')}}"><img src="{{=URL('static', '\
|
||||||
images/logo_bw.png')}}" width="200px"/></a>
|
images/logo_bw.png')}}" width="200px"/></a>
|
||||||
</center>
|
</center>
|
||||||
<h3>Stickers</h3>
|
<h3>Stickers</h3>
|
||||||
<center>
|
<center>
|
||||||
<a href="{{=URL('static', 'images/Stickers1.png')}}"><img src="{{=URL('static', 'images/Stickers1.png')}}" /></a>
|
<a href="{{=URL('static', 'images/Stickers1.png')}}"><img src="{{=URL('static', 'images/Stickers1.png')}}" /></a>
|
||||||
<a href="{{=URL('static', 'images/Stickers2.png')}}"><img src="{{=URL('static', 'images/Stickers2.png')}}" /></a>
|
<a href="{{=URL('static', 'images/Stickers2.png')}}"><img src="{{=URL('static', 'images/Stickers2.png')}}" /></a>
|
||||||
<a href="{{=URL('static', 'images/Stickers3.png')}}"><img src="{{=URL('static', 'images/Stickers3.png')}}" /></a>
|
<a href="{{=URL('static', 'images/Stickers3.png')}}"><img src="{{=URL('static', 'images/Stickers3.png')}}" /></a>
|
||||||
<a href="{{=URL('static', 'images/Stickers4.png')}}"><img src="{{=URL('static', 'images/Stickers4.png')}}" /></a>
|
<a href="{{=URL('static', 'images/Stickers4.png')}}"><img src="{{=URL('static', 'images/Stickers4.png')}}" /></a>
|
||||||
<a href="{{=URL('static', 'images/Stickers5.png')}}"><img src="{{=URL('static', 'images/Stickers5.png')}}" /></a>
|
<a href="{{=URL('static', 'images/Stickers5.png')}}"><img src="{{=URL('static', 'images/Stickers5.png')}}" /></a>
|
||||||
<a href="{{=URL('static', 'images/Stickers6.png')}}"><img src="{{=URL('static', 'images/Stickers6.png')}}" /></a>
|
<a href="{{=URL('static', 'images/Stickers6.png')}}"><img src="{{=URL('static', 'images/Stickers6.png')}}" /></a>
|
||||||
<a href="{{=URL('static', 'images/Stickers7.png')}}"><img src="{{=URL('static', 'images/Stickers7.png')}}" /></a>
|
<a href="{{=URL('static', 'images/Stickers7.png')}}"><img src="{{=URL('static', 'images/Stickers7.png')}}" /></a>
|
||||||
<a href="{{=URL('static', 'images/Stickers8.png')}}"><img src="{{=URL('static', 'images/Stickers8.png')}}" /></a>
|
<a href="{{=URL('static', 'images/Stickers8.png')}}"><img src="{{=URL('static', 'images/Stickers8.png')}}" /></a>
|
||||||
</center>
|
</center>
|
||||||
|
<p></p>
|
||||||
<p>
|
<p>
|
||||||
<a href="{{=URL('static', 'artwork.tar.gz')}}" >Download WEB2PY artwork pack in editable .png format</a>
|
<a href="{{=URL('static', 'artwork.tar.gz')}}" >Download WEB2PY artwork pack in editable .png format</a>
|
||||||
</p>
|
</p>
|
||||||
@@ -99,6 +93,3 @@
|
|||||||
Icon set made by <a href="http://chrfb.deviantart.com">Christian Burprich</a> licensed under a <a rel="license" target="_blank" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 License</a>
|
Icon set made by <a href="http://chrfb.deviantart.com">Christian Burprich</a> licensed under a <a rel="license" target="_blank" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 License</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{{block sidebar}}{{end}}
|
|
||||||
{{block leftbadges}}{{end}}
|
|
||||||
</div>
|
|
||||||
|
|||||||
@@ -119,7 +119,6 @@ def raiseexception():
|
|||||||
return 'oops'
|
return 'oops'
|
||||||
""".strip(),language='web2py',link=URL('global','vars'),_class='boxCode')}}
|
""".strip(),language='web2py',link=URL('global','vars'),_class='boxCode')}}
|
||||||
<p>If an exception occurs (other than HTTP) a ticket is generated and the event is logged for the administrator. These tickets and logs can be accessed, reviewed and deleted at any later time.
|
<p>If an exception occurs (other than HTTP) a ticket is generated and the event is logged for the administrator. These tickets and logs can be accessed, reviewed and deleted at any later time.
|
||||||
<br/>Try it here: <a href="/{{=request.application}}/simple_examples/raiseexception">raiseexception</a></p>
|
|
||||||
|
|
||||||
<h3>Example {{=c}}{{c+=1}}</h3><b>In controller: simple_examples.py</b>
|
<h3>Example {{=c}}{{c+=1}}</h3><b>In controller: simple_examples.py</b>
|
||||||
{{=CODE("""
|
{{=CODE("""
|
||||||
@@ -605,7 +604,7 @@ def fade():
|
|||||||
|
|
||||||
<h3>Excel-like spreadsheet via Ajax</h3>
|
<h3>Excel-like spreadsheet via Ajax</h3>
|
||||||
Web2py includes a widget that acts like an Excel-like spreadsheet and can be used to build forms
|
Web2py includes a widget that acts like an Excel-like spreadsheet and can be used to build forms
|
||||||
[<a href="{{=URL('spreadsheet','index')}}">read more</a>].
|
<a class="btn btn-small" href="{{=URL('spreadsheet','index')}}">read more</a>.
|
||||||
|
|
||||||
<h2 id="testing_examples">Testing Examples</h2>
|
<h2 id="testing_examples">Testing Examples</h2>
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
{{right_sidebar_enabled=True}}
|
|
||||||
{{extend 'layout.html'}}
|
{{extend 'layout.html'}}
|
||||||
{{
|
{{
|
||||||
import random
|
import random
|
||||||
@@ -14,73 +13,70 @@ quotes = [
|
|||||||
random.shuffle(quotes)
|
random.shuffle(quotes)
|
||||||
}}
|
}}
|
||||||
|
|
||||||
<table width="100%">
|
<div class="row-fluid">
|
||||||
<tr>
|
<div class="span12">
|
||||||
<td>
|
<div class="span8">
|
||||||
<a href="http://web2py.com/book">
|
<h3>web2py<sup>TM</sup> Web Framework</h3>
|
||||||
<img src="{{=URL('static','images/book-4th.png')}}" />
|
<p>Free open source full-stack framework for rapid development of fast, scalable, <a href="http://www.web2py.com/book/default/chapter/01#Security" target="_blank">secure</a> and portable database-driven web-based applications. Written and programmable in <a href="http://www.python.org" target="_blank">Python</a>.</p>
|
||||||
</a>
|
<table width="100%">
|
||||||
</td>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<a href="http://link.packtpub.com/SUlnrN">
|
<a href="http://web2py.com/book">
|
||||||
<img src="{{=URL('static','images/book-recipes.png')}}" />
|
<img src="{{=URL('static','images/book-5th.png')}}" />
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="http://www.youtube.com/playlist?list=PL5E2E223FE3777851">
|
<a href="http://link.packtpub.com/SUlnrN">
|
||||||
<img src="{{=URL('static','images/videos.png')}}" />
|
<img src="{{=URL('static','images/book-recipes.png')}}" />
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
<td>
|
||||||
</table>
|
<a href="http://www.youtube.com/playlist?list=PL5E2E223FE3777851">
|
||||||
|
<img src="{{=URL('static','images/videos.png')}}" />
|
||||||
|
</a>
|
||||||
<h3>WEB2PY<sup>TM</sup> WEB FRAMEWORK</h3>
|
</td>
|
||||||
<p>Free open source full-stack framework for rapid development of fast, scalable, <a href="http://www.web2py.com/book/default/chapter/01#security" target="_blank">secure</a> and portable database-driven web-based applications. Written and programmable in <a href="http://www.python.org" target="_blank">Python</a>. <a href="http://www.gnu.org/licenses/lgpl.html">LGPLv3 License</a>.
|
</tr>
|
||||||
Current version: {{="%s.%s.%s (%s) %s" % request.env.web2py_version}}</p>
|
</table>
|
||||||
|
<p>Current version: <a href="{{=URL('download')}}">{{=request.env.web2py_version}} (<a href="http://www.gnu.org/licenses/lgpl.html">LGPLv3 License</a>)</p>
|
||||||
{{block extra}}
|
|
||||||
<div class="container aboutW2P">
|
|
||||||
<div class="sixteen columns">
|
|
||||||
<div class="one-third column alpha">
|
|
||||||
<h3><a href="{{=URL('what')}}">BATTERIES INCLUDED</a></h3>
|
|
||||||
<p>Everything you need in one package including fast multi-threaded web server, SQL database and web-based interface. No third party dependencies but works with <a href={{=URL('what')}}>third party tools</a>.</p>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="one-third column">
|
<div class="span4" style="text-align:center">
|
||||||
<h3><a href="http://web2py.com/demo_admin">WEB-BASED IDE</a></h3>
|
<a href="http://www.infoworld.com/slideshow/24605/infoworlds-2012-technology-of-the-year-award-winners-183313#slide23"><img src="{{=URL('static','images/infoworld2012.jpeg')}}" width="200px"/></a><br/>
|
||||||
<p>Create, modify, deploy and manage application from anywhere using your browser. One web2py instance can run multiple web sites using different databases. Try the <a href="http://web2py.com/demo_admin">interactive demo</a>.</p>
|
<a class="btn btn-danger" href="{{=URL('download')}}" style="margin-top:10px; width:180px; color:white">Download Now</a><br/>
|
||||||
</div>
|
<a class="btn btn-danger" href="http://web2py.com/demo_admin" style="margin-top:10px; width:180px; color:white">Online Demo</a><br/>
|
||||||
<div class="one-third column omega">
|
<a class="btn btn-danger" href="http://web2py.com/poweredby" style="margin-top:10px; width:180px; color:white">Sites Powered by web2py</a>
|
||||||
<h3><a href="{{=URL('documentation')}}">EXTENSIVE DOCS</a></h3>
|
|
||||||
<p>Start with some <a href="{{=URL('examples')}}">quick examples</a>, then read the <a href="http://web2py.com/book" target="_blank">manual</a>, watch <a href="http://vimeo.com/album/178500" target="_blank">videos</a>, and join a <a href="{{=URL('default', 'usergroups')}}">user group</a> for discussion. Take advantage of the <a href="http://web2py.com/layouts" target="_blank">layouts</a>, <a href="http://dev.s-cubism.com/web2py_plugins" target="_blank">plugins</a>, <a href="http://www.web2py.com/appliances" target="_blank">appliances</a>, and <a href="http://web2pyslices.com" target="_blank">recipes</a>.</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<img class="scale-with-grid centered" src="/examples/static/images/shadow-bottom.png">
|
<div class="row-fluid">
|
||||||
<div class="container userQuotes">
|
<div class="span12">
|
||||||
<div class="sixteen columns">
|
<div class="span4">
|
||||||
<!-- img src="{{=URL('static','images/shadow-bottom.png')}}" width="100%"/ -->
|
<h3><a href="{{=URL('what')}}">Batteries Included</a></h3>
|
||||||
|
<p>Everything you need in one package including fast multi-threaded web server, SQL database and web-based interface. No third party dependencies but works with <a href={{=URL('what')}}>third party tools</a>.</p>
|
||||||
|
</div>
|
||||||
|
<div class="span4">
|
||||||
|
<h3><a href="http://web2py.com/demo_admin">Web-Based IDE</a></h3>
|
||||||
|
<p>Create, modify, deploy and manage application from anywhere using your browser. One web2py instance can run multiple web sites using different databases. Try the <a href="http://www.web2py.com/demo_admin">interactive demo</a>.</p>
|
||||||
|
</div>
|
||||||
|
<div class="span4">
|
||||||
|
<h3><a href="{{=URL('documentation')}}">Extensive Docs</a></h3>
|
||||||
|
<p>Start with some <a href="{{=URL('examples')}}">quick examples</a>, then read the <a href="http://www.web2py.com/book" target="_blank">manual</a>, watch <a href="http://vimeo.com/album/178500" target="_blank">videos</a>, and join a <a href="{{=URL('default', 'usergroups')}}">user group</a> for discussion. Take advantage of the <a href="http://www.web2py.com/layouts" target="_blank">layouts</a>, <a href="http://dev.s-cubism.com/web2py_plugins" target="_blank">plugins</a>, <a href="http://www.web2py.com/appliances" target="_blank">appliances</a>, and <a href="http://web2pyslices.com" target="_blank">recipes</a>.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span12">
|
||||||
|
<img class="scale-with-grid centered" src="/examples/static/images/shadow-bottom.png">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span12">
|
||||||
{{for k,quote in enumerate(quotes[:3]):}}
|
{{for k,quote in enumerate(quotes[:3]):}}
|
||||||
<div class="one-third column {{=[' alpha', '', ' omega'][k]}}">
|
<div class="span4">
|
||||||
<em>
|
<p style="text-align: left"><em>{{=quote[0]}}</em></p>
|
||||||
<p>{{=quote[0]}}</p>
|
|
||||||
</em>
|
|
||||||
<span class="right">
|
<span class="right">
|
||||||
<a href="{{=quote[2]}}"><em>—{{=quote[1]}}</em></a>
|
<a href="{{=quote[2]}}">{{=quote[1]}}</a>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
|
||||||
|
|
||||||
{{block right_sidebar}}
|
|
||||||
<div class="one-third column" style="text-align:center">
|
|
||||||
<img class="scale-with-grid centered" src="{{=URL('static','images/tag-cloud-color-small.png')}}" width="300px"/>
|
|
||||||
<br/>
|
|
||||||
<a class="button" href="{{=URL('download')}}" style="width:90%">DOWNLOAD NOW</a><br/>
|
|
||||||
<a class="button" href="http://web2py.com/demo_admin" style="width:90%">ONLINE DEMO</a><br/>
|
|
||||||
<a class="button" href="http://web2py.com/poweredby" style="width:90%">SITES POWERED BY WEB2PY</a><br/>
|
|
||||||
<a class="button" href="http://www.chipin.com/contribute/id/dcd384d58839aa4d" style="width:90%">SUPPORT/DONATE</a></br>
|
|
||||||
</div>
|
|
||||||
{{end}}
|
|
||||||
|
|||||||
@@ -147,8 +147,7 @@
|
|||||||
|
|
||||||
<li><a href="http://www.python.org">Python</a> created by Guido van Rossum.</li>
|
<li><a href="http://www.python.org">Python</a> created by Guido van Rossum.</li>
|
||||||
<li>Rocket Web Server developed by Timothy Farrell.</li>
|
<li>Rocket Web Server developed by Timothy Farrell.</li>
|
||||||
<li><a href="http://www.cdolivet.com/index.php?page=editArea">EditArea</a> developed by Christophe Dolivet</li>
|
<li><a href="http://codemirror.net/">CodeMirror</a></li>
|
||||||
<li><a href="http://nicedit.com">nicEdit</a> developed by <a href="http://bkirchoff.com">Brian Kirchoff</a></li>
|
|
||||||
<li><a href="http://cheeseshop.python.org/pypi/simplejson">simplejson</a> developed by Bob Ippolito</li>
|
<li><a href="http://cheeseshop.python.org/pypi/simplejson">simplejson</a> developed by Bob Ippolito</li>
|
||||||
<li><a href="http://pyrtf.sourceforge.net/">PyRTF</a> developed by Simon Cusack and revised by Grant Edwards</li>
|
<li><a href="http://pyrtf.sourceforge.net/">PyRTF</a> developed by Simon Cusack and revised by Grant Edwards</li>
|
||||||
<li><a href="http://www.dalkescientific.com/Python/PyRSS2Gen.html">PyRSS2Gen</a> developed by Dalke Scientific Software</li>
|
<li><a href="http://www.dalkescientific.com/Python/PyRSS2Gen.html">PyRSS2Gen</a> developed by Dalke Scientific Software</li>
|
||||||
@@ -159,8 +158,8 @@
|
|||||||
<li><a href="http://jquery.com/">jQuery</a> developed by John Resig</li>
|
<li><a href="http://jquery.com/">jQuery</a> developed by John Resig</li>
|
||||||
<li>A syntax highlighter inspired by the code of <a href="http://www.petersblog.org/node/763">Peter Wilkinson</a></li>
|
<li>A syntax highlighter inspired by the code of <a href="http://www.petersblog.org/node/763">Peter Wilkinson</a></li>
|
||||||
<li><a href="https://github.com/jtauber/pyuca">pyUCA</a> developed by <a href="http://jtauber.com/blog/2006/01/27/python_unicode_collation_algorithm/">James Tauber</a></li>
|
<li><a href="https://github.com/jtauber/pyuca">pyUCA</a> developed by <a href="http://jtauber.com/blog/2006/01/27/python_unicode_collation_algorithm/">James Tauber</a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
(... and other third party modules in the contrib folder).
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -2,46 +2,53 @@
|
|||||||
{{import cgi}}
|
{{import cgi}}
|
||||||
|
|
||||||
<div class="contentleft">
|
<div class="contentleft">
|
||||||
<h1>{{=T('Docs for')}} {{=title}}</h1>
|
<h1>{{=T('Docs for')}} {{=title}}</h1>
|
||||||
|
|
||||||
<div align="right">
|
<div align="right">
|
||||||
[ <a href="http://docs.python.org/tut/">Python Tutorial</a> ]
|
[ <a href="http://docs.python.org/tut/">Python Tutorial</a> ]
|
||||||
[ <a href="http://docs.python.org/lib/">Python Libraries</a> ]
|
[ <a href="http://docs.python.org/lib/">Python Libraries</a> ]
|
||||||
[ <a href="/{{=request.application}}/static/epydoc/index.html">web2py epydoc</a> ]
|
[ <a href="/{{=request.application}}/static/epydoc/index.html">web2py epydoc</a> ]
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h2>{{=T('Description')}}</h2>
|
<h2>{{=T('Description')}}</h2>
|
||||||
|
|
||||||
<br/>
|
<br/>
|
||||||
{{if t:}}
|
{{if t:}}
|
||||||
{{=t}}{{if d:}} extends {{=d}}{{pass}}
|
{{=t}}{{if d:}} extends {{=d}}{{pass}}
|
||||||
{{pass}}
|
{{pass}}
|
||||||
<br/>
|
<br/>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
|
|
||||||
{{if doc:}}<br/><br/>{{=CODE(str(doc),language=None,counter=None,_class='boxCode')}}{{pass}}
|
{{if doc:}}<br/><br/>{{=MARKMIN(doc)}}{{pass}}
|
||||||
<br/><br/>
|
<br/><br/>
|
||||||
<div class="boxInfo">
|
<div class="boxInfo">
|
||||||
|
{{if attributes:}}
|
||||||
<h2>{{=T('Attributes')}}</h2>
|
<h2>{{=T('Attributes')}}</h2>
|
||||||
|
|
||||||
{{keys=attributes.keys(); keys.sort()}}
|
|
||||||
<table>
|
<table>
|
||||||
<tr><td colspan=2><hr/></td></tr>
|
<tr><td colspan=2><hr/></td></tr>
|
||||||
{{for a in keys:}}
|
{{for key in sorted(attributes):}}
|
||||||
{{doc1,t1,c1,d1=attributes[a]}}
|
{{doc1,t1,c1,d1=attributes[key]}}
|
||||||
<tr>
|
<tr>
|
||||||
<td><b>{{#=a}}</b>{{=A(a,_href=URL(r=request,args=a.split('.')))}}</td>
|
<td>
|
||||||
<td>
|
{{if key.count('.')<2:}}
|
||||||
{{if t1:}}
|
{{=A(key,_rel="nofollow",_href=URL(args=key.split('.')))}}
|
||||||
{{=t1}}{{if d1:}} extends {{=d1}}{{pass}}
|
{{else:}}
|
||||||
{{if c1:}} belongs to class {{=c1}}{{pass}}
|
{{=key}}
|
||||||
<br/>
|
{{pass}}
|
||||||
{{pass}}
|
</td>
|
||||||
{{if doc1:}}{{=XML(cgi.escape(str(doc1)).replace(chr(13),'<br/>'))}}{{pass}}
|
<td>
|
||||||
|
{{if t1:}}
|
||||||
|
{{=t1}}{{if d1:}} extends {{=d1}}{{pass}}
|
||||||
|
{{if c1:}} belongs to class {{=c1}}{{pass}}
|
||||||
|
<br/>
|
||||||
|
{{pass}}
|
||||||
|
{{if doc1:}}{{=MARKMIN(doc1)}}{{pass}}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr><td colspan=2><hr/></td></tr>
|
<tr><td colspan=2><hr/></td></tr>
|
||||||
{{pass}}
|
{{pass}}
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
{{pass}}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
<!--[if HTML5]><![endif]-->
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
|
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
|
||||||
<!--[if lt IE 7]><html class="ie ie6 ie-lte9 ie-lte8 ie-lte7 no-js" lang="{{=T.accepted_language or 'en'}}"> <![endif]-->
|
<!--[if lt IE 7]><html class="ie ie6 ie-lte9 ie-lte8 ie-lte7 no-js" lang="{{=T.accepted_language or 'en'}}"> <![endif]-->
|
||||||
@@ -6,139 +7,167 @@
|
|||||||
<!--[if IE 9]><html class="ie9 ie-lte9 no-js" lang="{{=T.accepted_language or 'en'}}"> <![endif]-->
|
<!--[if IE 9]><html class="ie9 ie-lte9 no-js" lang="{{=T.accepted_language or 'en'}}"> <![endif]-->
|
||||||
<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js" lang="{{=T.accepted_language or 'en'}}"> <!--<![endif]-->
|
<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js" lang="{{=T.accepted_language or 'en'}}"> <!--<![endif]-->
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<title>{{=response.title or request.application}}</title>
|
||||||
|
<!--[if !HTML5]>
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge{{=not request.is_local and ',chrome=1' or ''}}">
|
||||||
|
<![endif]-->
|
||||||
<!-- www.phpied.com/conditional-comments-block-downloads/ -->
|
<!-- www.phpied.com/conditional-comments-block-downloads/ -->
|
||||||
<!-- Always force latest IE rendering engine
|
<!-- Always force latest IE rendering engine
|
||||||
(even in intranet) & Chrome Frame
|
(even in intranet) & Chrome Frame
|
||||||
Remove this if you use the .htaccess -->
|
Remove this if you use the .htaccess -->
|
||||||
<!--[if IE]>
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta charset="utf-8" />
|
||||||
<![endif]-->
|
|
||||||
|
|
||||||
<title>{{=response.title or request.application}}</title>
|
|
||||||
|
|
||||||
<!-- http://dev.w3.org/html5/markup/meta.name.html -->
|
<!-- http://dev.w3.org/html5/markup/meta.name.html -->
|
||||||
<meta name="application-name" content="{{=request.application}}" />
|
<meta name="application-name" content="{{=request.application}}" />
|
||||||
|
|
||||||
<!-- Speaking of Google, don't forget to set your site up:
|
<!-- Speaking of Google, don't forget to set your site up:
|
||||||
http://google.com/webmasters -->
|
http://google.com/webmasters -->
|
||||||
<meta name="google-site-verification" content="" />
|
<meta name="google-site-verification" content="" />
|
||||||
|
|
||||||
<!-- Mobile Viewport Fix
|
<!-- Mobile Viewport Fix
|
||||||
j.mp/mobileviewport & davidbcalhoun.com/2010/viewport-metatag
|
j.mp/mobileviewport & davidbcalhoun.com/2010/viewport-metatag
|
||||||
device-width: Occupy full width of the screen in its current orientation
|
device-width: Occupy full width of the screen in its current orientation
|
||||||
initial-scale = 1.0 retains dimensions instead of zooming out if page height > device height
|
initial-scale = 1.0 retains dimensions instead of zooming out if page height > device height
|
||||||
user-scalable = yes allows the user to zoom in -->
|
user-scalable = yes allows the user to zoom in -->
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
<!-- Place favicon.ico and apple-touch-icon.png in the root of your domain and delete these references -->
|
|
||||||
<link rel="shortcut icon" href="{{=URL('static','favicon.ico')}}" type="image/x-icon">
|
|
||||||
<link rel="apple-touch-icon" href="{{=URL('static','favicon.png')}}">
|
|
||||||
|
|
||||||
<!-- All JavaScript at the bottom, except for Modernizr which enables
|
<link rel="shortcut icon" href="{{=URL('static','images/favicon.ico')}}" type="image/x-icon">
|
||||||
HTML5 elements & feature detects -->
|
<link rel="apple-touch-icon" href="{{=URL('static','images/favicon.png')}}">
|
||||||
<script src="{{=URL('static','js/modernizr.custom.js')}}"></script>
|
|
||||||
|
<!-- All JavaScript at the bottom, except for Modernizr which enables
|
||||||
|
HTML5 elements & feature detects -->
|
||||||
|
<script src="{{=URL('static','js/modernizr.custom.js')}}"></script>
|
||||||
|
|
||||||
<!-- include stylesheets -->
|
<!-- include stylesheets -->
|
||||||
{{
|
{{
|
||||||
response.files.append(URL('static','css/skeleton.css'))
|
|
||||||
response.files.append(URL('static','css/web2py.css'))
|
response.files.append(URL('static','css/web2py.css'))
|
||||||
|
response.files.append(URL('static','css/bootstrap.min.css'))
|
||||||
|
response.files.append(URL('static','css/bootstrap-responsive.min.css'))
|
||||||
|
response.files.append(URL('static','css/web2py_bootstrap.css'))
|
||||||
response.files.append(URL('static','css/examples.css'))
|
response.files.append(URL('static','css/examples.css'))
|
||||||
response.files.append(URL('static','css/superfish.css'))
|
|
||||||
response.files.append(URL('static','js/superfish.js'))
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
{{include 'web2py_ajax.html'}}
|
{{include 'web2py_ajax.html'}}
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
jQuery(function(){jQuery('.sf-menu').superfish();});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{{
|
{{
|
||||||
|
# using sidebars need to know what sidebar you want to use
|
||||||
|
left_sidebar_enabled = globals().get('left_sidebar_enabled',False)
|
||||||
right_sidebar_enabled = globals().get('right_sidebar_enabled',False)
|
right_sidebar_enabled = globals().get('right_sidebar_enabled',False)
|
||||||
|
middle_columns = {0:'span12',1:'span9',2:'span6'}[
|
||||||
|
(left_sidebar_enabled and 1 or 0)+(right_sidebar_enabled and 1 or 0)]
|
||||||
}}
|
}}
|
||||||
|
|
||||||
<!-- uncomment here to load jquery-ui
|
<!-- uncomment here to load jquery-ui
|
||||||
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" media="all" />
|
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" media="all" />
|
||||||
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script>
|
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script>
|
||||||
uncomment to load jquery-ui //-->
|
uncomment to load jquery-ui //-->
|
||||||
</style>
|
<noscript><link href="{{=URL('static', 'css/web2py_bootstrap_nojs.css')}}" rel="stylesheet" type="text/css" /></noscript>
|
||||||
|
{{block head}}{{end}}
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="wrapper"><!-- for sticky footer -->
|
<!-- Navbar ================================================== -->
|
||||||
<div class="flash">{{=response.flash or ''}}</div>
|
<div class="navbar navbar-inverse navbar-fixed-top">
|
||||||
<div class="header">
|
<div class="flash">{{=response.flash or ''}}</div>
|
||||||
|
<div class="navbar-inner">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="sixteen columns">
|
<!-- the next tag is necessary for bootstrap menus, do not remove -->
|
||||||
<img src="{{=URL('static','images/web2py_logo.png')}}" class="logo" alt="web2py logo" />
|
<button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
|
||||||
<h5>{{=response.subtitle or ''}}</h5>
|
<span class="icon-bar"></span>
|
||||||
</div>
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
<div class="sixteen columns statusbar">
|
</button>
|
||||||
{{block statusbar}}
|
{{=response.logo or ''}}
|
||||||
{{is_mobile=request.user_agent().is_mobile}}
|
<ul id="navbar" class="nav pull-right">{{='auth' in globals() and auth.navbar(mode="dropdown") or ''}}</ul>
|
||||||
<div id="menu" class="clearfix">{{=MENU(response.menu,_class='mobile-menu' if is_mobile else 'sf-menu',mobile=is_mobile)}}
|
<div class="nav-collapse">
|
||||||
{{end}}
|
{{is_mobile=request.user_agent().is_mobile}}
|
||||||
<!-- AddToAny BEGIN -->
|
{{if response.menu:}}
|
||||||
<div style="float:right;padding-top:6px;" class="a2a_kit a2a_default_style">
|
{{=MENU(response.menu, _class='mobile-menu nav' if is_mobile else 'nav',mobile=is_mobile,li_class='dropdown',ul_class='dropdown-menu')}}
|
||||||
<a class="a2a_dd" href="http://www.addtoany.com/share_save">Share</a></div>
|
{{pass}}
|
||||||
<script type="text/javascript" src="http://static.addtoany.com/menu/page.js"></script>
|
</div><!--/.nav-collapse -->
|
||||||
<!-- AddToAny END -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="sixteen columns announce">
|
|
||||||
<a href="http://www.infoworld.com/slideshow/24605/infoworlds-2012-technology-of-the-year-award-winners-183313#slide23"target="_blank">InfoWorld's 2012 Technology of the Year Award Winner</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="main">
|
</div><!--/top navbar -->
|
||||||
<div class="container mainbody">
|
|
||||||
<div class="sixteen columns">
|
<div class="container">
|
||||||
<div class="{{=right_sidebar_enabled and 'two-thirds column alpha' or 'sixteen columns alpha omega'}}">
|
<!-- Masthead ================================================== -->
|
||||||
|
<header class="mastheader" id="header">
|
||||||
|
<div class="span4">
|
||||||
|
<div class="page-header">
|
||||||
|
<img src="{{=URL('static','images/web2py_logo.png')}}" class="logo" alt="web2py logo" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
</div>
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<section id="main" class="main row">
|
||||||
|
{{if left_sidebar_enabled:}}
|
||||||
|
<div class="span3 left-sidebar">
|
||||||
|
{{block left_sidebar}}
|
||||||
|
<h3>Left Sidebar</h3>
|
||||||
|
<p></p>
|
||||||
|
{{end}}
|
||||||
|
</div>
|
||||||
|
{{pass}}
|
||||||
|
|
||||||
|
<div class="{{=middle_columns}}">
|
||||||
{{block center}}
|
{{block center}}
|
||||||
{{include}}
|
{{include}}
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if right_sidebar_enabled:}}
|
{{if right_sidebar_enabled:}}
|
||||||
<div class="one-third column omega">
|
<div class="span3">
|
||||||
{{block right_sidebar}}
|
{{block right_sidebar}}
|
||||||
<h3>Right Sidebar</h3>
|
<h3>Right Sidebar</h3>
|
||||||
<p></p>
|
<p></p>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
|
||||||
{{pass}}
|
|
||||||
</div>
|
</div>
|
||||||
</div><!-- container -->
|
{{pass}}
|
||||||
{{block extra}}{{end}}
|
</section><!--/main-->
|
||||||
|
|
||||||
</div><!-- main -->
|
|
||||||
|
|
||||||
<div class="push"></div>
|
|
||||||
</div><!-- wrapper -->
|
|
||||||
|
|
||||||
<div class="footer">
|
<!-- Footer ================================================== -->
|
||||||
<div class="container header">
|
<div class="row">
|
||||||
<div class="sixteen columns">
|
<footer class="footer span12" id="footer">
|
||||||
{{block footer}} <!-- this is default footer -->
|
<div class="footer-content">
|
||||||
<div class="footer-content" >
|
{{block footer}} <!-- this is default footer -->
|
||||||
{{=T('Copyright')}} © {{=request.now.year}}
|
<div id="poweredBy" class="pull-right">
|
||||||
- User communities in <a href="https://groups.google.com/forum/?fromgroups#!forum/web2py" target="_blank">English<a>, <a href="https://groups.google.com/forum/?fromgroups#!forum/web2py-fr" target="_blank">French</a>, <a href="https://groups.google.com/forum/?fromgroups#!forum/web2py-japan" target="_blank">Japanese</a>, <a href="https://groups.google.com/forum/?fromgroups#!forum/web2py-users-brazil" target="_blank">Portuguese</a>, and <a href="https://groups.google.com/forum/?fromgroups#!forum/web2py-usuarios" target="_blank">Spanish</a>.
|
{{=T('Copyright')}} © {{=request.now.year}} -
|
||||||
<div style="float: right;">
|
{{=T('Powered by')}}
|
||||||
<a href="http://www.web2py.com/" style="float: left; padding-right: 6px;">
|
<a href="http://www.web2py.com/">web2py</a> -
|
||||||
<img style="padding-bottom: 0;" src="{{=URL('static','images/poweredby.png')}}"/>
|
{{=T('Hosted by')}}
|
||||||
</a>
|
<a href="http://pythonanywhere.com">PythonAnywhere</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
{{end}}
|
||||||
{{end}}
|
</div>
|
||||||
</div>
|
</footer>
|
||||||
</div><!-- container -->
|
</div>
|
||||||
</div><!-- footer -->
|
|
||||||
|
</div> <!-- /container -->
|
||||||
|
|
||||||
|
<!-- The javascript =============================================
|
||||||
|
(Placed at the end of the document so the pages load faster) -->
|
||||||
|
<script src="{{=URL('static','js/bootstrap.min.js')}}"></script>
|
||||||
|
<script src="{{=URL('static','js/web2py_bootstrap.js')}}"></script>
|
||||||
<!--[if lt IE 7 ]>
|
<!--[if lt IE 7 ]>
|
||||||
<script src="{{=URL('static','js/dd_belatedpng.js')}}"></script>
|
<script src="{{=URL('static','js/dd_belatedpng.js')}}"></script>
|
||||||
<script> DD_belatedPNG.fix('img, .png_bg'); //fix any <img> or .png_bg background-images </script>
|
<script> DD_belatedPNG.fix('img, .png_bg'); //fix any <img> or .png_bg background-images </script>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
{{if response.google_analytics_id:}}<script>/* http://mathiasbynens.be/notes/async-analytics-snippet */ var _gaq=[['_setAccount','{{=response.google_analytics_id}}'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script')) </script>{{pass}}
|
|
||||||
|
{{if response.google_analytics_id:}}
|
||||||
|
<script src="{{=URL('static','js/analytics.min.js')}}"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
analytics.initialize({
|
||||||
|
'Google Analytics':{trackingId:'{{=response.google_analytics_id}}'}
|
||||||
|
});</script>
|
||||||
|
{{pass}}
|
||||||
|
<script src="{{=URL('static','js/share.js',vars=dict(static=URL('static','images')))}}"></script>
|
||||||
|
<a style="position:fixed;bottom:0;left:0;z-index:1000" href="https://groups.google.com/forum/?fromgroups#!forum/web2py" target="_blank">
|
||||||
|
<img src="{{=URL('static','images/questions.png')}}" />
|
||||||
|
</a>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
{{extend 'layout.html'}}
|
{{extend 'layout.html'}}
|
||||||
|
<style>
|
||||||
|
input {width: 70px;}
|
||||||
|
input:focus {background-color: yellow}
|
||||||
|
table, td, tr { border: 0; margin: 0; padding: 0}
|
||||||
|
</style>
|
||||||
<h1>Excel-like spreadsheet widget</h1>
|
<h1>Excel-like spreadsheet widget</h1>
|
||||||
|
|
||||||
Try insert "=r0c1+1" in cell r0c0 and "2" in r0c1. Formulas start with "=" as in Excel. You can use a subset of python commands and math function, and reference cells by r[row]c[col]. All computations are performed serverside via Ajax (input is validated for security). Cell values and formulas can be set and locked serverside. The shape of the spreadsheet can be modifed serverside and does not need to be tabular (think of it as a graph of css-friendly widgets you can place where you want). Cells can be given arbistrary names. This example is distributed with web2py so look at the source code of the example to learn more.
|
Try insert "=r0c1+1" in cell r0c0 and "2" in r0c1. Formulas start with "=" as in Excel. You can use a subset of python commands and math function, and reference cells by r[row]c[col]. All computations are performed serverside via Ajax (input is validated for security). Cell values and formulas can be set and locked serverside. The shape of the spreadsheet can be modifed serverside and does not need to be tabular (think of it as a graph of css-friendly widgets you can place where you want). Cells can be given arbistrary names. This example is distributed with web2py so look at the source code of the example to learn more.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
var w2p_ajax_confirm_message = "{{=T('Are you sure you want to delete this object?')}}";
|
var w2p_ajax_confirm_message = "{{=T('Are you sure you want to delete this object?')}}";
|
||||||
var w2p_ajax_date_format = "{{=T('%Y-%m-%d')}}";
|
var w2p_ajax_date_format = "{{=T('%Y-%m-%d')}}";
|
||||||
var w2p_ajax_datetime_format = "{{=T('%Y-%m-%d %H:%M:%S')}}";
|
var w2p_ajax_datetime_format = "{{=T('%Y-%m-%d %H:%M:%S')}}";
|
||||||
var ajax_error_500 = '{{=XML(T('An error occured, please %s the page') % A(T('reload'), _href=URL(args=request.args, vars=request.vars))) }}'
|
var ajax_error_500 = '{{=XML(T('An error occured, please %s the page') % A(T('reload'), _href=URL(args=request.args, vars=request.get_vars))) }}'
|
||||||
//--></script>
|
//--></script>
|
||||||
{{
|
{{
|
||||||
response.files.insert(0,URL('static','js/jquery.js'))
|
response.files.insert(0,URL('static','js/jquery.js'))
|
||||||
|
|||||||
@@ -37,14 +37,20 @@ if request.env.http_x_forwarded_for or request.is_https:
|
|||||||
elif (remote_addr not in hosts) and (remote_addr != "127.0.0.1"):
|
elif (remote_addr not in hosts) and (remote_addr != "127.0.0.1"):
|
||||||
raise HTTP(200, T('appadmin is disabled because insecure channel'))
|
raise HTTP(200, T('appadmin is disabled because insecure channel'))
|
||||||
|
|
||||||
if (request.application == 'admin' and not session.authorized) or \
|
if request.function in ('auth_manage','manage') and 'auth' in globals():
|
||||||
(request.application != 'admin' and not gluon.fileutils.check_credentials(request)):
|
auth.requires_membership(auth.settings.manager_group_role)(lambda: None)()
|
||||||
|
menu = False
|
||||||
|
elif (request.application == 'admin' and not session.authorized) or \
|
||||||
|
(request.application != 'admin' and not gluon.fileutils.check_credentials(request)):
|
||||||
redirect(URL('admin', 'default', 'index',
|
redirect(URL('admin', 'default', 'index',
|
||||||
vars=dict(send=URL(args=request.args, vars=request.vars))))
|
vars=dict(send=URL(args=request.args, vars=request.vars))))
|
||||||
|
else:
|
||||||
|
menu = True
|
||||||
|
|
||||||
ignore_rw = True
|
ignore_rw = True
|
||||||
response.view = 'appadmin.html'
|
response.view = 'appadmin.html'
|
||||||
response.menu = [[T('design'), False, URL('admin', 'default', 'design',
|
if menu:
|
||||||
|
response.menu = [[T('design'), False, URL('admin', 'default', 'design',
|
||||||
args=[request.application])], [T('db'), False,
|
args=[request.application])], [T('db'), False,
|
||||||
URL('index')], [T('state'), False,
|
URL('index')], [T('state'), False,
|
||||||
URL('state')], [T('cache'), False,
|
URL('state')], [T('cache'), False,
|
||||||
@@ -54,6 +60,10 @@ response.menu = [[T('design'), False, URL('admin', 'default', 'design',
|
|||||||
# ## auxiliary functions
|
# ## auxiliary functions
|
||||||
# ###########################################################
|
# ###########################################################
|
||||||
|
|
||||||
|
if False and request.tickets_db:
|
||||||
|
from gluon.restricted import TicketStorage
|
||||||
|
ts = TicketStorage()
|
||||||
|
ts._get_table(request.tickets_db, ts.tablename, request.application)
|
||||||
|
|
||||||
def get_databases(request):
|
def get_databases(request):
|
||||||
dbs = {}
|
dbs = {}
|
||||||
@@ -275,14 +285,15 @@ def update():
|
|||||||
(db, table) = get_table(request)
|
(db, table) = get_table(request)
|
||||||
keyed = hasattr(db[table], '_primarykey')
|
keyed = hasattr(db[table], '_primarykey')
|
||||||
record = None
|
record = None
|
||||||
|
db[table]._common_filter = None
|
||||||
if keyed:
|
if keyed:
|
||||||
key = [f for f in request.vars if f in db[table]._primarykey]
|
key = [f for f in request.vars if f in db[table]._primarykey]
|
||||||
if key:
|
if key:
|
||||||
record = db(db[table][key[0]] == request.vars[key[
|
record = db(db[table][key[0]] == request.vars[key[
|
||||||
0]], ignore_common_filters=True).select().first()
|
0]]).select().first()
|
||||||
else:
|
else:
|
||||||
record = db(db[table].id == request.args(
|
record = db(db[table].id == request.args(
|
||||||
2), ignore_common_filters=True).select().first()
|
2)).select().first()
|
||||||
|
|
||||||
if not record:
|
if not record:
|
||||||
qry = query_by_table_type(table, db)
|
qry = query_by_table_type(table, db)
|
||||||
@@ -319,6 +330,9 @@ def state():
|
|||||||
|
|
||||||
|
|
||||||
def ccache():
|
def ccache():
|
||||||
|
cache.ram.initialize()
|
||||||
|
cache.disk.initialize()
|
||||||
|
|
||||||
form = FORM(
|
form = FORM(
|
||||||
P(TAG.BUTTON(
|
P(TAG.BUTTON(
|
||||||
T("Clear CACHE?"), _type="submit", _name="yes", _value="yes")),
|
T("Clear CACHE?"), _type="submit", _name="yes", _value="yes")),
|
||||||
@@ -385,7 +399,7 @@ def ccache():
|
|||||||
|
|
||||||
return (hours, minutes, seconds)
|
return (hours, minutes, seconds)
|
||||||
|
|
||||||
for key, value in cache.ram.storage.items():
|
for key, value in cache.ram.storage.iteritems():
|
||||||
if isinstance(value, dict):
|
if isinstance(value, dict):
|
||||||
ram['hits'] = value['hit_total'] - value['misses']
|
ram['hits'] = value['hit_total'] - value['misses']
|
||||||
ram['misses'] = value['misses']
|
ram['misses'] = value['misses']
|
||||||
@@ -565,3 +579,35 @@ def bg_graph_model():
|
|||||||
|
|
||||||
def graph_model():
|
def graph_model():
|
||||||
return dict(databases=databases, pgv=pgv)
|
return dict(databases=databases, pgv=pgv)
|
||||||
|
|
||||||
|
def auth_manage():
|
||||||
|
tablename = request.args(0)
|
||||||
|
if not tablename or not tablename in auth.db.tables:
|
||||||
|
return dict()
|
||||||
|
table = auth.db[tablename]
|
||||||
|
formname = '%s_grid' % tablename
|
||||||
|
if tablename == auth.settings.table_user_name:
|
||||||
|
auth.settings.table_user._plural = T('Users')
|
||||||
|
auth.settings.table_membership._plural = T('Roles')
|
||||||
|
auth.settings.table_membership._id.readable = False
|
||||||
|
auth.settings.table_membership.user_id.label = T('User')
|
||||||
|
auth.settings.table_membership.group_id.label = T('Role')
|
||||||
|
grid = SQLFORM.smartgrid(table, args=request.args[:1], user_signature=True,
|
||||||
|
linked_tables=[auth.settings.table_membership_name],
|
||||||
|
maxtextlength=1000, formname=formname)
|
||||||
|
else:
|
||||||
|
table._id.readable = False
|
||||||
|
auth.settings.table_permission.group_id.label = T('Role')
|
||||||
|
auth.settings.table_permission.name.label = T('Permission')
|
||||||
|
orderby = 'role' if table == auth.settings.table_group_name else 'group_id'
|
||||||
|
grid = SQLFORM.grid(table, args=request.args[:1], orderby=table[orderby],
|
||||||
|
user_signature=True, maxtextlength=1000, formname=formname)
|
||||||
|
return grid if request.extension=='load' else dict(grid=grid)
|
||||||
|
|
||||||
|
def manage():
|
||||||
|
tablename = request.args(0)
|
||||||
|
if tablename in auth.db.tables:
|
||||||
|
grid = SQLFORM.smartgrid(auth.db[tablename], args=request.args[:1])
|
||||||
|
else:
|
||||||
|
return dict()
|
||||||
|
return grid if request.extension=='load' else dict(grid=grid)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
# this file is released under public domain and you can use without limitations
|
# this file is released under public domain and you can use without limitations
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
## This is a samples controller
|
## This is a sample controller
|
||||||
## - index is the default action of any application
|
## - index is the default action of any application
|
||||||
## - user is required for authentication and authorization
|
## - user is required for authentication and authorization
|
||||||
## - download is for downloading files uploaded in the db (does streaming)
|
## - download is for downloading files uploaded in the db (does streaming)
|
||||||
@@ -31,6 +31,7 @@ def user():
|
|||||||
http://..../[app]/default/user/profile
|
http://..../[app]/default/user/profile
|
||||||
http://..../[app]/default/user/retrieve_password
|
http://..../[app]/default/user/retrieve_password
|
||||||
http://..../[app]/default/user/change_password
|
http://..../[app]/default/user/change_password
|
||||||
|
http://..../[app]/default/user/manage_users (requires membership in
|
||||||
use @auth.requires_login()
|
use @auth.requires_login()
|
||||||
@auth.requires_membership('group name')
|
@auth.requires_membership('group name')
|
||||||
@auth.requires_permission('read','table name',record_id)
|
@auth.requires_permission('read','table name',record_id)
|
||||||
@@ -38,7 +39,7 @@ def user():
|
|||||||
"""
|
"""
|
||||||
return dict(form=auth())
|
return dict(form=auth())
|
||||||
|
|
||||||
|
@cache.action()
|
||||||
def download():
|
def download():
|
||||||
"""
|
"""
|
||||||
allows downloading of uploaded files
|
allows downloading of uploaded files
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
'!langcode!': 'cs-cz',
|
'!langcode!': 'cs-cz',
|
||||||
'!langname!': 'čeština',
|
'!langname!': 'čeština',
|
||||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': 'Kolonka "Upravit" je nepovinný výraz, například "pole1=\'nováhodnota\'". Výsledky databázového JOINu nemůžete mazat ani upravovat.',
|
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': 'Kolonka "Upravit" je nepovinný výraz, například "pole1=\'nováhodnota\'". Výsledky databázového JOINu nemůžete mazat ani upravovat.',
|
||||||
|
'"User Exception" debug mode. An error ticket could be issued!': '"User Exception" debug mode. An error ticket could be issued!',
|
||||||
'%%{Row} in Table': '%%{řádek} v tabulce',
|
'%%{Row} in Table': '%%{řádek} v tabulce',
|
||||||
'%%{Row} selected': 'označených %%{řádek}',
|
'%%{Row} selected': 'označených %%{řádek}',
|
||||||
'%s %%{row} deleted': '%s smazaných %%{záznam}',
|
'%s %%{row} deleted': '%s smazaných %%{záznam}',
|
||||||
@@ -11,6 +12,7 @@
|
|||||||
'%Y-%m-%d': '%d.%m.%Y',
|
'%Y-%m-%d': '%d.%m.%Y',
|
||||||
'%Y-%m-%d %H:%M:%S': '%d.%m.%Y %H:%M:%S',
|
'%Y-%m-%d %H:%M:%S': '%d.%m.%Y %H:%M:%S',
|
||||||
'(requires internet access)': '(vyžaduje připojení k internetu)',
|
'(requires internet access)': '(vyžaduje připojení k internetu)',
|
||||||
|
'(requires internet access, experimental)': '(requires internet access, experimental)',
|
||||||
'(something like "it-it")': '(například "cs-cs")',
|
'(something like "it-it")': '(například "cs-cs")',
|
||||||
'@markmin\x01(file **gluon/contrib/plural_rules/%s.py** is not found)': '(soubor **gluon/contrib/plural_rules/%s.py** nenalezen)',
|
'@markmin\x01(file **gluon/contrib/plural_rules/%s.py** is not found)': '(soubor **gluon/contrib/plural_rules/%s.py** nenalezen)',
|
||||||
'@markmin\x01Searching: **%s** %%{file}': 'Hledání: **%s** %%{soubor}',
|
'@markmin\x01Searching: **%s** %%{file}': 'Hledání: **%s** %%{soubor}',
|
||||||
@@ -19,15 +21,18 @@
|
|||||||
'Access Control': 'Řízení přístupu',
|
'Access Control': 'Řízení přístupu',
|
||||||
'Add breakpoint': 'Přidat bod přerušení',
|
'Add breakpoint': 'Přidat bod přerušení',
|
||||||
'Additional code for your application': 'Další kód pro Vaši aplikaci',
|
'Additional code for your application': 'Další kód pro Vaši aplikaci',
|
||||||
|
'Admin design page': 'Admin design page',
|
||||||
'Admin language': 'jazyk rozhraní',
|
'Admin language': 'jazyk rozhraní',
|
||||||
'Administrative interface': 'pro administrátorské rozhraní klikněte sem',
|
'Administrative interface': 'pro administrátorské rozhraní klikněte sem',
|
||||||
'Administrative Interface': 'Administrátorské rozhraní',
|
'Administrative Interface': 'Administrátorské rozhraní',
|
||||||
'administrative interface': 'rozhraní pro správu',
|
'administrative interface': 'rozhraní pro správu',
|
||||||
'Administrator Password:': 'Administrátorské heslo:',
|
'Administrator Password:': 'Administrátorské heslo:',
|
||||||
'Ajax Recipes': 'Recepty s ajaxem',
|
'Ajax Recipes': 'Recepty s ajaxem',
|
||||||
|
'An error occured, please %s the page': 'An error occured, please %s the page',
|
||||||
'and rename it:': 'a přejmenovat na:',
|
'and rename it:': 'a přejmenovat na:',
|
||||||
'appadmin': 'appadmin',
|
'appadmin': 'appadmin',
|
||||||
'appadmin is disabled because insecure channel': 'appadmin je zakázaná bez zabezpečeného spojení',
|
'appadmin is disabled because insecure channel': 'appadmin je zakázaná bez zabezpečeného spojení',
|
||||||
|
'Application': 'Application',
|
||||||
'application "%s" uninstalled': 'application "%s" odinstalována',
|
'application "%s" uninstalled': 'application "%s" odinstalována',
|
||||||
'application compiled': 'aplikace zkompilována',
|
'application compiled': 'aplikace zkompilována',
|
||||||
'Application name:': 'Název aplikace:',
|
'Application name:': 'Název aplikace:',
|
||||||
@@ -36,8 +41,13 @@
|
|||||||
'Are you sure you want to delete this object?': 'Opravdu chcete odstranit tento objekt?',
|
'Are you sure you want to delete this object?': 'Opravdu chcete odstranit tento objekt?',
|
||||||
'Are you sure you want to uninstall application "%s"?': 'Opravdu chcete odinstalovat aplikaci "%s"?',
|
'Are you sure you want to uninstall application "%s"?': 'Opravdu chcete odinstalovat aplikaci "%s"?',
|
||||||
'arguments': 'arguments',
|
'arguments': 'arguments',
|
||||||
|
'at char %s': 'at char %s',
|
||||||
|
'at line %s': 'at line %s',
|
||||||
|
'ATTENTION:': 'ATTENTION:',
|
||||||
|
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.',
|
||||||
'Available Databases and Tables': 'Dostupné databáze a tabulky',
|
'Available Databases and Tables': 'Dostupné databáze a tabulky',
|
||||||
'back': 'zpět',
|
'back': 'zpět',
|
||||||
|
'Back to wizard': 'Back to wizard',
|
||||||
'Basics': 'Basics',
|
'Basics': 'Basics',
|
||||||
'Begin': 'Začít',
|
'Begin': 'Začít',
|
||||||
'breakpoint': 'bod přerušení',
|
'breakpoint': 'bod přerušení',
|
||||||
@@ -51,7 +61,8 @@
|
|||||||
'can be a git repo': 'může to být git repo',
|
'can be a git repo': 'může to být git repo',
|
||||||
'Cancel': 'Storno',
|
'Cancel': 'Storno',
|
||||||
'Cannot be empty': 'Nemůže být prázdné',
|
'Cannot be empty': 'Nemůže být prázdné',
|
||||||
'Change admin password': 'Změnit heslo pro strávu aplikací',
|
'Change Admin Password': 'Změnit heslo pro správu',
|
||||||
|
'Change admin password': 'Změnit heslo pro správu aplikací',
|
||||||
'Change password': 'Změna hesla',
|
'Change password': 'Změna hesla',
|
||||||
'check all': 'vše označit',
|
'check all': 'vše označit',
|
||||||
'Check for upgrades': 'Zkusit aktualizovat',
|
'Check for upgrades': 'Zkusit aktualizovat',
|
||||||
@@ -94,6 +105,7 @@
|
|||||||
'data uploaded': 'data nahrána',
|
'data uploaded': 'data nahrána',
|
||||||
'Database': 'Rozhraní databáze',
|
'Database': 'Rozhraní databáze',
|
||||||
'Database %s select': 'databáze %s výběr',
|
'Database %s select': 'databáze %s výběr',
|
||||||
|
'Database administration': 'Database administration',
|
||||||
'database administration': 'správa databáze',
|
'database administration': 'správa databáze',
|
||||||
'Date and Time': 'Datum a čas',
|
'Date and Time': 'Datum a čas',
|
||||||
'day': 'den',
|
'day': 'den',
|
||||||
@@ -104,6 +116,7 @@
|
|||||||
'Delete': 'Smazat',
|
'Delete': 'Smazat',
|
||||||
'delete': 'smazat',
|
'delete': 'smazat',
|
||||||
'delete all checked': 'smazat vše označené',
|
'delete all checked': 'smazat vše označené',
|
||||||
|
'delete plugin': 'delete plugin',
|
||||||
'Delete this file (you will be asked to confirm deletion)': 'Smazat tento soubor (budete požádán o potvrzení mazání)',
|
'Delete this file (you will be asked to confirm deletion)': 'Smazat tento soubor (budete požádán o potvrzení mazání)',
|
||||||
'Delete:': 'Smazat:',
|
'Delete:': 'Smazat:',
|
||||||
'deleted after first hit': 'smazat po prvním dosažení',
|
'deleted after first hit': 'smazat po prvním dosažení',
|
||||||
@@ -114,9 +127,9 @@
|
|||||||
'Deployment Recipes': 'Postupy pro deployment',
|
'Deployment Recipes': 'Postupy pro deployment',
|
||||||
'Description': 'Popis',
|
'Description': 'Popis',
|
||||||
'design': 'návrh',
|
'design': 'návrh',
|
||||||
'Detailed traceback description': 'Detailed traceback description',
|
'Detailed traceback description': 'Podrobný výpis prostředí',
|
||||||
'details': 'details',
|
'details': 'podrobnosti',
|
||||||
'direction: ltr': 'direction: ltr',
|
'direction: ltr': 'směr: ltr',
|
||||||
'Disable': 'Zablokovat',
|
'Disable': 'Zablokovat',
|
||||||
'DISK': 'DISK',
|
'DISK': 'DISK',
|
||||||
'Disk Cache Keys': 'Klíče diskové cache',
|
'Disk Cache Keys': 'Klíče diskové cache',
|
||||||
@@ -132,29 +145,37 @@
|
|||||||
'Edit': 'Upravit',
|
'Edit': 'Upravit',
|
||||||
'edit all': 'edit all',
|
'edit all': 'edit all',
|
||||||
'Edit application': 'Správa aplikace',
|
'Edit application': 'Správa aplikace',
|
||||||
|
'edit controller': 'edit controller',
|
||||||
'Edit current record': 'Upravit aktuální záznam',
|
'Edit current record': 'Upravit aktuální záznam',
|
||||||
'Edit Profile': 'Upravit profil',
|
'Edit Profile': 'Upravit profil',
|
||||||
'edit views:': 'upravit pohled:',
|
'edit views:': 'upravit pohled:',
|
||||||
'Editing file "%s"': 'Úprava souboru "%s"',
|
'Editing file "%s"': 'Úprava souboru "%s"',
|
||||||
'Editing Language file': 'Úprava jazykového souboru',
|
'Editing Language file': 'Úprava jazykového souboru',
|
||||||
|
'Editing Plural Forms File': 'Editing Plural Forms File',
|
||||||
'Email and SMS': 'Email a SMS',
|
'Email and SMS': 'Email a SMS',
|
||||||
'Enable': 'Odblokovat',
|
'Enable': 'Odblokovat',
|
||||||
'enter a number between %(min)g and %(max)g': 'zadejte číslo mezi %(min)g a %(max)g',
|
'enter a number between %(min)g and %(max)g': 'zadejte číslo mezi %(min)g a %(max)g',
|
||||||
'enter an integer between %(min)g and %(max)g': 'zadejte celé číslo mezi %(min)g a %(max)g',
|
'enter an integer between %(min)g and %(max)g': 'zadejte celé číslo mezi %(min)g a %(max)g',
|
||||||
'Error': 'Chyba',
|
'Error': 'Chyba',
|
||||||
'Error logs for "%(app)s"': 'Seznam výskytu chyb pro aplikaci "%(app)s"',
|
'Error logs for "%(app)s"': 'Seznam výskytu chyb pro aplikaci "%(app)s"',
|
||||||
'Error snapshot': 'Error snapshot',
|
'Error snapshot': 'Snapshot chyby',
|
||||||
'Error ticket': 'Error ticket',
|
'Error ticket': 'Ticket chyby',
|
||||||
'Errors': 'Chyby',
|
'Errors': 'Chyby',
|
||||||
'Exception instance attributes': 'Exception instance attributes',
|
'Exception %(extype)s: %(exvalue)s': 'Exception %(extype)s: %(exvalue)s',
|
||||||
|
'Exception %s': 'Exception %s',
|
||||||
|
'Exception instance attributes': 'Prvky instance výjimky',
|
||||||
|
'Expand Abbreviation': 'Expand Abbreviation',
|
||||||
'export as csv file': 'exportovat do .csv souboru',
|
'export as csv file': 'exportovat do .csv souboru',
|
||||||
'exposes': 'vystavuje',
|
'exposes': 'vystavuje',
|
||||||
'exposes:': 'vystavuje funkce:',
|
'exposes:': 'vystavuje funkce:',
|
||||||
'extends': 'rozšiřuje',
|
'extends': 'rozšiřuje',
|
||||||
|
'failed to compile file because:': 'soubor se nepodařilo zkompilovat, protože:',
|
||||||
'FAQ': 'Často kladené dotazy',
|
'FAQ': 'Často kladené dotazy',
|
||||||
'File': 'Soubor',
|
'File': 'Soubor',
|
||||||
'file': 'soubor',
|
'file': 'soubor',
|
||||||
|
'file "%(filename)s" created': 'file "%(filename)s" created',
|
||||||
'file saved on %(time)s': 'soubor uložen %(time)s',
|
'file saved on %(time)s': 'soubor uložen %(time)s',
|
||||||
|
'file saved on %s': 'soubor uložen %s',
|
||||||
'Filename': 'Název souboru',
|
'Filename': 'Název souboru',
|
||||||
'filter': 'filtr',
|
'filter': 'filtr',
|
||||||
'Find Next': 'Najít další',
|
'Find Next': 'Najít další',
|
||||||
@@ -165,12 +186,15 @@
|
|||||||
'Forms and Validators': 'Formuláře a validátory',
|
'Forms and Validators': 'Formuláře a validátory',
|
||||||
'Frames': 'Frames',
|
'Frames': 'Frames',
|
||||||
'Free Applications': 'Aplikace zdarma',
|
'Free Applications': 'Aplikace zdarma',
|
||||||
|
'Functions with no doctests will result in [passed] tests.': 'Functions with no doctests will result in [passed] tests.',
|
||||||
'Generate': 'Vytvořit',
|
'Generate': 'Vytvořit',
|
||||||
'Get from URL:': 'Stáhnout z internetu:',
|
'Get from URL:': 'Stáhnout z internetu:',
|
||||||
'Git Pull': 'Git Pull',
|
'Git Pull': 'Git Pull',
|
||||||
'Git Push': 'Git Push',
|
'Git Push': 'Git Push',
|
||||||
'Globals##debug': 'Globální proměnné',
|
'Globals##debug': 'Globální proměnné',
|
||||||
'go!': 'OK!',
|
'go!': 'OK!',
|
||||||
|
'Goto': 'Goto',
|
||||||
|
'graph model': 'graph model',
|
||||||
'Group %(group_id)s created': 'Skupina %(group_id)s vytvořena',
|
'Group %(group_id)s created': 'Skupina %(group_id)s vytvořena',
|
||||||
'Group ID': 'ID skupiny',
|
'Group ID': 'ID skupiny',
|
||||||
'Groups': 'Skupiny',
|
'Groups': 'Skupiny',
|
||||||
@@ -181,6 +205,8 @@
|
|||||||
'Home': 'Domovská stránka',
|
'Home': 'Domovská stránka',
|
||||||
'honored only if the expression evaluates to true': 'brát v potaz jen když se tato podmínka vyhodnotí kladně',
|
'honored only if the expression evaluates to true': 'brát v potaz jen když se tato podmínka vyhodnotí kladně',
|
||||||
'How did you get here?': 'Jak jste se sem vlastně dostal?',
|
'How did you get here?': 'Jak jste se sem vlastně dostal?',
|
||||||
|
'If start the upgrade, be patient, it may take a while to download': 'If start the upgrade, be patient, it may take a while to download',
|
||||||
|
'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.': 'If the report above contains a ticket number it indicates a failure in executing the controller, before any attempt to execute the doctests. This is usually due to an indentation error or an error outside function code.\nA green title indicates that all tests (if defined) passed. In this case test results are not shown.',
|
||||||
'import': 'import',
|
'import': 'import',
|
||||||
'Import/Export': 'Import/Export',
|
'Import/Export': 'Import/Export',
|
||||||
'includes': 'zahrnuje',
|
'includes': 'zahrnuje',
|
||||||
@@ -190,8 +216,8 @@
|
|||||||
'inspect attributes': 'inspect attributes',
|
'inspect attributes': 'inspect attributes',
|
||||||
'Install': 'Instalovat',
|
'Install': 'Instalovat',
|
||||||
'Installed applications': 'Nainstalované aplikace',
|
'Installed applications': 'Nainstalované aplikace',
|
||||||
'Interaction at %s line %s': 'Interaction at %s line %s',
|
'Interaction at %s line %s': 'Interakce v %s, na řádce %s',
|
||||||
'Interactive console': 'Interactive console',
|
'Interactive console': 'Interaktivní příkazová řádka',
|
||||||
'Internal State': 'Vnitřní stav',
|
'Internal State': 'Vnitřní stav',
|
||||||
'Introduction': 'Úvod',
|
'Introduction': 'Úvod',
|
||||||
'Invalid email': 'Neplatný email',
|
'Invalid email': 'Neplatný email',
|
||||||
@@ -203,6 +229,7 @@
|
|||||||
'It is %s %%{day} today.': 'Dnes je to %s %%{den}.',
|
'It is %s %%{day} today.': 'Dnes je to %s %%{den}.',
|
||||||
'Key': 'Klíč',
|
'Key': 'Klíč',
|
||||||
'Key bindings': 'Vazby klíčů',
|
'Key bindings': 'Vazby klíčů',
|
||||||
|
'Key bindings for ZenCoding Plugin': 'Key bindings for ZenCoding Plugin',
|
||||||
'languages': 'jazyky',
|
'languages': 'jazyky',
|
||||||
'Languages': 'Jazyky',
|
'Languages': 'Jazyky',
|
||||||
'Last name': 'Příjmení',
|
'Last name': 'Příjmení',
|
||||||
@@ -227,6 +254,7 @@
|
|||||||
'Lost Password': 'Zapomněl jste heslo',
|
'Lost Password': 'Zapomněl jste heslo',
|
||||||
'Lost password?': 'Zapomněl jste heslo?',
|
'Lost password?': 'Zapomněl jste heslo?',
|
||||||
'lost password?': 'zapomněl jste heslo?',
|
'lost password?': 'zapomněl jste heslo?',
|
||||||
|
'Manage': 'Manage',
|
||||||
'Manage Cache': 'Manage Cache',
|
'Manage Cache': 'Manage Cache',
|
||||||
'Menu Model': 'Model rozbalovací nabídky',
|
'Menu Model': 'Model rozbalovací nabídky',
|
||||||
'Models': 'Modely',
|
'Models': 'Modely',
|
||||||
@@ -237,6 +265,7 @@
|
|||||||
'modules': 'moduly',
|
'modules': 'moduly',
|
||||||
'My Sites': 'Správa aplikací',
|
'My Sites': 'Správa aplikací',
|
||||||
'Name': 'Jméno',
|
'Name': 'Jméno',
|
||||||
|
'new application "%s" created': 'nová aplikace "%s" vytvořena',
|
||||||
'New Application Wizard': 'Nový průvodce aplikací',
|
'New Application Wizard': 'Nový průvodce aplikací',
|
||||||
'New application wizard': 'Nový průvodce aplikací',
|
'New application wizard': 'Nový průvodce aplikací',
|
||||||
'New password': 'Nové heslo',
|
'New password': 'Nové heslo',
|
||||||
@@ -245,13 +274,16 @@
|
|||||||
'New simple application': 'Vytvořit primitivní aplikaci',
|
'New simple application': 'Vytvořit primitivní aplikaci',
|
||||||
'next': 'next',
|
'next': 'next',
|
||||||
'next 100 rows': 'dalších 100 řádků',
|
'next 100 rows': 'dalších 100 řádků',
|
||||||
'No databases in this application': 'V této aplikáci nejsou žádné databáze',
|
'No databases in this application': 'V této aplikaci nejsou žádné databáze',
|
||||||
'No Interaction yet': 'Ještě žádná interakce nenastala',
|
'No Interaction yet': 'Ještě žádná interakce nenastala',
|
||||||
'No ticket_storage.txt found under /private folder': 'Soubor ticket_storage.txt v adresáři /private nenalezen',
|
'No ticket_storage.txt found under /private folder': 'Soubor ticket_storage.txt v adresáři /private nenalezen',
|
||||||
'Object or table name': 'Objekt či tabulka',
|
'Object or table name': 'Objekt či tabulka',
|
||||||
'Old password': 'Původní heslo',
|
'Old password': 'Původní heslo',
|
||||||
'online designer': 'online návrhář',
|
'online designer': 'online návrhář',
|
||||||
'Online examples': 'Příklady online',
|
'Online examples': 'Příklady online',
|
||||||
|
'Open new app in new window': 'Open new app in new window',
|
||||||
|
'or alternatively': 'or alternatively',
|
||||||
|
'Or Get from URL:': 'Or Get from URL:',
|
||||||
'or import from csv file': 'nebo importovat z .csv souboru',
|
'or import from csv file': 'nebo importovat z .csv souboru',
|
||||||
'Origin': 'Původ',
|
'Origin': 'Původ',
|
||||||
'Original/Translation': 'Originál/Překlad',
|
'Original/Translation': 'Originál/Překlad',
|
||||||
@@ -261,12 +293,16 @@
|
|||||||
'Overwrite installed app': 'Přepsat instalovanou aplikaci',
|
'Overwrite installed app': 'Přepsat instalovanou aplikaci',
|
||||||
'Pack all': 'Zabalit',
|
'Pack all': 'Zabalit',
|
||||||
'Pack compiled': 'Zabalit zkompilované',
|
'Pack compiled': 'Zabalit zkompilované',
|
||||||
|
'pack plugin': 'pack plugin',
|
||||||
'password': 'heslo',
|
'password': 'heslo',
|
||||||
'Password': 'Heslo',
|
'Password': 'Heslo',
|
||||||
"Password fields don't match": 'Hesla se neshodují',
|
"Password fields don't match": 'Hesla se neshodují',
|
||||||
|
'Peeking at file': 'Peeking at file',
|
||||||
'Please': 'Prosím',
|
'Please': 'Prosím',
|
||||||
|
'Plugin "%s" in application': 'Plugin "%s" in application',
|
||||||
'plugins': 'zásuvné moduly',
|
'plugins': 'zásuvné moduly',
|
||||||
'Plugins': 'Zásuvné moduly',
|
'Plugins': 'Zásuvné moduly',
|
||||||
|
'Plural Form #%s': 'Plural Form #%s',
|
||||||
'Plural-Forms:': 'Množná čísla:',
|
'Plural-Forms:': 'Množná čísla:',
|
||||||
'Powered by': 'Poháněno',
|
'Powered by': 'Poháněno',
|
||||||
'Preface': 'Předmluva',
|
'Preface': 'Předmluva',
|
||||||
@@ -292,6 +328,7 @@
|
|||||||
'Register': 'Zaregistrovat se',
|
'Register': 'Zaregistrovat se',
|
||||||
'Registration identifier': 'Registrační identifikátor',
|
'Registration identifier': 'Registrační identifikátor',
|
||||||
'Registration key': 'Registrační klíč',
|
'Registration key': 'Registrační klíč',
|
||||||
|
'reload': 'reload',
|
||||||
'Reload routes': 'Znovu nahrát cesty',
|
'Reload routes': 'Znovu nahrát cesty',
|
||||||
'Remember me (for 30 days)': 'Zapamatovat na 30 dní',
|
'Remember me (for 30 days)': 'Zapamatovat na 30 dní',
|
||||||
'Remove compiled': 'Odstranit zkompilované',
|
'Remove compiled': 'Odstranit zkompilované',
|
||||||
@@ -313,6 +350,7 @@
|
|||||||
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Spustí testy v tomto souboru (ke spuštění všech testů, použijte tlačítko 'test')",
|
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Spustí testy v tomto souboru (ke spuštění všech testů, použijte tlačítko 'test')",
|
||||||
'Running on %s': 'Běží na %s',
|
'Running on %s': 'Běží na %s',
|
||||||
'Save': 'Uložit',
|
'Save': 'Uložit',
|
||||||
|
'Save file:': 'Save file:',
|
||||||
'Save via Ajax': 'Uložit pomocí Ajaxu',
|
'Save via Ajax': 'Uložit pomocí Ajaxu',
|
||||||
'Saved file hash:': 'hash uloženého souboru:',
|
'Saved file hash:': 'hash uloženého souboru:',
|
||||||
'Semantic': 'Modul semantic',
|
'Semantic': 'Modul semantic',
|
||||||
@@ -321,6 +359,7 @@
|
|||||||
'session expired': 'session expired',
|
'session expired': 'session expired',
|
||||||
'Set Breakpoint on %s at line %s: %s': 'Bod přerušení nastaven v souboru %s na řádce %s: %s',
|
'Set Breakpoint on %s at line %s: %s': 'Bod přerušení nastaven v souboru %s na řádce %s: %s',
|
||||||
'shell': 'příkazová řádka',
|
'shell': 'příkazová řádka',
|
||||||
|
'Singular Form': 'Singular Form',
|
||||||
'Site': 'Správa aplikací',
|
'Site': 'Správa aplikací',
|
||||||
'Size of cache:': 'Velikost cache:',
|
'Size of cache:': 'Velikost cache:',
|
||||||
'skip to generate': 'skip to generate',
|
'skip to generate': 'skip to generate',
|
||||||
@@ -329,6 +368,7 @@
|
|||||||
'Start searching': 'Začít hledání',
|
'Start searching': 'Začít hledání',
|
||||||
'Start wizard': 'Spustit průvodce',
|
'Start wizard': 'Spustit průvodce',
|
||||||
'state': 'stav',
|
'state': 'stav',
|
||||||
|
'Static': 'Static',
|
||||||
'static': 'statické soubory',
|
'static': 'statické soubory',
|
||||||
'Static files': 'Statické soubory',
|
'Static files': 'Statické soubory',
|
||||||
'Statistics': 'Statistika',
|
'Statistics': 'Statistika',
|
||||||
@@ -345,6 +385,7 @@
|
|||||||
'Table name': 'Název tabulky',
|
'Table name': 'Název tabulky',
|
||||||
'Temporary': 'Dočasný',
|
'Temporary': 'Dočasný',
|
||||||
'test': 'test',
|
'test': 'test',
|
||||||
|
'Testing application': 'Testing application',
|
||||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"Dotaz" je podmínka, například "db.tabulka1.pole1==\'hodnota\'". Podmínka "db.tabulka1.pole1==db.tabulka2.pole2" pak vytvoří SQL JOIN.',
|
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"Dotaz" je podmínka, například "db.tabulka1.pole1==\'hodnota\'". Podmínka "db.tabulka1.pole1==db.tabulka2.pole2" pak vytvoří SQL JOIN.',
|
||||||
'The application logic, each URL path is mapped in one exposed function in the controller': 'Logika aplikace: každá URL je mapována na funkci vystavovanou kontrolérem.',
|
'The application logic, each URL path is mapped in one exposed function in the controller': 'Logika aplikace: každá URL je mapována na funkci vystavovanou kontrolérem.',
|
||||||
'The Core': 'Jádro (The Core)',
|
'The Core': 'Jádro (The Core)',
|
||||||
@@ -352,13 +393,19 @@
|
|||||||
'The output of the file is a dictionary that was rendered by the view %s': 'Výstup ze souboru je slovník, který se zobrazil v pohledu %s.',
|
'The output of the file is a dictionary that was rendered by the view %s': 'Výstup ze souboru je slovník, který se zobrazil v pohledu %s.',
|
||||||
'The presentations layer, views are also known as templates': 'Prezentační vrstva: pohledy či templaty (šablony)',
|
'The presentations layer, views are also known as templates': 'Prezentační vrstva: pohledy či templaty (šablony)',
|
||||||
'The Views': 'Pohledy (The Views)',
|
'The Views': 'Pohledy (The Views)',
|
||||||
|
'There are no controllers': 'There are no controllers',
|
||||||
|
'There are no modules': 'There are no modules',
|
||||||
'There are no plugins': 'Žádné moduly nejsou instalovány.',
|
'There are no plugins': 'Žádné moduly nejsou instalovány.',
|
||||||
'There are no private files': 'Žádné soukromé soubory neexistují.',
|
'There are no private files': 'Žádné soukromé soubory neexistují.',
|
||||||
'There are no static files': 'There are no static files',
|
'There are no static files': 'There are no static files',
|
||||||
|
'There are no translators, only default language is supported': 'There are no translators, only default language is supported',
|
||||||
|
'There are no views': 'There are no views',
|
||||||
'These files are not served, they are only available from within your app': 'Tyto soubory jsou klientům nepřístupné. K dispozici jsou pouze v rámci aplikace.',
|
'These files are not served, they are only available from within your app': 'Tyto soubory jsou klientům nepřístupné. K dispozici jsou pouze v rámci aplikace.',
|
||||||
'These files are served without processing, your images go here': 'Tyto soubory jsou servírovány bez přídavné logiky, sem patří např. obrázky.',
|
'These files are served without processing, your images go here': 'Tyto soubory jsou servírovány bez přídavné logiky, sem patří např. obrázky.',
|
||||||
'This App': 'Tato aplikace',
|
'This App': 'Tato aplikace',
|
||||||
'This is a copy of the scaffolding application': 'Toto je kopie aplikace skelet.',
|
'This is a copy of the scaffolding application': 'Toto je kopie aplikace skelet.',
|
||||||
|
'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk': 'This is an experimental feature and it needs more testing. If you decide to upgrade you do it at your own risk',
|
||||||
|
'This is the %(filename)s template': 'This is the %(filename)s template',
|
||||||
'this page to see if a breakpoint was hit and debug interaction is required.': 'tuto stránku, abyste uviděli, zda se dosáhlo bodu přerušení.',
|
'this page to see if a breakpoint was hit and debug interaction is required.': 'tuto stránku, abyste uviděli, zda se dosáhlo bodu přerušení.',
|
||||||
'Ticket': 'Ticket',
|
'Ticket': 'Ticket',
|
||||||
'Ticket ID': 'Ticket ID',
|
'Ticket ID': 'Ticket ID',
|
||||||
@@ -373,16 +420,24 @@
|
|||||||
'too short': 'Příliš krátké',
|
'too short': 'Příliš krátké',
|
||||||
'Traceback': 'Traceback',
|
'Traceback': 'Traceback',
|
||||||
'Translation strings for the application': 'Překlad textů pro aplikaci',
|
'Translation strings for the application': 'Překlad textů pro aplikaci',
|
||||||
|
'try something like': 'try something like',
|
||||||
'Try the mobile interface': 'Zkuste rozhraní pro mobilní zařízení',
|
'Try the mobile interface': 'Zkuste rozhraní pro mobilní zařízení',
|
||||||
|
'try view': 'try view',
|
||||||
'Twitter': 'Twitter',
|
'Twitter': 'Twitter',
|
||||||
'Type python statement in here and hit Return (Enter) to execute it.': 'Type python statement in here and hit Return (Enter) to execute it.',
|
'Type python statement in here and hit Return (Enter) to execute it.': 'Type python statement in here and hit Return (Enter) to execute it.',
|
||||||
|
'Type some Python code in here and hit Return (Enter) to execute it.': 'Type some Python code in here and hit Return (Enter) to execute it.',
|
||||||
|
'Unable to check for upgrades': 'Unable to check for upgrades',
|
||||||
'unable to parse csv file': 'csv soubor nedá sa zpracovat',
|
'unable to parse csv file': 'csv soubor nedá sa zpracovat',
|
||||||
'uncheck all': 'vše odznačit',
|
'uncheck all': 'vše odznačit',
|
||||||
'Uninstall': 'Odinstalovat',
|
'Uninstall': 'Odinstalovat',
|
||||||
'update': 'aktualizovat',
|
'update': 'aktualizovat',
|
||||||
'update all languages': 'aktualizovat všechny jazyky',
|
'update all languages': 'aktualizovat všechny jazyky',
|
||||||
'Update:': 'Upravit:',
|
'Update:': 'Upravit:',
|
||||||
|
'Upgrade': 'Upgrade',
|
||||||
|
'upgrade now': 'upgrade now',
|
||||||
|
'upgrade now to %s': 'upgrade now to %s',
|
||||||
'upload': 'nahrát',
|
'upload': 'nahrát',
|
||||||
|
'Upload': 'Upload',
|
||||||
'Upload a package:': 'Nahrát balík:',
|
'Upload a package:': 'Nahrát balík:',
|
||||||
'Upload and install packed application': 'Nahrát a instalovat zabalenou aplikaci',
|
'Upload and install packed application': 'Nahrát a instalovat zabalenou aplikaci',
|
||||||
'upload file:': 'nahrát soubor:',
|
'upload file:': 'nahrát soubor:',
|
||||||
@@ -409,6 +464,8 @@
|
|||||||
'web2py is up to date': 'Máte aktuální verzi web2py.',
|
'web2py is up to date': 'Máte aktuální verzi web2py.',
|
||||||
'web2py online debugger': 'Ladící online web2py program',
|
'web2py online debugger': 'Ladící online web2py program',
|
||||||
'web2py Recent Tweets': 'Štěbetání na Twitteru o web2py',
|
'web2py Recent Tweets': 'Štěbetání na Twitteru o web2py',
|
||||||
|
'web2py upgrade': 'web2py upgrade',
|
||||||
|
'web2py upgraded; please restart it': 'web2py upgraded; please restart it',
|
||||||
'Welcome': 'Vítejte',
|
'Welcome': 'Vítejte',
|
||||||
'Welcome to web2py': 'Vitejte ve web2py',
|
'Welcome to web2py': 'Vitejte ve web2py',
|
||||||
'Welcome to web2py!': 'Vítejte ve web2py!',
|
'Welcome to web2py!': 'Vítejte ve web2py!',
|
||||||
|
|||||||
@@ -8,23 +8,23 @@
|
|||||||
'%s selected': '%s seleccionado(s)',
|
'%s selected': '%s seleccionado(s)',
|
||||||
'%Y-%m-%d': '%Y-%m-%d',
|
'%Y-%m-%d': '%Y-%m-%d',
|
||||||
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||||
'(something like "it-it")': '(algo como "it-it")',
|
'(something like "it-it")': '(algo como "eso-eso")',
|
||||||
'A new version of web2py is available': 'Hay una nueva versión de web2py disponible',
|
'A new version of web2py is available': 'Hay una nueva versión de web2py disponible',
|
||||||
'A new version of web2py is available: %s': 'Hay una nueva versión de web2py disponible: %s',
|
'A new version of web2py is available: %s': 'Hay una nueva versión de web2py disponible: %s',
|
||||||
'about': 'acerca de',
|
'about': 'acerca de',
|
||||||
'About': 'Acerca de',
|
'About': 'Acerca de',
|
||||||
'About application': 'Acerca de la aplicación',
|
'About application': 'Acerca de la aplicación',
|
||||||
'Access Control': 'Access Control',
|
'Access Control': 'Control de Acceso',
|
||||||
'additional code for your application': 'código adicional para su aplicación',
|
'additional code for your application': 'código adicional para su aplicación',
|
||||||
'admin disabled because no admin password': ' por falta de contraseña',
|
'admin disabled because no admin password': ' por falta de contraseña',
|
||||||
'admin disabled because not supported on google app engine': 'admin deshabilitado, no es soportado en GAE',
|
'admin disabled because not supported on google app engine': 'admin deshabilitado, no es soportado en GAE',
|
||||||
'admin disabled because unable to access password file': 'admin deshabilitado, imposible acceder al archivo con la contraseña',
|
'admin disabled because unable to access password file': 'admin deshabilitado, imposible acceder al archivo con la contraseña',
|
||||||
'Admin is disabled because insecure channel': 'Admin deshabilitado, el canal no es seguro',
|
'Admin is disabled because insecure channel': 'Admin deshabilitado, el canal no es seguro',
|
||||||
'Admin is disabled because unsecure channel': 'Admin deshabilitado, el canal no es seguro',
|
'Admin is disabled because unsecure channel': 'Admin deshabilitado, el canal no es seguro',
|
||||||
'Administrative Interface': 'Administrative Interface',
|
'Administrative Interface': 'Interfaz Administrativa',
|
||||||
'Administrative interface': 'Interfaz administrativa',
|
'Administrative interface': 'Interfaz administrativa',
|
||||||
'Administrator Password:': 'Contraseña del Administrador:',
|
'Administrator Password:': 'Contraseña del Administrador:',
|
||||||
'Ajax Recipes': 'Ajax Recipes',
|
'Ajax Recipes': 'Recetas AJAX',
|
||||||
'and rename it (required):': 'y renombrela (requerido):',
|
'and rename it (required):': 'y renombrela (requerido):',
|
||||||
'and rename it:': ' y renombrelo:',
|
'and rename it:': ' y renombrelo:',
|
||||||
'appadmin': 'appadmin',
|
'appadmin': 'appadmin',
|
||||||
@@ -33,41 +33,41 @@
|
|||||||
'application compiled': 'aplicación compilada',
|
'application compiled': 'aplicación compilada',
|
||||||
'application is compiled and cannot be designed': 'la aplicación está compilada y no puede ser modificada',
|
'application is compiled and cannot be designed': 'la aplicación está compilada y no puede ser modificada',
|
||||||
'Are you sure you want to delete file "%s"?': '¿Está seguro que desea eliminar el archivo "%s"?',
|
'Are you sure you want to delete file "%s"?': '¿Está seguro que desea eliminar el archivo "%s"?',
|
||||||
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
|
'Are you sure you want to delete this object?': '¿Está seguro que desea borrar este objeto?',
|
||||||
'Are you sure you want to uninstall application "%s"': '¿Está seguro que desea desinstalar la aplicación "%s"',
|
'Are you sure you want to uninstall application "%s"': '¿Está seguro que desea desinstalar la aplicación "%s"',
|
||||||
'Are you sure you want to uninstall application "%s"?': '¿Está seguro que desea desinstalar la aplicación "%s"?',
|
'Are you sure you want to uninstall application "%s"?': '¿Está seguro que desea desinstalar la aplicación "%s"?',
|
||||||
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATENCION: Inicio de sesión requiere una conexión segura (HTTPS) o localhost.',
|
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': 'ATENCION: Inicio de sesión requiere una conexión segura (HTTPS) o localhost.',
|
||||||
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATENCION: NO EJECUTE VARIAS PRUEBAS SIMULTANEAMENTE, NO SON THREAD SAFE.',
|
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': 'ATENCION: NO EJECUTE VARIAS PRUEBAS SIMULTANEAMENTE, NO SON THREAD SAFE.',
|
||||||
'ATTENTION: you cannot edit the running application!': 'ATENCION: no puede modificar la aplicación que se ejecuta!',
|
'ATTENTION: you cannot edit the running application!': 'ATENCION: no puede modificar la aplicación que está ejecutandose!',
|
||||||
'Authentication': 'Autenticación',
|
'Authentication': 'Autenticación',
|
||||||
'Available Databases and Tables': 'Bases de datos y tablas disponibles',
|
'Available Databases and Tables': 'Bases de datos y tablas disponibles',
|
||||||
'Buy this book': 'Buy this book',
|
'Buy this book': 'Compra este libro',
|
||||||
'cache': 'cache',
|
'cache': 'cache',
|
||||||
'Cache': 'Cache',
|
'Cache': 'Cache',
|
||||||
'Cache Keys': 'Cache Keys',
|
'Cache Keys': 'Llaves de la Cache',
|
||||||
'cache, errors and sessions cleaned': 'cache, errores y sesiones eliminados',
|
'cache, errors and sessions cleaned': 'cache, errores y sesiones eliminados',
|
||||||
'Cannot be empty': 'No puede estar vacío',
|
'Cannot be empty': 'No puede estar vacío',
|
||||||
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'No se puede compilar: hay errores en su aplicación. Depure, corrija errores y vuelva a intentarlo.',
|
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': 'No se puede compilar: hay errores en su aplicación. Depure, corrija errores y vuelva a intentarlo.',
|
||||||
'cannot create file': 'no es posible crear archivo',
|
'cannot create file': 'no es posible crear archivo',
|
||||||
'cannot upload file "%(filename)s"': 'no es posible subir archivo "%(filename)s"',
|
'cannot upload file "%(filename)s"': 'no es posible subir archivo "%(filename)s"',
|
||||||
'Change Password': 'Cambie Contraseña',
|
'Change Password': 'Cambie la contraseña',
|
||||||
'change password': 'cambie contraseña',
|
'change password': 'cambie la contraseña',
|
||||||
'check all': 'marcar todos',
|
'check all': 'marcar todos',
|
||||||
'Check to delete': 'Marque para eliminar',
|
'Check to delete': 'Marque para eliminar',
|
||||||
'clean': 'limpiar',
|
'clean': 'limpiar',
|
||||||
'Clear CACHE?': 'Clear CACHE?',
|
'Clear CACHE?': '¿Limpiar CACHE?',
|
||||||
'Clear DISK': 'Clear DISK',
|
'Clear DISK': '¿Limpiar DISCO',
|
||||||
'Clear RAM': 'Clear RAM',
|
'Clear RAM': '¿Limpiar RAM',
|
||||||
'click to check for upgrades': 'haga clic para buscar actualizaciones',
|
'click to check for upgrades': 'haga clic para buscar actualizaciones',
|
||||||
'Client IP': 'IP del Cliente',
|
'Client IP': 'IP del Cliente',
|
||||||
'Community': 'Community',
|
'Community': 'Comunidad',
|
||||||
'compile': 'compilar',
|
'compile': 'compilar',
|
||||||
'compiled application removed': 'aplicación compilada removida',
|
'compiled application removed': 'aplicación compilada eliminada',
|
||||||
'Components and Plugins': 'Components and Plugins',
|
'Components and Plugins': 'Componentes y Plugins',
|
||||||
'Controller': 'Controlador',
|
'Controller': 'Controlador',
|
||||||
'Controllers': 'Controladores',
|
'Controllers': 'Controladores',
|
||||||
'controllers': 'controladores',
|
'controllers': 'controladores',
|
||||||
'Copyright': 'Derechos de autor',
|
'Copyright': 'Copyright',
|
||||||
'create file with filename:': 'cree archivo con nombre:',
|
'create file with filename:': 'cree archivo con nombre:',
|
||||||
'Create new application': 'Cree una nueva aplicación',
|
'Create new application': 'Cree una nueva aplicación',
|
||||||
'create new application:': 'nombre de la nueva aplicación:',
|
'create new application:': 'nombre de la nueva aplicación:',
|
||||||
@@ -83,24 +83,24 @@
|
|||||||
'database administration': 'administración base de datos',
|
'database administration': 'administración base de datos',
|
||||||
'Date and Time': 'Fecha y Hora',
|
'Date and Time': 'Fecha y Hora',
|
||||||
'db': 'db',
|
'db': 'db',
|
||||||
'DB Model': 'Modelo "db"',
|
'DB Model': 'Modelo "DB"',
|
||||||
'defines tables': 'define tablas',
|
'defines tables': 'define tablas',
|
||||||
'Delete': 'Elimine',
|
'Delete': 'Eliminar',
|
||||||
'delete': 'eliminar',
|
'delete': 'eliminar',
|
||||||
'delete all checked': 'eliminar marcados',
|
'delete all checked': 'eliminar marcados',
|
||||||
'Delete:': 'Elimine:',
|
'Delete:': 'Eliminar:',
|
||||||
'Demo': 'Demo',
|
'Demo': 'Demo',
|
||||||
'Deploy on Google App Engine': 'Instale en Google App Engine',
|
'Deploy on Google App Engine': 'Despliegue en Google App Engine',
|
||||||
'Deployment Recipes': 'Deployment Recipes',
|
'Deployment Recipes': 'Recetas de despliegue',
|
||||||
'Description': 'Descripción',
|
'Description': 'Descripción',
|
||||||
'DESIGN': 'DISEÑO',
|
'DESIGN': 'DISEÑO',
|
||||||
'design': 'modificar',
|
'design': 'modificar',
|
||||||
'Design for': 'Diseño para',
|
'Design for': 'Diseño por',
|
||||||
'DISK': 'DISK',
|
'DISK': 'DISK',
|
||||||
'Disk Cache Keys': 'Disk Cache Keys',
|
'Disk Cache Keys': 'Llaves de Cache en Disco',
|
||||||
'Disk Cleared': 'Disk Cleared',
|
'Disk Cleared': 'Disco limpiado',
|
||||||
'Documentation': 'Documentación',
|
'Documentation': 'Documentación',
|
||||||
"Don't know what to do?": "Don't know what to do?",
|
"Don't know what to do?": "¿No sabe que hacer?",
|
||||||
'done!': 'listo!',
|
'done!': 'listo!',
|
||||||
'Download': 'Download',
|
'Download': 'Download',
|
||||||
'E-mail': 'Correo electrónico',
|
'E-mail': 'Correo electrónico',
|
||||||
@@ -115,14 +115,14 @@
|
|||||||
'Edit This App': 'Edite esta App',
|
'Edit This App': 'Edite esta App',
|
||||||
'Editing file': 'Editando archivo',
|
'Editing file': 'Editando archivo',
|
||||||
'Editing file "%s"': 'Editando archivo "%s"',
|
'Editing file "%s"': 'Editando archivo "%s"',
|
||||||
'Email and SMS': 'Email and SMS',
|
'Email and SMS': 'Correo electrónico y SMS',
|
||||||
'Error logs for "%(app)s"': 'Bitácora de errores en "%(app)s"',
|
'Error logs for "%(app)s"': 'Bitácora de errores en "%(app)s"',
|
||||||
'Errors': 'Errors',
|
'Errors': 'Errores',
|
||||||
'errors': 'errores',
|
'errors': 'errores',
|
||||||
'export as csv file': 'exportar como archivo CSV',
|
'export as csv file': 'exportar como archivo CSV',
|
||||||
'exposes': 'expone',
|
'exposes': 'expone',
|
||||||
'extends': 'extiende',
|
'extends': 'extiende',
|
||||||
'failed to reload module': 'recarga del módulo ha fallado',
|
'failed to reload module': 'la recarga del módulo ha fallado',
|
||||||
'FAQ': 'FAQ',
|
'FAQ': 'FAQ',
|
||||||
'file "%(filename)s" created': 'archivo "%(filename)s" creado',
|
'file "%(filename)s" created': 'archivo "%(filename)s" creado',
|
||||||
'file "%(filename)s" deleted': 'archivo "%(filename)s" eliminado',
|
'file "%(filename)s" deleted': 'archivo "%(filename)s" eliminado',
|
||||||
@@ -134,17 +134,17 @@
|
|||||||
'file saved on %(time)s': 'archivo guardado %(time)s',
|
'file saved on %(time)s': 'archivo guardado %(time)s',
|
||||||
'file saved on %s': 'archivo guardado %s',
|
'file saved on %s': 'archivo guardado %s',
|
||||||
'First name': 'Nombre',
|
'First name': 'Nombre',
|
||||||
'Forms and Validators': 'Forms and Validators',
|
'Forms and Validators': 'Formularios y validadores',
|
||||||
'Free Applications': 'Free Applications',
|
'Free Applications': 'Aplicaciones Libres',
|
||||||
'Functions with no doctests will result in [passed] tests.': 'Funciones sin doctests equivalen a pruebas [aceptadas].',
|
'Functions with no doctests will result in [passed] tests.': 'Funciones sin doctests equivalen a pruebas [aceptadas].',
|
||||||
'Group ID': 'ID de Grupo',
|
'Group ID': 'ID de Grupo',
|
||||||
'Groups': 'Groups',
|
'Groups': 'Groupos',
|
||||||
'Hello World': 'Hola Mundo',
|
'Hello World': 'Hola Mundo',
|
||||||
'help': 'ayuda',
|
'help': 'ayuda',
|
||||||
'Home': 'Home',
|
'Home': 'Home',
|
||||||
'How did you get here?': 'How did you get here?',
|
'How did you get here?': '¿Cómo llegaste aquí?',
|
||||||
'htmledit': 'htmledit',
|
'htmledit': 'htmledit',
|
||||||
'import': 'import',
|
'import': 'importar',
|
||||||
'Import/Export': 'Importar/Exportar',
|
'Import/Export': 'Importar/Exportar',
|
||||||
'includes': 'incluye',
|
'includes': 'incluye',
|
||||||
'Index': 'Indice',
|
'Index': 'Indice',
|
||||||
@@ -153,14 +153,14 @@
|
|||||||
'Installed applications': 'Aplicaciones instaladas',
|
'Installed applications': 'Aplicaciones instaladas',
|
||||||
'internal error': 'error interno',
|
'internal error': 'error interno',
|
||||||
'Internal State': 'Estado Interno',
|
'Internal State': 'Estado Interno',
|
||||||
'Introduction': 'Introduction',
|
'Introduction': 'Introducción',
|
||||||
'Invalid action': 'Acción inválida',
|
'Invalid action': 'Acción inválida',
|
||||||
'Invalid email': 'Correo inválido',
|
'Invalid email': 'Correo electrónico inválido',
|
||||||
'invalid password': 'contraseña inválida',
|
'invalid password': 'contraseña inválida',
|
||||||
'Invalid Query': 'Consulta inválida',
|
'Invalid Query': 'Consulta inválida',
|
||||||
'invalid request': 'solicitud inválida',
|
'invalid request': 'solicitud inválida',
|
||||||
'invalid ticket': 'tiquete inválido',
|
'invalid ticket': 'tiquete inválido',
|
||||||
'Key': 'Key',
|
'Key': 'Llave',
|
||||||
'language file "%(filename)s" created/updated': 'archivo de lenguaje "%(filename)s" creado/actualizado',
|
'language file "%(filename)s" created/updated': 'archivo de lenguaje "%(filename)s" creado/actualizado',
|
||||||
'Language files (static strings) updated': 'Archivos de lenguaje (cadenas estáticas) actualizados',
|
'Language files (static strings) updated': 'Archivos de lenguaje (cadenas estáticas) actualizados',
|
||||||
'languages': 'lenguajes',
|
'languages': 'lenguajes',
|
||||||
@@ -169,10 +169,10 @@
|
|||||||
'Last name': 'Apellido',
|
'Last name': 'Apellido',
|
||||||
'Last saved on:': 'Guardado en:',
|
'Last saved on:': 'Guardado en:',
|
||||||
'Layout': 'Diseño de página',
|
'Layout': 'Diseño de página',
|
||||||
'Layout Plugins': 'Layout Plugins',
|
'Layout Plugins': 'Plugins de diseño',
|
||||||
'Layouts': 'Layouts',
|
'Layouts': 'Diseños de páginas',
|
||||||
'License for': 'Licencia para',
|
'License for': 'Licencia para',
|
||||||
'Live Chat': 'Live Chat',
|
'Live Chat': 'Chat en vivo',
|
||||||
'loading...': 'cargando...',
|
'loading...': 'cargando...',
|
||||||
'login': 'inicio de sesión',
|
'login': 'inicio de sesión',
|
||||||
'Login': 'Inicio de sesión',
|
'Login': 'Inicio de sesión',
|
||||||
@@ -180,16 +180,16 @@
|
|||||||
'logout': 'fin de sesión',
|
'logout': 'fin de sesión',
|
||||||
'Logout': 'Fin de sesión',
|
'Logout': 'Fin de sesión',
|
||||||
'Lost Password': 'Contraseña perdida',
|
'Lost Password': 'Contraseña perdida',
|
||||||
'lost password?': '¿olvido la contraseña?',
|
'lost password?': '¿Olvido la contraseña?',
|
||||||
'Main Menu': 'Menú principal',
|
'Main Menu': 'Menú principal',
|
||||||
'Manage Cache': 'Manage Cache',
|
'Manage Cache': 'Manejar la Cache',
|
||||||
'Menu Model': 'Modelo "menu"',
|
'Menu Model': 'Modelo "menu"',
|
||||||
'merge': 'combinar',
|
'merge': 'combinar',
|
||||||
'Models': 'Modelos',
|
'Models': 'Modelos',
|
||||||
'models': 'modelos',
|
'models': 'modelos',
|
||||||
'Modules': 'Módulos',
|
'Modules': 'Módulos',
|
||||||
'modules': 'módulos',
|
'modules': 'módulos',
|
||||||
'My Sites': 'My Sites',
|
'My Sites': 'Mis Sitios',
|
||||||
'Name': 'Nombre',
|
'Name': 'Nombre',
|
||||||
'new application "%s" created': 'nueva aplicación "%s" creada',
|
'new application "%s" created': 'nueva aplicación "%s" creada',
|
||||||
'New Record': 'Registro nuevo',
|
'New Record': 'Registro nuevo',
|
||||||
@@ -202,9 +202,9 @@
|
|||||||
'or provide application url:': 'o provea URL de la aplicación:',
|
'or provide application url:': 'o provea URL de la aplicación:',
|
||||||
'Origin': 'Origen',
|
'Origin': 'Origen',
|
||||||
'Original/Translation': 'Original/Traducción',
|
'Original/Translation': 'Original/Traducción',
|
||||||
'Other Plugins': 'Other Plugins',
|
'Other Plugins': 'Otros Plugins',
|
||||||
'Other Recipes': 'Other Recipes',
|
'Other Recipes': 'Otas Recetas',
|
||||||
'Overview': 'Overview',
|
'Overview': 'Resumen',
|
||||||
'pack all': 'empaquetar todo',
|
'pack all': 'empaquetar todo',
|
||||||
'pack compiled': 'empaquete compiladas',
|
'pack compiled': 'empaquete compiladas',
|
||||||
'Password': 'Contraseña',
|
'Password': 'Contraseña',
|
||||||
@@ -215,20 +215,20 @@
|
|||||||
'previous 100 rows': '100 filas anteriores',
|
'previous 100 rows': '100 filas anteriores',
|
||||||
'Python': 'Python',
|
'Python': 'Python',
|
||||||
'Query:': 'Consulta:',
|
'Query:': 'Consulta:',
|
||||||
'Quick Examples': 'Quick Examples',
|
'Quick Examples': 'Ejemplos Rápidos',
|
||||||
'RAM': 'RAM',
|
'RAM': 'RAM',
|
||||||
'RAM Cache Keys': 'RAM Cache Keys',
|
'RAM Cache Keys':'Llaves de la RAM Cache',
|
||||||
'Ram Cleared': 'Ram Cleared',
|
'Ram Cleared': 'Ram Limpiada',
|
||||||
'Recipes': 'Recipes',
|
'Recipes': 'Recetas',
|
||||||
'Record': 'registro',
|
'Record': 'registro',
|
||||||
'record does not exist': 'el registro no existe',
|
'record does not exist': 'el registro no existe',
|
||||||
'Record ID': 'ID de Registro',
|
'Record ID': 'ID de Registro',
|
||||||
'Record id': 'id de registro',
|
'Record id': 'id de registro',
|
||||||
'Register': 'Registrese',
|
'Register': 'Registrese',
|
||||||
'register': 'registrese',
|
'register': 'registrese',
|
||||||
'Registration key': 'Contraseña de Registro',
|
'Registration key': 'Llave de Registro',
|
||||||
'remove compiled': 'eliminar compiladas',
|
'remove compiled': 'eliminar compiladas',
|
||||||
'Reset Password key': 'Reset Password key',
|
'Reset Password key': 'Restaurar Llave de la Contraseña',
|
||||||
'Resolve Conflict file': 'archivo Resolución de Conflicto',
|
'Resolve Conflict file': 'archivo Resolución de Conflicto',
|
||||||
'restore': 'restaurar',
|
'restore': 'restaurar',
|
||||||
'revert': 'revertir',
|
'revert': 'revertir',
|
||||||
@@ -237,20 +237,20 @@
|
|||||||
'Rows selected': 'Filas seleccionadas',
|
'Rows selected': 'Filas seleccionadas',
|
||||||
'save': 'guardar',
|
'save': 'guardar',
|
||||||
'Saved file hash:': 'Hash del archivo guardado:',
|
'Saved file hash:': 'Hash del archivo guardado:',
|
||||||
'Semantic': 'Semantic',
|
'Semantic': 'Semantica',
|
||||||
'Services': 'Services',
|
'Services': 'Servicios',
|
||||||
'session expired': 'sesión expirada',
|
'session expired': 'sesión expirada',
|
||||||
'shell': 'shell',
|
'shell': 'terminal',
|
||||||
'site': 'sitio',
|
'site': 'sitio',
|
||||||
'Size of cache:': 'Size of cache:',
|
'Size of cache:': 'Tamaño del Cache:',
|
||||||
'some files could not be removed': 'algunos archivos no pudieron ser removidos',
|
'some files could not be removed': 'algunos archivos no pudieron ser removidos',
|
||||||
'state': 'estado',
|
'state': 'estado',
|
||||||
'static': 'estáticos',
|
'static': 'estáticos',
|
||||||
'Static files': 'Archivos estáticos',
|
'Static files': 'Archivos estáticos',
|
||||||
'Statistics': 'Statistics',
|
'Statistics': 'Estadísticas',
|
||||||
'Stylesheet': 'Hoja de estilo',
|
'Stylesheet': 'Hoja de estilo',
|
||||||
'submit': 'submit',
|
'submit': 'enviar',
|
||||||
'Support': 'Support',
|
'Support': 'Soporte',
|
||||||
'Sure you want to delete this object?': '¿Está seguro que desea eliminar este objeto?',
|
'Sure you want to delete this object?': '¿Está seguro que desea eliminar este objeto?',
|
||||||
'Table': 'tabla',
|
'Table': 'tabla',
|
||||||
'Table name': 'Nombre de la tabla',
|
'Table name': 'Nombre de la tabla',
|
||||||
@@ -258,11 +258,11 @@
|
|||||||
'Testing application': 'Probando aplicación',
|
'Testing application': 'Probando aplicación',
|
||||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'La "consulta" es una condición como "db.tabla1.campo1==\'valor\'". Algo como "db.tabla1.campo1==db.tabla2.campo2" resulta en un JOIN SQL.',
|
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'La "consulta" es una condición como "db.tabla1.campo1==\'valor\'". Algo como "db.tabla1.campo1==db.tabla2.campo2" resulta en un JOIN SQL.',
|
||||||
'the application logic, each URL path is mapped in one exposed function in the controller': 'la lógica de la aplicación, cada ruta URL se mapea en una función expuesta en el controlador',
|
'the application logic, each URL path is mapped in one exposed function in the controller': 'la lógica de la aplicación, cada ruta URL se mapea en una función expuesta en el controlador',
|
||||||
'The Core': 'The Core',
|
'The Core': 'El Núcleo',
|
||||||
'the data representation, define database tables and sets': 'la representación de datos, define tablas y conjuntos de base de datos',
|
'the data representation, define database tables and sets': 'la representación de datos, define tablas y conjuntos de base de datos',
|
||||||
'The output of the file is a dictionary that was rendered by the view %s': 'La salida del archivo es un diccionario escenificado por la vista %s',
|
'The output of the file is a dictionary that was rendered by the view %s': 'La salida de dicha función es un diccionario que es desplegado por la vista %s',
|
||||||
'the presentations layer, views are also known as templates': 'la capa de presentación, las vistas también son llamadas plantillas',
|
'the presentations layer, views are also known as templates': 'la capa de presentación, las vistas también son llamadas plantillas',
|
||||||
'The Views': 'The Views',
|
'The Views': 'Las Vistas',
|
||||||
'There are no controllers': 'No hay controladores',
|
'There are no controllers': 'No hay controladores',
|
||||||
'There are no models': 'No hay modelos',
|
'There are no models': 'No hay modelos',
|
||||||
'There are no modules': 'No hay módulos',
|
'There are no modules': 'No hay módulos',
|
||||||
@@ -270,14 +270,14 @@
|
|||||||
'There are no translators, only default language is supported': 'No hay traductores, sólo el lenguaje por defecto es soportado',
|
'There are no translators, only default language is supported': 'No hay traductores, sólo el lenguaje por defecto es soportado',
|
||||||
'There are no views': 'No hay vistas',
|
'There are no views': 'No hay vistas',
|
||||||
'these files are served without processing, your images go here': 'estos archivos son servidos sin procesar, sus imágenes van aquí',
|
'these files are served without processing, your images go here': 'estos archivos son servidos sin procesar, sus imágenes van aquí',
|
||||||
'This App': 'This App',
|
'This App': 'Esta Aplicación',
|
||||||
'This is a copy of the scaffolding application': 'Esta es una copia de la aplicación de andamiaje',
|
'This is a copy of the scaffolding application': 'Esta es una copia de la aplicación de andamiaje',
|
||||||
'This is the %(filename)s template': 'Esta es la plantilla %(filename)s',
|
'This is the %(filename)s template': 'Esta es la plantilla %(filename)s',
|
||||||
'Ticket': 'Tiquete',
|
'Ticket': 'Tiquete',
|
||||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
'Time in Cache (h:m:s)': 'Tiempo en Cache (h:m:s)',
|
||||||
'Timestamp': 'Timestamp',
|
'Timestamp': 'Marca de tiempo',
|
||||||
'to previous version.': 'a la versión previa.',
|
'to previous version.': 'a la versión previa.',
|
||||||
'translation strings for the application': 'cadenas de caracteres de traducción para la aplicación',
|
'translation strings for the application': 'cadenas de carácteres de traducción para la aplicación',
|
||||||
'try': 'intente',
|
'try': 'intente',
|
||||||
'try something like': 'intente algo como',
|
'try something like': 'intente algo como',
|
||||||
'Twitter': 'Twitter',
|
'Twitter': 'Twitter',
|
||||||
@@ -306,12 +306,12 @@
|
|||||||
'views': 'vistas',
|
'views': 'vistas',
|
||||||
'web2py is up to date': 'web2py está actualizado',
|
'web2py is up to date': 'web2py está actualizado',
|
||||||
'web2py Recent Tweets': 'Tweets Recientes de web2py',
|
'web2py Recent Tweets': 'Tweets Recientes de web2py',
|
||||||
'Welcome': 'Welcome',
|
'Welcome': 'Bienvenido',
|
||||||
'Welcome %s': 'Bienvenido %s',
|
'Welcome %s': 'Bienvenido %s',
|
||||||
'Welcome to web2py': 'Bienvenido a web2py',
|
'Welcome to web2py': 'Bienvenido a web2py',
|
||||||
'Welcome to web2py!': 'Welcome to web2py!',
|
'Welcome to web2py!': '¡Bienvenido to web2py!',
|
||||||
'Which called the function %s located in the file %s': 'La cual llamó la función %s localizada en el archivo %s',
|
'Which called the function %s located in the file %s': 'La cual llamó la función %s localizada en el archivo %s',
|
||||||
'YES': 'SI',
|
'YES': 'SÍ',
|
||||||
'You are successfully running web2py': 'Usted está ejecutando web2py exitosamente',
|
'You are successfully running web2py': 'Usted está ejecutando web2py exitosamente',
|
||||||
'You can modify this application and adapt it to your needs': 'Usted puede modificar esta aplicación y adaptarla a sus necesidades',
|
'You can modify this application and adapt it to your needs': 'Usted puede modificar esta aplicación y adaptarla a sus necesidades',
|
||||||
'You visited the url %s': 'Usted visitó la url %s',
|
'You visited the url %s': 'Usted visitó la url %s',
|
||||||
|
|||||||
@@ -3,14 +3,14 @@
|
|||||||
'!langcode!': 'fr',
|
'!langcode!': 'fr',
|
||||||
'!langname!': 'Français',
|
'!langname!': 'Français',
|
||||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" est une expression optionnelle comme "champ1=\'nouvellevaleur\'". Vous ne pouvez mettre à jour ou supprimer les résultats d\'un JOIN',
|
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" est une expression optionnelle comme "champ1=\'nouvellevaleur\'". Vous ne pouvez mettre à jour ou supprimer les résultats d\'un JOIN',
|
||||||
'%s %%{row} deleted': '%s rangées supprimées',
|
'%s %%{row} deleted': '%s lignes supprimées',
|
||||||
'%s %%{row} updated': '%s rangées mises à jour',
|
'%s %%{row} updated': '%s lignes mises à jour',
|
||||||
'%s selected': '%s sélectionné',
|
'%s selected': '%s sélectionné',
|
||||||
'%Y-%m-%d': '%Y-%m-%d',
|
'%Y-%m-%d': '%Y-%m-%d',
|
||||||
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||||
'About': 'À propos',
|
'About': 'À propos',
|
||||||
'Access Control': "Contrôle d'accès",
|
'Access Control': "Contrôle d'accès",
|
||||||
'Administrative Interface': 'Administrative Interface',
|
'Administrative Interface': "Interface d'administration",
|
||||||
'Administrative interface': "Interface d'administration",
|
'Administrative interface': "Interface d'administration",
|
||||||
'Ajax Recipes': 'Recettes Ajax',
|
'Ajax Recipes': 'Recettes Ajax',
|
||||||
'appadmin is disabled because insecure channel': "appadmin est désactivée parce que le canal n'est pas sécurisé",
|
'appadmin is disabled because insecure channel': "appadmin est désactivée parce que le canal n'est pas sécurisé",
|
||||||
@@ -20,38 +20,40 @@
|
|||||||
'Buy this book': 'Acheter ce livre',
|
'Buy this book': 'Acheter ce livre',
|
||||||
'cache': 'cache',
|
'cache': 'cache',
|
||||||
'Cache': 'Cache',
|
'Cache': 'Cache',
|
||||||
'Cache Keys': 'Cache Keys',
|
'Cache Keys': 'Clés de cache',
|
||||||
'Cannot be empty': 'Ne peut pas être vide',
|
'Cannot be empty': 'Ne peut pas être vide',
|
||||||
'change password': 'changer le mot de passe',
|
'change password': 'changer le mot de passe',
|
||||||
'Check to delete': 'Cliquez pour supprimer',
|
'Check to delete': 'Cliquez pour supprimer',
|
||||||
'Check to delete:': 'Cliquez pour supprimer:',
|
'Check to delete:': 'Cliquez pour supprimer:',
|
||||||
'Clear CACHE?': 'Clear CACHE?',
|
'Clear CACHE?': 'Vider le CACHE?',
|
||||||
'Clear DISK': 'Clear DISK',
|
'Clear DISK': 'Vider le DISQUE',
|
||||||
'Clear RAM': 'Clear RAM',
|
'Clear RAM': 'Vider la RAM',
|
||||||
'Client IP': 'IP client',
|
'Client IP': 'IP client',
|
||||||
'Community': 'Communauté',
|
'Community': 'Communauté',
|
||||||
'Components and Plugins': 'Components and Plugins',
|
'Components and Plugins': 'Composants et Plugins',
|
||||||
'Controller': 'Contrôleur',
|
'Controller': 'Contrôleur',
|
||||||
'Copyright': 'Copyright',
|
'Copyright': 'Copyright',
|
||||||
|
'Created By': 'Créé par',
|
||||||
|
'Created On': 'Créé le',
|
||||||
'Current request': 'Demande actuelle',
|
'Current request': 'Demande actuelle',
|
||||||
'Current response': 'Réponse actuelle',
|
'Current response': 'Réponse actuelle',
|
||||||
'Current session': 'Session en cours',
|
'Current session': 'Session en cours',
|
||||||
'customize me!': 'personnalisez-moi!',
|
'customize me!': 'personnalisez-moi!',
|
||||||
'data uploaded': 'données téléchargées',
|
'data uploaded': 'données téléchargées',
|
||||||
'Database': 'base de données',
|
'Database': 'base de données',
|
||||||
'Database %s select': 'base de données %s select',
|
'Database %s select': 'base de données %s selectionnée',
|
||||||
'db': 'db',
|
'db': 'bdd',
|
||||||
'DB Model': 'Modèle DB',
|
'DB Model': 'Modèle BDD',
|
||||||
'Delete:': 'Supprimer:',
|
'Delete:': 'Supprimer:',
|
||||||
'Demo': 'Démo',
|
'Demo': 'Démo',
|
||||||
'Deployment Recipes': 'Recettes de déploiement',
|
'Deployment Recipes': 'Recettes de déploiement',
|
||||||
'Description': 'Description',
|
'Description': 'Description',
|
||||||
'design': 'design',
|
'design': 'design',
|
||||||
'DISK': 'DISK',
|
'DISK': 'DISQUE',
|
||||||
'Disk Cache Keys': 'Disk Cache Keys',
|
'Disk Cache Keys': 'Clés de cache du disque',
|
||||||
'Disk Cleared': 'Disk Cleared',
|
'Disk Cleared': 'Disque vidé',
|
||||||
'Documentation': 'Documentation',
|
'Documentation': 'Documentation',
|
||||||
"Don't know what to do?": "Don't know what to do?",
|
"Don't know what to do?": 'Vous ne savez pas quoi faire?',
|
||||||
'done!': 'fait!',
|
'done!': 'fait!',
|
||||||
'Download': 'Téléchargement',
|
'Download': 'Téléchargement',
|
||||||
'E-mail': 'E-mail',
|
'E-mail': 'E-mail',
|
||||||
@@ -59,8 +61,8 @@
|
|||||||
'Edit current record': "Modifier l'enregistrement courant",
|
'Edit current record': "Modifier l'enregistrement courant",
|
||||||
'edit profile': 'modifier le profil',
|
'edit profile': 'modifier le profil',
|
||||||
'Edit This App': 'Modifier cette application',
|
'Edit This App': 'Modifier cette application',
|
||||||
'Email and SMS': 'Email and SMS',
|
'Email and SMS': 'Email et SMS',
|
||||||
'enter an integer between %(min)g and %(max)g': 'enter an integer between %(min)g and %(max)g',
|
'enter an integer between %(min)g and %(max)g': 'entrez un entier entre %(min)g et %(max)g',
|
||||||
'Errors': 'Erreurs',
|
'Errors': 'Erreurs',
|
||||||
'export as csv file': 'exporter sous forme de fichier csv',
|
'export as csv file': 'exporter sous forme de fichier csv',
|
||||||
'FAQ': 'FAQ',
|
'FAQ': 'FAQ',
|
||||||
@@ -69,10 +71,10 @@
|
|||||||
'Free Applications': 'Applications gratuites',
|
'Free Applications': 'Applications gratuites',
|
||||||
'Function disabled': 'Fonction désactivée',
|
'Function disabled': 'Fonction désactivée',
|
||||||
'Group ID': 'Groupe ID',
|
'Group ID': 'Groupe ID',
|
||||||
'Groups': 'Groups',
|
'Groups': 'Groupes',
|
||||||
'Hello World': 'Bonjour le monde',
|
'Hello World': 'Bonjour le monde',
|
||||||
'Home': 'Accueil',
|
'Home': 'Accueil',
|
||||||
'How did you get here?': 'How did you get here?',
|
'How did you get here?': 'Comment êtes-vous arrivé ici?',
|
||||||
'import': 'import',
|
'import': 'import',
|
||||||
'Import/Export': 'Importer/Exporter',
|
'Import/Export': 'Importer/Exporter',
|
||||||
'Index': 'Index',
|
'Index': 'Index',
|
||||||
@@ -83,48 +85,51 @@
|
|||||||
'Invalid email': 'E-mail invalide',
|
'Invalid email': 'E-mail invalide',
|
||||||
'Invalid Query': 'Requête Invalide',
|
'Invalid Query': 'Requête Invalide',
|
||||||
'invalid request': 'requête invalide',
|
'invalid request': 'requête invalide',
|
||||||
'Key': 'Key',
|
'Is Active': 'Est actif',
|
||||||
|
'Key': 'Clé',
|
||||||
'Last name': 'Nom',
|
'Last name': 'Nom',
|
||||||
'Layout': 'Mise en page',
|
'Layout': 'Mise en page',
|
||||||
'Layout Plugins': 'Layout Plugins',
|
'Layout Plugins': 'Plugins de mise en page',
|
||||||
'Layouts': 'Layouts',
|
'Layouts': 'Mises en page',
|
||||||
'Live chat': 'Chat live',
|
'Live chat': 'Chat en direct',
|
||||||
'Live Chat': 'Live Chat',
|
'Live Chat': 'Chat en direct',
|
||||||
'login': 'connectez-vous',
|
'login': 'connectez-vous',
|
||||||
'Login': 'Connectez-vous',
|
'Login': 'Connectez-vous',
|
||||||
'logout': 'déconnectez-vous',
|
'logout': 'déconnectez-vous',
|
||||||
'lost password': 'mot de passe perdu',
|
'lost password': 'mot de passe perdu',
|
||||||
'Lost Password': 'Mot de passe perdu',
|
'Lost Password': 'Mot de passe perdu',
|
||||||
'Lost password?': 'Lost password?',
|
'Lost password?': 'Mot de passe perdu?',
|
||||||
'lost password?': 'mot de passe perdu?',
|
'lost password?': 'mot de passe perdu?',
|
||||||
'Main Menu': 'Menu principal',
|
'Main Menu': 'Menu principal',
|
||||||
'Manage Cache': 'Manage Cache',
|
'Manage Cache': 'Gérer le Cache',
|
||||||
'Menu Model': 'Menu modèle',
|
'Menu Model': 'Menu modèle',
|
||||||
'My Sites': 'My Sites',
|
'Modified By': 'Modifié par',
|
||||||
|
'Modified On': 'Modifié le',
|
||||||
|
'My Sites': 'Mes sites',
|
||||||
'Name': 'Nom',
|
'Name': 'Nom',
|
||||||
'New Record': 'Nouvel enregistrement',
|
'New Record': 'Nouvel enregistrement',
|
||||||
'new record inserted': 'nouvel enregistrement inséré',
|
'new record inserted': 'nouvel enregistrement inséré',
|
||||||
'next 100 rows': '100 prochaines lignes',
|
'next 100 rows': '100 prochaines lignes',
|
||||||
'No databases in this application': "Cette application n'a pas de bases de données",
|
'No databases in this application': "Cette application n'a pas de bases de données",
|
||||||
'Object or table name': 'Object or table name',
|
'Object or table name': 'Objet ou nom de table',
|
||||||
'Online examples': 'Exemples en ligne',
|
'Online examples': 'Exemples en ligne',
|
||||||
'or import from csv file': "ou importer d'un fichier CSV",
|
'or import from csv file': "ou importer d'un fichier CSV",
|
||||||
'Origin': 'Origine',
|
'Origin': 'Origine',
|
||||||
'Other Plugins': 'Other Plugins',
|
'Other Plugins': 'Autres Plugins',
|
||||||
'Other Recipes': 'Autres recettes',
|
'Other Recipes': 'Autres recettes',
|
||||||
'Overview': 'Présentation',
|
'Overview': 'Présentation',
|
||||||
'Password': 'Mot de passe',
|
'Password': 'Mot de passe',
|
||||||
"Password fields don't match": 'Les mots de passe ne correspondent pas',
|
"Password fields don't match": 'Les mots de passe ne correspondent pas',
|
||||||
'Plugins': 'Plugiciels',
|
'Plugins': 'Plugins',
|
||||||
'Powered by': 'Alimenté par',
|
'Powered by': 'Alimenté par',
|
||||||
'Preface': 'Préface',
|
'Preface': 'Préface',
|
||||||
'previous 100 rows': '100 lignes précédentes',
|
'previous 100 rows': '100 lignes précédentes',
|
||||||
'Python': 'Python',
|
'Python': 'Python',
|
||||||
'Query:': 'Requête:',
|
'Query:': 'Requête:',
|
||||||
'Quick Examples': 'Examples Rapides',
|
'Quick Examples': 'Exemples Rapides',
|
||||||
'RAM': 'RAM',
|
'RAM': 'RAM',
|
||||||
'RAM Cache Keys': 'RAM Cache Keys',
|
'RAM Cache Keys': 'Clés de cache de la RAM',
|
||||||
'Ram Cleared': 'Ram Cleared',
|
'Ram Cleared': 'Ram vidée',
|
||||||
'Readme': 'Lisez-moi',
|
'Readme': 'Lisez-moi',
|
||||||
'Recipes': 'Recettes',
|
'Recipes': 'Recettes',
|
||||||
'Record': 'enregistrement',
|
'Record': 'enregistrement',
|
||||||
@@ -133,7 +138,7 @@
|
|||||||
'Record id': "id d'enregistrement",
|
'Record id': "id d'enregistrement",
|
||||||
'Register': "S'inscrire",
|
'Register': "S'inscrire",
|
||||||
'register': "s'inscrire",
|
'register': "s'inscrire",
|
||||||
'Registration identifier': 'Registration identifier',
|
'Registration identifier': "Identifiant d'enregistrement",
|
||||||
'Registration key': "Clé d'enregistrement",
|
'Registration key': "Clé d'enregistrement",
|
||||||
'Remember me (for 30 days)': 'Se souvenir de moi (pendant 30 jours)',
|
'Remember me (for 30 days)': 'Se souvenir de moi (pendant 30 jours)',
|
||||||
'Request reset password': 'Demande de réinitialiser le mot clé',
|
'Request reset password': 'Demande de réinitialiser le mot clé',
|
||||||
@@ -144,42 +149,42 @@
|
|||||||
'Rows selected': 'Lignes sélectionnées',
|
'Rows selected': 'Lignes sélectionnées',
|
||||||
'Semantic': 'Sémantique',
|
'Semantic': 'Sémantique',
|
||||||
'Services': 'Services',
|
'Services': 'Services',
|
||||||
'Size of cache:': 'Size of cache:',
|
'Size of cache:': 'Taille du cache:',
|
||||||
'state': 'état',
|
'state': 'état',
|
||||||
'Statistics': 'Statistics',
|
'Statistics': 'Statistiques',
|
||||||
'Stylesheet': 'Feuille de style',
|
'Stylesheet': 'Feuille de style',
|
||||||
'submit': 'submit',
|
'submit': 'soumettre',
|
||||||
'Submit': 'Soumettre',
|
'Submit': 'Soumettre',
|
||||||
'Support': 'Support',
|
'Support': 'Support',
|
||||||
'Sure you want to delete this object?': 'Êtes-vous sûr de vouloir supprimer cet objet?',
|
'Sure you want to delete this object?': 'Êtes-vous sûr de vouloir supprimer cet objet?',
|
||||||
'Table': 'tableau',
|
'Table': 'tableau',
|
||||||
'Table name': 'Nom du tableau',
|
'Table name': 'Nom du tableau',
|
||||||
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'La "query" est une condition comme "db.table1.champ1==\'valeur\'". Quelque chose comme "db.table1.champ1==db.table2.champ2" résulte en un JOIN SQL.',
|
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': 'La "requête" est une condition comme "db.table1.champ1==\'valeur\'". Quelque chose comme "db.table1.champ1==db.table2.champ2" résulte en un JOIN SQL.',
|
||||||
'The Core': 'Le noyau',
|
'The Core': 'Le noyau',
|
||||||
'The output of the file is a dictionary that was rendered by the view %s': 'La sortie de ce fichier est un dictionnaire qui été restitué par la vue %s',
|
'The output of the file is a dictionary that was rendered by the view %s': 'La sortie de ce fichier est un dictionnaire qui été restitué par la vue %s',
|
||||||
'The Views': 'Les Vues',
|
'The Views': 'Les Vues',
|
||||||
'This App': 'Cette Appli',
|
'This App': 'Cette Appli',
|
||||||
'This is a copy of the scaffolding application': "Ceci est une copie de l'application échafaudage",
|
'This is a copy of the scaffolding application': "Ceci est une copie de l'application échafaudage",
|
||||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
'Time in Cache (h:m:s)': 'Temps en Cache (h:m:s)',
|
||||||
'Timestamp': 'Horodatage',
|
'Timestamp': 'Horodatage',
|
||||||
'Twitter': 'Twitter',
|
'Twitter': 'Twitter',
|
||||||
'unable to parse csv file': "incapable d'analyser le fichier cvs",
|
'unable to parse csv file': "incapable d'analyser le fichier cvs",
|
||||||
'Update:': 'Mise à jour:',
|
'Update:': 'Mise à jour:',
|
||||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Employez (...)&(...) pour AND, (...)|(...) pour OR, and ~(...) pour NOT pour construire des requêtes plus complexes.',
|
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Employez (...)&(...) pour AND, (...)|(...) pour OR, and ~(...) pour NOT afin de construire des requêtes plus complexes.',
|
||||||
'User %(id)s Logged-in': 'Utilisateur %(id)s connecté',
|
'User %(id)s Logged-in': 'Utilisateur %(id)s connecté',
|
||||||
'User %(id)s Registered': 'Utilisateur %(id)s enregistré',
|
'User %(id)s Registered': 'Utilisateur %(id)s enregistré',
|
||||||
'User ID': 'ID utilisateur',
|
'User ID': 'ID utilisateur',
|
||||||
'User Voice': 'User Voice',
|
'User Voice': "Voix de l'utilisateur",
|
||||||
'Verify Password': 'Vérifiez le mot de passe',
|
'Verify Password': 'Vérifiez le mot de passe',
|
||||||
'Videos': 'Vidéos',
|
'Videos': 'Vidéos',
|
||||||
'View': 'Présentation',
|
'View': 'Présentation',
|
||||||
'Web2py': 'Web2py',
|
'Web2py': 'Web2py',
|
||||||
'Welcome': 'Bienvenu',
|
'Welcome': 'Bienvenue',
|
||||||
'Welcome %s': 'Bienvenue %s',
|
'Welcome %s': 'Bienvenue %s',
|
||||||
'Welcome to web2py': 'Bienvenue à web2py',
|
'Welcome to web2py': 'Bienvenue à web2py',
|
||||||
'Welcome to web2py!': 'Welcome to web2py!',
|
'Welcome to web2py!': 'Bienvenue à web2py!',
|
||||||
'Which called the function %s located in the file %s': 'Qui a appelé la fonction %s se trouvant dans le fichier %s',
|
'Which called the function %s located in the file %s': 'Qui a appelé la fonction %s se trouvant dans le fichier %s',
|
||||||
'You are successfully running web2py': 'Vous roulez avec succès web2py',
|
'You are successfully running web2py': 'Vous exécutez avec succès web2py',
|
||||||
'You can modify this application and adapt it to your needs': "Vous pouvez modifier cette application et l'adapter à vos besoins",
|
'You can modify this application and adapt it to your needs': "Vous pouvez modifier cette application et l'adapter à vos besoins",
|
||||||
'You visited the url %s': "Vous avez visité l'URL %s",
|
'You visited the url %s': "Vous avez visité l'URL %s",
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,272 @@
|
|||||||
|
# coding: utf8
|
||||||
|
{
|
||||||
|
'!langcode!': 'id',
|
||||||
|
'!langname!': 'Indonesian',
|
||||||
|
'%d days ago': '%d hari yang lalu',
|
||||||
|
'%d hours ago': '%d jam yang lalu',
|
||||||
|
'%d minutes ago': '%d menit yang lalu',
|
||||||
|
'%d months ago': '%d bulan yang lalu',
|
||||||
|
'%d seconds ago': '%d detik yang lalu',
|
||||||
|
'%d seconds from now': '%d detik dari sekarang',
|
||||||
|
'%d weeks ago': '%d minggu yang lalu',
|
||||||
|
'%d years ago': '%d tahun yang lalu',
|
||||||
|
'%s %%{row} deleted': '%s %%{row} dihapus',
|
||||||
|
'%s %%{row} updated': '%s %%{row} diperbarui',
|
||||||
|
'%s selected': '%s dipilih',
|
||||||
|
'%Y-%m-%d': '%d-%m-%Y',
|
||||||
|
'%Y-%m-%d %H:%M:%S': '%d-%m-%Y %H:%M:%S',
|
||||||
|
'(requires internet access, experimental)': '(membutuhkan akses internet, eksperimental)',
|
||||||
|
'(something like "it-it")': '(sesuatu seperti "it-it")',
|
||||||
|
'1 day ago': '1 hari yang lalu',
|
||||||
|
'1 hour ago': '1 jam yang lalu',
|
||||||
|
'1 minute ago': '1 menit yang lalu',
|
||||||
|
'1 month ago': '1 bulan yang lalu',
|
||||||
|
'1 second ago': '1 detik yang lalu',
|
||||||
|
'1 week ago': '1 minggu yang lalu',
|
||||||
|
'1 year ago': '1 tahun yang lalu',
|
||||||
|
'< Previous': '< Sebelumnya',
|
||||||
|
'About': 'Tentang',
|
||||||
|
'About application': 'Tentang Aplikasi',
|
||||||
|
'Add': 'Tambah',
|
||||||
|
'Additional code for your application': 'Tambahan kode untuk aplikasi Anda',
|
||||||
|
'Address': 'Alamat',
|
||||||
|
'Admin language': 'Bahasa Admin',
|
||||||
|
'administrative interface': 'antarmuka administrative',
|
||||||
|
'Administrator Password:': 'Administrator Kata Sandi:',
|
||||||
|
'Ajax Recipes': 'Resep Ajax',
|
||||||
|
'An error occured, please %s the page': 'Terjadi kesalahan, silakan %s halaman',
|
||||||
|
'And': 'Dan',
|
||||||
|
'and rename it:': 'dan memberi nama baru itu:',
|
||||||
|
'Answer': 'Jawaban',
|
||||||
|
'appadmin is disabled because insecure channel': 'AppAdmin dinonaktifkan karena kanal tidak aman',
|
||||||
|
'application "%s" uninstalled': 'applikasi "%s" dihapus',
|
||||||
|
'application compiled': 'aplikasi dikompilasi',
|
||||||
|
'Application name:': 'Nama Applikasi:',
|
||||||
|
'are not used yet': 'tidak digunakan lagi',
|
||||||
|
'Are you sure you want to delete this object?': 'Apakah Anda yakin ingin menghapus ini?',
|
||||||
|
'Are you sure you want to uninstall application "%s"?': 'Apakah Anda yakin ingin menghapus aplikasi "%s"?',
|
||||||
|
'Available Databases and Tables': 'Database dan Tabel yang tersedia',
|
||||||
|
'Back': 'Kembali',
|
||||||
|
'Buy this book': 'Beli buku ini',
|
||||||
|
'cache, errors and sessions cleaned': 'cache, kesalahan dan sesi dibersihkan',
|
||||||
|
'can be a git repo': 'bisa menjadi repo git',
|
||||||
|
'Cancel': 'Batalkan',
|
||||||
|
'Cannot be empty': 'Tidak boleh kosong',
|
||||||
|
'Change admin password': 'Ubah kata sandi admin',
|
||||||
|
'Change password': 'Ubah kata sandi',
|
||||||
|
'Check for upgrades': 'Periksa upgrade',
|
||||||
|
'Check to delete': 'Centang untuk menghapus',
|
||||||
|
'Checking for upgrades...': 'Memeriksa untuk upgrade...',
|
||||||
|
'Clean': 'Bersih',
|
||||||
|
'Clear': 'Hapus',
|
||||||
|
'Clear CACHE?': 'Hapus CACHE?',
|
||||||
|
'Clear DISK': 'Hapus DISK',
|
||||||
|
'Clear RAM': 'Hapus RAM',
|
||||||
|
'Click row to expand traceback': 'Klik baris untuk memperluas traceback',
|
||||||
|
'Close': 'Tutup',
|
||||||
|
'collapse/expand all': 'kempis / memperluas semua',
|
||||||
|
'Community': 'Komunitas',
|
||||||
|
'Compile': 'Kompilasi',
|
||||||
|
'compiled application removed': 'aplikasi yang dikompilasi dihapus',
|
||||||
|
'Components and Plugins': 'Komponen dan Plugin',
|
||||||
|
'contains': 'mengandung',
|
||||||
|
'Controllers': 'Kontrolir',
|
||||||
|
'controllers': 'kontrolir',
|
||||||
|
'Copyright': 'Hak Cipta',
|
||||||
|
'Count': 'Hitung',
|
||||||
|
'Create': 'Buat',
|
||||||
|
'create file with filename:': 'buat file dengan nama:',
|
||||||
|
'created by': 'dibuat oleh',
|
||||||
|
'CSV (hidden cols)': 'CSV (kolom tersembunyi)',
|
||||||
|
'currently running': 'sedang berjalan',
|
||||||
|
'data uploaded': 'data diunggah',
|
||||||
|
'Database %s select': 'Memilih Database %s',
|
||||||
|
'database administration': 'administrasi database',
|
||||||
|
'defines tables': 'mendefinisikan tabel',
|
||||||
|
'Delete': 'Hapus',
|
||||||
|
'delete all checked': 'menghapus semua yang di centang',
|
||||||
|
'Delete this file (you will be asked to confirm deletion)': 'Hapus file ini (Anda akan diminta untuk mengkonfirmasi penghapusan)',
|
||||||
|
'Delete:': 'Hapus:',
|
||||||
|
'Description': 'Keterangan',
|
||||||
|
'design': 'disain',
|
||||||
|
'direction: ltr': 'petunjuk: ltr',
|
||||||
|
'Disk Cleared': 'Disk Dihapus',
|
||||||
|
'Documentation': 'Dokumentasi',
|
||||||
|
"Don't know what to do?": 'Tidak tahu apa yang harus dilakukan?',
|
||||||
|
'done!': 'selesai!',
|
||||||
|
'Download': 'Unduh',
|
||||||
|
'Download .w2p': 'Unduh .w2p',
|
||||||
|
'download layouts': 'unduh layouts',
|
||||||
|
'download plugins': 'unduh plugins',
|
||||||
|
'Duration': 'Durasi',
|
||||||
|
'Edit': 'Mengedit',
|
||||||
|
'Edit application': 'Mengedit Aplikasi',
|
||||||
|
'Email sent': 'Email dikirim',
|
||||||
|
'enter a valid email address': 'masukkan alamat email yang benar',
|
||||||
|
'enter a valid URL': 'masukkan URL yang benar',
|
||||||
|
'enter a value': 'masukkan data',
|
||||||
|
'Error': 'Kesalahan',
|
||||||
|
'Error logs for "%(app)s"': 'Catatan kesalahan untuk "%(app)s"',
|
||||||
|
'Errors': 'Kesalahan',
|
||||||
|
'export as csv file': 'ekspor sebagai file csv',
|
||||||
|
'Export:': 'Ekspor:',
|
||||||
|
'exposes': 'menghadapkan',
|
||||||
|
'extends': 'meluaskan',
|
||||||
|
'filter': 'menyaring',
|
||||||
|
'First Name': 'Nama Depan',
|
||||||
|
'Forgot username?': 'Lupa nama pengguna?',
|
||||||
|
'Free Applications': 'Aplikasi Gratis',
|
||||||
|
'Gender': 'Jenis Kelamin',
|
||||||
|
'Group %(group_id)s created': 'Grup %(group_id)s dibuat',
|
||||||
|
'Group uniquely assigned to user %(id)s': 'Grup unik yang diberikan kepada pengguna %(id)s',
|
||||||
|
'Groups': 'Grup',
|
||||||
|
'Guest': 'Tamu',
|
||||||
|
'Hello World': 'Halo Dunia',
|
||||||
|
'Help': 'Bantuan',
|
||||||
|
'Home': 'Halaman Utama',
|
||||||
|
'How did you get here?': 'Bagaimana kamu bisa di sini?',
|
||||||
|
'Image': 'Gambar',
|
||||||
|
'import': 'impor',
|
||||||
|
'Import/Export': 'Impor/Ekspor',
|
||||||
|
'includes': 'termasuk',
|
||||||
|
'Install': 'Memasang',
|
||||||
|
'Installation': 'Instalasi',
|
||||||
|
'Installed applications': 'Aplikasi yang diinstal',
|
||||||
|
'Introduction': 'Pengenalan',
|
||||||
|
'Invalid email': 'Email tidak benar',
|
||||||
|
'Language': 'Bahasa',
|
||||||
|
'languages': 'bahasa',
|
||||||
|
'Languages': 'Bahasa',
|
||||||
|
'Last Name': 'Nama Belakang',
|
||||||
|
'License for': 'Lisensi untuk',
|
||||||
|
'loading...': 'sedang memuat...',
|
||||||
|
'Logged in': 'Masuk',
|
||||||
|
'Logged out': 'Keluar',
|
||||||
|
'Login': 'Masuk',
|
||||||
|
'Login to the Administrative Interface': 'Masuk ke antarmuka Administrasi',
|
||||||
|
'Logout': 'Keluar',
|
||||||
|
'Lost Password': 'Lupa Kata Sandi',
|
||||||
|
'Lost password?': 'Lupa kata sandi?',
|
||||||
|
'Maintenance': 'Pemeliharaan',
|
||||||
|
'Manage': 'Mengelola',
|
||||||
|
'Manage Cache': 'Mengelola Cache',
|
||||||
|
'models': 'model',
|
||||||
|
'Models': 'Model',
|
||||||
|
'Modules': 'Modul',
|
||||||
|
'modules': 'modul',
|
||||||
|
'My Sites': 'Situs Saya',
|
||||||
|
'New': 'Baru',
|
||||||
|
'new application "%s" created': 'aplikasi baru "%s" dibuat',
|
||||||
|
'New password': 'Kata sandi baru',
|
||||||
|
'New simple application': 'Aplikasi baru sederhana',
|
||||||
|
'News': 'Berita',
|
||||||
|
'next 100 rows': '100 baris berikutnya',
|
||||||
|
'Next >': 'Berikutnya >',
|
||||||
|
'Next Page': 'Halaman Berikutnya',
|
||||||
|
'No databases in this application': 'Tidak ada database dalam aplikasi ini',
|
||||||
|
'No ticket_storage.txt found under /private folder': 'Tidak ditemukan ticket_storage.txt dalam folder /private',
|
||||||
|
'not a Zip Code': 'bukan Kode Pos',
|
||||||
|
'Note': 'Catatan',
|
||||||
|
'Old password': 'Kata sandi lama',
|
||||||
|
'Online examples': 'Contoh Online',
|
||||||
|
'Or': 'Atau',
|
||||||
|
'or alternatively': 'atau alternatif',
|
||||||
|
'Or Get from URL:': 'Atau Dapatkan dari URL:',
|
||||||
|
'or import from csv file': 'atau impor dari file csv',
|
||||||
|
'Other Plugins': 'Plugin Lainnya',
|
||||||
|
'Other Recipes': 'Resep Lainnya',
|
||||||
|
'Overview': 'Ikhtisar',
|
||||||
|
'Overwrite installed app': 'Ikhtisar app yang terinstall',
|
||||||
|
'Pack all': 'Pak semua',
|
||||||
|
'Pack compiled': 'Pak yang telah dikompilasi',
|
||||||
|
'Pack custom': 'Pak secara kustomisasi',
|
||||||
|
'Password': 'Kata sandi',
|
||||||
|
'Password changed': 'Kata sandi berubah',
|
||||||
|
"Password fields don't match": 'Kata sandi tidak sama',
|
||||||
|
'please input your password again': 'silahkan masukan kata sandi anda lagi',
|
||||||
|
'plugins': 'plugin',
|
||||||
|
'Plugins': 'Plugin',
|
||||||
|
'Plural-Forms:': 'Bentuk-Jamak:',
|
||||||
|
'Powered by': 'Didukung oleh',
|
||||||
|
'Preface': 'Pendahuluan',
|
||||||
|
'previous 100 rows': '100 baris sebelumnya',
|
||||||
|
'Previous Page': 'Halaman Sebelumnya',
|
||||||
|
'private files': 'file pribadi',
|
||||||
|
'Private files': 'File pribadi',
|
||||||
|
'Profile': 'Profil',
|
||||||
|
'Profile updated': 'Profil diperbarui',
|
||||||
|
'Project Progress': 'Perkembangan Proyek',
|
||||||
|
'Quick Examples': 'Contoh Cepat',
|
||||||
|
'Ram Cleared': 'Ram Dihapus',
|
||||||
|
'Recipes': 'Resep',
|
||||||
|
'Register': 'Daftar',
|
||||||
|
'Registration successful': 'Pendaftaran berhasil',
|
||||||
|
'reload': 'memuat kembali',
|
||||||
|
'Reload routes': 'Memuat rute kembali',
|
||||||
|
'Remember me (for 30 days)': 'Ingat saya (selama 30 hari)',
|
||||||
|
'Remove compiled': 'Hapus Kompilasi',
|
||||||
|
'Request reset password': 'Meminta reset kata sandi',
|
||||||
|
'Rows in Table': 'Baris dalam Tabel',
|
||||||
|
'Rows selected': 'Baris dipilih',
|
||||||
|
"Run tests in this file (to run all files, you may also use the button labelled 'test')": "Jalankan tes di file ini (untuk menjalankan semua file, Anda juga dapat menggunakan tombol berlabel 'test')",
|
||||||
|
'Running on %s': 'Berjalan di %s',
|
||||||
|
'Save model as...': 'Simpan model sebagai ...',
|
||||||
|
'Save profile': 'Simpan profil',
|
||||||
|
'Search': 'Cari',
|
||||||
|
'Select Files to Package': 'Pilih Berkas untuk Paket',
|
||||||
|
'Send Email': 'Kirim Email',
|
||||||
|
'Service': 'Layanan',
|
||||||
|
'Site': 'Situs',
|
||||||
|
'Size of cache:': 'Ukuran cache:',
|
||||||
|
'starts with': 'dimulai dengan',
|
||||||
|
'static': 'statis',
|
||||||
|
'Static': 'Statis',
|
||||||
|
'Statistics': 'Statistik',
|
||||||
|
'Support': 'Mendukung',
|
||||||
|
'Table': 'Tabel',
|
||||||
|
'test': 'tes',
|
||||||
|
'The application logic, each URL path is mapped in one exposed function in the controller': 'Logika aplikasi, setiap jalur URL dipetakan dalam satu fungsi terpapar di kontrolir',
|
||||||
|
'The data representation, define database tables and sets': 'Representasi data, mendefinisikan tabel database dan set',
|
||||||
|
'There are no plugins': 'Tidak ada plugin',
|
||||||
|
'There are no private files': 'Tidak ada file pribadi',
|
||||||
|
'These files are not served, they are only available from within your app': 'File-file ini tidak dilayani, mereka hanya tersedia dari dalam aplikasi Anda',
|
||||||
|
'These files are served without processing, your images go here': 'File-file ini disajikan tanpa pengolahan, gambar Anda di sini',
|
||||||
|
'This App': 'App Ini',
|
||||||
|
'Time in Cache (h:m:s)': 'Waktu di Cache (h: m: s)',
|
||||||
|
'To create a plugin, name a file/folder plugin_[name]': 'Untuk membuat sebuah plugin, nama file / folder plugin_ [nama]',
|
||||||
|
'too short': 'terlalu pendek',
|
||||||
|
'Translation strings for the application': 'Terjemahan string untuk aplikasi',
|
||||||
|
'Try the mobile interface': 'Coba antarmuka ponsel',
|
||||||
|
'Unable to download because:': 'Tidak dapat mengunduh karena:',
|
||||||
|
'unable to parse csv file': 'tidak mampu mengurai file csv',
|
||||||
|
'update all languages': 'memperbarui semua bahasa',
|
||||||
|
'Update:': 'Perbarui:',
|
||||||
|
'Upload': 'Unggah',
|
||||||
|
'Upload a package:': 'Unggah sebuah paket:',
|
||||||
|
'Upload and install packed application': 'Upload dan pasang aplikasi yang dikemas',
|
||||||
|
'upload file:': 'unggah file:',
|
||||||
|
'upload plugin file:': 'unggah file plugin:',
|
||||||
|
'User %(id)s Logged-in': 'Pengguna %(id)s Masuk',
|
||||||
|
'User %(id)s Logged-out': 'Pengguna %(id)s Keluar',
|
||||||
|
'User %(id)s Password changed': 'Pengguna %(id)s Kata Sandi berubah',
|
||||||
|
'User %(id)s Password reset': 'Pengguna %(id)s Kata Sandi telah direset',
|
||||||
|
'User %(id)s Profile updated': 'Pengguna %(id)s Profil diperbarui',
|
||||||
|
'User %(id)s Registered': 'Pengguna %(id)s Terdaftar',
|
||||||
|
'value already in database or empty': 'data sudah ada dalam database atau kosong',
|
||||||
|
'value not allowed': 'data tidak benar',
|
||||||
|
'value not in database': 'data tidak ada dalam database',
|
||||||
|
'Verify Password': 'Verifikasi Kata Sandi',
|
||||||
|
'Version': 'Versi',
|
||||||
|
'View': 'Lihat',
|
||||||
|
'Views': 'Lihat',
|
||||||
|
'views': 'lihat',
|
||||||
|
'Web Framework': 'Kerangka Web',
|
||||||
|
'web2py is up to date': 'web2py terbaru',
|
||||||
|
'web2py Recent Tweets': 'Tweet web2py terbaru',
|
||||||
|
'Website': 'Situs Web',
|
||||||
|
'Welcome': 'Selamat Datang',
|
||||||
|
'Welcome to web2py!': 'Selamat Datang di web2py!',
|
||||||
|
'You are successfully running web2py': 'Anda berhasil menjalankan web2py',
|
||||||
|
'You can modify this application and adapt it to your needs': 'Anda dapat memodifikasi aplikasi ini dan menyesuaikan dengan kebutuhan Anda',
|
||||||
|
'You visited the url %s': 'Anda mengunjungi url %s',
|
||||||
|
}
|
||||||
@@ -4,8 +4,8 @@
|
|||||||
'!langcode!': 'it',
|
'!langcode!': 'it',
|
||||||
'!langname!': 'Italiano',
|
'!langname!': 'Italiano',
|
||||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" è un\'espressione opzionale come "campo1=\'nuovo valore\'". Non si può fare "update" o "delete" dei risultati di un JOIN ',
|
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" è un\'espressione opzionale come "campo1=\'nuovo valore\'". Non si può fare "update" o "delete" dei risultati di un JOIN ',
|
||||||
'%(nrows)s records found': '%(nrows)s records found',
|
'%(nrows)s records found': '%(nrows)s record trovati',
|
||||||
'%d seconds ago': '%d seconds ago',
|
'%d seconds ago': '%d secondi fa',
|
||||||
'%s %%{row} deleted': '%s righe ("record") cancellate',
|
'%s %%{row} deleted': '%s righe ("record") cancellate',
|
||||||
'%s %%{row} updated': '%s righe ("record") modificate',
|
'%s %%{row} updated': '%s righe ("record") modificate',
|
||||||
'%s selected': '%s selezionato',
|
'%s selected': '%s selezionato',
|
||||||
@@ -16,40 +16,41 @@
|
|||||||
'=': '=',
|
'=': '=',
|
||||||
'>': '>',
|
'>': '>',
|
||||||
'>=': '>=',
|
'>=': '>=',
|
||||||
'@markmin\x01Number of entries: **%s**': 'Number of entries: **%s**',
|
'@markmin\x01Number of entries: **%s**': 'Numero di entità: **%s**',
|
||||||
'About': 'About',
|
'About': 'About',
|
||||||
'Access Control': 'Access Control',
|
'Access Control': 'Controllo Accessi',
|
||||||
'Add': 'Add',
|
'Add': 'Aggiungi',
|
||||||
'Administrative Interface': 'Administrative Interface',
|
'Administrative Interface': 'Interfaccia Amministrativa',
|
||||||
'Administrative interface': 'Interfaccia amministrativa',
|
'Administrative interface': 'Interfaccia amministrativa',
|
||||||
'Ajax Recipes': 'Ajax Recipes',
|
'Ajax Recipes': 'Ajax Recipes',
|
||||||
'And': 'And',
|
'An error occured, please %s the page': "È stato rilevato un errore, prego %s la pagina",
|
||||||
|
'And': 'E',
|
||||||
'appadmin is disabled because insecure channel': 'Amministrazione (appadmin) disabilitata: comunicazione non sicura',
|
'appadmin is disabled because insecure channel': 'Amministrazione (appadmin) disabilitata: comunicazione non sicura',
|
||||||
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
|
'Are you sure you want to delete this object?': 'Sicuro di voler cancellare questo oggetto ?',
|
||||||
'Available Databases and Tables': 'Database e tabelle disponibili',
|
'Available Databases and Tables': 'Database e tabelle disponibili',
|
||||||
'Back': 'Back',
|
'Back': 'Indietro',
|
||||||
'Buy this book': 'Buy this book',
|
'Buy this book': 'Compra questo libro',
|
||||||
'cache': 'cache',
|
'cache': 'cache',
|
||||||
'Cache': 'Cache',
|
'Cache': 'Cache',
|
||||||
'Cache Keys': 'Cache Keys',
|
'Cache Keys': 'Cache Keys',
|
||||||
'Cannot be empty': 'Non può essere vuoto',
|
'Cannot be empty': 'Non può essere vuoto',
|
||||||
'Change password': 'Change password',
|
'Change password': 'Cambia Password',
|
||||||
'change password': 'Cambia password',
|
'change password': 'Cambia password',
|
||||||
'Check to delete': 'Seleziona per cancellare',
|
'Check to delete': 'Seleziona per cancellare',
|
||||||
'Clear': 'Clear',
|
'Clear': 'Resetta',
|
||||||
'Clear CACHE?': 'Clear CACHE?',
|
'Clear CACHE?': 'Resetta CACHE?',
|
||||||
'Clear DISK': 'Clear DISK',
|
'Clear DISK': 'Resetta DISK',
|
||||||
'Clear RAM': 'Clear RAM',
|
'Clear RAM': 'Resetta RAM',
|
||||||
'Client IP': 'Client IP',
|
'Client IP': 'Client IP',
|
||||||
'Close': 'Close',
|
'Close': 'Chiudi',
|
||||||
'Cognome': 'Cognome',
|
'Cognome': 'Cognome',
|
||||||
'Community': 'Community',
|
'Community': 'Community',
|
||||||
'Components and Plugins': 'Components and Plugins',
|
'Components and Plugins': 'Componenti and Plugin',
|
||||||
'contains': 'contains',
|
'contains': 'contiene',
|
||||||
'Controller': 'Controller',
|
'Controller': 'Controller',
|
||||||
'Copyright': 'Copyright',
|
'Copyright': 'Copyright',
|
||||||
'Created By': 'Created By',
|
'Created By': 'Creato Da',
|
||||||
'Created On': 'Created On',
|
'Created On': 'Creato Il',
|
||||||
'CSV': 'CSV',
|
'CSV': 'CSV',
|
||||||
'CSV (hidden cols)': 'CSV (hidden cols)',
|
'CSV (hidden cols)': 'CSV (hidden cols)',
|
||||||
'Current request': 'Richiesta (request) corrente',
|
'Current request': 'Richiesta (request) corrente',
|
||||||
@@ -61,7 +62,7 @@
|
|||||||
'Database %s select': 'Database %s select',
|
'Database %s select': 'Database %s select',
|
||||||
'db': 'db',
|
'db': 'db',
|
||||||
'DB Model': 'Modello di DB',
|
'DB Model': 'Modello di DB',
|
||||||
'Delete': 'Delete',
|
'Delete': 'Cancella',
|
||||||
'Delete:': 'Cancella:',
|
'Delete:': 'Cancella:',
|
||||||
'Demo': 'Demo',
|
'Demo': 'Demo',
|
||||||
'Deployment Recipes': 'Deployment Recipes',
|
'Deployment Recipes': 'Deployment Recipes',
|
||||||
@@ -71,7 +72,7 @@
|
|||||||
'Disk Cache Keys': 'Disk Cache Keys',
|
'Disk Cache Keys': 'Disk Cache Keys',
|
||||||
'Disk Cleared': 'Disk Cleared',
|
'Disk Cleared': 'Disk Cleared',
|
||||||
'Documentation': 'Documentazione',
|
'Documentation': 'Documentazione',
|
||||||
"Don't know what to do?": "Don't know what to do?",
|
"Don't know what to do?": 'Non sai cosa fare?',
|
||||||
'done!': 'fatto!',
|
'done!': 'fatto!',
|
||||||
'Download': 'Download',
|
'Download': 'Download',
|
||||||
'E-mail': 'E-mail',
|
'E-mail': 'E-mail',
|
||||||
@@ -79,18 +80,19 @@
|
|||||||
'Edit current record': 'Modifica record corrente',
|
'Edit current record': 'Modifica record corrente',
|
||||||
'edit profile': 'modifica profilo',
|
'edit profile': 'modifica profilo',
|
||||||
'Edit This App': 'Modifica questa applicazione',
|
'Edit This App': 'Modifica questa applicazione',
|
||||||
'Email and SMS': 'Email and SMS',
|
'Email and SMS': 'Email e SMS',
|
||||||
'Email non valida': 'Email non valida',
|
'Email non valida': 'Email non valida',
|
||||||
'enter an integer between %(min)g and %(max)g': 'enter an integer between %(min)g and %(max)g',
|
'enter an integer between %(min)g and %(max)g': 'inserisci un intero tra %(min)g e %(max)g',
|
||||||
'Errors': 'Errors',
|
'Errors': 'Errori',
|
||||||
'Errors in form, please check it out.': 'Errors in form, please check it out.',
|
'Errors in form, please check it out.': 'Errori nel form, ricontrollalo',
|
||||||
'export as csv file': 'esporta come file CSV',
|
'export as csv file': 'esporta come file CSV',
|
||||||
'Export:': 'Export:',
|
'Export:': 'Esporta:',
|
||||||
'FAQ': 'FAQ',
|
'FAQ': 'FAQ',
|
||||||
'First name': 'Nome',
|
'First name': 'Nome',
|
||||||
'Forgot username?': 'Forgot username?',
|
'Forgot username?': 'Dimenticato lo username?',
|
||||||
'Forms and Validators': 'Forms and Validators',
|
'Forms and Validators': 'Forms and Validators',
|
||||||
'Free Applications': 'Free Applications',
|
'Free Applications': 'Free Applications',
|
||||||
|
'Graph Model': 'Graph Model',
|
||||||
'Group %(group_id)s created': 'Group %(group_id)s created',
|
'Group %(group_id)s created': 'Group %(group_id)s created',
|
||||||
'Group ID': 'ID Gruppo',
|
'Group ID': 'ID Gruppo',
|
||||||
'Group uniquely assigned to user %(id)s': 'Group uniquely assigned to user %(id)s',
|
'Group uniquely assigned to user %(id)s': 'Group uniquely assigned to user %(id)s',
|
||||||
@@ -100,69 +102,70 @@
|
|||||||
'Hello World': 'Salve Mondo',
|
'Hello World': 'Salve Mondo',
|
||||||
'Hello World in a flash!': 'Salve Mondo in un flash!',
|
'Hello World in a flash!': 'Salve Mondo in un flash!',
|
||||||
'Home': 'Home',
|
'Home': 'Home',
|
||||||
'How did you get here?': 'How did you get here?',
|
'How did you get here?': 'Come sei arrivato qui?',
|
||||||
'HTML': 'HTML',
|
'HTML': 'HTML',
|
||||||
'import': 'import',
|
'import': 'importa',
|
||||||
'Import/Export': 'Importa/Esporta',
|
'Import/Export': 'Importa/Esporta',
|
||||||
'Index': 'Indice',
|
'Index': 'Indice',
|
||||||
'insert new': 'inserisci nuovo',
|
'insert new': 'inserisci nuovo',
|
||||||
'insert new %s': 'inserisci nuovo %s',
|
'insert new %s': 'inserisci nuovo %s',
|
||||||
'Internal State': 'Stato interno',
|
'Internal State': 'Stato interno',
|
||||||
'Introduction': 'Introduction',
|
'Introduction': 'Introduzione',
|
||||||
'Invalid email': 'Email non valida',
|
'Invalid email': 'Email non valida',
|
||||||
'Invalid login': 'Invalid login',
|
'Invalid login': 'Login non valido',
|
||||||
'Invalid Query': 'Richiesta (query) non valida',
|
'Invalid Query': 'Richiesta (query) non valida',
|
||||||
'invalid request': 'richiesta non valida',
|
'invalid request': 'richiesta non valida',
|
||||||
'Is Active': 'Is Active',
|
'Is Active': "E' attivo",
|
||||||
'Key': 'Key',
|
'Key': 'Chiave',
|
||||||
'Last name': 'Cognome',
|
'Last name': 'Cognome',
|
||||||
'Layout': 'Layout',
|
'Layout': 'Layout',
|
||||||
'Layout Plugins': 'Layout Plugins',
|
'Layout Plugins': 'Layout Plugins',
|
||||||
'Layouts': 'Layouts',
|
'Layouts': 'Layouts',
|
||||||
'Live Chat': 'Live Chat',
|
'Live Chat': 'Live Chat',
|
||||||
'Logged in': 'Logged in',
|
'Logged in': 'Loggato',
|
||||||
'Logged out': 'Logged out',
|
'Logged out': 'Disconnesso',
|
||||||
'login': 'accesso',
|
'login': 'accesso',
|
||||||
'Login': 'Login',
|
'Login': 'Login',
|
||||||
'logout': 'uscita',
|
'logout': 'uscita',
|
||||||
'Logout': 'Logout',
|
'Logout': 'Logout',
|
||||||
'Lost Password': 'Lost Password',
|
'Lost Password': 'Password Smarrita',
|
||||||
'Lost password?': 'Lost password?',
|
'Lost password?': 'Password smarrita?',
|
||||||
'lost password?': 'dimenticato la password?',
|
'lost password?': 'dimenticato la password?',
|
||||||
'Main Menu': 'Menu principale',
|
'Main Menu': 'Menu principale',
|
||||||
'Manage Cache': 'Manage Cache',
|
'Manage Cache': 'Manage Cache',
|
||||||
'Menu Model': 'Menu Modelli',
|
'Menu Model': 'Menu Modelli',
|
||||||
'Modified By': 'Modified By',
|
'Modified By': 'Modificato da',
|
||||||
'Modified On': 'Modified On',
|
'Modified On': 'Modificato il',
|
||||||
'My Sites': 'My Sites',
|
'My Sites': 'My Sites',
|
||||||
'Name': 'Nome',
|
'Name': 'Nome',
|
||||||
'New': 'New',
|
'New': 'Nuovo',
|
||||||
'New password': 'New password',
|
'New password': 'Nuova password',
|
||||||
'New Record': 'Nuovo elemento (record)',
|
'New Record': 'Nuovo elemento (record)',
|
||||||
'new record inserted': 'nuovo record inserito',
|
'new record inserted': 'nuovo record inserito',
|
||||||
'next 100 rows': 'prossime 100 righe',
|
'next 100 rows': 'prossime 100 righe',
|
||||||
'No databases in this application': 'Nessun database presente in questa applicazione',
|
'No databases in this application': 'Nessun database presente in questa applicazione',
|
||||||
'No records found': 'No records found',
|
'No records found': 'Nessun record trovato',
|
||||||
'Nome': 'Nome',
|
'Nome': 'Nome',
|
||||||
'Non può essere vuoto': 'Non può essere vuoto',
|
'Non può essere vuoto': 'Non può essere vuoto',
|
||||||
'not authorized': 'non autorizzato',
|
'not authorized': 'non autorizzato',
|
||||||
'Object or table name': 'Object or table name',
|
'Object or table name': 'Oggeto o nome tabella',
|
||||||
'Old password': 'Old password',
|
'Old password': 'Vecchia password',
|
||||||
'Online examples': 'Vedere gli esempi',
|
'Online examples': 'Vedere gli esempi',
|
||||||
'Or': 'Or',
|
'Or': 'O',
|
||||||
'or import from csv file': 'oppure importa da file CSV',
|
'or import from csv file': 'oppure importa da file CSV',
|
||||||
'Origin': 'Origine',
|
'Origin': 'Origine',
|
||||||
'Other Plugins': 'Other Plugins',
|
'Other Plugins': 'Other Plugins',
|
||||||
'Other Recipes': 'Other Recipes',
|
'Other Recipes': 'Other Recipes',
|
||||||
'Overview': 'Overview',
|
'Overview': 'Overview',
|
||||||
'Password': 'Password',
|
'Password': 'Password',
|
||||||
"Password fields don't match": "Password fields don't match",
|
"Password fields don't match": 'I campi password non sono uguali',
|
||||||
'please input your password again': 'please input your password again',
|
'please input your password again': 'perfavore reimmeti la tua password',
|
||||||
'Plugins': 'Plugins',
|
'Plugins': 'Plugins',
|
||||||
'Powered by': 'Powered by',
|
'Powered by': 'Powered by',
|
||||||
'Preface': 'Preface',
|
'Preface': 'Preface',
|
||||||
'previous 100 rows': '100 righe precedenti',
|
'previous 100 rows': '100 righe precedenti',
|
||||||
'Profile': 'Profile',
|
'Profile': 'Profilo',
|
||||||
|
'pygraphviz library not found': 'pygraphviz library not found',
|
||||||
'Python': 'Python',
|
'Python': 'Python',
|
||||||
'Query:': 'Richiesta (query):',
|
'Query:': 'Richiesta (query):',
|
||||||
'Quick Examples': 'Quick Examples',
|
'Quick Examples': 'Quick Examples',
|
||||||
@@ -174,28 +177,30 @@
|
|||||||
'record does not exist': 'il record non esiste',
|
'record does not exist': 'il record non esiste',
|
||||||
'Record ID': 'Record ID',
|
'Record ID': 'Record ID',
|
||||||
'Record id': 'Record id',
|
'Record id': 'Record id',
|
||||||
'Register': 'Register',
|
'Register': 'Registrati',
|
||||||
'register': 'registrazione',
|
'register': 'registrazione',
|
||||||
'Registration identifier': 'Registration identifier',
|
'Registration identifier': 'Registration identifier',
|
||||||
'Registration key': 'Chiave di Registazione',
|
'Registration key': 'Chiave di Registazione',
|
||||||
'Registration successful': 'Registration successful',
|
'Registration successful': 'Registrazione avvenuta',
|
||||||
'Remember me (for 30 days)': 'Remember me (for 30 days)',
|
'reload': 'reload',
|
||||||
'Request reset password': 'Request reset password',
|
'Remember me (for 30 days)': 'Ricordami (per 30 giorni)',
|
||||||
|
'Request reset password': 'Richiedi il reset della password',
|
||||||
'Reset Password key': 'Resetta chiave Password ',
|
'Reset Password key': 'Resetta chiave Password ',
|
||||||
'Role': 'Ruolo',
|
'Role': 'Ruolo',
|
||||||
'Rows in Table': 'Righe nella tabella',
|
'Rows in Table': 'Righe nella tabella',
|
||||||
'Rows selected': 'Righe selezionate',
|
'Rows selected': 'Righe selezionate',
|
||||||
'Save profile': 'Save profile',
|
'Save model as...': 'Salva modello come...',
|
||||||
'Search': 'Search',
|
'Save profile': 'Salva profilo',
|
||||||
|
'Search': 'Ricerca',
|
||||||
'Semantic': 'Semantic',
|
'Semantic': 'Semantic',
|
||||||
'Services': 'Services',
|
'Services': 'Servizi',
|
||||||
'Size of cache:': 'Size of cache:',
|
'Size of cache:': 'Size of cache:',
|
||||||
'starts with': 'starts with',
|
'starts with': 'comincia con',
|
||||||
'state': 'stato',
|
'state': 'stato',
|
||||||
'Statistics': 'Statistics',
|
'Statistics': 'Statistics',
|
||||||
'Stylesheet': 'Foglio di stile (stylesheet)',
|
'Stylesheet': 'Foglio di stile (stylesheet)',
|
||||||
'submit': 'submit',
|
'submit': 'Inviai',
|
||||||
'Submit': 'Submit',
|
'Submit': 'Invia',
|
||||||
'Support': 'Support',
|
'Support': 'Support',
|
||||||
'Sure you want to delete this object?': 'Vuoi veramente cancellare questo oggetto?',
|
'Sure you want to delete this object?': 'Vuoi veramente cancellare questo oggetto?',
|
||||||
'Table': 'tabella',
|
'Table': 'tabella',
|
||||||
@@ -208,12 +213,13 @@
|
|||||||
'This is a copy of the scaffolding application': "Questa è una copia dell'applicazione di base (scaffold)",
|
'This is a copy of the scaffolding application': "Questa è una copia dell'applicazione di base (scaffold)",
|
||||||
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||||
'Timestamp': 'Ora (timestamp)',
|
'Timestamp': 'Ora (timestamp)',
|
||||||
'too short': 'too short',
|
'too short': 'troppo corto',
|
||||||
'TSV (Excel compatible)': 'TSV (Excel compatible)',
|
'Traceback': 'Traceback',
|
||||||
'TSV (Excel compatible, hidden cols)': 'TSV (Excel compatible, hidden cols)',
|
'TSV (Excel compatible)': 'TSV (Excel compatibile)',
|
||||||
|
'TSV (Excel compatible, hidden cols)': 'TSV (Excel compatibile, hidden cols)',
|
||||||
'Twitter': 'Twitter',
|
'Twitter': 'Twitter',
|
||||||
'unable to parse csv file': 'non riesco a decodificare questo file CSV',
|
'unable to parse csv file': 'non riesco a decodificare questo file CSV',
|
||||||
'Update': 'Update',
|
'Update': 'Aggiorna',
|
||||||
'Update:': 'Aggiorna:',
|
'Update:': 'Aggiorna:',
|
||||||
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Per costruire richieste (query) più complesse si usano (...)&(...) come "e" (AND), (...)|(...) come "o" (OR), e ~(...) come negazione (NOT).',
|
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': 'Per costruire richieste (query) più complesse si usano (...)&(...) come "e" (AND), (...)|(...) come "o" (OR), e ~(...) come negazione (NOT).',
|
||||||
'User %(id)s Logged-in': 'User %(id)s Logged-in',
|
'User %(id)s Logged-in': 'User %(id)s Logged-in',
|
||||||
@@ -223,14 +229,14 @@
|
|||||||
'User %(id)s Profile updated': 'User %(id)s Profile updated',
|
'User %(id)s Profile updated': 'User %(id)s Profile updated',
|
||||||
'User %(id)s Registered': 'User %(id)s Registered',
|
'User %(id)s Registered': 'User %(id)s Registered',
|
||||||
'User ID': 'ID Utente',
|
'User ID': 'ID Utente',
|
||||||
'value already in database or empty': 'value already in database or empty',
|
'value already in database or empty': 'valore già presente nel database o vuoto',
|
||||||
'Verify Password': 'Verify Password',
|
'Verify Password': 'Verifica Password',
|
||||||
'Videos': 'Videos',
|
'Videos': 'Videos',
|
||||||
'View': 'Vista',
|
'View': 'Vista',
|
||||||
'Welcome': 'Welcome',
|
'Welcome': 'Welcome',
|
||||||
'Welcome %s': 'Benvenuto %s',
|
'Welcome %s': 'Benvenuto %s',
|
||||||
'Welcome to web2py': 'Benvenuto su web2py',
|
'Welcome to web2py': 'Benvenuto su web2py',
|
||||||
'Welcome to web2py!': 'Welcome to web2py!',
|
'Welcome to web2py!': 'Benvenuto in web2py!',
|
||||||
'Which called the function %s located in the file %s': 'che ha chiamato la funzione %s presente nel file %s',
|
'Which called the function %s located in the file %s': 'che ha chiamato la funzione %s presente nel file %s',
|
||||||
'XML': 'XML',
|
'XML': 'XML',
|
||||||
'You are successfully running web2py': 'Stai eseguendo web2py con successo',
|
'You are successfully running web2py': 'Stai eseguendo web2py con successo',
|
||||||
|
|||||||
@@ -0,0 +1,217 @@
|
|||||||
|
# coding: utf8
|
||||||
|
{
|
||||||
|
'!langcode!': 'my',
|
||||||
|
'!langname!': 'Malay',
|
||||||
|
'%d days ago': '%d hari yang lalu',
|
||||||
|
'%d hours ago': '%d jam yang lalu',
|
||||||
|
'%d minutes ago': '%d minit yang lalu',
|
||||||
|
'%d months ago': '%d bulan yang lalu',
|
||||||
|
'%d seconds ago': '%d saat yang lalu',
|
||||||
|
'%d seconds from now': '%d saat dari sekarang',
|
||||||
|
'%d weeks ago': '%d minggu yang lalu',
|
||||||
|
'%d years ago': '%d tahun yang lalu',
|
||||||
|
'%s %%{row} deleted': '%s %%{row} dihapuskan',
|
||||||
|
'%s %%{row} updated': '%s %%{row} dikemas kini',
|
||||||
|
'%s selected': '%s dipilih',
|
||||||
|
'%Y-%m-%d': '%d-%m-%Y',
|
||||||
|
'%Y-%m-%d %H:%M:%S': '%d-%m-%Y %H:%M:%S',
|
||||||
|
'(requires internet access, experimental)': '(memerlukan akses internet, percubaan)',
|
||||||
|
'(something like "it-it")': '(sesuatu seperti "it-it")',
|
||||||
|
'1 day ago': '1 hari yang lalu',
|
||||||
|
'1 hour ago': '1 jam yang lalu',
|
||||||
|
'1 minute ago': '1 minit yang lalu',
|
||||||
|
'1 month ago': '1 bulan yang lalu',
|
||||||
|
'1 second ago': '1 saat yang lalu',
|
||||||
|
'1 week ago': '1 minggu yang lalu',
|
||||||
|
'1 year ago': '1 tahun yang lalu',
|
||||||
|
'< Previous': '< Sebelumnya',
|
||||||
|
'About': 'Mengenai',
|
||||||
|
'Add': 'Tambah',
|
||||||
|
'Admin language': 'Bahasa admin',
|
||||||
|
'Administrator Password:': 'Kata laluan Administrator:',
|
||||||
|
'Ajax Recipes': 'Resipi Ajax',
|
||||||
|
'An error occured, please %s the page': 'Kesilapan telah berlaku, sila %s laman',
|
||||||
|
'And': 'Dan',
|
||||||
|
'and rename it:': 'dan menamakan itu:',
|
||||||
|
'are not used yet': 'tidak digunakan lagi',
|
||||||
|
'Are you sure you want to delete this object?': 'Apakah anda yakin anda mahu memadam ini?',
|
||||||
|
'Back': 'Kembali',
|
||||||
|
'Buy this book': 'Beli buku ini',
|
||||||
|
'cache, errors and sessions cleaned': 'cache, kesilapan dan sesi dibersihkan',
|
||||||
|
'Cancel': 'Batal',
|
||||||
|
'Cannot be empty': 'Tidak boleh kosong',
|
||||||
|
'Change admin password': 'Tukar kata laluan admin',
|
||||||
|
'Change password': 'Tukar kata laluan',
|
||||||
|
'Clean': 'Bersihkan',
|
||||||
|
'Clear': 'Hapus',
|
||||||
|
'Clear CACHE?': 'Hapus CACHE?',
|
||||||
|
'Clear DISK': 'Hapus DISK',
|
||||||
|
'Clear RAM': 'Hapus RAM',
|
||||||
|
'Click row to expand traceback': 'Klik baris untuk mengembangkan traceback',
|
||||||
|
'Close': 'Tutup',
|
||||||
|
'Community': 'Komuniti',
|
||||||
|
'Components and Plugins': 'Komponen dan Plugin',
|
||||||
|
'contains': 'mengandung',
|
||||||
|
'Copyright': 'Hak Cipta',
|
||||||
|
'Create': 'Buat',
|
||||||
|
'create file with filename:': 'mencipta fail dengan nama:',
|
||||||
|
'created by': 'dicipta oleh',
|
||||||
|
'currently running': 'sedang berjalan',
|
||||||
|
'data uploaded': 'data diunggah',
|
||||||
|
'Delete': 'Hapus',
|
||||||
|
'Delete this file (you will be asked to confirm deletion)': 'Padam fail ini (anda akan diminta untuk mengesahkan pemadaman)',
|
||||||
|
'Delete:': 'Hapus:',
|
||||||
|
'design': 'disain',
|
||||||
|
'direction: ltr': 'arah: ltr',
|
||||||
|
'Disk Cleared': 'Disk Dihapuskan',
|
||||||
|
'Documentation': 'Dokumentasi',
|
||||||
|
"Don't know what to do?": 'Tidak tahu apa yang perlu dilakukan?',
|
||||||
|
'done!': 'selesai!',
|
||||||
|
'Download': 'Unduh',
|
||||||
|
'Duration': 'Tempoh',
|
||||||
|
'Email : ': 'Emel : ',
|
||||||
|
'Email sent': 'Emel dihantar',
|
||||||
|
'enter a valid email address': 'masukkan alamat emel yang benar',
|
||||||
|
'enter a valid URL': 'masukkan URL yang benar',
|
||||||
|
'enter a value': 'masukkan data',
|
||||||
|
'Error': 'Kesalahan',
|
||||||
|
'Errors': 'Kesalahan',
|
||||||
|
'export as csv file': 'eksport sebagai file csv',
|
||||||
|
'Export:': 'Eksport:',
|
||||||
|
'File': 'Fail',
|
||||||
|
'filter': 'menapis',
|
||||||
|
'First Name': 'Nama Depan',
|
||||||
|
'Forgot username?': 'Lupa nama pengguna?',
|
||||||
|
'Free Applications': 'Aplikasi Percuma',
|
||||||
|
'Gender': 'Jenis Kelamin',
|
||||||
|
'Group %(group_id)s created': 'Kumpulan %(group_id)s dicipta',
|
||||||
|
'Group uniquely assigned to user %(id)s': 'Kumpulan unik yang diberikan kepada pengguna %(id)s',
|
||||||
|
'Groups': 'Kumpulan',
|
||||||
|
'Hello World': 'Halo Dunia',
|
||||||
|
'Help': 'Bantuan',
|
||||||
|
'Home': 'Laman Utama',
|
||||||
|
'How did you get here?': 'Bagaimana kamu boleh di sini?',
|
||||||
|
'Image': 'Gambar',
|
||||||
|
'import': 'import',
|
||||||
|
'Import/Export': 'Import/Eksport',
|
||||||
|
'includes': 'termasuk',
|
||||||
|
'Install': 'Pasang',
|
||||||
|
'Installation': 'Pemasangan',
|
||||||
|
'Introduction': 'Pengenalan',
|
||||||
|
'Invalid email': 'Emel tidak benar',
|
||||||
|
'Language': 'Bahasa',
|
||||||
|
'languages': 'bahasa',
|
||||||
|
'Languages': 'Bahasa',
|
||||||
|
'Last Name': 'Nama Belakang',
|
||||||
|
'License for': 'lesen untuk',
|
||||||
|
'loading...': 'sedang memuat...',
|
||||||
|
'Logged in': 'Masuk',
|
||||||
|
'Logged out': 'Keluar',
|
||||||
|
'Login': 'Masuk',
|
||||||
|
'Logout': 'Keluar',
|
||||||
|
'Lost Password': 'Lupa Kata Laluan',
|
||||||
|
'Lost password?': 'Lupa kata laluan?',
|
||||||
|
'Maintenance': 'Penyelenggaraan',
|
||||||
|
'Manage': 'Menguruskan',
|
||||||
|
'Manage Cache': 'Menguruskan Cache',
|
||||||
|
'models': 'model',
|
||||||
|
'Models': 'Model',
|
||||||
|
'Modules': 'Modul',
|
||||||
|
'modules': 'modul',
|
||||||
|
'My Sites': 'Laman Saya',
|
||||||
|
'New': 'Baru',
|
||||||
|
'New password': 'Kata laluan baru',
|
||||||
|
'next 100 rows': '100 baris seterusnya',
|
||||||
|
'Next >': 'Seterusnya >',
|
||||||
|
'Next Page': 'Laman Seterusnya',
|
||||||
|
'No ticket_storage.txt found under /private folder': 'Ticket_storage.txt tidak dijumpai di bawah folder /private',
|
||||||
|
'not a Zip Code': 'bukan Pos',
|
||||||
|
'Old password': 'Kata laluan lama',
|
||||||
|
'Online examples': 'Contoh Online',
|
||||||
|
'Or': 'Atau',
|
||||||
|
'or alternatively': 'atau sebagai alternatif',
|
||||||
|
'Or Get from URL:': 'Atau Dapatkan dari URL:',
|
||||||
|
'or import from csv file': 'atau import dari file csv',
|
||||||
|
'Other Plugins': 'Plugin Lain',
|
||||||
|
'Other Recipes': 'Resipi Lain',
|
||||||
|
'Overview': 'Tinjauan',
|
||||||
|
'Pack all': 'Mengemaskan semua',
|
||||||
|
'Password': 'Kata laluan',
|
||||||
|
'Password changed': 'Kata laluan berubah',
|
||||||
|
"Password fields don't match": 'Kata laluan tidak sama',
|
||||||
|
'please input your password again': 'sila masukan kata laluan anda lagi',
|
||||||
|
'plugins': 'plugin',
|
||||||
|
'Plugins': 'Plugin',
|
||||||
|
'Powered by': 'Disokong oleh',
|
||||||
|
'Preface': 'Pendahuluan',
|
||||||
|
'previous 100 rows': '100 baris sebelumnya',
|
||||||
|
'Previous Page': 'Laman Sebelumnya',
|
||||||
|
'private files': 'fail peribadi',
|
||||||
|
'Private files': 'Fail peribadi',
|
||||||
|
'Profile': 'Profil',
|
||||||
|
'Profile updated': 'Profil dikemaskini',
|
||||||
|
'Project Progress': 'Kemajuan Projek',
|
||||||
|
'Quick Examples': 'Contoh Cepat',
|
||||||
|
'Ram Cleared': 'Ram Dihapuskan',
|
||||||
|
'Recipes': 'Resipi',
|
||||||
|
'Register': 'Daftar',
|
||||||
|
'Registration successful': 'Pendaftaran berjaya',
|
||||||
|
'reload': 'memuat kembali',
|
||||||
|
'Reload routes': 'Memuat laluan kembali',
|
||||||
|
'Remember me (for 30 days)': 'Ingat saya (selama 30 hari)',
|
||||||
|
'Request reset password': 'Meminta reset kata laluan',
|
||||||
|
'Rows selected': 'Baris dipilih',
|
||||||
|
'Running on %s': 'Berjalan pada %s',
|
||||||
|
'Save model as...': 'Simpan model sebagai ...',
|
||||||
|
'Save profile': 'Simpan profil',
|
||||||
|
'Search': 'Cari',
|
||||||
|
'Select Files to Package': 'Pilih Fail untuk Pakej',
|
||||||
|
'Send Email': 'Kirim Emel',
|
||||||
|
'Size of cache:': 'Saiz cache:',
|
||||||
|
'Solution': 'Penyelesaian',
|
||||||
|
'starts with': 'bermula dengan',
|
||||||
|
'static': 'statik',
|
||||||
|
'Static': 'Statik',
|
||||||
|
'Statistics': 'Statistik',
|
||||||
|
'Support': 'Menyokong',
|
||||||
|
'test': 'ujian',
|
||||||
|
'There are no plugins': 'Tiada plugin',
|
||||||
|
'There are no private files': 'Tiada fail peribadi',
|
||||||
|
'These files are not served, they are only available from within your app': 'Fail-fail ini tidak disampaikan, mereka hanya boleh didapati dari dalam aplikasi anda',
|
||||||
|
'These files are served without processing, your images go here': 'Ini fail disampaikan tanpa pemprosesan, imej anda di sini',
|
||||||
|
'This App': 'App Ini',
|
||||||
|
'Time in Cache (h:m:s)': 'Waktu di Cache (h: m: s)',
|
||||||
|
'Title': 'Judul',
|
||||||
|
'To create a plugin, name a file/folder plugin_[name]': 'Untuk mencipta plugin, nama fail/folder plugin_ [nama]',
|
||||||
|
'too short': 'terlalu pendek',
|
||||||
|
'Unable to download because:': 'Tidak dapat memuat turun kerana:',
|
||||||
|
'unable to parse csv file': 'tidak mampu mengurai file csv',
|
||||||
|
'update all languages': 'mengemaskini semua bahasa',
|
||||||
|
'Update:': 'Kemas kini:',
|
||||||
|
'Upgrade': 'Menaik taraf',
|
||||||
|
'Upload': 'Unggah',
|
||||||
|
'Upload a package:': 'Unggah pakej:',
|
||||||
|
'upload file:': 'unggah fail:',
|
||||||
|
'upload plugin file:': 'unggah fail plugin:',
|
||||||
|
'User %(id)s Logged-in': 'Pengguna %(id)s Masuk',
|
||||||
|
'User %(id)s Logged-out': 'Pengguna %(id)s Keluar',
|
||||||
|
'User %(id)s Password changed': 'Pengguna %(id)s Kata Laluan berubah',
|
||||||
|
'User %(id)s Password reset': 'Pengguna %(id)s Kata Laluan telah direset',
|
||||||
|
'User %(id)s Profile updated': 'Pengguna %(id)s Profil dikemaskini',
|
||||||
|
'User %(id)s Registered': 'Pengguna %(id)s Didaftarkan',
|
||||||
|
'value not allowed': 'data tidak benar',
|
||||||
|
'Verify Password': 'Pengesahan Kata Laluan',
|
||||||
|
'Version': 'Versi',
|
||||||
|
'Versioning': 'Pembuatan Sejarah',
|
||||||
|
'View': 'Lihat',
|
||||||
|
'Views': 'Lihat',
|
||||||
|
'views': 'Lihat',
|
||||||
|
'Web Framework': 'Rangka Kerja Web',
|
||||||
|
'web2py Recent Tweets': 'Tweet terbaru web2py',
|
||||||
|
'Website': 'Laman Web',
|
||||||
|
'Welcome': 'Selamat Datang',
|
||||||
|
'Welcome to web2py!': 'Selamat Datang di web2py!',
|
||||||
|
'You are successfully running web2py': 'Anda berjaya menjalankan web2py',
|
||||||
|
'You can modify this application and adapt it to your needs': 'Anda boleh mengubah suai aplikasi ini dan menyesuaikan dengan keperluan anda',
|
||||||
|
'You visited the url %s': 'Anda melawat url %s',
|
||||||
|
}
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
# coding: utf8
|
||||||
|
{
|
||||||
|
'!langcode!': 'tr',
|
||||||
|
'!langname!': 'Türkçe',
|
||||||
|
'%s %%(shop)': '%s %%(shop)',
|
||||||
|
'%s %%(shop[0])': '%s %%(shop[0])',
|
||||||
|
'%s %%{quark[0]}': '%s %%{quark[0]}',
|
||||||
|
'%s %%{shop[0]}': '%s %%{shop[0]}',
|
||||||
|
'%s %%{shop}': '%s %%{shop}',
|
||||||
|
'%Y-%m-%d': '%Y-%m-%d',
|
||||||
|
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||||
|
'@markmin\x01**Hello World**': '**Merhaba Dünya**',
|
||||||
|
'About': 'Hakkında',
|
||||||
|
'Access Control': 'Erişim Denetimi',
|
||||||
|
'Administrative Interface': 'Yönetim Arayüzü',
|
||||||
|
'Ajax Recipes': 'Ajax Tarifleri',
|
||||||
|
'An error occured, please %s the page': 'Bir hata meydana geldi, lütfen sayfayı %s',
|
||||||
|
'Are you sure you want to delete this object?': 'Bu nesneyi silmek istediğinden emin misin?',
|
||||||
|
'Buy this book': 'Bu kitabı satın alın',
|
||||||
|
'Cannot be empty': 'Boş bırakılamaz',
|
||||||
|
'Check to delete': 'Silmek için denetle',
|
||||||
|
'Client IP': ' IP',
|
||||||
|
'Community': 'Topluluk',
|
||||||
|
'Components and Plugins': 'Bileşenler ve Eklentiler',
|
||||||
|
'Controller': 'Denetçi',
|
||||||
|
'Copyright': 'Telif',
|
||||||
|
'Created By': 'Tasarlayan',
|
||||||
|
'Created On': 'Oluşturma tarihi',
|
||||||
|
'customize me!': 'burayı değiştir!',
|
||||||
|
'Database': 'Veritabanı',
|
||||||
|
'DB Model': 'DB Model',
|
||||||
|
'Demo': 'Demo',
|
||||||
|
'Deployment Recipes': 'Yayınlama tarifleri',
|
||||||
|
'Description': 'Açıklama',
|
||||||
|
'Documentation': 'Kitap',
|
||||||
|
"Don't know what to do?": 'Neleri nasıl yapacağını bilmiyor musun?',
|
||||||
|
'Download': 'İndir',
|
||||||
|
'E-mail': 'E-posta',
|
||||||
|
'Email and SMS': 'E-posta ve kısa mesaj (SMS)',
|
||||||
|
'enter an integer between %(min)g and %(max)g': '%(min)g ve %(max)g arasında bir sayı girin',
|
||||||
|
'enter date and time as %(format)s': 'tarih ve saati %(format)s biçiminde girin',
|
||||||
|
'Errors': 'Hatalar',
|
||||||
|
'FAQ': 'SSS',
|
||||||
|
'First name': 'Ad',
|
||||||
|
'Forgot username?': 'Kullanıcı adını mı unuttun?',
|
||||||
|
'Forms and Validators': 'Biçimler ve Doğrulayıcılar',
|
||||||
|
'Free Applications': 'Ücretsiz uygulamalar',
|
||||||
|
'Giriş': 'Giriş',
|
||||||
|
'Group %(group_id)s created': '%(group_id)s takımı oluşturuldu',
|
||||||
|
'Group ID': 'Takım ID',
|
||||||
|
'Group uniquely assigned to user %(id)s': 'Group uniquely assigned to user %(id)s',
|
||||||
|
'Groups': 'Topluluklar',
|
||||||
|
'Hello World': 'Merhaba Dünyalı',
|
||||||
|
'Hello World ## comment': 'Merhaba Dünyalı ',
|
||||||
|
'Hello World## comment': 'Merhaba Dünyalı',
|
||||||
|
'Home': 'Anasayfa',
|
||||||
|
'How did you get here?': 'Bu sayfayı görüntüleme uğruna neler mi oldu?',
|
||||||
|
'Introduction': 'Giriş',
|
||||||
|
'Invalid email': 'Yanlış eposta',
|
||||||
|
'Is Active': 'Etkin',
|
||||||
|
'Kayıt ol': 'Kayıt ol',
|
||||||
|
'Last name': 'Soyad',
|
||||||
|
'Layout': 'Şablon',
|
||||||
|
'Layout Plugins': 'Şablon Eklentileri',
|
||||||
|
'Layouts': 'Şablonlar',
|
||||||
|
'Live Chat': 'Canlı Sohbet',
|
||||||
|
'Logged in': 'Giriş yapıldı',
|
||||||
|
'Logged out': 'Çıkış yapıldı',
|
||||||
|
'Login': 'Giriş',
|
||||||
|
'Logout': 'Terket',
|
||||||
|
'Lost Password': 'Şifremi unuttum',
|
||||||
|
'Lost password?': 'Şifrenizimi unuttunuz?',
|
||||||
|
'Menu Model': 'Menu Model',
|
||||||
|
'Modified By': 'Değiştiren',
|
||||||
|
'Modified On': 'Değiştirilme tarihi',
|
||||||
|
'My Sites': 'Sitelerim',
|
||||||
|
'Name': 'İsim',
|
||||||
|
'Object or table name': 'Nesne ya da tablo adı',
|
||||||
|
'Online examples': 'Canlı örnekler',
|
||||||
|
'Origin': 'Origin',
|
||||||
|
'Other Plugins': 'Diğer eklentiler',
|
||||||
|
'Other Recipes': 'Diğer Tarifler',
|
||||||
|
'Overview': 'Göz gezdir',
|
||||||
|
'Password': 'Şifre',
|
||||||
|
"Password fields don't match": 'Şifreler uyuşmuyor',
|
||||||
|
'please input your password again': 'lütfen şifrenizi tekrar girin',
|
||||||
|
'Plugins': 'Eklentiler',
|
||||||
|
'Powered by': 'Yazılım Temeli',
|
||||||
|
'Preface': 'Preface',
|
||||||
|
'Profile': 'Hakkımda',
|
||||||
|
'Python': 'Python',
|
||||||
|
'Quick Examples': 'Hızlı Örnekler',
|
||||||
|
'Recipes': 'Recipes',
|
||||||
|
'Record ID': 'Kayıt ID',
|
||||||
|
'Register': 'Kayıt ol',
|
||||||
|
'Registration identifier': 'Registration identifier',
|
||||||
|
'Registration key': 'Kayıt anahtarı',
|
||||||
|
'Registration successful': 'Kayıt başarılı',
|
||||||
|
'reload': 'reload',
|
||||||
|
'Remember me (for 30 days)': 'Beni hatırla (30 gün)',
|
||||||
|
'Request reset password': 'Şifre sıfırla',
|
||||||
|
'Reset Password key': 'Şifre anahtarını sıfırla',
|
||||||
|
'Role': 'Role',
|
||||||
|
'Semantic': 'Semantik',
|
||||||
|
'Services': 'Hizmetler',
|
||||||
|
'Stylesheet': 'Stil Şablonu',
|
||||||
|
'Support': 'Destek',
|
||||||
|
'The Core': 'Çekirdek',
|
||||||
|
'The output of the file is a dictionary that was rendered by the view %s': 'Son olarak fonksiyonların vs. işlenip %s dosyasıyla tasarıma yedirilmesiyle sayfayı görüntüledin',
|
||||||
|
'The Views': 'The Views',
|
||||||
|
'This App': 'Bu Uygulama',
|
||||||
|
'Timestamp': 'Zaman damgası',
|
||||||
|
'Twitter': 'Twitter',
|
||||||
|
'User %(id)s Logged-in': '%(id)s Giriş yaptı',
|
||||||
|
'User %(id)s Logged-out': '%(id)s çıkış yaptı',
|
||||||
|
'User %(id)s Password reset': 'User %(id)s Password reset',
|
||||||
|
'User %(id)s Registered': '%(id)s Kayıt oldu',
|
||||||
|
'User ID': 'Kullanıcı ID',
|
||||||
|
'value already in database or empty': 'değer boş ya da veritabanında zaten mevcut',
|
||||||
|
'Verify Password': 'Şifreni Onayla',
|
||||||
|
'Videos': 'Videolar',
|
||||||
|
'View': 'View',
|
||||||
|
'Welcome': 'Hoşgeldin',
|
||||||
|
'Welcome to web2py!': 'Welcome to web2py!',
|
||||||
|
'Which called the function %s located in the file %s': 'Bu ziyaretle %s fonksiyonunu %s dosyasından çağırmış oldun ',
|
||||||
|
'You are successfully running web2py': 'web2py çatısını çalıştırmayı başardın',
|
||||||
|
'You can modify this application and adapt it to your needs': 'Artık uygulamayı kafana göre düzenleyebilirsin!',
|
||||||
|
'You visited the url %s': '%s adresini ziyaret ettin',
|
||||||
|
}
|
||||||
@@ -0,0 +1,244 @@
|
|||||||
|
# coding: utf8
|
||||||
|
{
|
||||||
|
'!langcode!': 'zh-cn',
|
||||||
|
'!langname!': '中文',
|
||||||
|
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"update" 应为选择表达式, 格式如 "field1=\'value\'". 但是对 JOIN 的结果不可以使用 update 或者 delete"',
|
||||||
|
'%s %%{row} deleted': '已删除 %s 笔',
|
||||||
|
'%s %%{row} updated': '已更新 %s 笔',
|
||||||
|
'%s selected': '%s 已选择',
|
||||||
|
'%Y-%m-%d': '%Y-%m-%d',
|
||||||
|
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||||
|
'(something like "it-it")': '(格式类似 "zh-tw")',
|
||||||
|
'A new version of web2py is available': '新版 web2py 已推出',
|
||||||
|
'A new version of web2py is available: %s': '新版 web2py 已推出: %s',
|
||||||
|
'about': '关于',
|
||||||
|
'About': '关于',
|
||||||
|
'About application': '关于本应用程序',
|
||||||
|
'Access Control': 'Access Control',
|
||||||
|
'Admin is disabled because insecure channel': '管理功能(Admin)在非安全连接环境下自动关闭',
|
||||||
|
'Admin is disabled because unsecure channel': '管理功能(Admin)在非安全连接环境下自动关闭',
|
||||||
|
'Administrative Interface': 'Administrative Interface',
|
||||||
|
'Administrative interface': '点击进入管理界面',
|
||||||
|
'Administrator Password:': '管理员密码:',
|
||||||
|
'Ajax Recipes': 'Ajax Recipes',
|
||||||
|
'An error occured, please %s the page': 'An error occured, please %s the page',
|
||||||
|
'appadmin is disabled because insecure channel': '管理界面在非安全通道下被禁用',
|
||||||
|
'Are you sure you want to delete file "%s"?': '确定要删除文件"%s"?',
|
||||||
|
'Are you sure you want to delete this object?': '确定要删除该对象么?',
|
||||||
|
'Are you sure you want to uninstall application "%s"': '确定要删除应用程序 "%s"',
|
||||||
|
'Are you sure you want to uninstall application "%s"?': '确定要删除应用程序 "%s"',
|
||||||
|
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': '注意: 登录管理账号需要安全连接(HTTPS)或是在本地连接(localhost).',
|
||||||
|
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': '注意: 因为在测试模式不保证多线程安全性,所以不可同时执行多个测试案例',
|
||||||
|
'ATTENTION: you cannot edit the running application!': '注意:不可编辑正在执行的应用程序!',
|
||||||
|
'Authentication': '验证',
|
||||||
|
'Available Databases and Tables': '可提供的数据库和数据表',
|
||||||
|
'Buy this book': '购买本书',
|
||||||
|
'cache': '高速缓存',
|
||||||
|
'Cache': 'Cache',
|
||||||
|
'Cache Keys': 'Cache Keys',
|
||||||
|
'Cannot be empty': '不可空白',
|
||||||
|
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': '编译失败:应用程序有错误,请排除错误后再尝试编译.',
|
||||||
|
'Change Password': '修改密码',
|
||||||
|
'change password': '修改密码',
|
||||||
|
'Check to delete': '打勾以示删除',
|
||||||
|
'Check to delete:': '打勾以示删除:',
|
||||||
|
'Clear CACHE?': 'Clear CACHE?',
|
||||||
|
'Clear DISK': 'Clear DISK',
|
||||||
|
'Clear RAM': 'Clear RAM',
|
||||||
|
'Client IP': '客户端网址(IP)',
|
||||||
|
'Community': 'Community',
|
||||||
|
'Components and Plugins': 'Components and Plugins',
|
||||||
|
'Controller': '控件',
|
||||||
|
'Controllers': '控件',
|
||||||
|
'Copyright': '版权所有',
|
||||||
|
'Create new application': '创建应用程序',
|
||||||
|
'Created By': 'Created By',
|
||||||
|
'Created On': 'Created On',
|
||||||
|
'Current request': '当前网络要求(request)',
|
||||||
|
'Current response': '当前网络响应(response)',
|
||||||
|
'Current session': '当前网络连接信息(session)',
|
||||||
|
'customize me!': '请调整我!',
|
||||||
|
'data uploaded': '数据已上传',
|
||||||
|
'Database': '数据库',
|
||||||
|
'Database %s select': '已选择 %s 数据库',
|
||||||
|
'Date and Time': '日期和时间',
|
||||||
|
'db': 'db',
|
||||||
|
'DB Model': '数据库模型',
|
||||||
|
'Delete': '删除',
|
||||||
|
'Delete:': '删除:',
|
||||||
|
'Demo': 'Demo',
|
||||||
|
'Deploy on Google App Engine': '发布到 Google App Engine',
|
||||||
|
'Deployment Recipes': 'Deployment Recipes',
|
||||||
|
'Description': '描述',
|
||||||
|
'DESIGN': '设计',
|
||||||
|
'design': '设计',
|
||||||
|
'Design for': '设计用于',
|
||||||
|
'DISK': 'DISK',
|
||||||
|
'Disk Cache Keys': 'Disk Cache Keys',
|
||||||
|
'Disk Cleared': 'Disk Cleared',
|
||||||
|
'Documentation': 'Documentation',
|
||||||
|
"Don't know what to do?": "Don't know what to do?",
|
||||||
|
'done!': '完成!',
|
||||||
|
'Download': '下载',
|
||||||
|
'E-mail': '电子邮件',
|
||||||
|
'EDIT': '编辑',
|
||||||
|
'Edit': '编辑',
|
||||||
|
'Edit application': '编辑应用程序',
|
||||||
|
'Edit current record': '编辑当前记录',
|
||||||
|
'edit profile': '编辑配置文件',
|
||||||
|
'Edit Profile': '编辑配置文件',
|
||||||
|
'Edit This App': '编辑本应用程序',
|
||||||
|
'Editing file': '编辑文件',
|
||||||
|
'Editing file "%s"': '编辑文件"%s"',
|
||||||
|
'Email and SMS': 'Email and SMS',
|
||||||
|
'enter an integer between %(min)g and %(max)g': 'enter an integer between %(min)g and %(max)g',
|
||||||
|
'Error logs for "%(app)s"': '"%(app)s"的错误记录',
|
||||||
|
'Errors': 'Errors',
|
||||||
|
'export as csv file': '以CSV格式导出',
|
||||||
|
'FAQ': 'FAQ',
|
||||||
|
'First name': '名',
|
||||||
|
'Forgot username?': '忘记用户名?',
|
||||||
|
'Forms and Validators': 'Forms and Validators',
|
||||||
|
'Free Applications': 'Free Applications',
|
||||||
|
'Functions with no doctests will result in [passed] tests.': '沒有 doctests 的函数会显示 [passed].',
|
||||||
|
'Group ID': '群组编号',
|
||||||
|
'Groups': 'Groups',
|
||||||
|
'Hello World': 'Hello World',
|
||||||
|
'Home': 'Home',
|
||||||
|
'How did you get here?': 'How did you get here?',
|
||||||
|
'import': 'import',
|
||||||
|
'Import/Export': '导入/导出',
|
||||||
|
'Index': '索引',
|
||||||
|
'insert new': '插入新纪录',
|
||||||
|
'insert new %s': '插入新纪录 %s',
|
||||||
|
'Installed applications': '已安裝应用程序',
|
||||||
|
'Internal State': '內部状态',
|
||||||
|
'Introduction': 'Introduction',
|
||||||
|
'Invalid action': '非法操作(action)',
|
||||||
|
'Invalid email': '不符合电子邮件格式',
|
||||||
|
'Invalid Query': '无效的查询请求',
|
||||||
|
'invalid request': '网络要求无效',
|
||||||
|
'Is Active': 'Is Active',
|
||||||
|
'Key': 'Key',
|
||||||
|
'Language files (static strings) updated': '语言文件已更新',
|
||||||
|
'Languages': '各国语言',
|
||||||
|
'Last name': '姓',
|
||||||
|
'Last saved on:': '最后保存时间:',
|
||||||
|
'Layout': '网页布局',
|
||||||
|
'Layout Plugins': 'Layout Plugins',
|
||||||
|
'Layouts': 'Layouts',
|
||||||
|
'License for': '软件授权',
|
||||||
|
'Live Chat': 'Live Chat',
|
||||||
|
'login': '登录',
|
||||||
|
'Login': '登录',
|
||||||
|
'Login to the Administrative Interface': '登录到管理员界面',
|
||||||
|
'logout': '登出',
|
||||||
|
'Logout': '登出',
|
||||||
|
'Lost Password': '忘记密码',
|
||||||
|
'Lost password?': '忘记密码?',
|
||||||
|
'Main Menu': '主菜单',
|
||||||
|
'Manage Cache': 'Manage Cache',
|
||||||
|
'Menu Model': '菜单模型(menu)',
|
||||||
|
'Models': '数据模型',
|
||||||
|
'Modified By': '修改者',
|
||||||
|
'Modified On': '修改时间',
|
||||||
|
'Modules': '程序模块',
|
||||||
|
'My Sites': 'My Sites',
|
||||||
|
'Name': '名字',
|
||||||
|
'New Record': '新记录',
|
||||||
|
'new record inserted': '已插入新记录',
|
||||||
|
'next 100 rows': '往后 100 笔',
|
||||||
|
'NO': '否',
|
||||||
|
'No databases in this application': '该应用程序不含数据库',
|
||||||
|
'Object or table name': 'Object or table name',
|
||||||
|
'Online examples': '点击进入在线例子',
|
||||||
|
'or import from csv file': '或导入CSV文件',
|
||||||
|
'Origin': '原文',
|
||||||
|
'Original/Translation': '原文/翻译',
|
||||||
|
'Other Plugins': 'Other Plugins',
|
||||||
|
'Other Recipes': 'Other Recipes',
|
||||||
|
'Overview': '概览',
|
||||||
|
'Password': '密码',
|
||||||
|
"Password fields don't match": '密码不匹配',
|
||||||
|
'Peeking at file': '选择文件',
|
||||||
|
'Plugins': 'Plugins',
|
||||||
|
'Powered by': '基于下列技术构建:',
|
||||||
|
'Preface': 'Preface',
|
||||||
|
'previous 100 rows': '往前 100 笔',
|
||||||
|
'Python': 'Python',
|
||||||
|
'Query:': '查询:',
|
||||||
|
'Quick Examples': 'Quick Examples',
|
||||||
|
'RAM': 'RAM',
|
||||||
|
'RAM Cache Keys': 'RAM Cache Keys',
|
||||||
|
'Ram Cleared': 'Ram Cleared',
|
||||||
|
'Recipes': 'Recipes',
|
||||||
|
'Record': '记录',
|
||||||
|
'record does not exist': '记录不存在',
|
||||||
|
'Record ID': '记录编号',
|
||||||
|
'Record id': '记录编号',
|
||||||
|
'Register': '注册',
|
||||||
|
'register': '注册',
|
||||||
|
'Registration identifier': 'Registration identifier',
|
||||||
|
'Registration key': '注册密钥',
|
||||||
|
'reload': 'reload',
|
||||||
|
'Remember me (for 30 days)': '记住我(30 天)',
|
||||||
|
'Reset Password key': '重置密码',
|
||||||
|
'Resolve Conflict file': '解决冲突文件',
|
||||||
|
'Role': '角色',
|
||||||
|
'Rows in Table': '在数据表里的记录',
|
||||||
|
'Rows selected': '笔记录被选择',
|
||||||
|
'Saved file hash:': '已保存文件的哈希值:',
|
||||||
|
'Semantic': 'Semantic',
|
||||||
|
'Services': 'Services',
|
||||||
|
'Size of cache:': 'Size of cache:',
|
||||||
|
'state': '状态',
|
||||||
|
'Static files': '静态文件',
|
||||||
|
'Statistics': '统计数据',
|
||||||
|
'Stylesheet': '网页样式表',
|
||||||
|
'submit': '提交',
|
||||||
|
'Submit': '提交',
|
||||||
|
'Support': 'Support',
|
||||||
|
'Sure you want to delete this object?': '确定要删除此对象?',
|
||||||
|
'Table': '数据表',
|
||||||
|
'Table name': '数据表名称',
|
||||||
|
'Testing application': '测试中的应用程序',
|
||||||
|
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"query"应是类似 "db.table1.field1==\'value\'" 的条件表达式. "db.table1.field1==db.table2.field2"的形式则代表执行 JOIN SQL.',
|
||||||
|
'The Core': 'The Core',
|
||||||
|
'The output of the file is a dictionary that was rendered by the view %s': 'The output of the file is a dictionary that was rendered by the view %s',
|
||||||
|
'The Views': '视图',
|
||||||
|
'There are no controllers': '沒有控件(controllers)',
|
||||||
|
'There are no models': '沒有数据库模型(models)',
|
||||||
|
'There are no modules': '沒有程序模块(modules)',
|
||||||
|
'There are no static files': '沒有静态文件',
|
||||||
|
'There are no translators, only default language is supported': '沒有对应的语言文件,仅支持原始语言',
|
||||||
|
'There are no views': '沒有视图',
|
||||||
|
'This App': '该应用',
|
||||||
|
'This is the %(filename)s template': '这是%(filename)s文件的模板(template)',
|
||||||
|
'Ticket': '问题清单',
|
||||||
|
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||||
|
'Timestamp': '时间戳',
|
||||||
|
'Twitter': 'Twitter',
|
||||||
|
'Unable to check for upgrades': '查询新版本失败',
|
||||||
|
'Unable to download': '无法下载',
|
||||||
|
'Unable to download app': '无法下载应用程序',
|
||||||
|
'unable to parse csv file': '无法解析CSV文件',
|
||||||
|
'Update:': '更新:',
|
||||||
|
'Upload existing application': '上传已有应用程序',
|
||||||
|
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': '使用下列方式可得到更复杂的条件表达式, (...)&(...) 代表必须都满足, (...)|(...) 代表其一, ~(...)则代表否.',
|
||||||
|
'User %(id)s Logged-in': '用户 %(id)s 已登录',
|
||||||
|
'User %(id)s Registered': '用户 %(id)s 已注册',
|
||||||
|
'User ID': '用户编号',
|
||||||
|
'Verify Password': '验证密码',
|
||||||
|
'Videos': '视频',
|
||||||
|
'View': '查看',
|
||||||
|
'Views': '视图',
|
||||||
|
'Welcome': '欢迎',
|
||||||
|
'Welcome %s': '欢迎 %s',
|
||||||
|
'Welcome to web2py': '欢迎使用 web2py',
|
||||||
|
'Welcome to web2py!': '欢迎使用 web2py!',
|
||||||
|
'Which called the function %s located in the file %s': 'Which called the function %s located in the file %s',
|
||||||
|
'YES': '是',
|
||||||
|
'You are successfully running web2py': '您已成功运行 web2py',
|
||||||
|
'You can modify this application and adapt it to your needs': '请根据您的需要修改本程序',
|
||||||
|
'You visited the url %s': 'You visited the url %s',
|
||||||
|
}
|
||||||
@@ -0,0 +1,244 @@
|
|||||||
|
# coding: utf8
|
||||||
|
{
|
||||||
|
'!langcode!': 'zh-cn',
|
||||||
|
'!langname!': '中文',
|
||||||
|
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"更新" 是選擇性的條件式, 格式就像 "欄位1=\'值\'". 但是 JOIN 的資料不可以使用 update 或是 delete"',
|
||||||
|
'%s %%{row} deleted': '已刪除 %s 筆',
|
||||||
|
'%s %%{row} updated': '已更新 %s 筆',
|
||||||
|
'%s selected': '%s 已選擇',
|
||||||
|
'%Y-%m-%d': '%Y-%m-%d',
|
||||||
|
'%Y-%m-%d %H:%M:%S': '%Y-%m-%d %H:%M:%S',
|
||||||
|
'(something like "it-it")': '(格式類似 "zh-tw")',
|
||||||
|
'A new version of web2py is available': '新版的 web2py 已發行',
|
||||||
|
'A new version of web2py is available: %s': '新版的 web2py 已發行: %s',
|
||||||
|
'about': '關於',
|
||||||
|
'About': '關於',
|
||||||
|
'About application': '關於本應用程式',
|
||||||
|
'Access Control': 'Access Control',
|
||||||
|
'Admin is disabled because insecure channel': '管理功能(Admin)在不安全連線環境下自動關閉',
|
||||||
|
'Admin is disabled because unsecure channel': '管理功能(Admin)在不安全連線環境下自動關閉',
|
||||||
|
'Administrative Interface': 'Administrative Interface',
|
||||||
|
'Administrative interface': '點此處進入管理介面',
|
||||||
|
'Administrator Password:': '管理員密碼:',
|
||||||
|
'Ajax Recipes': 'Ajax Recipes',
|
||||||
|
'An error occured, please %s the page': 'An error occured, please %s the page',
|
||||||
|
'appadmin is disabled because insecure channel': '因為來自非安全通道,管理介面關閉',
|
||||||
|
'Are you sure you want to delete file "%s"?': '確定要刪除檔案"%s"?',
|
||||||
|
'Are you sure you want to delete this object?': 'Are you sure you want to delete this object?',
|
||||||
|
'Are you sure you want to uninstall application "%s"': '確定要移除應用程式 "%s"',
|
||||||
|
'Are you sure you want to uninstall application "%s"?': '確定要移除應用程式 "%s"',
|
||||||
|
'ATTENTION: Login requires a secure (HTTPS) connection or running on localhost.': '注意: 登入管理帳號需要安全連線(HTTPS)或是在本機連線(localhost).',
|
||||||
|
'ATTENTION: TESTING IS NOT THREAD SAFE SO DO NOT PERFORM MULTIPLE TESTS CONCURRENTLY.': '注意: 因為在測試模式不保證多執行緒安全性,也就是說不可以同時執行多個測試案例',
|
||||||
|
'ATTENTION: you cannot edit the running application!': '注意:不可編輯正在執行的應用程式!',
|
||||||
|
'Authentication': '驗證',
|
||||||
|
'Available Databases and Tables': '可提供的資料庫和資料表',
|
||||||
|
'Buy this book': 'Buy this book',
|
||||||
|
'cache': '快取記憶體',
|
||||||
|
'Cache': 'Cache',
|
||||||
|
'Cache Keys': 'Cache Keys',
|
||||||
|
'Cannot be empty': '不可空白',
|
||||||
|
'Cannot compile: there are errors in your app. Debug it, correct errors and try again.': '無法編譯:應用程式中含有錯誤,請除錯後再試一次.',
|
||||||
|
'Change Password': '變更密碼',
|
||||||
|
'change password': '變更密碼',
|
||||||
|
'Check to delete': '打勾代表刪除',
|
||||||
|
'Check to delete:': '點選以示刪除:',
|
||||||
|
'Clear CACHE?': 'Clear CACHE?',
|
||||||
|
'Clear DISK': 'Clear DISK',
|
||||||
|
'Clear RAM': 'Clear RAM',
|
||||||
|
'Client IP': '客戶端網址(IP)',
|
||||||
|
'Community': 'Community',
|
||||||
|
'Components and Plugins': 'Components and Plugins',
|
||||||
|
'Controller': '控件',
|
||||||
|
'Controllers': '控件',
|
||||||
|
'Copyright': '版權所有',
|
||||||
|
'Create new application': '創建應用程式',
|
||||||
|
'Created By': 'Created By',
|
||||||
|
'Created On': 'Created On',
|
||||||
|
'Current request': '目前網路資料要求(request)',
|
||||||
|
'Current response': '目前網路資料回應(response)',
|
||||||
|
'Current session': '目前網路連線資訊(session)',
|
||||||
|
'customize me!': '請調整我!',
|
||||||
|
'data uploaded': '資料已上傳',
|
||||||
|
'Database': '資料庫',
|
||||||
|
'Database %s select': '已選擇 %s 資料庫',
|
||||||
|
'Date and Time': '日期和時間',
|
||||||
|
'db': 'db',
|
||||||
|
'DB Model': '資料庫模組',
|
||||||
|
'Delete': '刪除',
|
||||||
|
'Delete:': '刪除:',
|
||||||
|
'Demo': 'Demo',
|
||||||
|
'Deploy on Google App Engine': '配置到 Google App Engine',
|
||||||
|
'Deployment Recipes': 'Deployment Recipes',
|
||||||
|
'Description': '描述',
|
||||||
|
'DESIGN': '設計',
|
||||||
|
'design': '設計',
|
||||||
|
'Design for': '設計為了',
|
||||||
|
'DISK': 'DISK',
|
||||||
|
'Disk Cache Keys': 'Disk Cache Keys',
|
||||||
|
'Disk Cleared': 'Disk Cleared',
|
||||||
|
'Documentation': 'Documentation',
|
||||||
|
"Don't know what to do?": "Don't know what to do?",
|
||||||
|
'done!': '完成!',
|
||||||
|
'Download': 'Download',
|
||||||
|
'E-mail': '電子郵件',
|
||||||
|
'EDIT': '編輯',
|
||||||
|
'Edit': '編輯',
|
||||||
|
'Edit application': '編輯應用程式',
|
||||||
|
'Edit current record': '編輯當前紀錄',
|
||||||
|
'edit profile': '編輯設定檔',
|
||||||
|
'Edit Profile': '編輯設定檔',
|
||||||
|
'Edit This App': '編輯本應用程式',
|
||||||
|
'Editing file': '編輯檔案',
|
||||||
|
'Editing file "%s"': '編輯檔案"%s"',
|
||||||
|
'Email and SMS': 'Email and SMS',
|
||||||
|
'enter an integer between %(min)g and %(max)g': 'enter an integer between %(min)g and %(max)g',
|
||||||
|
'Error logs for "%(app)s"': '"%(app)s"的錯誤紀錄',
|
||||||
|
'Errors': 'Errors',
|
||||||
|
'export as csv file': '以逗號分隔檔(csv)格式匯出',
|
||||||
|
'FAQ': 'FAQ',
|
||||||
|
'First name': '名',
|
||||||
|
'Forgot username?': 'Forgot username?',
|
||||||
|
'Forms and Validators': 'Forms and Validators',
|
||||||
|
'Free Applications': 'Free Applications',
|
||||||
|
'Functions with no doctests will result in [passed] tests.': '沒有 doctests 的函式會顯示 [passed].',
|
||||||
|
'Group ID': '群組編號',
|
||||||
|
'Groups': 'Groups',
|
||||||
|
'Hello World': '嗨! 世界',
|
||||||
|
'Home': 'Home',
|
||||||
|
'How did you get here?': 'How did you get here?',
|
||||||
|
'import': 'import',
|
||||||
|
'Import/Export': '匯入/匯出',
|
||||||
|
'Index': '索引',
|
||||||
|
'insert new': '插入新資料',
|
||||||
|
'insert new %s': '插入新資料 %s',
|
||||||
|
'Installed applications': '已安裝應用程式',
|
||||||
|
'Internal State': '內部狀態',
|
||||||
|
'Introduction': 'Introduction',
|
||||||
|
'Invalid action': '不合法的動作(action)',
|
||||||
|
'Invalid email': '不合法的電子郵件',
|
||||||
|
'Invalid Query': '不合法的查詢',
|
||||||
|
'invalid request': '不合法的網路要求(request)',
|
||||||
|
'Is Active': 'Is Active',
|
||||||
|
'Key': 'Key',
|
||||||
|
'Language files (static strings) updated': '語言檔已更新',
|
||||||
|
'Languages': '各國語言',
|
||||||
|
'Last name': '姓',
|
||||||
|
'Last saved on:': '最後儲存時間:',
|
||||||
|
'Layout': '網頁配置',
|
||||||
|
'Layout Plugins': 'Layout Plugins',
|
||||||
|
'Layouts': 'Layouts',
|
||||||
|
'License for': '軟體版權為',
|
||||||
|
'Live Chat': 'Live Chat',
|
||||||
|
'login': '登入',
|
||||||
|
'Login': '登入',
|
||||||
|
'Login to the Administrative Interface': '登入到管理員介面',
|
||||||
|
'logout': '登出',
|
||||||
|
'Logout': '登出',
|
||||||
|
'Lost Password': '密碼遺忘',
|
||||||
|
'Lost password?': 'Lost password?',
|
||||||
|
'Main Menu': '主選單',
|
||||||
|
'Manage Cache': 'Manage Cache',
|
||||||
|
'Menu Model': '選單模組(menu)',
|
||||||
|
'Models': '資料模組',
|
||||||
|
'Modified By': 'Modified By',
|
||||||
|
'Modified On': 'Modified On',
|
||||||
|
'Modules': '程式模組',
|
||||||
|
'My Sites': 'My Sites',
|
||||||
|
'Name': '名字',
|
||||||
|
'New Record': '新紀錄',
|
||||||
|
'new record inserted': '已插入新紀錄',
|
||||||
|
'next 100 rows': '往後 100 筆',
|
||||||
|
'NO': '否',
|
||||||
|
'No databases in this application': '這應用程式不含資料庫',
|
||||||
|
'Object or table name': 'Object or table name',
|
||||||
|
'Online examples': '點此處進入線上範例',
|
||||||
|
'or import from csv file': '或是從逗號分隔檔(CSV)匯入',
|
||||||
|
'Origin': '原文',
|
||||||
|
'Original/Translation': '原文/翻譯',
|
||||||
|
'Other Plugins': 'Other Plugins',
|
||||||
|
'Other Recipes': 'Other Recipes',
|
||||||
|
'Overview': 'Overview',
|
||||||
|
'Password': '密碼',
|
||||||
|
"Password fields don't match": '密碼欄不匹配',
|
||||||
|
'Peeking at file': '選擇檔案',
|
||||||
|
'Plugins': 'Plugins',
|
||||||
|
'Powered by': '基於以下技術構建:',
|
||||||
|
'Preface': 'Preface',
|
||||||
|
'previous 100 rows': '往前 100 筆',
|
||||||
|
'Python': 'Python',
|
||||||
|
'Query:': '查詢:',
|
||||||
|
'Quick Examples': 'Quick Examples',
|
||||||
|
'RAM': 'RAM',
|
||||||
|
'RAM Cache Keys': 'RAM Cache Keys',
|
||||||
|
'Ram Cleared': 'Ram Cleared',
|
||||||
|
'Recipes': 'Recipes',
|
||||||
|
'Record': '紀錄',
|
||||||
|
'record does not exist': '紀錄不存在',
|
||||||
|
'Record ID': '紀錄編號',
|
||||||
|
'Record id': '紀錄編號',
|
||||||
|
'Register': '註冊',
|
||||||
|
'register': '註冊',
|
||||||
|
'Registration identifier': 'Registration identifier',
|
||||||
|
'Registration key': '註冊金鑰',
|
||||||
|
'reload': 'reload',
|
||||||
|
'Remember me (for 30 days)': '記住我(30 天)',
|
||||||
|
'Reset Password key': '重設密碼',
|
||||||
|
'Resolve Conflict file': '解決衝突檔案',
|
||||||
|
'Role': '角色',
|
||||||
|
'Rows in Table': '在資料表裏的資料',
|
||||||
|
'Rows selected': '筆資料被選擇',
|
||||||
|
'Saved file hash:': '檔案雜湊值已紀錄:',
|
||||||
|
'Semantic': 'Semantic',
|
||||||
|
'Services': 'Services',
|
||||||
|
'Size of cache:': 'Size of cache:',
|
||||||
|
'state': '狀態',
|
||||||
|
'Static files': '靜態檔案',
|
||||||
|
'Statistics': 'Statistics',
|
||||||
|
'Stylesheet': '網頁風格檔',
|
||||||
|
'submit': 'submit',
|
||||||
|
'Submit': '傳送',
|
||||||
|
'Support': 'Support',
|
||||||
|
'Sure you want to delete this object?': '確定要刪除此物件?',
|
||||||
|
'Table': '資料表',
|
||||||
|
'Table name': '資料表名稱',
|
||||||
|
'Testing application': '測試中的應用程式',
|
||||||
|
'The "query" is a condition like "db.table1.field1==\'value\'". Something like "db.table1.field1==db.table2.field2" results in a SQL JOIN.': '"查詢"是一個像 "db.表1.欄位1==\'值\'" 的條件式. 以"db.表1.欄位1==db.表2.欄位2"方式則相當於執行 JOIN SQL.',
|
||||||
|
'The Core': 'The Core',
|
||||||
|
'The output of the file is a dictionary that was rendered by the view %s': 'The output of the file is a dictionary that was rendered by the view %s',
|
||||||
|
'The Views': 'The Views',
|
||||||
|
'There are no controllers': '沒有控件(controllers)',
|
||||||
|
'There are no models': '沒有資料庫模組(models)',
|
||||||
|
'There are no modules': '沒有程式模組(modules)',
|
||||||
|
'There are no static files': '沒有靜態檔案',
|
||||||
|
'There are no translators, only default language is supported': '沒有翻譯檔,只支援原始語言',
|
||||||
|
'There are no views': '沒有視圖',
|
||||||
|
'This App': 'This App',
|
||||||
|
'This is the %(filename)s template': '這是%(filename)s檔案的樣板(template)',
|
||||||
|
'Ticket': '問題單',
|
||||||
|
'Time in Cache (h:m:s)': 'Time in Cache (h:m:s)',
|
||||||
|
'Timestamp': '時間標記',
|
||||||
|
'Twitter': 'Twitter',
|
||||||
|
'Unable to check for upgrades': '無法做升級檢查',
|
||||||
|
'Unable to download': '無法下載',
|
||||||
|
'Unable to download app': '無法下載應用程式',
|
||||||
|
'unable to parse csv file': '無法解析逗號分隔檔(csv)',
|
||||||
|
'Update:': '更新:',
|
||||||
|
'Upload existing application': '更新存在的應用程式',
|
||||||
|
'Use (...)&(...) for AND, (...)|(...) for OR, and ~(...) for NOT to build more complex queries.': '使用下列方式來組合更複雜的條件式, (...)&(...) 代表同時存在的條件, (...)|(...) 代表擇一的條件, ~(...)則代表反向條件.',
|
||||||
|
'User %(id)s Logged-in': '使用者 %(id)s 已登入',
|
||||||
|
'User %(id)s Registered': '使用者 %(id)s 已註冊',
|
||||||
|
'User ID': '使用者編號',
|
||||||
|
'Verify Password': '驗證密碼',
|
||||||
|
'Videos': 'Videos',
|
||||||
|
'View': '視圖',
|
||||||
|
'Views': '視圖',
|
||||||
|
'Welcome': 'Welcome',
|
||||||
|
'Welcome %s': '歡迎 %s',
|
||||||
|
'Welcome to web2py': '歡迎使用 web2py',
|
||||||
|
'Welcome to web2py!': 'Welcome to web2py!',
|
||||||
|
'Which called the function %s located in the file %s': 'Which called the function %s located in the file %s',
|
||||||
|
'YES': '是',
|
||||||
|
'You are successfully running web2py': 'You are successfully running web2py',
|
||||||
|
'You can modify this application and adapt it to your needs': 'You can modify this application and adapt it to your needs',
|
||||||
|
'You visited the url %s': 'You visited the url %s',
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# coding: utf8
|
# coding: utf8
|
||||||
{
|
{
|
||||||
'!langcode!': 'zh-cn',
|
'!langcode!': 'zh-tw',
|
||||||
'!langname!': '中文',
|
'!langname!': '中文',
|
||||||
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"更新" 是選擇性的條件式, 格式就像 "欄位1=\'值\'". 但是 JOIN 的資料不可以使用 update 或是 delete"',
|
'"update" is an optional expression like "field1=\'newvalue\'". You cannot update or delete the results of a JOIN': '"更新" 是選擇性的條件式, 格式就像 "欄位1=\'值\'". 但是 JOIN 的資料不可以使用 update 或是 delete"',
|
||||||
'%s %%{row} deleted': '已刪除 %s 筆',
|
'%s %%{row} deleted': '已刪除 %s 筆',
|
||||||
|
|||||||
@@ -7,8 +7,7 @@
|
|||||||
|
|
||||||
response.logo = A(B('web',SPAN(2),'py'),XML('™ '),
|
response.logo = A(B('web',SPAN(2),'py'),XML('™ '),
|
||||||
_class="brand",_href="http://www.web2py.com/")
|
_class="brand",_href="http://www.web2py.com/")
|
||||||
response.title = ' '.join(
|
response.title = request.application.replace('_',' ').title()
|
||||||
word.capitalize() for word in request.application.split('_'))
|
|
||||||
response.subtitle = T('customize me!')
|
response.subtitle = T('customize me!')
|
||||||
|
|
||||||
## read more at http://dev.w3.org/html5/markup/meta.name.html
|
## read more at http://dev.w3.org/html5/markup/meta.name.html
|
||||||
@@ -137,3 +136,5 @@ def _():
|
|||||||
]
|
]
|
||||||
)]
|
)]
|
||||||
if DEVELOPMENT_MENU: _()
|
if DEVELOPMENT_MENU: _()
|
||||||
|
|
||||||
|
if "auth" in locals(): auth.wikimenu()
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ div.flash {
|
|||||||
position:fixed;
|
position:fixed;
|
||||||
padding:10px;
|
padding:10px;
|
||||||
top:48px;
|
top:48px;
|
||||||
right:50px;
|
right:250px;
|
||||||
min-width:280px;
|
min-width:280px;
|
||||||
opacity:0.95;
|
opacity:0.95;
|
||||||
margin:0px 0px 10px 10px;
|
margin:0px 0px 10px 10px;
|
||||||
@@ -191,6 +191,7 @@ div.error {
|
|||||||
.web2py_grid {width:100%}
|
.web2py_grid {width:100%}
|
||||||
.web2py_grid table {width:100%}
|
.web2py_grid table {width:100%}
|
||||||
.web2py_grid tbody td {padding:2px 5px 2px 5px; vertical-align: middle;}
|
.web2py_grid tbody td {padding:2px 5px 2px 5px; vertical-align: middle;}
|
||||||
|
.web2py_grid .web2py_form td {vertical-align: top;}
|
||||||
|
|
||||||
.web2py_grid thead th,.web2py_grid tfoot td {
|
.web2py_grid thead th,.web2py_grid tfoot td {
|
||||||
background-color:#EAEAEA;
|
background-color:#EAEAEA;
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ td.w2p_fl,td.w2p_fc {padding:0;}
|
|||||||
==============================================================*/
|
==============================================================*/
|
||||||
|
|
||||||
/* because web2py handles this via js */
|
/* because web2py handles this via js */
|
||||||
|
textarea { width:90%}
|
||||||
.hidden{visibility:visible;}
|
.hidden{visibility:visible;}
|
||||||
/* right folder for bootstrap black images/icons */
|
/* right folder for bootstrap black images/icons */
|
||||||
[class^="icon-"],[class*=" icon-"]{
|
[class^="icon-"],[class*=" icon-"]{
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ function web2py_ajax_init(target) {
|
|||||||
jQuery('.hidden', target).hide();
|
jQuery('.hidden', target).hide();
|
||||||
jQuery('.error', target).hide().slideDown('slow');
|
jQuery('.error', target).hide().slideDown('slow');
|
||||||
web2py_ajax_fields(target);
|
web2py_ajax_fields(target);
|
||||||
|
web2py_show_if(target);
|
||||||
};
|
};
|
||||||
|
|
||||||
function web2py_event_handlers() {
|
function web2py_event_handlers() {
|
||||||
@@ -216,3 +217,26 @@ function web2py_validate_entropy(myfield, req_entropy) {
|
|||||||
if(!myfield.hasClass('entropy_check')) myfield.on('keyup', validator).on('keydown', validator).addClass('entropy_check');
|
if(!myfield.hasClass('entropy_check')) myfield.on('keyup', validator).on('keydown', validator).addClass('entropy_check');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function web2py_show_if(target) {
|
||||||
|
var triggers = {};
|
||||||
|
var show_if = function () {
|
||||||
|
var t = jQuery(this);
|
||||||
|
var id = t.attr('id');
|
||||||
|
t.attr('value', t.val());
|
||||||
|
for(var k = 0; k < triggers[id].length; k++) {
|
||||||
|
var dep = jQuery('#' + triggers[id][k], target);
|
||||||
|
var tr = jQuery('#' + triggers[id][k] + '__row', target);
|
||||||
|
if(t.is(dep.attr('data-show-if'))) tr.slideDown();
|
||||||
|
else tr.hide();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
jQuery('[data-show-trigger]', target).each(function () {
|
||||||
|
var name = jQuery(this).attr('data-show-trigger');
|
||||||
|
if(!triggers[name]) triggers[name] = [];
|
||||||
|
triggers[name].push(jQuery(this).attr('id'));
|
||||||
|
});
|
||||||
|
for(var name in triggers) {
|
||||||
|
jQuery('#' + name, target).change(show_if).keyup(show_if);
|
||||||
|
show_if.call(jQuery('#' + name, target));
|
||||||
|
};
|
||||||
|
}
|
||||||