--- a/.installed.cfg Thu Oct 04 16:41:41 2018 +0200
+++ b/.installed.cfg Fri Oct 05 15:49:10 2018 +0200
@@ -1,5 +1,6 @@
[buildout]
-installed_develop_eggs = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-media.egg-link
+installed_develop_eggs = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/tmphvzy_3pybuild
+ /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-media.egg-link
/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-file.egg-link
/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-sequence.egg-link
/home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-content.egg-link
@@ -23,15 +24,15 @@
parts = package i18n pyflakes test
[package]
-__buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/prequest
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/proutes
+__buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pserve
+ /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pdistreport
/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pviews
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pshell
+ /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pcreate
/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/ptweens
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pcreate
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pserve
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pdistreport
-__buildout_signature__ = zc.recipe.egg-8f8815b05e6871a2c4acf8d9c9b6e98f zc.buildout-2.10.0-py3.5.egg setuptools-8f8815b05e6871a2c4acf8d9c9b6e98f
+ /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/prequest
+ /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/proutes
+ /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pshell
+__buildout_signature__ = zc.recipe.egg-1cfa1feb0fa42aa4d8579505a97c12a0 zc.buildout-1cfa1feb0fa42aa4d8579505a97c12a0 setuptools-1cfa1feb0fa42aa4d8579505a97c12a0
_b = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin
_d = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs
_e = /var/local/env/pyams/eggs
@@ -49,7 +50,7 @@
__buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pybabel
/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/polint
/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pot-create
-__buildout_signature__ = zc.recipe.egg-8f8815b05e6871a2c4acf8d9c9b6e98f zc.buildout-2.10.0-py3.5.egg setuptools-8f8815b05e6871a2c4acf8d9c9b6e98f
+__buildout_signature__ = zc.recipe.egg-1cfa1feb0fa42aa4d8579505a97c12a0 zc.buildout-1cfa1feb0fa42aa4d8579505a97c12a0 setuptools-1cfa1feb0fa42aa4d8579505a97c12a0
_b = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin
_d = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs
_e = /var/local/env/pyams/eggs
@@ -64,7 +65,7 @@
[pyflakes]
__buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pyflakes
/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/pyflakes
-__buildout_signature__ = zc.recipe.egg-8f8815b05e6871a2c4acf8d9c9b6e98f zc.buildout-2.10.0-py3.5.egg setuptools-8f8815b05e6871a2c4acf8d9c9b6e98f
+__buildout_signature__ = zc.recipe.egg-1cfa1feb0fa42aa4d8579505a97c12a0 zc.buildout-1cfa1feb0fa42aa4d8579505a97c12a0 setuptools-1cfa1feb0fa42aa4d8579505a97c12a0
_b = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin
_d = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs
_e = /var/local/env/pyams/eggs
@@ -81,7 +82,7 @@
[test]
__buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/parts/test
/home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/test
-__buildout_signature__ = six-8f8815b05e6871a2c4acf8d9c9b6e98f zc.recipe.testrunner-8f8815b05e6871a2c4acf8d9c9b6e98f zc.recipe.egg-8f8815b05e6871a2c4acf8d9c9b6e98f zc.buildout-2.10.0-py3.5.egg zope.exceptions-8f8815b05e6871a2c4acf8d9c9b6e98f zope.interface-8f8815b05e6871a2c4acf8d9c9b6e98f zope.testrunner-8f8815b05e6871a2c4acf8d9c9b6e98f setuptools-8f8815b05e6871a2c4acf8d9c9b6e98f
+__buildout_signature__ = six-1cfa1feb0fa42aa4d8579505a97c12a0 zc.recipe.testrunner-1cfa1feb0fa42aa4d8579505a97c12a0 zc.recipe.egg-1cfa1feb0fa42aa4d8579505a97c12a0 zc.buildout-1cfa1feb0fa42aa4d8579505a97c12a0 zope.exceptions-1cfa1feb0fa42aa4d8579505a97c12a0 zope.interface-1cfa1feb0fa42aa4d8579505a97c12a0 zope.testrunner-1cfa1feb0fa42aa4d8579505a97c12a0 setuptools-1cfa1feb0fa42aa4d8579505a97c12a0
_b = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin
_d = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs
_e = /var/local/env/pyams/eggs
@@ -93,73 +94,3 @@
location = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/parts/test
recipe = zc.recipe.testrunner
script = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/bin/test
-
-[buildout]
-installed_develop_eggs = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-media.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-file.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-sequence.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-content.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/lingua.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-template.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-default-theme.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-security.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-workflow.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-skin.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-pagelet.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-viewlet.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-i18n.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-mail.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-thesaurus.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-portal.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-zmi.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-zmq.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-catalog.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-form.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-utils.egg-link
-
-[buildout]
-parts = i18n pyflakes test package
-
-[buildout]
-parts = pyflakes test package i18n
-
-[buildout]
-parts = test package i18n pyflakes
-
-[buildout]
-parts = package i18n pyflakes test
-
-[buildout]
-installed_develop_eggs = /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-media.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-file.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-sequence.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-content.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/lingua.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-template.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-default-theme.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-security.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-workflow.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-skin.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-pagelet.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-viewlet.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-i18n.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-mail.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-thesaurus.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-portal.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-zmi.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-zmq.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-catalog.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-form.egg-link
- /home/tflorac/Dropbox/src/PyAMS/pyams_portal/develop-eggs/pyams-utils.egg-link
-
-[buildout]
-parts = i18n pyflakes test package
-
-[buildout]
-parts = pyflakes test package i18n
-
-[buildout]
-parts = test package i18n pyflakes
-
-[buildout]
-parts = package i18n pyflakes test
--- a/bootstrap.py Thu Oct 04 16:41:41 2018 +0200
+++ b/bootstrap.py Fri Oct 05 15:49:10 2018 +0200
@@ -25,7 +25,10 @@
from optparse import OptionParser
-tmpeggs = tempfile.mkdtemp()
+__version__ = '2015-07-01'
+# See zc.buildout's changelog if this version is up to date.
+
+tmpeggs = tempfile.mkdtemp(prefix='bootstrap-')
usage = '''\
[DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options]
@@ -35,18 +38,19 @@
Simply run this script in a directory containing a buildout.cfg, using the
Python that you want bin/buildout to use.
-Note that by using --find-links to point to local resources, you can keep
+Note that by using --find-links to point to local resources, you can keep
this script from going over the network.
'''
parser = OptionParser(usage=usage)
-parser.add_option("-v", "--version", help="use a specific zc.buildout version")
-
+parser.add_option("--version",
+ action="store_true", default=False,
+ help=("Return bootstrap.py version."))
parser.add_option("-t", "--accept-buildout-test-releases",
dest='accept_buildout_test_releases',
action="store_true", default=False,
- help=("Normally, if you do not specify a --version, the "
- "bootstrap script and buildout gets the newest "
+ help=("Normally, if you do not specify a --buildout-version, "
+ "the bootstrap script and buildout gets the newest "
"*final* versions of zc.buildout and its recipes and "
"extensions for you. If you use this flag, "
"bootstrap and buildout will get the newest releases "
@@ -59,36 +63,57 @@
parser.add_option("--allow-site-packages",
action="store_true", default=False,
help=("Let bootstrap.py use existing site packages"))
-
+parser.add_option("--buildout-version",
+ help="Use a specific zc.buildout version")
+parser.add_option("--setuptools-version",
+ help="Use a specific setuptools version")
+parser.add_option("--setuptools-to-dir",
+ help=("Allow for re-use of existing directory of "
+ "setuptools versions"))
options, args = parser.parse_args()
+if options.version:
+ print("bootstrap.py version %s" % __version__)
+ sys.exit(0)
+
######################################################################
# load/install setuptools
try:
- if options.allow_site_packages:
- import setuptools
- import pkg_resources
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen
ez = {}
-exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez)
+if os.path.exists('ez_setup.py'):
+ exec(open('ez_setup.py').read(), ez)
+else:
+ exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez)
if not options.allow_site_packages:
# ez_setup imports site, which adds site packages
- # this will remove them from the path to ensure that incompatible versions
+ # this will remove them from the path to ensure that incompatible versions
# of setuptools are not in the path
import site
- # inside a virtualenv, there is no 'getsitepackages'.
+ # inside a virtualenv, there is no 'getsitepackages'.
# We can't remove these reliably
if hasattr(site, 'getsitepackages'):
for sitepackage_path in site.getsitepackages():
- sys.path[:] = [x for x in sys.path if sitepackage_path not in x]
+ # Strip all site-packages directories from sys.path that
+ # are not sys.prefix; this is because on Windows
+ # sys.prefix is a site-package directory.
+ if sitepackage_path != sys.prefix:
+ sys.path[:] = [x for x in sys.path
+ if sitepackage_path not in x]
setup_args = dict(to_dir=tmpeggs, download_delay=0)
+
+if options.setuptools_version is not None:
+ setup_args['version'] = options.setuptools_version
+if options.setuptools_to_dir is not None:
+ setup_args['to_dir'] = options.setuptools_to_dir
+
ez['use_setuptools'](**setup_args)
import setuptools
import pkg_resources
@@ -104,7 +129,12 @@
ws = pkg_resources.working_set
+setuptools_path = ws.find(
+ pkg_resources.Requirement.parse('setuptools')).location
+
+# Fix sys.path here as easy_install.pth added before PYTHONPATH
cmd = [sys.executable, '-c',
+ 'import sys; sys.path[0:0] = [%r]; ' % setuptools_path +
'from setuptools.command.easy_install import main; main()',
'-mZqNxd', tmpeggs]
@@ -117,21 +147,23 @@
if find_links:
cmd.extend(['-f', find_links])
-setuptools_path = ws.find(
- pkg_resources.Requirement.parse('setuptools')).location
-
requirement = 'zc.buildout'
-version = options.version
+version = options.buildout_version
if version is None and not options.accept_buildout_test_releases:
# Figure out the most recent final version of zc.buildout.
import setuptools.package_index
_final_parts = '*final-', '*final'
def _final_version(parsed_version):
- for part in parsed_version:
- if (part[:1] == '*') and (part not in _final_parts):
- return False
- return True
+ try:
+ return not parsed_version.is_prerelease
+ except AttributeError:
+ # Older setuptools
+ for part in parsed_version:
+ if (part[:1] == '*') and (part not in _final_parts):
+ return False
+ return True
+
index = setuptools.package_index.PackageIndex(
search_path=[setuptools_path])
if find_links:
@@ -156,7 +188,7 @@
cmd.append(requirement)
import subprocess
-if subprocess.call(cmd, env=dict(os.environ, PYTHONPATH=setuptools_path)) != 0:
+if subprocess.call(cmd) != 0:
raise Exception(
"Failed to execute command:\n%s" % repr(cmd)[1:-1])
--- a/docs/HISTORY.txt Thu Oct 04 16:41:41 2018 +0200
+++ b/docs/HISTORY.txt Fri Oct 05 15:49:10 2018 +0200
@@ -1,6 +1,13 @@
History
=======
+0.1.17
+------
+ - can't remove a template row or slot containing any portlet
+ - automatically remove cancelled slots
+ - added name to portlet renderer settings instances
+ - updated template properties edit form template
+
0.1.16
------
- added checks in slot adding form
--- a/src/pyams_portal.egg-info/PKG-INFO Thu Oct 04 16:41:41 2018 +0200
+++ b/src/pyams_portal.egg-info/PKG-INFO Fri Oct 05 15:49:10 2018 +0200
@@ -1,12 +1,11 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: pyams-portal
-Version: 0.1.16.1
+Version: 0.1.17
Summary: PyAMS portal and portlets interfaces and classes
Home-page: http://hg.ztfy.org/pyams/pyams_portal
Author: Thierry Florac
Author-email: tflorac@ulthar.net
License: ZPL
-Description-Content-Type: UNKNOWN
Description:
Portal template configuration storage
@@ -99,6 +98,13 @@
History
=======
+ 0.1.17
+ ------
+ - can't remove a template row or slot containing any portlet
+ - automatically remove cancelled slots
+ - added name to portlet renderer settings instances
+ - updated template properties edit form template
+
0.1.16
------
- added checks in slot adding form
@@ -207,3 +213,4 @@
Classifier: Programming Language :: Python
Classifier: Framework :: Pyramid
Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Provides-Extra: test
--- a/src/pyams_portal.egg-info/SOURCES.txt Thu Oct 04 16:41:41 2018 +0200
+++ b/src/pyams_portal.egg-info/SOURCES.txt Fri Oct 05 15:49:10 2018 +0200
@@ -42,6 +42,27 @@
src/pyams_portal/resources/css/portal.min.css
src/pyams_portal/resources/js/portal.js
src/pyams_portal/resources/js/portal.min.js
+src/pyams_portal/resources/js/i18n/fr.js
+src/pyams_portal/resources/js/i18n/fr.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.min.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.min.min.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.min.min.min.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.min.min.min.min.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.min.min.min.min.min.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.min.min.min.min.min.min.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.min.min.min.min.min.min.min.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.js
+src/pyams_portal/resources/js/i18n/fr.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.min.js
src/pyams_portal/resources/less/portal.less
src/pyams_portal/skin/__init__.py
src/pyams_portal/templates/pagelet.pt
--- a/src/pyams_portal/locales/fr/LC_MESSAGES/pyams_portal.po~ Thu Oct 04 16:41:41 2018 +0200
+++ b/src/pyams_portal/locales/fr/LC_MESSAGES/pyams_portal.po~ Fri Oct 05 15:49:10 2018 +0200
@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE 1.0\n"
-"POT-Creation-Date: 2018-09-21 16:10+0200\n"
+"POT-Creation-Date: 2018-09-21 18:10+0200\n"
"PO-Revision-Date: 2015-05-12 12:10+0200\n"
"Last-Translator: Thierry Florac <tflorac@ulthar.net>\n"
"Language-Team: French <traduc@traduc.org>\n"
@@ -16,7 +16,7 @@
"Generated-By: Lingua 3.10.dev0\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: src/pyams_portal/template.py:86
+#: src/pyams_portal/template.py:80
msgid "Portal template"
msgstr "Modèle de présentation"
@@ -128,13 +128,13 @@
msgid "Presentation template"
msgstr "Présentation"
-#: src/pyams_portal/zmi/template.py:167 src/pyams_portal/zmi/layout.py:277
-#: src/pyams_portal/zmi/layout.py:646
+#: src/pyams_portal/zmi/template.py:167 src/pyams_portal/zmi/layout.py:280
+#: src/pyams_portal/zmi/layout.py:660
msgid "Specified name is already used!"
msgstr "Le nom indiqué est déjà utilisé !"
-#: src/pyams_portal/zmi/template.py:111 src/pyams_portal/zmi/layout.py:241
-#: src/pyams_portal/zmi/layout.py:322 src/pyams_portal/zmi/layout.py:406
+#: src/pyams_portal/zmi/template.py:111 src/pyams_portal/zmi/layout.py:240
+#: src/pyams_portal/zmi/layout.py:336 src/pyams_portal/zmi/layout.py:420
#, python-format
msgid "« {0} » portal template"
msgstr "Modèle de présentation « {0} »"
@@ -144,71 +144,71 @@
msgid "{0} (local template)"
msgstr "{0} (modèle local)"
-#: src/pyams_portal/zmi/layout.py:82
+#: src/pyams_portal/zmi/layout.py:81
msgid "Properties"
msgstr "Propriétés"
-#: src/pyams_portal/zmi/layout.py:183
+#: src/pyams_portal/zmi/layout.py:182
msgid "Add row..."
msgstr "Ajouter une ligne"
-#: src/pyams_portal/zmi/layout.py:225
+#: src/pyams_portal/zmi/layout.py:224
msgid "Add slot..."
msgstr "Ajouter un panneau"
-#: src/pyams_portal/zmi/layout.py:243
+#: src/pyams_portal/zmi/layout.py:242
msgid "Add slot"
msgstr "Ajouter un panneau"
-#: src/pyams_portal/zmi/layout.py:390
+#: src/pyams_portal/zmi/layout.py:404
msgid "Add portlet..."
msgstr "Ajouter un composant"
-#: src/pyams_portal/zmi/layout.py:408
+#: src/pyams_portal/zmi/layout.py:422
msgid "Add portlet"
msgstr "Ajouter un composant"
-#: src/pyams_portal/zmi/layout.py:585
+#: src/pyams_portal/zmi/layout.py:599
msgid "Duplicate template..."
msgstr "Dupliquer le modèle"
-#: src/pyams_portal/zmi/layout.py:605
+#: src/pyams_portal/zmi/layout.py:619
msgid "Duplicate template"
msgstr "Dupliquer le modèle"
-#: src/pyams_portal/zmi/layout.py:72
+#: src/pyams_portal/zmi/layout.py:71
msgid "Template management"
msgstr "Ce modèle"
-#: src/pyams_portal/zmi/layout.py:109
+#: src/pyams_portal/zmi/layout.py:108
msgid "Template configuration"
msgstr "Configuration d'un modèle"
-#: src/pyams_portal/zmi/layout.py:595
+#: src/pyams_portal/zmi/layout.py:609
msgid "Cancel"
msgstr "Annuler"
-#: src/pyams_portal/zmi/layout.py:596
+#: src/pyams_portal/zmi/layout.py:610
msgid "Duplicate this template"
msgstr "Dupliquer ce modèle"
-#: src/pyams_portal/zmi/layout.py:616
+#: src/pyams_portal/zmi/layout.py:630
msgid "New template name"
msgstr "Nom du nouveau modèle"
-#: src/pyams_portal/zmi/layout.py:101
+#: src/pyams_portal/zmi/layout.py:100
msgid "Local template configuration"
msgstr "Configuration d'un modèle local"
-#: src/pyams_portal/zmi/layout.py:152
+#: src/pyams_portal/zmi/layout.py:151
msgid "{{ missing portlet }}"
msgstr "{{ composant indisponible }}"
-#: src/pyams_portal/zmi/layout.py:104
+#: src/pyams_portal/zmi/layout.py:103
msgid "Inherited local template configuration"
msgstr "Configuration d'un modèle local hérité"
-#: src/pyams_portal/zmi/layout.py:143
+#: src/pyams_portal/zmi/layout.py:142
#, python-format
msgid ""
"Add component: {0}<br />Drag and drop button to page template to position "
@@ -217,16 +217,25 @@
"Ajouter un composant : <strong>{0}</strong><br />Faire un glisser/déposer du "
"bouton dans le modèle de présentation pour positionner le nouveau composant."
-#: src/pyams_portal/zmi/layout.py:327
+#: src/pyams_portal/zmi/layout.py:341
#, python-format
msgid "Edit « {0} » slot properties"
msgstr "Propriétés du panneau « {0} »"
-#: src/pyams_portal/zmi/layout.py:107
+#: src/pyams_portal/zmi/layout.py:286
+msgid "Row ID must be an integer value!"
+msgstr "Le numéro de ligne doit être un nombre entier !"
+
+#: src/pyams_portal/zmi/layout.py:106
#, python-format
msgid "Shared template configuration ({0})"
msgstr "Configuration d'un modèle partagé ({0})"
+#: src/pyams_portal/zmi/layout.py:290
+#, python-format
+msgid "Row ID must be between 1 and {0}!"
+msgstr "Le numéro de ligne doit être compris entre 1 et {0}"
+
#: src/pyams_portal/zmi/container.py:102
msgid "Shared portal templates"
msgstr "Modèles de présentation partagés"
@@ -313,37 +322,37 @@
msgid "Large desktop device (> 1170px)"
msgstr "Écrans de grande taille (> 1170 px)"
-#: src/pyams_portal/zmi/templates/layout.pt:118
+#: src/pyams_portal/zmi/templates/layout.pt:116
msgid "Reduce/restore portlet"
msgstr "Réduire/restaurer le composant"
-#: src/pyams_portal/zmi/templates/layout.pt:123
+#: src/pyams_portal/zmi/templates/layout.pt:121
msgid "Edit portlet properties"
msgstr "Propriétés"
-#: src/pyams_portal/zmi/templates/layout.pt:125
+#: src/pyams_portal/zmi/templates/layout.pt:123
msgid "Portlet settings are not those of original template"
msgstr ""
"Les propriétés du composant ne sont pas celles héritées du modèle de "
"présentation"
-#: src/pyams_portal/zmi/templates/layout.pt:143
+#: src/pyams_portal/zmi/templates/layout.pt:141
msgid "Delete row..."
msgstr "Supprimer la ligne"
-#: src/pyams_portal/zmi/templates/layout.pt:152
+#: src/pyams_portal/zmi/templates/layout.pt:150
msgid "Edit slot properties..."
msgstr "Propriétés"
-#: src/pyams_portal/zmi/templates/layout.pt:159
+#: src/pyams_portal/zmi/templates/layout.pt:157
msgid "Delete slot..."
msgstr "Supprimer le panneau"
-#: src/pyams_portal/zmi/templates/layout.pt:167
+#: src/pyams_portal/zmi/templates/layout.pt:165
msgid "Edit portlet properties..."
msgstr "Propriétés"
-#: src/pyams_portal/zmi/templates/layout.pt:175
+#: src/pyams_portal/zmi/templates/layout.pt:173
msgid "Delete portlet..."
msgstr "Supprimer le composant"
@@ -395,32 +404,32 @@
msgid "Hidden portlet"
msgstr "NON affiché"
-#: src/pyams_portal/interfaces/__init__.py:70
+#: src/pyams_portal/interfaces/__init__.py:66
msgid "Portlet"
msgstr "Composant"
-#: src/pyams_portal/interfaces/__init__.py:73
-#: src/pyams_portal/interfaces/__init__.py:205
+#: src/pyams_portal/interfaces/__init__.py:69
+#: src/pyams_portal/interfaces/__init__.py:201
msgid "Slot name"
msgstr "Nom du panneau"
-#: src/pyams_portal/interfaces/__init__.py:74
+#: src/pyams_portal/interfaces/__init__.py:70
msgid "Slot name to which this configuration applies"
msgstr "Nom du panneau correspondant à la configuration"
-#: src/pyams_portal/interfaces/__init__.py:87
+#: src/pyams_portal/interfaces/__init__.py:83
msgid "Portlet renderer"
msgstr "Mode de rendu"
-#: src/pyams_portal/interfaces/__init__.py:88
+#: src/pyams_portal/interfaces/__init__.py:84
msgid "Name of renderer used to render this portlet"
msgstr "Mode de rendu utilisé pour restituer ce composant"
-#: src/pyams_portal/interfaces/__init__.py:121
+#: src/pyams_portal/interfaces/__init__.py:117
msgid "Inherit parent configuration?"
msgstr "Hériter de la configuration du parent ?"
-#: src/pyams_portal/interfaces/__init__.py:122
+#: src/pyams_portal/interfaces/__init__.py:118
msgid ""
"This option is only available if context's parent is using the same "
"template..."
@@ -428,27 +437,27 @@
"Cette option n'est disponible que si le parent utilise le même modèle de "
"présentation..."
-#: src/pyams_portal/interfaces/__init__.py:206
+#: src/pyams_portal/interfaces/__init__.py:202
msgid "This name must be unique in a given template"
msgstr "Ce nom doit être unique au sein d'un modèle de présentation"
-#: src/pyams_portal/interfaces/__init__.py:209
+#: src/pyams_portal/interfaces/__init__.py:205
msgid "Row ID"
-msgstr "ID de la ligne"
+msgstr "Numéro de la ligne"
-#: src/pyams_portal/interfaces/__init__.py:223
+#: src/pyams_portal/interfaces/__init__.py:219
msgid "Visible slot?"
msgstr "Panneau visible ?"
-#: src/pyams_portal/interfaces/__init__.py:224
+#: src/pyams_portal/interfaces/__init__.py:220
msgid "Select 'no' to hide this slot..."
msgstr "Choisir 'non' pour masquer ce panneau..."
-#: src/pyams_portal/interfaces/__init__.py:228
+#: src/pyams_portal/interfaces/__init__.py:224
msgid "Extra small device width"
msgstr "Largeur sur très petits périphériques"
-#: src/pyams_portal/interfaces/__init__.py:229
+#: src/pyams_portal/interfaces/__init__.py:225
msgid ""
"Slot width, in columns count, on extra small devices (phones...); set to 0 "
"to hide the portlet"
@@ -456,11 +465,11 @@
"Largeur du panneau, en nombre de colonnes, sur les très petits périphériques "
"(téléphones...) ; indiquez une valeur de 0 pour masquer ce composant"
-#: src/pyams_portal/interfaces/__init__.py:235
+#: src/pyams_portal/interfaces/__init__.py:231
msgid "Small device width"
msgstr "Largeur sur petits périphériques"
-#: src/pyams_portal/interfaces/__init__.py:236
+#: src/pyams_portal/interfaces/__init__.py:232
msgid ""
"Slot width, in columns count, on small devices (tablets...); set to 0 to "
"hide the portlet"
@@ -468,11 +477,11 @@
"Largeur du panneau, en nombre de colonnes, sur les petits périphériques "
"(tablettes...) ; indiquez une valeur de 0 pour masquer ce composant"
-#: src/pyams_portal/interfaces/__init__.py:242
+#: src/pyams_portal/interfaces/__init__.py:238
msgid "Medium devices width"
msgstr "Largeur sur périphériques moyens"
-#: src/pyams_portal/interfaces/__init__.py:243
+#: src/pyams_portal/interfaces/__init__.py:239
msgid ""
"Slot width, in columns count, on medium desktop devices (>= 992 pixels); set "
"to 0 to hide the portlet"
@@ -480,11 +489,11 @@
"Largeur du panneau, en nombre de colonnes, sur les périphériques moyens (>= "
"992 pixels) ; indiquez une valeur de 0 pour masquer ce composant"
-#: src/pyams_portal/interfaces/__init__.py:249
+#: src/pyams_portal/interfaces/__init__.py:245
msgid "Large devices width"
msgstr "Largeur sur grands périphériques"
-#: src/pyams_portal/interfaces/__init__.py:250
+#: src/pyams_portal/interfaces/__init__.py:246
msgid ""
"Slot width, in columns count, on large desktop devices (>= 1200 pixels); set "
"to 0 to hide the portlet"
@@ -492,27 +501,27 @@
"Largeur du panneau, en nombre de colonnes, sur les grands périphériques (>= "
"1200 pixels) ; indiquez une valeur de 0 pour masquer ce composant"
-#: src/pyams_portal/interfaces/__init__.py:256
+#: src/pyams_portal/interfaces/__init__.py:252
msgid "CSS class"
msgstr "Class CSS"
-#: src/pyams_portal/interfaces/__init__.py:257
+#: src/pyams_portal/interfaces/__init__.py:253
msgid "CSS class applied to this slot"
msgstr "Classe CSS spécifique appliquée à ce panneau"
-#: src/pyams_portal/interfaces/__init__.py:370
+#: src/pyams_portal/interfaces/__init__.py:366
msgid "Template name"
msgstr "Nom du modèle"
-#: src/pyams_portal/interfaces/__init__.py:371
+#: src/pyams_portal/interfaces/__init__.py:367
msgid "Two registered templates can't share the same name..."
msgstr "Deux modèles partagés ne peuvent pas utiliser le même nom..."
-#: src/pyams_portal/interfaces/__init__.py:392
+#: src/pyams_portal/interfaces/__init__.py:388
msgid "Toolbar portlets"
msgstr "Composants de la barre d'outils"
-#: src/pyams_portal/interfaces/__init__.py:393
+#: src/pyams_portal/interfaces/__init__.py:389
msgid ""
"These portlets will be directly available in templates configuration page "
"toolbar"
@@ -520,52 +529,52 @@
"Ces composants seront directement accessibles dans la page de configuration "
"des modèles de présentation sous la forme d'une barre d'icônes"
-#: src/pyams_portal/interfaces/__init__.py:422
+#: src/pyams_portal/interfaces/__init__.py:418
msgid "Inherit parent template?"
msgstr "Hériter du modèle du parent ?"
-#: src/pyams_portal/interfaces/__init__.py:423
+#: src/pyams_portal/interfaces/__init__.py:419
msgid "Should we reuse parent template?"
msgstr "Doit-on ré-utiliser le modèle du parent ?"
-#: src/pyams_portal/interfaces/__init__.py:427
+#: src/pyams_portal/interfaces/__init__.py:423
msgid "Override parent template?"
msgstr "Ne pas hériter du modèle du parent ?"
-#: src/pyams_portal/interfaces/__init__.py:428
+#: src/pyams_portal/interfaces/__init__.py:424
msgid "Should we override parent template?"
msgstr "Doit-on remplacer le modèle de présentation du parent ?"
-#: src/pyams_portal/interfaces/__init__.py:432
+#: src/pyams_portal/interfaces/__init__.py:428
msgid "Use local template?"
msgstr "Utiliser un modèle local ?"
-#: src/pyams_portal/interfaces/__init__.py:433
+#: src/pyams_portal/interfaces/__init__.py:429
msgid ""
"If 'yes', you can define a custom local template instead of a shared template"
msgstr ""
"Si 'oui', vous pouvez définir un modèle de présentation local au lieu d'un "
"modèle partagé"
-#: src/pyams_portal/interfaces/__init__.py:438
+#: src/pyams_portal/interfaces/__init__.py:434
msgid "Local template"
msgstr "Modèle local"
-#: src/pyams_portal/interfaces/__init__.py:443
+#: src/pyams_portal/interfaces/__init__.py:439
msgid "Use shared template?"
msgstr "Utiliser un modèle partagé"
-#: src/pyams_portal/interfaces/__init__.py:444
+#: src/pyams_portal/interfaces/__init__.py:440
msgid "If 'yes', you can select a shared template"
msgstr ""
"Si 'oui', vous pouvez sélectionner un modèle de présentation partagé au lieu "
"d'un modèle local"
-#: src/pyams_portal/interfaces/__init__.py:448
+#: src/pyams_portal/interfaces/__init__.py:444
msgid "Page template"
msgstr "Modèle de page"
-#: src/pyams_portal/interfaces/__init__.py:449
+#: src/pyams_portal/interfaces/__init__.py:445
msgid "Template used for this page"
msgstr "Modèle de présentation utilisé pour cette page"